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:

  1. StatsMailbox.mxml
    • New view component in com.dos.widget.flurry.views.components.mailbox
    • View that will display listing of StatsItems
  2. StatsMailboxMediator.as
    • New mediator com.dos.widget.flurry.views.mediators.mailbox
    • Retrieve stats (# of items in each category) – requires new service call
  3. 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
  4. StatsItem.mxml
    • New view component in com.dos.widget.flurry.views.components.mailbox.stats
    • Display category and number of items in the category
  5. StatsItemMediator.as
    • New mediator in com.dos.widget.flurry.views.mediators.mailbox.stats
    • Number click handler – open popup with detailed report
  6. 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
  7. 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
  8. 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
  9. 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:

  1. 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:
  2. StatsPopupMediator.as
    • New mediator in com.dos.widget.flurry.views.mediators.mailbox.stats
    • Will require new service calls to get the detailed snapshot stats
  3. StatsModel.as
    • Requires detailed stats collections for each category
    • Should we store the stats from the top datagrid n/a
  4. CategoryStats.mxml
    • New view in com.dos.widget.flurry.views.components.mailbox.stats
  5. 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.
  6. 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?
  7. FlurryEvent.as
    • May require new events

Estimate for Stats Tab & Stats Popup: Approx. 25 hours (dev & unit tests) + 3 hours (QA)

Attachments:

stats_popup.png (image/png)