declarative-lookup-rollup-summaries
declarative-lookup-rollup-summaries copied to clipboard
Action List for New wizard (mvp):
The main working branch is feature/nw/rollup-lwc and new commits will be made as a PR against this branch.
Action Items:
- ~~Add action buttons (save, delete, update, clone)~~ -
Done
(Anthony) - Add filter actions to Data table (maybe pagination).
- Add full width and set height text area for long character descriptions. -
Done
(Khang) - Add test fields and any missing fields to the new wizard. -
Done
(Khang) - Add feature to auto-select relationship objects from combo box. (follow up with @Aishwarya Badri). Only related objects to parent. -
Working
(Aishwarya)
- Does not work if you tab into it
- Does not allow you to enter value from attribute
- relationship field (recommended combo box). Picklist is prioritized on relationship fields that are related. but It can also pick a text field if they want to filter off of that. Recommended fields can come from the "New wizard logic". -
Working
(Khang)
- Check if it fills in relationship field correctly when all it wired up.
- ~~Grey out rollup dev name if the rollup is in edit mode.~~ -
Done
(Anthony) - ~~Validation logic - this behavior needs to be in the rollup definition before save.~~ -
Done
(Anthony) - Display error messages. We will be able to put the error messages on the field. Add conditionally rendered placeholders on html. Four places that have validation.
-JavaScript (this field is required - cannot be blank...)
-~~apex validation (give me schema and validate against DLRS rules)~~ -
Done
(Anthony) -metadata deployment validation(not often) -deployment results (display deployment errors) - Apex needs to be tested. -
Working
(Scott) - Add jest tests for all JavaScript. -
Working
(Scott) - Test status check is cacheable and refreshes when apex triggers are deployed, ect...
UI Feedback:
- Separate create/edit title on the wizard. (Don't want to have major UI separations between edit and create mode)
- Potentially: Rename "save" button to "create"
- Too seamless. Need more visual indicators that something has changed. Fake spinner to feel like a transition.
- System information section for created/edit dates.
- Easy to add by pulling from database
- Highlight the rollup that has been selected in the data table
- Research: Can we highlight the row on the data table to indicate this is the edited row. CSS maybe?
- Include the rollup name in the card header
- On create keep the dev name field. Default create title
- On edit move the greyed out dev name to the header
- UI Mockups*
- Jim to work on UI Mockups
Wants:
- Fancy relation builder(?). List view style for criteria and relationship criteria. Potential solution using tree-sitter and web assembly to get a tree representation of the WHERE clause in the relationship field. -
Working
(Anthony) - Add status check for validation errors
- Consider CMDT records as a modal*
- Add general purpose stuff in Lookup rollup summaries Tools. Add a button to schedule rollupJob for scheduled items.
I've been adding in some of these, the following should be complete with my latest two PRs to the branch.
1, 7, 8, 9 (for Apex validation)
Hi @aheber, I've also been developing RollupEditorController
class. After reviewing your branch, I don't know why we build CustomMetadataService.initiateMetadataSave()
, instead of re-using RollupService.update_x()
method ?
Because the new method uses the Apex Metadata API instead of the external Metadata API. And we can't wait for it to complete because it is async, so I named in "initiate" and when the callback is executed it will tell the user via Platform Event. I did still reuse the external Metadata for delete because the Apex variation doesn't have support at this time.
Oh I got it. You mean MetadataService
lib as External Metadata API ? And ManageRollups
component subscribes UserNotification__e
platform event to notify Deployment Result
The Metadata classes are wrappers around the Metadata SOAP API, which is a big part of why they are so large, lots of unused possibilities that DLRS doesn't really use but we're left in because it is an imported API.
We will still have to use it for triggers and Custom Metadata Deletes for now but where possible we'd prefer to avoid needing it. First because using the APIs creates some complication on where/how we get the session Id and also because certain security settings and org types make it hard for us to use the external APIs, such as professional edition.
Thanks for explaining to me. I've been working in action item 3, 4 and responsive UI
Can't wait to see what you're cooking up!!
@aheber/ @sfenton3 , For point #5, Is it safe to assume that After parent sObject is populated, the combo box should display only the relevant child sobjects for the users to choose from?
And also, in the base component, we will have objectSelector LWC twice for parent and child sobject selection?
@AishwaryaBadri unfortunately I don't think we can trim it down. DLRS can act across things that aren't relationships, it can treat text fields the same as lookups. Knowing the parent doesn't mean we can limit the possible child objects based on firm relationships.
The same thing with the relationship fields, it would be smart to recommend lookup fields between the two objects but we still need to be able to select any field on the child object as the source.
I updated the original message with comments around what people are working on and what is completed. I added myself to 10 and added 11. We can follow up with this during the next dev meeting.
@aheber Anything you wanted to add that I missed?
I think that looks good. I was going to wait on the tests until things stabilized some more. I think most of the Apex we have will be pretty stable but I still expect the LWCs to go through a lot of changes (The most recent PR from @lynguyenkhang for example)
I'm working on Wants .1 right now, hoping to at least have a workable demo for next week's meeting.
I don't think it is a realistic action item for right now but some of what we're doing is hard to test. We'll want to think about what we might want for dependency injection to help make things more testable. (I think I've seen some ApexMocks in the repo but I don't think it is used for any of the DLRS code)
apexMocks looks exciting - I'll see how we can utilize it when doing my tests.
Based on the logic in objectSelector
component from @AishwaryaBadri, I've built autocompleteCombobox
component (in #1332).
The component is used for Field to Aggregate
, Aggregate Result Field
and Relationship Field
inputs (related to item 5,6)
Would like details like Rollup Name in the header, would like Created and Modified stamps in the details.
There is small UI changes (item 01, 07 in UI feedback). Please, @aheber review PR #1341, thanks.
Closing this umbrella issue with the release of v2.21 which includes the new LWC wizard.
Thanks to all that worked on it and very excited to have it out there. It will still need improvement but so awesome to have it this far.