pepfar-datim / datim-mechanism-finder

DATIM app for finding mechanisms
Other
0 stars 0 forks source link

Redefine requirements #8

Open tomzemp opened 5 years ago

tomzemp commented 5 years ago

Talk with Josephine and Harry to define any changes that they want to see for Mechanism Finder App

benguaraldi commented 5 years ago

(They may also have suggestions for other people to talk to.)

tomzemp commented 5 years ago

Spoke with Michelle Jenije on May 13, 2019:

Primarily using Mechanism Finder App to check against source of truth in FACTS Info and to see the history of a mechanism (e.g. when a Partner says information is not right in DATIM). App allows confirmation that DATIM and FACTS Info are in sync and lets one find when changes occurred.

Miscellaneous Thoughts for Improvements:

tomzemp commented 5 years ago

Spoke with Josephine Mungurere-Baker on May 15, 2019:

General

Mechanism/Agency/Partner

Table

tomzemp commented 5 years ago

Spoke with Celeste Scott on May 16, 2019:

Celeste used app mostly when working on ER Tier II Support to be able to help diagnose problems (e.g. when user can't see a mechanism...probably because of a slightly different name) Mostly using table to look at history.

General

Table

benguaraldi commented 5 years ago

One other thing: Maybe we want additional pages of results?

tomzemp commented 5 years ago

@benguaraldi @jakub-bao

I've tried to summarize the suggested changes I got from users above into various areas and to attach a subjective priority and level of effort to each. (see below, or I can share in spreadsheet form)

I've also put together these changes in a mockup: https://app.moqups.com/oMElRP3xlk/view . The mockup is conceptual only (i.e. it's not meant to be a mockup for styling purposes, just to show the new functionality/features that would be in the app based on the changes below).

I don't know if you guys want to discuss this together, or take it back to the end users for comments, or just want me to start working on things with the assumption that these changes will be okay, and therefore it's better to have something interactive before talking more?

Backend

TaskPriorityLevel of EffortComments
Add paginationMedium?Might be good to pull more data as needed (regardless of whether we implement other changes)
Add number of days as search parameterMedium?Celeste mentioned that it's kind of odd that the response is limited to 90 rows, and that it might make more sense to limit it to 30 days in the past (and that it wouldbegood if this were customizable)
Specify fields to search inLow?Might be useful to users if they know exactly what they're searching against (e.g. if they know a DUNs begins 123, maybe they don't want to search for Mechanism IDs that have 123). This wasn't currently a big problem though.
Transform array to objectLow?Might be easier to manipulate if response is an object. e.g. {FY: '2019', ID: '12345'} vs [['FY','ID'],['2019','12345']] . We could also convert array to object on client-side, however.
### Search
TaskPriorityLevel of EffortComments
Toggle search optionsMediumLowIf adding in more search options than just Production/Test, it might be good to allow users to toggle these choices
Specify number of days (UI)MediumLowIf adding in option to specify the number of days from FACTS Info, then we will want to allow to control this
Specify fields to search in (UI)MediumLowIf adding in option to limit to search against certain fields of FACTS Info, then we will want to allow to control this
### DATIM Information
TaskPriorityLevel of EffortComments
Make Mechanism Active Status clearerMediumLowUsers thought it should be clearer if mechanism is active
Add Last Updated date MediumLow
Add multiple agencies infoMediumMediumJosephine mentioned that sometimes a mechanism has more than 1 agency, and it's useful to know this.
Add agency countMediumLowIf adding multiple agencies info, then might be useful to display count of agencies in agency box
### FACTS Info Table
TaskPriorityLevel of EffortComments
Stop auto-search redirect when clickingHighLowThis highly annoys most users and doesn't add much functionality
Update DATIM info on row clickLowMediumThe DATIM info corresponds to the first row of the table, so maybe it would be more useful to have DATIM info update when you click a given row
Delineate Date GroupingsMediumLowPut a visual break between the different days of FACTS Info feed
Always show horizontal scrollbarHighLowMost users don't mind the horizontal scrolling, but don't like that the scrollbar is all the way at the bottom of the page
Make active/inactive consistenMediumLowThe app code is converting active (1) inactive (0) by looking at the last "column" of each "row". So dates with more columns beyond active show up as 1/0, and older ones show up as check/x-s
Highlight ChangesLowHighMichelle and Celeste are often interested in finding dates when something changed. This might be interesting to (optionally) highlight in the table automatically, but we would need to discuss more about how it should work
Add option to pull more dataMediumMediumIf we paginate the response, then we will want to allow user to load more data
Add filters to columnsMediumHighAllow user to filter data table (e.g. filter Reporting Cycle column by `2019 COP`)
Allow users to hide certain columnsLowHighThis would (partly) solve the horizontal scrolling issue, but users pointed out that it would be better if your default preferences got saved
benguaraldi commented 5 years ago

@tomzemp Thinking about this, I think we want to head for an MVP with the Mechanism Finder, with as many of these features that are low or no additional LOE, at least to start. Do you agree? If so, which features would those be?

Also, I'd be curious if there is a javascript table library or the like that allows "Add filters to columns" and "Allow users to hide certain columns" without much LOE.

tomzemp commented 5 years ago

@benguaraldi: Sure. I'll defer to you if it's worth it to roll out a react version of the app with minimal feature updates. Celeste, Josephine, and Michelle all seem fine with the existing app, so I'd guess I'd like to deliver some kind of improvement for each of them so they don't just think of the visual changes as extra annoyance.

Backend changes I don't know how difficult this is because I haven't been involved with this in any way. I think these are nice to have and could be handled later.

DATIM information I think updating the DATIM information (what Josephine is most interested in) are doable fairly easily, but maybe I should circle back to confirm with you and @hardingt that it works as Josephine/myself think it does.

Table For the table, I think Celeste and Michelle would be most happy with just getting rid of the auto-click search redirect (which is thankfully easier than having it). Michelle seemed most eager to have a delineation between the dates. This would be easy to implement with an out-of-the-box Material UI Table

They both seemed to be of the opinion that filters/hiding columns could possibly be useful, but it wasn't something they were specifically asking for. Looking around, this library seems the most popular for fancier React tables: https://www.npmjs.com/package/react-table. I think that visually it's "okay". It provides support for filtering and seems to be customizable for hiding columns (FoldableTable if you search on their npm site) with a bit more work.

Would you like to check this out and see if it's okay for you? If yes, I will look at using this in the app

Filter + general other features: https://nk5yjjvx1j.codesandbox.io/ Foldable columns: https://8pkrj5yorl.codesandbox.io/

benguaraldi commented 5 years ago

@tomzemp The fancy react table looks good to me, though I do agree it could use some styling. @jakub-bao, any concerns with Tom using that table?

Here are the sandbox links:

Filter + general other features: https://nk5yjjvx1j.codesandbox.io/ Foldable columns: https://8pkrj5yorl.codesandbox.io/

I imagine we'll need to write the code that saves the user's state (i.e., which columns are hidden)—is that right? Or does it do that too?

tomzemp commented 5 years ago

@benguaraldi: we'd need to save the state of the hidden columns, and Michelle and Celeste actually thought it would be more useful if default could be saved to user settings.

I think maybe a MVP would let users hide columns on the fly with react-table and then build out to have the options more explicit and savable?

benguaraldi commented 5 years ago

@tomzemp That sounds like a good MVP. We could also make MVP just the app with react-table without hiding column functionality too.

I guess the next step is to separate these out into tickets and then mark some as MVP?

tomzemp commented 5 years ago

I've set up some tickets for issues I think are MVP @benguaraldi. If there are some missing, let me know. If you want me to spin out other issues into non-MVP tickets I can also do that

benguaraldi commented 5 years ago

@tomzemp Yes, let's go ahead and make the non-MVP tickets and then close this ticket. Thanks!