User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
lab:dspace:client [2013/01/22 14:02] – [Components] chronolab:dspace:client [2013/06/05 14:34] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== DSpace-Client ======
 +
 +{{:mission:log:2013:01:15:dspace-client-structure.jpg?200| }}
 +
 +===== Develop-Demo =====
 +
 +  * Early Devel Public Demo Access http://dspace-develop.open-resource.org/
 +
 +===== DSpace API Documentation =====
 +
 +  * http://apollo-ng.github.com/dspace-client/doc/app/
 +
 +~~CL~~
 +===== Components =====
 +
 +==== Ender ====
 +
 +<code>
 +├── qwery@3.4.0 - blazing fast CSS3 query selector engine
 +├── domready@0.2.11 - bullet proof DOM ready method
 +├── bean@1.0.2 - A small, fast, framework-agnostic event manager
 +├── bonzo@1.3.2-1 - Library agnostic, extensible DOM utility
 +├── morpheus@0.6.6 - Animations
 +├─┬ backbone@0.9.9 - Give your JS App some Backbone with Models, Views, Collections, and Events.
 +| └── underscore@1.4.3 - JavaScript's functional programming helper library.
 +└─┬ handlebars@1.0.7 - Extension of the Mustache logicless template language
 +  ├── uglify-js@1.2.6 - JavaScript parser and compressor/beautifier toolkit
 +  └─┬ optimist@0.3.4 - Light-weight option parsing with an argv hash. No optstrings attached.
 +    └── wordwrap@0.0.2 - Wrap those words. Show them at what columns to start and stop.
 +</code>
 +==== Overlays ====
 +
 +Dynamic Overlays that are not embedded into the map tiles but created by JS on the client
 +
 +  - POIs
 +  - Area of Effect/Action
 +  - Position of group members (geolocation of people) (Privacy Settings?)
 +  - Position of drones (geolocation of devices)
 +
 +Possibility to access static POI's even when not connected to the net?
 +
 +==== Features ====
 +
 +  - Select different baselayer maps for different use-cases
 +  - Find POIs in Area of Action (radius around current geolocation)
 +  - Ruler (set two points and calculate distance)
 +  - Scale
 +  - Bandwidth Detection to deliver lower resolution/compressed tiles
 +
 +
 +==== UI ====
 +
 +  - Mouse
 +    - Left click -> Single click
 +    - Right click -> Popup area specific context menu
 +  
 +  - Touch
 +    - Short Touch -> Single click
 +    - Long touch -> Popup area specific context menu
 +  
 +  - Gesture
 +    - One finger swipe -> pan map
 +    - Two finger swipe left/right -> Switch to next overlay
 +    - Two finger zoom -> Zoom
 +  
 +  
 +  === FeatureBox ===
 +  
 +  User adds Overlays to featurebox
 +   - appears as new tab (like browser), each tab has a represenattive icon (the marker image)
 +   - add (plus) button as last tab
 +   - visible checkbox
 +   - remove overlay from featurebox option
 +
 +
 +=== Bare Client Flow (new client without any Overlays) ===
 +
 +  - Add Overlay (Have a button in top right corner)
 +  - Modal Directory Interface, splittet in 
 +    - geobar: for semantic search or url pasting
 +    - Gallery: showing overlays with matching proximity (neat: Having autocompletion in the geobar and show overlays in gallery matching the current keyword)
 +  - User selects Overlay from Directory to add to his FeatureBox
 +    - Overlay Appears with FeatureItems as a Tab in the FeaturBox
 +
 +
 +
 +  
 +  - Keyboard (panning with arrow keys / zooming with page Up(in)/Down(out)
 +  
 +==== Storage ====
 +
 +Federated storage possibilities:
 +
 + http://remotestorage.io (unstable!)
 + https://github.ctom/jcoglan/restore (unstable!)
 +
 +
 +DSNP
 +
 +
 +==== Transports ====
 +
 +"Data-Proxies" :
 + 
 +- MVV live stats
 +
 +XMPP
 +
 +
 +  
 +===== Flow =====
 +
 +-> init new World
 +
 +  [world]                                 [map]                                                            [overlay]                              
 + {attributes: options}                {model/world: world}                                       {collection: featurecollection}
 +
 +  -> create Map( world )
 +  -> render Map
 +                                               -> initbasemap
 +                                                 -> create frame (MM)
 +
 +                                                ----- create overlays ---------
 +                                   
 +                                               world.get( geofeeds ).each
 +                                                -> create featurecollection( feed )
 +                                                -> create overlay( featurecollection )
 +
 +                                                                                                                        #on geofeed.reset
 +                                                                                                                        <- map.addMapLayer( featurecollection )
 +                                                 mm.addlayer markerlayer <-
 +
 +                                              [markerlayer] {collection: featurecollection }
 +                                               -> setIndex
 +                                               -> set marker factory to marker
 +                                               
 +                                              [marker]  {model:feature}
 +                                              -> bind to
 +       
 +                                                  ----- remove feeds ---------
 +
 +                                               -> reset overlays
 +                                                                                                                           #send trigger
 +                                                                                                                           -> remove from dom
 +