source: Dev/trunk/client/qed/pages/session.js @ 442

Last change on this file since 442 was 442, checked in by hendrikvanantwerpen, 12 years ago

Enable validation on all fields of question.

File size: 3.1 KB
RevLine 
[384]1define([
2    'dojo/_base/array',
3    'dojo/_base/declare',
[410]4    'dojo/_base/event',
5    'dojo/_base/lang',
[420]6    'dojo/when',
[410]7    '../search',
[389]8    '../store',
[407]9    '../app/Page',
[410]10    '../app/Router',
[417]11    '../widgets/ThresholdFilteringSelect',
[420]12    '../model/classes/SessionTemplate',
[417]13    '../model/widgets/AccountListView',
14    'dojo/text!./templates/session.html'
[420]15],function(array,declare,event,lang,when,search,store,Page,Router,ThresholdFilteringSelect,SessionTemplate,AccountListView,template){
[407]16    return declare([Page],{
17        templateString: template,
18        session: null,
19        _accountList: null,
20        _select: null,
21        startup: function() {
22            if ( this._started ) { return; }
23            this.inherited(arguments);
24            if ( this.sessionId ) {
[416]25                this._loadSession();
26                this._setupAutoComplete();
27            } else {
28                throw "No valid uid or session passed!";
29            }
30        },
31        _loadSession: function() {
32            if ( this.sessionId === "new" ) {
[420]33                this.session = SessionTemplate.create();
[416]34            } else {
[420]35                when(store.get(this.sessionId))
[407]36                .then(lang.hitch(this,function(obj){
37                    this.session = obj;
38                    this._setupAccountList();
39                    this._refresh();
40                }));
[359]41            }
[407]42        },
43        _refresh: function() {
[420]44            this.titleNode.innerHTML = SessionTemplate.DisplayTitle.get(this.session);
[407]45            this.propertiesForm.set('value',this.session);
46        },
47        onInvite: function() {
48            this._addAccount(this._select.item.i);
49            this._select.reset();
50        },
51        onSave: function(evt) {
52            lang.mixin(this.session,this.propertiesForm.get('value'));
[442]53            this.session.accounts = array.map(this._accountList.get('value'), function(item){
54                return store.getIdentity(item);
[407]55            });
56            store.put(this.session)
57            .then(function(){
[410]58                Router.go('/sessions');
[407]59            });
60            event.stop(evt);
61            return false;
62        },
63        onDiscard: function(evt) {
64            this.propertiesForm.reset();
65            event.stop(evt);
[410]66            Router.go('/sessions');
[407]67            return false;
68        },
69        _addAccount: function(item) {
70            this._accountList.insertItem(item);
71        },
72        _setupAccountList: function() {
[441]73            this._accountList = new AccountListView({
74                value: this.session.accounts
75            }).placeAt(this.accountListNode);
[407]76            this._accountList.startup();
77        },
78        _setupAutoComplete: function() {
[410]79            this._select = new ThresholdFilteringSelect({
80                store: search,
[407]81                autoComplete: false,
82                required: false,
83                labelType: "text",
84                placeHolder: "Enter email address here...",
85                pageSize: 10,
86                hasDownArrow: false,
87                style: "width: 400",
88                searchAttr: "title"
89            }, this.accountSelector);
90            this._select.startup();
91        }
[364]92
[365]93
[384]94    });
[407]95});
[292]96
Note: See TracBrowser for help on using the repository browser.