source: Dev/branches/rest-dojo-ui/client/rft/pages/session.js @ 400

Last change on this file since 400 was 389, checked in by hendrikvanantwerpen, 13 years ago
File size: 3.3 KB
Line 
1define([
2    'dojo/_base/array',
3    'dojo/_base/declare',
4    'dojo/_base/lang',
5    'dojo/_base/event',
6    'dojo/_base/Deferred',
7    '../content',
8    '../store',
9    '../elastic/ElasticSearchFilteringSelect',
10    '../elastic/ElasticReadStore',
11    '../ui/_Page',
12    '../ui/lists/AccountListView'
13    ],
14    function(array,declare,lang,event,Deferred,ElasticSearchFilteringSelect,ElasticReadStore,store,_Page,content,AccountListView){
15        return declare('rft.pages.session',[_Page],{
16            session: null,
17            _accountList: null,
18            _select: null,
19            onVisit: function() {
20                if ( this.pageArgs.uid ) {
21                    Deferred.when(store.get(this.pageArgs.uid))
22                    .then(lang.hitch(this,function(obj){
23                        this.session = obj;
24                        this._setupAccountList();
25                        this._refresh();
26                    }));
27                    this._setupAutoComplete();
28                } else {
29                    throw "No valid uid or session passed!";
30                }
31            },
32            _refresh: function() {
33                this.titleNode.innerHTML = this.session.title || '';
34                this.propertiesForm.set('value',this.session);
35            },
36            onInvite: function() {
37                this._addAccount(this._select.item.i);
38                this._select.reset();
39            },
40            onSave: function(evt) {
41                lang.mixin(this.session,this.propertiesForm.get('value'));
42                this.session.accounts = array.map(this._accountList.getItems(),function(item){
43                    return store.getIdentity(item);
44                });
45                store.put(this.session)
46                .then(function(){
47                    content.goTo('sessions');
48                });
49                event.stop(evt);
50                return false;
51            },
52            onDiscard: function(evt) {
53                this.propertiesForm.reset();
54                event.stop(evt);
55                content.goTo('sessions');
56                return false;
57            },
58            _addAccount: function(item) {
59                this._accountList.insertItem(item);
60            },
61            _setupAccountList: function() {
62                this._accountList = new AccountListView().placeAt(this.accountListNode);
63                this._accountList.startup();
64                for (var account in this.session.accounts) {
65                    this._accountList.insertItem(this.session.accounts[account]);
66                }
67            },
68            _setupAutoComplete: function() {
69                var accountStore = new ElasticReadStore({
70                    url: "http://localhost:9200/rft/_search",
71                    requestMethod: "POST"
72                });
73                this._select = new ElasticSearchFilteringSelect({
74                    store: accountStore,
75                    autoComplete: false,
76                    required: false,
77                    labelType: "text",
78                    placeHolder: "Enter email address here...",
79                    pageSize: 10,
80                    hasDownArrow: false,
81                    style: "width: 400",
82                    searchAttr: "title"
83                }, this.accountSelector);
84                this._select.startup();
85            }
86
87
88        });
89    });
90
Note: See TracBrowser for help on using the repository browser.