Skip to content

Instantly share code, notes, and snippets.

@charlieouyang
Created December 1, 2015 19:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save charlieouyang/20ed2873301e60cc7518 to your computer and use it in GitHub Desktop.
Save charlieouyang/20ed2873301e60cc7518 to your computer and use it in GitHub Desktop.
UI Research, questions, and concerns
Current Bulkedit Structure
main
-> init
-> strategies
-> strategiesGrid
-> tabs
-> creatives
-> iconGrid
-> location
-> panel
-> browse
-> summary
-> grid
-> shared
-> itemSelectBehavior
New Bulkedit Structure
main
-> tabs (Brand new) -> This would be our container CAW-1975
-> strategies (rewrite) CAW-1976
-> panel -> grid
-> creatives (some rework for data sources and staging)
-> panel -> grid
-> location (some rework for data sources and staging)
-> panel -> grid
-> summary (retrieve data from staging API only)
-> panel -> grid
-> shared
- itemSelectBehavior (Not sure what to rework yet)
*New Approach* things to consider
1) What data to be tracked
-> Does UI need to know which campaign is being BEed? Or can we POST to API when user clicks bulkedit and stores a unique BE ID
-> This ID will then be used to store all staged data in all of the BE screens
-> Strategies, creatives, location, ... , summary
-> Only keep track of the BE ID... This ID would be passed throughout the BE session
2) Old version of BE stores all targetValue collections at the main.js level.
How will we implement the new collections to NOT be stored at the main.js level?
-> Everytime user loads a view (strategies, creatives, location, ...), make API call to see staged data
-> QUESTION: does staged data include the currently selected strategies?
-> All collections with respect to each targeting section (including strategies?) will be fetched on screen load. This way all of the data is stored on API
-> If we can do this, then no more need to keep track of user selections on UI
3) Strategies Search
What is the approach to implement "Select All" behavior in strategies after the user has searched.
-> Example user searches for "hello world" and 30 strategies come back, if user clicks "Select All", only the strategies in the search results should be "bulk edited"
-> How can this be represented on API?
-> What about searched results... will they be paginated? If so, then we will definitely require new API work for selecting all strategies in "searched" strategies.
4) State of the world
If we do decide to keep the state of the world (AKA show what target values are assigned initially to all, some or none)...
-> We can still use the target_values call that was done by Trey
-> How do we stage?
-> Everytime user decides to switch screens (AKA moving onto another BE screen), POST whatever that's in the grid to API for stage
-> Does UI need to know whether some segments are targeted/anti-targeted initially or due to user action?
-> Hopefully not...
-> I propose that we should just stage everything (user selected or initially selected)
5) Review Screen
-> So should we just have 1 final screen at the end before a user may click "execute"?
-> Data should just be a summary of the staged data sent from API (UI should not store this data anywhere)
*New Approach* Things still undecided
1) Are we using BE ids to keep track of each session?
-> If so, can we just do (staging) POST bulkedit/{id}/creatives .... and the data would be list of IDs
2) User interaction with the targeting grids
-> Do we want target all, anti target all, target none, and *SOME* targeted or *SOME* anti-targetd?
-> Do we want to show the current state of the world?
3) Append vs overwrite
-> Do we care about the targeting values that are assigned currently to strategies?
-> Can we just replace everything in the strategies with the selected values
*Discussion with API*
1) Can we track each bulkedit session using a bulkedit id
-> This would mean that all data retrieved, staged, and executed will use this ID (strategies, retrieving current state of the world for targeting screens, staging each view, getting summary data, executing)
2) Strategy search...
-> Will this be paginated?
-> If yes, then how do I tell API user has clicked "select all" on searched strategies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment