Stats Tab
Requirements:
- In first position
- Only for a specific permission group requirePermissionTo('View Moderator Specific Stats');
- The checkout 3 is only triggered on click on the “MailBox” tab. This needs to keep from spamming however. So it can’t be a thing where they are quickly clicking back and forth between two tabs and spamming the db for more and more responses. So maybe a question like if (cachedTickets < 3 and lastRequest > 10 seconds) List quick stats. How many items are in each category right now.
- Clicking on the number performs a search for that category+status
Questions/Solutions:
- StatsMailbox.mxml
- New view component in com.dos.widget.flurry.views.components.mailbox
- View that will display listing of StatsItems
- StatsMailboxMediator.as
- New mediator com.dos.widget.flurry.views.mediators.mailbox
- Retrieve stats (# of items in each category) – requires new service call
- StatsModel.as
- New model to store the stats retrieved from the server
- Needs a collection for the aggregated / summarized stats for the StatsMailbox
- Belongs in com.dos.widget.flurry.model
- StatsItem.mxml
- New view component in com.dos.widget.flurry.views.components.mailbox.stats
- Display category and number of items in the category
- StatsItemMediator.as
- New mediator in com.dos.widget.flurry.views.mediators.mailbox.stats
- Number click handler – open popup with detailed report
- MailboxContainerMediator.as
- Stats tab does not exist unless the current user has permission for “View Moderator Specific Stats”
- If user has correct permission dynamically add Stats Tab to View and dynamically register the StatsTabMediator to the Stats Tab component
- SearchFilterLayoutMediator.as
- categoriesLoaded method sets this._categoriesLoaded = true; this method acts as an event handler for the CATEGORY_MODEL_POPULATED event
- permissionsLoaded method sets this._userLoaded = true; this method acts as an event handler for FLURRY_PERMISSIONS_SET event
- setupFilter method requires this._categoriesLoaded == true && this._userLoaded == true to invoke the getTickets service call
- modify the caller for the setupFilter:
- called when Checkout Mailbox is selected – would need a marker to check when lastRequest made so the server/db don’t get spammed if user is quickly switching between mailboxes
- StatsController.as
- New controller for invoking stats related services, success handlers & error handlers for the stats services
- In the com.dos.widget.flurry.controller package
- FlurryEvent.as
- May require new events
Stats Popup
Requirements:
- Pop-up that shows table in Jared’s doc
- Clicking on the number performs a search for that category+status (quote requires above component and builds off the time spent to develop the basic technology in the above)
- Only for a specific permission group requirePermissionTo('View Moderator Specific Stats');
Questions/Solutions:
- StatsPopup.mxml
- New view in com.dos.widget.flurry.views.components.mailbox.stats
- Consider breaking the datagrids into their own view components (top grid -- General Stats grid and bottom grid – detailed Category Stats grid)
The top grid in not included in the scope of this project, just the bottom one. - Sample mockup from existing tools:
- StatsPopupMediator.as
- New mediator in com.dos.widget.flurry.views.mediators.mailbox.stats
- Will require new service calls to get the detailed snapshot stats
- StatsModel.as
- Requires detailed stats collections for each category
- Should we store the stats from the top datagrid n/a
- CategoryStats.mxml
- New view in com.dos.widget.flurry.views.components.mailbox.stats
- CategoryStatsMediator.as
- New mediatoar in com.dos.widget.flurry.views.mediators.mailbox.stats
- Clicking on the numbers in each column will either populate the advanced search (or should it auto perform the search?): It will perform the search
- Queued / Assigned / Suspended are the clickable columns
- Oldest Hours – should display only the 10 oldest items Rather will perform a search by that category Id for ticket s with open based status and sort by oldest first
- Requires a service call to retrieve items – reuse FlurryAdvancedSearchVO and search functionality in AdvancedSearch
Should tie directly into that logic as if they filled out the search form - Results of the search to be displayed in the Search Mailbox
This will be handled by the above quote.
- StatsController.as
- Implement service call to get the data for the StatsPopupMediator.as
- Implement service call to get the data for the CategoryStatsMediator.as
- Success handlers to populate the StatsModel.as
- Error handlers
- What is the fail scenario? Notification to user?
- FlurryEvent.as
- May require new events
Estimate for Stats Tab & Stats Popup: Approx. 25 hours (dev & unit tests) + 3 hours (QA)
