declarative-lookup-rollup-summaries icon indicating copy to clipboard operation
declarative-lookup-rollup-summaries copied to clipboard

Action List for New wizard (mvp):

Open sfenton3 opened this issue 1 year ago • 17 comments

The main working branch is feature/nw/rollup-lwc and new commits will be made as a PR against this branch.

Action Items:

  1. ~~Add action buttons (save, delete, update, clone)~~ -Done (Anthony)
  2. Add filter actions to Data table (maybe pagination).
  3. Add full width and set height text area for long character descriptions. - Done (Khang)
  4. Add test fields and any missing fields to the new wizard. - Done (Khang)
  5. 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
  1. 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.
  1. ~~Grey out rollup dev name if the rollup is in edit mode.~~ - Done (Anthony)
  2. ~~Validation logic - this behavior needs to be in the rollup definition before save.~~ - Done (Anthony)
  3. 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)
  4. Apex needs to be tested. - Working (Scott)
  5. Add jest tests for all JavaScript. - Working (Scott)
  6. Test status check is cacheable and refreshes when apex triggers are deployed, ect...

UI Feedback:

  1. 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.
  1. System information section for created/edit dates.
  • Easy to add by pulling from database
  1. 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?
  1. 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
  1. UI Mockups*
  • Jim to work on UI Mockups

Wants:

  1. 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)
  2. Add status check for validation errors
  3. Consider CMDT records as a modal*
  4. Add general purpose stuff in Lookup rollup summaries Tools. Add a button to schedule rollupJob for scheduled items.

sfenton3 avatar Apr 05 '23 15:04 sfenton3

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)

aheber avatar Apr 09 '23 21:04 aheber

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 ?

lynguyenkhang avatar Apr 10 '23 04:04 lynguyenkhang

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.

aheber avatar Apr 10 '23 04:04 aheber

Oh I got it. You mean MetadataService lib as External Metadata API ? And ManageRollups component subscribes UserNotification__e platform event to notify Deployment Result

lynguyenkhang avatar Apr 10 '23 04:04 lynguyenkhang

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.

aheber avatar Apr 10 '23 14:04 aheber

Thanks for explaining to me. I've been working in action item 3, 4 and responsive UI

lynguyenkhang avatar Apr 10 '23 19:04 lynguyenkhang

Can't wait to see what you're cooking up!!

aheber avatar Apr 10 '23 20:04 aheber

@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 avatar Apr 11 '23 21:04 AishwaryaBadri

@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.

aheber avatar Apr 12 '23 01:04 aheber

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.

sfenton3 avatar Apr 12 '23 20:04 sfenton3

@aheber Anything you wanted to add that I missed?

sfenton3 avatar Apr 12 '23 20:04 sfenton3

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.

aheber avatar Apr 12 '23 20:04 aheber

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)

aheber avatar Apr 12 '23 20:04 aheber

apexMocks looks exciting - I'll see how we can utilize it when doing my tests.

sfenton3 avatar Apr 12 '23 20:04 sfenton3

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)

lynguyenkhang avatar Apr 16 '23 18:04 lynguyenkhang

Would like details like Rollup Name in the header, would like Created and Modified stamps in the details.

aheber avatar Apr 18 '23 15:04 aheber

There is small UI changes (item 01, 07 in UI feedback). Please, @aheber review PR #1341, thanks.

lynguyenkhang avatar May 01 '23 08:05 lynguyenkhang

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.

aheber avatar May 22 '24 16:05 aheber