Priority work [_] 64% Preview II [X] 100% sorted images in ribbons [X] 100% stage I: position the promoted/demoted image correctly | and correct positioning on promote/demote | | input: | [01][02][03][04][05][06][07][08][09][10][11] ... [19][20] | | single ribbon, nothing special here. | | | general sort: | [05] [10][11][12] [15] [19][20] | [01] [04] [06][07][08] [13][14] [18] | [02][03] [09] [16][17] | | each strip is positioned above or below the place it was | shifted from. | if there is not enough space use weights to balance the | thing. | | | selected [08]: | [05] [10][11][12] [15] [19][20] | [01] [04] [06][07][[08]] [13][14] [18] | [02][03] [09] [16][17] | | above and below images are centered around the current | image as axis, the rule is that the strips left are coming | from the left of the axis and likewise for the right side. | [X] 100% stage II: scroll ribbons correctly | this is simple: | - center the right edge of image returned | by getImageBefore in all ribbons other than current... | - center current-image in current ribbon | - vertically center the current ribbon (negative margin?) [X] prototype and basic API [X] 100% migrate main code to the new system [X] basic navigation [X] basic actions [X] zooming [X] position other ribbons... | only prev/next for now... [X] 100% correct zooming and modes [X] zooming in ribbon view [X] 100% zoom presets for ribbon view | other possible presets: | - five | - all | - group | - day/month | - shoot | - tag | ... [X] three [X] one (with zooming) [X] single image mode with zooming | ribbons are hidden [_] 18% UI [_] fix single image mode | need to center the image correctly... [_] 44% add screen buttons for all actions... [X] navigation [X] actions [_] zooming [_] 20% zoom presets [_] in [_] out [_] single [_] three [X] wide | toggle... [_] return to current image / home (after drag) [_] tap image to return from large magnification [_] pinch to zoom [_] stretch viewer to screen [_] 0% layout [_] tablet | - buttons at sides | - big, finger-friendly buttons | - only horizontal (???) | | check if this works: | @media handheld {} [_] PC | - no buttons (except for help and settings in corners) | - keyboard | | @media screen {} [_] web | is this is the same as the above two? (with auto-select) [_] 0% setting screen [_] basic screen [_] keyboard config (low priority) [_] view mode (low priority) [X] 100% debug mode [X] toggle cross-hair [_] 66% fix layout and animations [X] zooming [X] navigation [_] 0% actions [_] bug: shifting up to new ribbon pushes the current row down... [_] 40% optional features... [_] 80% drag/move action... [X] basic infrastructure [X] action: center current image [X] while zoomed more than the screen [X] while zoomed out (ribbon view) [_] 0% cleanup... [_] disable click events while dragging [_] differentiate with gestures | might be nice to add a Ps-like "space-dragging" | feature to differentiate nav gestures and | dragging... | ...this may not work for tablets | | for tablets might be good to add a small timeout to | both gestures and dragging, small enough for things | to feel natural... | | another way is to start dragging anyway but if the | eventual action resembles a gesture then exec that. | ...this will need careful setup of timeouts and | dynamic disabling/enabling of both drag and gestures | e.g. of large zooms dragging takes priority. [_] 0% native client [_] android [_] 0% misc [_] slideshow... [_] add sort/re-sort capability... [_] make scrolling of other ribbons proportional to the gap... [_] 0% refactoring (low priority) [_] cleanup legacy workarounds [_] ui.js, gallery-prototype.js either merge or revise split logic [_] 0% Preview III [_] 0% view modes [_] grid mode [_] calendar mode [_] 0% native client [_] android [_] windows [_] MacOS (low priority) [_] iOS (low priority) [_] 0% Pre-Alpha [_] 0% finalize UI logic [_] unsorted images Goals: main ribbon always consistent fast sorting via several simple passes binary | items are split into two ribbons. | | this can be done either by mandatorily shifting either up or | down or by restricting shifting to just one direction. | | this is a bit too restrictive. | | essentially this is a combination in the ternary approach | below as we can still shift images between levels. ternary | current ribbon and items are either sifted up, shifted down | relative to it or left on, unshifted. | | main ribbon consistency is not always obvious, especially on | partially sorted sets. e.g. while sorting part of the set where | should the unsorted part be? | | sorted section | +-------------------+ | | oooooooooooooooooooooooooooooooo | - oooooooooooooooooooooooooooo | > oooooooooooooooooooooxxxxxxxxxxxxxxxxxxxxxxxxxxx... < | + oooooooooooooooo | oooo | | +----------------------------+ | which level should this go to? | | in the illustration, the ribbon marked by ">" and "<" is where | the sorting started. | | there is also a question of how do we define the border between | sorted and unsorted zones and when? | ...after the sort is done, and when is that? | | possible ways to go around this: | before sorting select the working batch | - adds an extra step | - restricts later sorting | restrict promotion over the main ribbon | + sorting can be refined later in the same mode | - prevents the user to select the better images on first pass | split the sorted and unsorted batches and never mix them | - restricts later sorting | main ribbon always shows all the better images (from better levels) | o needs a way to move whole topologies up/down relative | to the main ribbon... | one way to do this is select and shift multiple images | will shift the whole pyramid (with all the "worse" images in between) | - introduces modes: sorting / viewing | - adds a separate stage -- move the topology to a correct | main ribbon position | | Q: is this system applicable to sorting search results? | A: likely yes, but the farther one gets from the main ribbon | the more the difference can get between adjacent images. images are always sortable all levels always browsable make all the steps except the actual sorting implicit | i.e. no jumping through hoops for the human... basic structure [X] ribbons [X] images [_] indicators | show where the images came from... [_] % basic control elements [_] 77% touch zones / buttons [X] next DONE [X] prev DONE [X] shift up DONE [X] shift down DONE [X] promote DONE [X] demote DONE [_] zoom in ~ need real zooming... [_] zoom out ~ need real zooming... [X] toggle single image DONE [_] 11% features [_] 45% views [_] 40% ribbon-based view [_] show all | might be good to not show any images here at all, just replace them with their average color [X] show map [X] fit to ribbon [_] fit to image (square) [_] ribbon with promoted/demoted images | show semi-transparent images that were demoted/promoted from current ribbon [_] 50% single image view [_] image fit to screen [X] image fit to square | show parts of upper and lower ribbons [_] image zooming | fast zooming to stages: | fit | 100% | 200% | ... [_] basic editing and manipulation | image unchanged, data saved to json... [_] crop [_] rotate [_] 20% General ToDo [_] 0% image sorting [_] will affect: [_] promote [_] demote [_] shift up [_] shift down [_] ribbon merging [_] add promote/demote events (to attach structure editors)... | enable extension and use as a generic widget... [X] add real images... [_] make all the code relative to the current selection (multiple instances on a page support) [_] add ribbon relative scrolling... | each ribbon is positioned relative to the current selected image | below-left: closest image to the left of the current | bolow-right: same as above but right... | | this will demote/promote the image directly up or down... [_] make this into a jquery plugin... [_] add dynamic loading and unloading for very large sets... [X] gesture support... [_] add basic actions: [_] rotate left [_] rotate right [_] crop ... [_] add info: [_] number of images in ribbon [_] position in ribbon [X] 100% refactoring: [X] merge almost identical functions... [_] % ISSUES and BUGS: [_] jumping on focus up/down... [_] demoting a first element (a ribbon is created) positions the field incorrectly (see demoteImage() for details)... . | vim:set spell :