Ignore:
Timestamp:
03/23/12 17:26:55 (13 years ago)
Author:
hendrikvanantwerpen
Message:

Mockup included.

Location:
Dev/branches/rest-dojo-ui/client/rft/ui
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • Dev/branches/rest-dojo-ui/client/rft/ui/AccordionList.js

    r311 r316  
    99        return declare('rft.ui.AccordionList',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{
    1010            templateString: template,
    11             store: null,
    1211            idProperty: null,
    1312            categoryProperty: null,
     
    1817                this._widgets = {};
    1918            },
    20             postCreate: function() {
    21                 this.idProperty = this.idProperty || this.store.idProperty;
    22                 this.refresh(true);
    23             },
    24             refresh: function(initial) {
    25                 Deferred.when( this.store.query() )
    26                 .then(lang.hitch(this,'_addItems',initial));
    27             },
    28             _addItems: function(initial,items) {
    29                 var newWidgets = {};
    30                 array.forEach(this._widgets,domConstruct.destroy); // get everything out of the dom
    31                 array.forEach(items,lang.hitch(this,function(item){
    32                     var widget = this._getWidgetForItem(item);
    33                     var id = this._getItemProperty(this.idProperty,item);
    34                     var container = this._getContainerForItem(item);
    35                     widget.placeAt(container.containerNode);
    36                     newWidgets[id] = widget;
    37                 }));
    38                 var oldWidgets = array.filter(this.items,function(widget){
    39                     return array.indexOf(newWidgets,widget) < 0;
     19            setItems: function(items) {
     20                var obsoleteWidgets = array.filter(this.widgets,function(item){
     21                    return array.indexOf(items,item) < 0;
    4022                });
    41                 array.forEach(oldWidgets,function(widget){
     23                array.forEach(obsoleteWidgets,function(widget){
    4224                    widget.destroy();
    4325                });
    44                 this._widgets = newWidgets; // overwrite, releasing any non-existing items
    45                 initial && this.accordion.selectChild(true);
     26                array.forEach(this._widgets,domConstruct.destroy); // get everything out of the dom
     27                array.forEach(items,lang.hitch(this,"_addItem"));
    4628                this._cleanupEmptyContainers();
     29            },
     30            addItems: function(items) {
     31                array.forEach(items,lang.hitch(this,"_addItem"));
     32                this._cleanupEmptyContainers();
     33            },
     34            addItem: function(item) {
     35                this._addItem(item);
     36                this._cleanupEmptyContainers();
     37            },
     38            _addItem: function(item) {
     39                var widget = this._getWidgetForItem(item);
     40                var container = this._getContainerForItem(item);
     41                widget.placeAt(container.containerNode);
     42            },
     43            removeItem: function(item) {
     44                var id = this._getItemProperty(this.idProperty,item);
     45                var widget = this._getWidgetForItem(item);
     46                widget && widget.destroy();
     47                delete this._widgets[id];
    4748            },
    4849            _getWidgetForItem: function(item) {
  • Dev/branches/rest-dojo-ui/client/rft/ui/LineWithActionsWidget.js

    r288 r316  
    1 define(['dojo/_base/declare','dojo/_base/lang','dijit/form/Button',
     1define(['dojo/_base/declare','dojo/_base/lang','dojo/on','dojo/dom','dijit/form/Button',
    22    'dijit/_WidgetBase','dijit/_TemplatedMixin','dijit/_WidgetsInTemplateMixin',
    33    'dojo/text!./templates/LineWithActionsWidget.html'],
    4     function(declare,lang,Button,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,templateString){
     4    function(declare,lang,on,dom,Button,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,templateString){
    55        return declare('rft.ui.LineWithActionsWidget',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{
    66            templateString: templateString,
     7            baseClass: 'rftLineWithButtons',
    78            title: '',
    89            userObject: null,
    910            actions: {},
     11            postCreate: function() {
     12                dom.setSelectable(this.domNode, false);
     13                on(this.titleNode,'click',lang.hitch(this,'_onClick'));
     14            },
    1015            startup: function() {
    1116                this.inherited(arguments);
     
    1722                    new Button({
    1823                        label: action,
     24                        //iconClass: 'dijitIconSearch',
     25                        //showLabel: false,
    1926                        onClick: lang.hitch(this,function(){
    2027                            this.actions[action](this.userObject);
    2128                        })
    22                     }).placeAt(this.actionBar);
     29                    }).placeAt(this.buttonsNode);
    2330                }
    2431            },
    2532            refresh: function() {
    2633                this.titleNode.innerHTML = this.title;
    27             }
     34            },
     35            _onClick: function(e){
     36                var preventDefault = this.onClick(e) === false;
     37                if(preventDefault){
     38                    e.preventDefault();
     39                }
     40                return !preventDefault;
     41            },
     42            onClick: function(e) {}
    2843        });
    2944    });
  • Dev/branches/rest-dojo-ui/client/rft/ui/templates/LineWithActionsWidget.html

    r288 r316  
    1 <div>
    2     <span data-dojo-attach-point="actionBar"></span>
    3     <span data-dojo-attach-point="titleNode"></span>
     1<div class="${baseClass}">
     2    <span class="${baseClass}Title" data-dojo-attach-point="titleNode"></span>
     3    <span class="${baseClass}Buttons" data-dojo-attach-point="buttonsNode"></span>
    44</div>
Note: See TracChangeset for help on using the changeset viewer.