From: David Schoonover Date: Tue, 22 May 2012 13:13:41 +0000 (-0700) Subject: Updates some todos. X-Git-Url: http://git.less.ly:3516/?a=commitdiff_plain;h=ae63bc6e2e2304b36be8ec35a64b733f6bdc50aa;p=kraken-ui.git Updates some todos. --- diff --git a/docs/internals/housekeeping.md b/docs/internals/housekeeping.md new file mode 100644 index 0000000..978169b --- /dev/null +++ b/docs/internals/housekeeping.md @@ -0,0 +1,63 @@ +# Housekeeping + +## Base +- BaseModel + - `.fromURL()` -- use `.chartType.parseValue k, v` for parsers +- BaseView + - `.modelEvents` or maybe `.events.{ el, model, view... }` +- AppView for common `main()` tasks +- ScaffoldView: generic form for a model's fields + - Bootstrap horizontal-form + - Hooks for filtering visibility + - Controls: Save, Load, Cancel; Delete + + +## Edit UI +- Backbone.Router? +- Loading Indicator: + - Render UI at start with `loading` mode, showing placeholders and indicator + - Activate Loading Spinner post-ready when waiting + + +## Data UI +- Timespan compat check +- Metric: `column_idx` -> `column_id` +- Tab-pane height fix? all `inline-block`: ` ` +- Should data files have timespan in name? + + +## Graph Options UI +- `tags.json` to describe colors, sorting, ignored-tags +- Outline modified +- Fix UI pill color when expanded +- Filter: + - by major Categories: labels, grid, axes, display, interactivity + - by Tag (collapsable box) + - via typeahead box: names + tags +- Sort + - by: Modified, Importance, Tag, Lexical + - Use `categoryRows` +- Derived Options: + - visibility + - colors + - dateWindow + - file + - width, height +- Buttons: Reset {all,visible} to defaults + + +## Misc +- Generate markdoc wiki from `/docs` on Build, Deploy +- Refactor directories: + - template/ + graph/ + chart/ + data/ + dashboard/ + - dataset/ -> data/ + dataset/ +metric + datasource/ +column + - scaffold/ -> base/scaffold/ + - timeseries/ -> util/timeseries/ +- Wrap `Backbone.extend()` to fire `subclass` event on parent class + diff --git a/docs/todo.md b/docs/todo.md index 308bdab..9b16166 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -1,54 +1,55 @@ # todo -### general -- Library for undo/redo -- LocalStorage for unsaved changes, so accidental refresh (etc) doesn't lose changes -- Wrap `Backbone.extend()` to fire `subclass` event on parent class +## GitHub Migration +- Replace all instances of "Kraken" and "GraphKit" with "Limn" +- Create library entry point & config +- Resolve workflow for /data + - Extract history for /data, re-commit metadata files +- Update & scrub docs & readme +- Migrate tickets from Asana to GitHub issues +- Webhook to push to Gerrit (on analytics.wmflabs.org?) -### Dashboard -- Sparklines -- Combine graphs -- Featured Graphs (reportcard) -- Browse Graphs - - New - - Recently Edited - - Popular -- Graph tags as categories (searchable?) -- Users & Auth -- "Fork this Graph" -- User-relative slugs? `/user/:user/graph/:graph.slug/` +## Features -### View for show Graph -- Embedding: iframe URL, `.js` +### Display UI +- Toggle Per-Metric Visibility + - Should redraw axes & scaling +- Keyboard Shortcuts: + - Zoom to last 3 months + - Zoom out + - Pan left/right by timestep +- Callout: current key-metric; YoY%, MoM% for key-metric + + +### Charting +- Better Benchmark Line on the graph +- Per-series styles +- Meta-metrics: + - Year-over-year ### Edit UX - Info & Alert message boxes, eg: save, load success/error, validation - Visual indicator graph is unsaved or has changes -- Fields in `info` tab for graph identifiers: - - short URL (slug only) - - full URL (no slug -- all options) - - embed code (iframe with .js pointer) -- Loading Indicator: - - Render UI at start with `loading` mode, showing placeholders and indicator - - Activate Loading Spinner post-ready when waiting - Keyboard Shortcuts: - Move between tabs - Zoom/pan chart - Focus on form? - Manipulating datasources and other complex forms (up, down, select, back, etc) -- Standard-view layout -- Fixed Chart at top? +- Fields in `info` tab for graph identifiers: + - Short URL (slug only) + - Full URL (no slug -- all options) + - Embed code (iframe with .js pointer) +- Standard-view preview - Bold/darken numeric portion of formatted legend? Decrease size, change color of KMB suffix? -- Load dygraph chart-spec on demand ### GraphModel -- Use dataset name for Graph.name if empty -- Cascade dataset chart-type defaults before `root`? -- toURL(): +- Use dataset name for `Graph.name` if empty +- Cascade dataset chart-type defaults before `root` +- `.toURL()`: - Slug only if not `.isNew()` - Filter `id` out - Diff with last saved state @@ -59,23 +60,20 @@ - `dataset` -> `d` - Graph Options (non-chart options): - `palette`: String | { name:String, length:Number } - - `name`: Infer colors from ColorBrewer + index - - `columns`: Use this as column-length - Zoom range: `dateWindow` - - redraw graph on page resize -- Backbone.Router, history w/ undo/redo + - redraw graph on page resize? +- history w/ undo/redo - "Save as PNG" link; post PNG to server ### Data UI -- CSV cache: Load and parse -- Split `transform` out from `CSVData` as a wrapper -- `ModelCache.lookup(id | ids[], cb, ctx)` -- Add CacheableModel & List w/ instance methods: - - `CacheableModelList.lookup(id | ids[], cb, ctx)` - -- Sources Selector: list datasets via YAML metadata descriptor files (`/datasources/list` -> UI) -- Metric Selector: select metrics out of multiple dataset & graph together +- Controls: + - Delete metric + - Reorder metrics + - "Import All..." Button: import all cols from a datasource + - Backwards compat with `dataset` URL-field +- Global Settings Pane w/ Palette, etc + - `palette`: String | { name:String, length:Number } - Metric Presentation: - label, color - Date range selector & scrubber? @@ -87,24 +85,10 @@ - Step compat check - Use `step` to format date legend/labels (`1mo`? omit day, eg `2012/01`) - Date picker -- Graph Options: - - `palette`: String | { name:String, length:Number } - - `name`: Infer colors from ColorBrewer + index - - `columns`: Use this as column-length - Apply `meta.chart.{type, options}` -- Should data files have timespan in name? - - -### Charting -- Finish Chart & Chart wrapper -- Benchmark line on the graph -- Per-series styles -- Meta-metrics: - - Year-over-year ### Annotations -- Click chart to add an Annotation - Props: - label/title - desc/text: markdown @@ -129,9 +113,10 @@ - show - hide - UI for icon? +- Click chart to add an Annotation -### Graph Options UI +### Chart Options UI - `tags.json` to describe colors, sorting, ignored-tags - Outline modified - Fix UI pill color when expanded @@ -143,24 +128,53 @@ - by: Modified, Importance, Tag, Lexical - Use `categoryRows` - Derived Options: - - visibility - - colors - - dateWindow - - file - - width, height -- Buttons: Reset {all,visible} to defaults + - `visibility` + - `colors` + - `dateWindow` + - `file` + - `width`, `height` +- Buttons: Reset {all,visible} to Defaults -### Server-side Persistence +### Server - Prompt to override slug - Generate UUID for `Graph.id` +- Embedding endpoints: iframe URL, `.js` + +### Admin UIs +- Manage saved Graphs +- Create new DataSource +- User/Group management +### Dashboard +- Combine Graphs UI +- Featured Graphs (reportcard) +- Browse Graphs + - New + - Recently Edited + - Popular +- Graph tags as categories (searchable?) +- Users & Auth +- "Fork this Graph" +- User-relative slugs? `/user/:user/graph/:graph.slug/` +- Sparklines + + + + + + + +## Future + +### General Wishlist +- Library for undo/redo +- LocalStorage for unsaved changes, so accidental refresh (etc) doesn't lose changes -## notes -### UI Notes from Diederik (Future) +### from Diederik - Relationships between datasets which can help inform rich UI responses (click on "Europe" and have it expand to the countries) - easily create new graphs side-by-side