Changeset 407
- Timestamp:
- 09/05/12 14:41:13 (13 years ago)
- Location:
- Dev/branches/rest-dojo-ui
- Files:
-
- 10 added
- 6 deleted
- 59 edited
Legend:
- Unmodified
- Added
- Removed
-
Dev/branches/rest-dojo-ui
- Property svn:ignore
-
old new 1 1 nbproject 2 2 .project 3 release
-
- Property svn:ignore
-
Dev/branches/rest-dojo-ui/client
- Property svn:externals
-
old new 1 dojotoolkit http://svn.dojotoolkit.org/src/tags/release-1.8.0 1 dojo http://svn.dojotoolkit.org/src/tags/release-1.8.0/dojo 2 dijit http://svn.dojotoolkit.org/src/tags/release-1.8.0/dijit 3 dojox http://svn.dojotoolkit.org/src/tags/release-1.8.0/dojox 4 util http://svn.dojotoolkit.org/src/tags/release-1.8.0/util
-
- Property svn:externals
-
Dev/branches/rest-dojo-ui/client/index.html
r386 r407 2 2 <html> 3 3 <head> 4 <title>Research Facilitator Tool</title> 4 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>Research Facilitator Tool</title>6 <link rel="stylesheet" type="text/css" href="dojotoolkit/dijit/themes/claro/claro.css" />7 <link rel="stylesheet" type="text/css" href="dojotoolkit/dojox/grid/resources/Grid.css" />8 <link rel="stylesheet" type="text/css" href="dojotoolkit/dojox/grid/resources/claroGrid.css" />9 <link rel="stylesheet" type="text/css" href="dojotoolkit/dojox/widget/Toaster/Toaster.css" />10 6 <link rel="stylesheet" type="text/css" href="rft/css/main.css" /> 11 <script type="text/javascript" src="dojotoolkit/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: false, tlmSiblingOfDojo: false, isDebug: true, baseUrl: '', packagePaths: {'dojotoolkit':['dojo','dijit', 'dojox'], '.':['rft']}"></script>12 <script type="text/javascript" src="rft/run.js"></script>13 7 </head> 14 8 <body class="dijitReset claro"> 15 <div class="page" data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="width: 100%; height: 100%;"> 16 <div class="topbar" data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 17 <a href="#!/index"><h1>ResearchTool</h1></a> 18 <div data-dojo-type="rft.ui.MainMenu"></div> 19 <div class="breadcrumbs"> 20 <span class="breadcrumb">Some</span> > <span class="breadcrumb">Sample</span> > <span class="breadcrumbCurrent">Breadcrumb [visiting]</span> 21 </div> 22 </div> 23 <div id="content" class="content" data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'"> 9 <script type="text/javascript" src="dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: false, isDebug: true"></script> 10 <script type="text/javascript" src="rft/run.js"></script> 11 <div id="content" class="page" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'center'" style="width: 100%; height: 100%;"> 12 <div class="topbar" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 13 <a href="#!/"><h1>ResearchTool</h1></a> 14 <div data-dojo-type="rft/ui/MainMenu"></div> 24 15 </div> 25 16 </div> 26 <div id="toaster" data-dojo-type="rft .ui.Notifications">17 <div id="toaster" data-dojo-type="rft/ui/Notifications"> 27 18 </div> 28 19 </body> -
Dev/branches/rest-dojo-ui/client/rft/css/main.css
r354 r407 1 @import url('external.css'); 1 2 @import url('claroOverride.css'); 2 3 -
Dev/branches/rest-dojo-ui/client/rft/elastic/ElasticReadStore.js
r384 r407 7 7 ],function(declare, json, lang, xhr, QueryReadStore) { 8 8 9 return declare( "rft.elastic.ElasticReadStore",QueryReadStore, {9 return declare(QueryReadStore, { 10 10 fetch:function(request){ 11 11 var attr = Object.keys(request.query)[0]; -
Dev/branches/rest-dojo-ui/client/rft/elastic/ElasticSearchFilteringSelect.js
r406 r407 3 3 'dijit/form/FilteringSelect' 4 4 ], function(declare, FilteringSelect) { 5 return declare( "rft.elastic.ElasticSearchFilteringSelect",FilteringSelect, {5 return declare(FilteringSelect, { 6 6 // custom min input character count to trigger search 7 7 minKeyCount: 3, -
Dev/branches/rest-dojo-ui/client/rft/pages/index.html
r359 r407 1 <div data-dojo-type="rft.pages.index"> 2 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="height: 600px;"> 3 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 4 <h2> 5 <span class="rftIcon rftIconUser"></span> 6 <span class="headerText">Main Menu</span> 7 </h2> 1 <div> 2 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 3 <h2> 4 <span class="rftIcon rftIconUser"></span> 5 <span class="headerText">Main Menu</span> 6 </h2> 7 </div> 8 9 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> 10 11 <div class="rftIndexMenuBlock" title="Sessions"> 12 <div class="rftIndexMenuMask"> 13 <span class="rftIcon rftIconSession"></span><span class="label">Sessions</span> 14 </div> 15 <button data-dojo-attach-point="btnContentCreate" data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'green twoHeight', iconClass: 'rftIcon rftIconPlus'">Create and edit</button> 16 <button data-dojo-attach-point="btnContentFacilitate" data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'green twoHeight', iconClass: 'rftIcon rftIconForward'">Facilitate</button> 8 17 </div> 9 18 10 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'"> 19 <div class="rftIndexMenuBlock" title="Content"> 20 <div class="rftIndexMenuMask"> 21 <span class="rftIcon rftIconInspect"></span><span class="label">Content</span> 22 </div> 23 <button data-dojo-attach-point="btnSurveys" data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'blue oneHeight', iconClass: 'rftIcon rftIconSurvey'">Surveys</button> 24 <button data-dojo-attach-point="btnQuestions" data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'orange oneHeight', iconClass: 'rftIcon rftIconQuestion'">Questions</button> 25 <button data-dojo-attach-point="btnApplications" data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'purple oneHeight', iconClass: 'rftIcon rftIconApplication'">Applications</button> 26 <button data-dojo-attach-point="btnDashboards" data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'red oneHeight', iconClass: 'rftIcon rftIconDashboard'">Dashboards</button> 27 </div> 11 28 12 <div class="rftIndexMenuBlock" title="Sessions"> 13 <div class="rftIndexMenuMask"> 14 <span class="rftIcon rftIconSession"></span><span class="label">Sessions</span> 15 </div> 16 <button data-rft-attach-point="btnContentCreate" data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'green twoHeight', iconClass: 'rftIcon rftIconPlus'">Create and edit</button> 17 <button data-rft-attach-point="btnContentFacilitate" data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'green twoHeight', iconClass: 'rftIcon rftIconForward'">Facilitate</button> 29 <div class="rftIndexMenuBlock" title="results"> 30 <div class="rftIndexMenuMask"> 31 <span class="rftIcon rftIconGameData"></span><span class="label">Results</span> 18 32 </div> 19 20 <div class="rftIndexMenuBlock" title="Content"> 21 <div class="rftIndexMenuMask"> 22 <span class="rftIcon rftIconInspect"></span><span class="label">Content</span> 23 </div> 24 <button data-rft-attach-point="btnSurveys" data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'blue oneHeight', iconClass: 'rftIcon rftIconSurvey'">Surveys</button> 25 <button data-rft-attach-point="btnQuestions" data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'orange oneHeight', iconClass: 'rftIcon rftIconQuestion'">Questions</button> 26 <button data-rft-attach-point="btnApplications" data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'purple oneHeight', iconClass: 'rftIcon rftIconApplication'">Applications</button> 27 <button data-rft-attach-point="btnDashboards" data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'red oneHeight', iconClass: 'rftIcon rftIconDashboard'">Dashboards</button> 28 </div> 29 30 <div class="rftIndexMenuBlock" title="results"> 31 <div class="rftIndexMenuMask"> 32 <span class="rftIcon rftIconGameData"></span><span class="label">Results</span> 33 </div> 34 <button data-rft-attach-point="btnResults" data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'blue fourHeight', iconClass: 'rftIcon rftIconGameData'">Results</button> 35 </div> 33 <button data-dojo-attach-point="btnResults" data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftIndexMenuButton', class: 'blue fourHeight', iconClass: 'rftIcon rftIconGameData'">Results</button> 36 34 </div> 37 35 </div> 38 36 39 <script>40 require([41 'dojo/on',42 'dojo/query',43 'dijit/registry',44 'rft/content',45 'dojo/domReady!'46 ], function(on, query, registry, content){47 debugger;48 registry.byId("btnSessionsCreate").on("click", function(){49 content.goTo("sessions", null);50 });51 registry.byId("btnSessionsFacilitate").on("click", function(){52 content.goTo("sessions", null);53 });54 55 registry.byId("btnSurveys").on("click", function(){56 content.goTo("surveys", null);57 });58 registry.byId("btnQuestions").on("click", function(){59 content.goTo("questions", null);60 });61 registry.byId("btnApplications").on("click", function(){62 content.goTo("applications", null);63 });64 registry.byId("btnDashboards").on("click", function(){65 content.goTo("dashboards", null);66 });67 68 registry.byId("btnResults").on("click", function(){69 content.goTo("results", null);70 });71 72 });73 </script>74 37 </div> -
Dev/branches/rest-dojo-ui/client/rft/pages/index.js
r359 r407 1 define(['dojo/_base/declare','dojo/_base/lang','rft/content','rft/ui/_Page'], 2 function(declare,lang,content,_Page){ 3 return declare('rft.pages.index',[_Page],{ 4 selectedObject: null, 5 onVisit: function() { 6 this.btnContentCreate.on("click",function(){ content.goTo("sessions"); }); 7 this.btnContentFacilitate.on("click",function(){ content.goTo("run"); }); 8 this.btnSurveys.on("click",function(){ content.goTo("surveys"); }); 9 this.btnQuestions.on("click",function(){ content.goTo("questions"); }); 10 this.btnApplications.on("click",function(){ content.goTo("applications"); }); 11 this.btnDashboards.on("click",function(){ content.goTo("dashboards"); }); 12 this.btnResults.on("click",function(){ content.goTo("results"); }); 13 } 14 }); 1 define([ 2 'dojo/_base/declare', 3 '../app/Controller', 4 '../app/Page', 5 'dojo/text!./index.html' 6 ],function(declare,Controller,Page,template){ 7 return declare([Page],{ 8 templateString: template, 9 selectedObject: null, 10 startup: function() { 11 if ( this._started ) { return; } 12 this.inherited(arguments); 13 this.btnContentCreate.on("click",function(){ Controller.go("/sessions"); }); 14 this.btnContentFacilitate.on("click",function(){ Controller.go("/run"); }); 15 this.btnSurveys.on("click",function(){ Controller.go("/surveys"); }); 16 this.btnQuestions.on("click",function(){ Controller.go("/questions"); }); 17 this.btnApplications.on("click",function(){ Controller.go("/applications"); }); 18 this.btnDashboards.on("click",function(){ Controller.go("/dashboards"); }); 19 this.btnResults.on("click",function(){ Controller.go("/results"); }); 20 } 15 21 }); 16 22 }); -
Dev/branches/rest-dojo-ui/client/rft/pages/question.html
r396 r407 1 <div data-dojo-type="rft.pages.question" class="orange"> 2 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="height: 500px;"> 3 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 4 <h2> 5 <span class="rftIcon rftIconSurvey"></span> 6 <span class="headerText">Question 123 [Editing]</span> 7 </h2> 1 <div class="orange"> 2 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 3 <h2> 4 <span class="rftIcon rftIconSurvey"></span> 5 <span class="headerText">Question 123 [Editing]</span> 6 </h2> 7 </div> 8 <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'left', design:'headline'" style="width: 300px;"> 9 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> 10 <div data-dojo-attach-point="QuestionEditorToolkitNode"></div> 8 11 </div> 9 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'left', design:'headline'" style="width: 300px;"> 10 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'"> 11 <div data-rft-attach-point="QuestionEditorToolkitNode"></div> 12 </div> 13 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 14 <button data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'" data-rft-attach-event="onClick:_onDiscard">Discard</button> 15 <button data-dojo-type="dijit.form.Button" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'" data-rft-attach-event="onClick:_onSave">Save and exit</button> 16 </div> 12 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 13 <button data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'" data-dojo-attach-event="onClick:_onDiscard">Discard</button> 14 <button data-dojo-type="dijit/form/Button" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'" data-dojo-attach-event="onClick:_onSave">Save and exit</button> 17 15 </div> 18 <div data-rft-attach-point="QuestionEditorPreviewNode"></div> 19 16 </div> 17 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> 18 <div data-dojo-attach-point="QuestionEditorPreviewNode"></div> 20 19 </div> 21 20 </div> -
Dev/branches/rest-dojo-ui/client/rft/pages/question.js
r390 r407 4 4 'dojo/_base/event', 5 5 'dojo/_base/lang', 6 'rft/store', 7 'rft/content', 8 'rft/ui/_Page', 9 'rft/ui/QuestionEditorPreview', 10 'rft/ui/QuestionEditorToolkit' 11 ],function(declare, Deferred, event, lang, store, content, _Page, QuestionEditorPreview, QuestionEditorToolkit){ 12 return declare('rft.pages.question', [_Page], { 13 question: null, 14 _toolkit: null, 15 _preview: null, 16 17 onVisit: function() { 18 if (this.pageArgs.uid) { 19 Deferred.when(store.get(this.pageArgs.uid)) 20 .then(lang.hitch(this, function(obj) { 21 this.question = obj; 22 this._refresh(); 23 })); 24 } else { 25 throw new Error("Error: no reference to object set!"); 26 } 27 this._setupEditor(); 28 }, 29 onLeave: function() { 30 this.inherited(arguments); 31 }, 32 _refresh: function () { 33 this._toolkit.set('value',this.question); 34 this._preview.appendItems(this.question.content || []); 35 }, 36 _onSave: function(evt) { 37 lang.mixin(this.question, this._toolkit.get('value')); 38 this.question.content = this._preview.getItems(); 39 store.put(this.question) 40 .then(function() { 41 content.goTo('questions'); 42 }); 43 evt && event.stop( evt ); 44 return false; 45 }, 46 _onDiscard: function() { 47 content.goTo('questions'); 48 return true; 49 }, 50 _setupEditor: function() { 51 this._toolkit = new QuestionEditorToolkit({ 52 },this.QuestionEditorToolkitNode); 53 this._toolkit.on('submit',lang.hitch(this,"_onSave")); 54 this._toolkit.startup(); 6 '../store', 7 '../app/Controller', 8 '../app/Page', 9 '../ui/QuestionEditorPreview', 10 '../ui/QuestionEditorToolkit', 11 'dojo/text!./question.html' 12 ],function(declare, Deferred, event, lang, store, Controller, Page, QuestionEditorPreview, QuestionEditorToolkit, template){ 13 return declare([Page], { 14 templateString: template, 15 question: null, 16 _toolkit: null, 17 _preview: null, 18 19 startup: function() { 20 if ( this._started ) { return; } 21 this.inherited(arguments); 22 if (this.questionId) { 23 Deferred.when(store.get(this.questionId)) 24 .then(lang.hitch(this, function(obj) { 25 this.question = obj; 26 this._refresh(); 27 })); 28 } else { 29 throw new Error("Error: no reference to object set!"); 30 } 31 this._setupEditor(); 32 }, 33 onLeave: function() { 34 this.inherited(arguments); 35 }, 36 _refresh: function () { 37 this._toolkit.set('value',this.question); 38 this._preview.appendItems(this.question.content || []); 39 }, 40 _onSave: function(evt) { 41 lang.mixin(this.question, this._toolkit.get('value')); 42 this.question.content = this._preview.getItems(); 43 store.put(this.question) 44 .then(function() { 45 Controller.go('/questions'); 46 }); 47 evt && event.stop( evt ); 48 return false; 49 }, 50 _onDiscard: function() { 51 Controller.go('/questions'); 52 return true; 53 }, 54 _setupEditor: function() { 55 this._toolkit = new QuestionEditorToolkit({ 56 },this.QuestionEditorToolkitNode); 57 this._toolkit.on('submit',lang.hitch(this,"_onSave")); 58 this._toolkit.startup(); 55 59 56 this._preview = new QuestionEditorPreview({ 57 region: 'center' 58 },this.QuestionEditorPreviewNode); 59 this._preview.startup(); 60 this._supportingWidgets.push(this._toolkit, this._preview); 61 } 62 }); 60 this._preview = new QuestionEditorPreview({ 61 },this.QuestionEditorPreviewNode); 62 this._preview.startup(); 63 this._supportingWidgets.push(this._toolkit, this._preview); 64 } 65 }); 63 66 }); 64 -
Dev/branches/rest-dojo-ui/client/rft/pages/questions.html
r370 r407 1 <div data-dojo-type="rft.pages.questions" class="blue"> 2 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="height: 500px;"> 1 <div class="blue"> 3 2 4 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'">5 6 7 8 9 10 11 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'">12 <div data-rft-attach-point="questionBrowser"></div>13 3 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 4 <h2> 5 <span class="rftIcon rftIconQuestion"></span> 6 <span class="headerText">Questions</span> 7 </h2> 8 </div> 9 10 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> 11 <div data-dojo-attach-point="questionBrowser"></div> 12 </div> 14 13 15 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'bottom'">16 <div data-dojo-type="dijit.form.Button" data-rft-attach-event="onClick:onNewQuestion" data-dojo-props="baseClass: 'rftLargeButton', iconClass:'rftIcon rftIconQuestion'">New question</div>17 14 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'bottom'"> 15 <div data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:onNewQuestion" data-dojo-props="baseClass: 'rftLargeButton', iconClass:'rftIcon rftIconQuestion'">New question</div> 16 </div> 18 17 19 </div>20 18 </div> -
Dev/branches/rest-dojo-ui/client/rft/pages/questions.js
r370 r407 4 4 'dojo/_base/event', 5 5 'dojo/_base/lang', 6 ' rft/content',7 ' rft/store',8 ' rft/ui/_Page',9 ' rft/ui/TabbedQuestionBrowser'10 ],function(declare,Deferred,event,lang,content,store,_Page,TabbedQuestionBrowser) {11 return declare('rft.pages.questions',[_Page],{12 constructor: function(){13 this.inherited(arguments);14 },15 onVisit: function() {16 this.questionBrowser = new TabbedQuestionBrowser({17 region: 'center',18 'class': 'blue',19 itemActions: {20 'Edit': {21 callback: lang.hitch(this,"onEditQuestion"),22 icon: 'Edit',23 description: 'Edit question'24 }6 '../app/Controller', 7 '../store', 8 '../app/Page', 9 '../ui/TabbedQuestionBrowser', 10 'dojo/text!./questions.html' 11 ],function(declare,Deferred,event,lang,Controller,store,Page,TabbedQuestionBrowser,template) { 12 return declare([Page],{ 13 templateString: template, 14 startup: function() { 15 if ( this._started ) { return; } 16 this.inherited(arguments); 17 this.questionBrowser = new TabbedQuestionBrowser({ 18 region: 'center', 19 'class': 'blue', 20 itemActions: { 21 'Edit': { 22 callback: lang.hitch(this,"onEditQuestion"), 23 icon: 'Edit', 24 description: 'Edit question' 25 25 } 26 },this.questionBrowser); 27 this.questionBrowser.startup(); 28 }, 29 _refresh: function() { 30 Deferred.when(store.query('_design/default/_view/by_type',{key: 'Question'})) 31 .then(lang.hitch(this,function(items){ 32 this._list.setItems(items); 33 })); 34 }, 35 onNewQuestion: function() { 36 Deferred.when(store.add({type:'Question'})) 37 .then(lang.hitch(this,function(question){ 38 this.onEditQuestion(question); 39 })); 40 }, 41 onEditQuestion: function(question) { 42 content.goTo("question", {uid: question._id}); 43 } 44 }); 26 } 27 },this.questionBrowser); 28 this.questionBrowser.startup(); 29 }, 30 _refresh: function() { 31 Deferred.when(store.query('_design/default/_view/by_type',{key: 'Question'})) 32 .then(lang.hitch(this,function(items){ 33 this._list.setItems(items); 34 })); 35 }, 36 onNewQuestion: function() { 37 Deferred.when(store.add({type:'Question'})) 38 .then(lang.hitch(this,function(question){ 39 this.onEditQuestion(question); 40 })); 41 }, 42 onEditQuestion: function(question) { 43 Controller.go("/question/"+question._id); 44 } 45 }); 45 46 }); -
Dev/branches/rest-dojo-ui/client/rft/pages/session.html
r384 r407 1 <div data-dojo-type="rft.pages.session"> 2 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="height: 500px;"> 3 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 4 <h2> 5 <span class="rftIcon rftIconSurvey"></span> 6 <span data-rft-attach-point="titleNode" class="headerText">Untitled</span><span class="headerText"> [editing]</span> 7 </h2> 8 </div> 9 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'"> 10 <div data-dojo-type="dijit.layout.TabContainer" class="green" data-dojo-props="tabPosition:'left-h',region:'center'"> 11 <div data-dojo-type="dijit.layout.ContentPane" title="Properties"> 12 <div data-dojo-type="dijit.form.Form" data-rft-attach-point="propertiesForm" data-rft-attach-event="onSubmit:onSave"> 1 <div> 2 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 3 <h2> 4 <span class="rftIcon rftIconSurvey"></span> 5 <span data-dojo-attach-point="titleNode" class="headerText">Untitled</span><span class="headerText"> [editing]</span> 6 </h2> 7 </div> 8 <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'center'"> 9 <div data-dojo-type="dijit/layout/TabContainer" class="green" data-dojo-props="tabPosition:'left-h',region:'center'"> 10 <div data-dojo-type="dijit/layout/ContentPane" title="Properties"> 11 <div data-dojo-type="dijit/form/Form" data-dojo-attach-point="propertiesForm" data-dojo-attach-event="onSubmit:onSave"> 13 12 14 15 16 17 <input type="text" name="title" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder: 'Enter title here'" />18 19 20 <textarea name="description" rows="3" cols="54" data-dojo-type="dijit.form.SimpleTextarea" data-dojo-props="selectOnClick: true, placeHolder: 'Description shown in tooltips'"></textarea>21 22 23 <input type="text" name="plannedDate" data-dojo-type="dijit.form.DateTextBox" required="required" />24 13 <h3>Basic</h3> 14 <fieldset class="align"> 15 <label for="title">Title</label> 16 <input type="text" name="title" data-dojo-type="dijit/form/TextBox" data-dojo-props="placeHolder: 'Enter title here'" /> 17 <br/> 18 <label for="description">Description</label> 19 <textarea name="description" rows="3" cols="54" data-dojo-type="dijit/form/SimpleTextarea" data-dojo-props="selectOnClick: true, placeHolder: 'Description shown in tooltips'"></textarea> 20 <br/> 21 <label for="plannedDate">Planned date</label> 22 <input type="text" name="plannedDate" data-dojo-type="dijit/form/DateTextBox" required="required" /> 23 </fieldset> 25 24 26 27 28 29 <select data-rft-attach-point="accountSelector"></select>30 <button data-rft-attach-point="btnInvite" data-dojo-type="dijit.form.Button" data-rft-attach-event="onClick:onInvite" data-dojo-props="baseClass: 'rftBlockButton', class: 'green', iconClass: 'rftIcon rftIconPlus'">Invite</button>31 32 33 <div data-rft-attach-point="accountListNode" class="rftAccountListView">34 35 25 <h3>Accounts</h3> 26 <fieldset class="align"> 27 <label for="accountSelector">Add new</label> 28 <select data-dojo-attach-point="accountSelector"></select> 29 <button data-dojo-attach-point="btnInvite" data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:onInvite" data-dojo-props="baseClass: 'rftBlockButton', class: 'green', iconClass: 'rftIcon rftIconPlus'">Invite</button> 30 <br/><br/> 31 32 <div data-dojo-attach-point="accountListNode" class="rftAccountListView"> 33 </div> 34 </fieldset> 36 35 37 <button data-dojo-type="dijit.form.Button" data-rft-attach-event="onClick:onDiscard" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'">Discard changes</button> 38 <button data-dojo-type="dijit.form.Button" data-rft-attach-event="onClick:onSave" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'">Save changes</button> 39 40 </div> 36 <button data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:onDiscard" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'">Discard changes</button> 37 <button data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:onSave" data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'">Save changes</button> 41 38 42 39 </div> 43 <div data-dojo-type="dijit.layout.ContentPane" title="Design">44 <div class="rftSessionObject green">45 <div class="rftIcon rftIconSurvey"></div>46 <label>Survey name</label>47 </div>48 <div class="rftSessionObject green">49 <div class="rftIcon rftIconSurvey"></div>50 <label>Survey name, this one is really long.</label>51 </div>52 40 41 </div> 42 <div data-dojo-type="dijit/layout/ContentPane" title="Design"> 43 <div class="rftSessionObject green"> 44 <div class="rftIcon rftIconSurvey"></div> 45 <label>Survey name</label> 53 46 </div> 47 <div class="rftSessionObject green"> 48 <div class="rftIcon rftIconSurvey"></div> 49 <label>Survey name, this one is really long.</label> 50 </div> 51 54 52 </div> 55 53 </div> -
Dev/branches/rest-dojo-ui/client/rft/pages/session.js
r389 r407 5 5 'dojo/_base/event', 6 6 'dojo/_base/Deferred', 7 '../ content',7 '../app/Controller', 8 8 '../store', 9 9 '../elastic/ElasticSearchFilteringSelect', 10 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(); 11 '../app/Page', 12 '../ui/lists/AccountListView', 13 'dojo/text!./session.html' 14 ],function(array,declare,lang,event,Deferred,ElasticSearchFilteringSelect,ElasticReadStore,store,Page,Controller,AccountListView,template){ 15 return declare([Page],{ 16 templateString: template, 17 session: null, 18 _accountList: null, 19 _select: null, 20 startup: function() { 21 if ( this._started ) { return; } 22 this.inherited(arguments); 23 if ( this.sessionId ) { 24 Deferred.when(store.get(this.sessionId)) 25 .then(lang.hitch(this,function(obj){ 26 this.session = obj; 27 this._setupAccountList(); 28 this._refresh(); 29 })); 30 this._setupAutoComplete(); 31 } else { 32 throw "No valid uid or session passed!"; 85 33 } 34 }, 35 _refresh: function() { 36 this.titleNode.innerHTML = this.session.title || ''; 37 this.propertiesForm.set('value',this.session); 38 }, 39 onInvite: function() { 40 this._addAccount(this._select.item.i); 41 this._select.reset(); 42 }, 43 onSave: function(evt) { 44 lang.mixin(this.session,this.propertiesForm.get('value')); 45 this.session.accounts = array.map(this._accountList.getItems(),function(item){ 46 return store.getIdentity(item); 47 }); 48 store.put(this.session) 49 .then(function(){ 50 Controller.go('/sessions'); 51 }); 52 event.stop(evt); 53 return false; 54 }, 55 onDiscard: function(evt) { 56 this.propertiesForm.reset(); 57 event.stop(evt); 58 Controller.go('/sessions'); 59 return false; 60 }, 61 _addAccount: function(item) { 62 this._accountList.insertItem(item); 63 }, 64 _setupAccountList: function() { 65 this._accountList = new AccountListView().placeAt(this.accountListNode); 66 this._accountList.startup(); 67 for (var account in this.session.accounts) { 68 this._accountList.insertItem(this.session.accounts[account]); 69 } 70 }, 71 _setupAutoComplete: function() { 72 var accountStore = new ElasticReadStore({ 73 url: "http://localhost:9200/rft/_search", 74 requestMethod: "POST" 75 }); 76 this._select = new ElasticSearchFilteringSelect({ 77 store: accountStore, 78 autoComplete: false, 79 required: false, 80 labelType: "text", 81 placeHolder: "Enter email address here...", 82 pageSize: 10, 83 hasDownArrow: false, 84 style: "width: 400", 85 searchAttr: "title" 86 }, this.accountSelector); 87 this._select.startup(); 88 } 86 89 87 90 88 });89 91 }); 92 }); 90 93 -
Dev/branches/rest-dojo-ui/client/rft/pages/sessions.html
r359 r407 1 <div data-dojo-type="rft.pages.sessions"> 2 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="height: 500px;"> 3 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 4 <h2> 5 <span class="rftIcon rftIconSession"></span> 6 <span class="headerText">Sessions</span> 7 </h2> 8 </div> 9 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'"> 10 <div data-rft-attach-point="tabContainer" data-dojo-type="dijit.layout.TabContainer" class="green" data-dojo-props="tabPosition:'left-h',region:'center'"> 11 <div data-dojo-type="dijit.layout.BorderContainer" title="Templates" data-rft-attach-point="templatesTab"> 12 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region: 'center'" data-rft-attach-point="containerTemplates"> 13 </div> 14 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region: 'bottom'" style="height: 40px;"> 15 <div data-dojo-type="dijit.form.Button" data-dojo-props="region: 'bottom', baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconSessionTemplate'" data-rft-attach-event="onClick:onAddSessionTemplate">Create new template</div> 16 </div> 1 <div> 2 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 3 <h2> 4 <span class="rftIcon rftIconSession"></span> 5 <span class="headerText">Sessions</span> 6 </h2> 7 </div> 8 <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'center'"> 9 <div data-dojo-attach-point="tabContainer" data-dojo-type="dijit/layout/TabContainer" class="green" data-dojo-props="tabPosition:'left-h',region:'center'"> 10 <div data-dojo-type="dijit/layout/BorderContainer" title="Templates" data-dojo-attach-point="templatesTab"> 11 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'center'" data-dojo-attach-point="containerTemplates"> 17 12 </div> 18 <div data-dojo-type="dijit.layout.ContentPane" title="Sessions" data-rft-attach-point="sessionsTab"> 19 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region: 'center'" data-rft-attach-point="containerSessions"> 20 </div> 21 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region: 'bottom'" style="height: 40px;"> 22 <!-- Buttons? --> 23 </div> 13 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'" style="height: 40px;"> 14 <div data-dojo-type="dijit/form/Button" data-dojo-props="region: 'bottom', baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconSessionTemplate'" data-dojo-attach-event="onClick:onAddSessionTemplate">Create new template</div> 15 </div> 16 </div> 17 <div data-dojo-type="dijit/layout/ContentPane" title="Sessions" data-dojo-attach-point="sessionsTab"> 18 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'center'" data-dojo-attach-point="containerSessions"> 19 </div> 20 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'" style="height: 40px;"> 21 <!-- Buttons? --> 24 22 </div> 25 23 </div> -
Dev/branches/rest-dojo-ui/client/rft/pages/sessions.js
r384 r407 3 3 'dojo/_base/lang', 4 4 'dojo/date/stamp', 5 'rft/store', 6 'rft/content', 7 'rft/ui/_Page', 8 'rft/ui/ObjectBox'], 9 function(declare,lang,dateStamp,store,content,_Page,ObjectBox){ 10 return declare('rft.pages.sessions',[_Page],{ 11 templateActions: null, 12 sessionActions: null, 13 onVisit: function() { 14 this.templateActions = { 15 "Edit": function(obj){ 16 content.goTo('session',{uid:store.getIdentity(obj)}); 17 }, 18 "Delete": lang.hitch(this,function(obj){ 19 store.remove(store.getIdentity(obj),store.getRevision(obj)) 20 .then(lang.hitch(this,function(){ 21 this._refresh(); 22 })); 23 }), 24 "Publish": lang.hitch(this,this._publishSession) 25 }; 26 this.sessionActions = { 27 "Facilitate": function(obj){ 28 content.goTo('run',{uid:store.getIdentity(obj)}); 29 }, 30 "Delete": lang.hitch(this,function(obj){ 31 store.remove(store.getIdentity(obj),store.getRevision(obj)) 32 .then(lang.hitch(this,function(){ 33 this._refresh(); 34 })); 35 }) 36 }; 5 '../store', 6 '../app/Controller', 7 '../app/Page', 8 '../ui/ObjectBox', 9 'dojo/text!./sessions.html' 10 ],function(declare,lang,dateStamp,store,Controller,Page,ObjectBox,template){ 11 return declare([Page],{ 12 templateString: template, 13 templateActions: null, 14 sessionActions: null, 15 startup: function() { 16 if ( this._started ) { return; } 17 this.inherited(arguments); 18 this.templateActions = { 19 "Edit": function(obj){ 20 Controller.go('/session/'+store.getIdentity(obj)); 21 }, 22 "Delete": lang.hitch(this,function(obj){ 23 store.remove(store.getIdentity(obj),store.getRevision(obj)) 24 .then(lang.hitch(this,function(){ 25 this._refresh(); 26 })); 27 }), 28 "Publish": lang.hitch(this,this._publishSession) 29 }; 30 this.sessionActions = { 31 "Facilitate": function(obj){ 32 Controller.go('run',{uid:store.getIdentity(obj)}); 33 }, 34 "Delete": lang.hitch(this,function(obj){ 35 store.remove(store.getIdentity(obj),store.getRevision(obj)) 36 .then(lang.hitch(this,function(){ 37 this._refresh(); 38 })); 39 }) 40 }; 41 this._refresh(); 42 }, 43 _refresh: function() { 44 this.containerTemplates.set('content',''); 45 this.containerSessions.set('content',''); 46 this._refreshByType('SessionTemplate',this.containerTemplates.domNode,this.templateActions); 47 this._refreshByType('SessionInstance',this.containerSessions.domNode,this.sessionActions); 48 }, 49 _refreshByType: function(type,container,actions) { 50 store.query("_design/default/_view/by_type",{key:type}) 51 .forEach(lang.hitch(this,function(obj){ 52 var widget = new ObjectBox({ 53 actions: actions 54 }).placeAt(container, "last"); 55 widget.startup(); 56 widget.set('value',obj); 57 })); 58 }, 59 onAddSessionTemplate: function(){ 60 store.put({ 61 type: 'SessionTemplate' 62 }) 63 .then(lang.hitch(this,function(obj){ 64 Controller.go('/session/'+store.getIdentity(obj)); 65 })); 66 }, 67 _publishSession: function(sessionTemplate) { 68 var session = lang.clone(sessionTemplate); 69 delete session[store.idProperty]; 70 delete session[store.revProperty]; 71 session.type = "SessionInstance"; 72 session.publishedDate = dateStamp.toISOString(new Date(),{zulu: true}); 73 session.creator = "Igor Mayer"; 74 store.add(session) 75 .then(lang.hitch(this,function(){ 37 76 this._refresh(); 38 }, 39 _refresh: function() { 40 this.containerTemplates.set('content',''); 41 this.containerSessions.set('content',''); 42 this._refreshByType('SessionTemplate',this.containerTemplates.domNode,this.templateActions); 43 this._refreshByType('SessionInstance',this.containerSessions.domNode,this.sessionActions); 44 }, 45 _refreshByType: function(type,container,actions) { 46 store.query("_design/default/_view/by_type",{key:type}) 47 .forEach(lang.hitch(this,function(obj){ 48 var widget = new ObjectBox({ 49 actions: actions 50 }).placeAt(container, "last"); 51 widget.startup(); 52 widget.set('value',obj); 53 })); 54 }, 55 onAddSessionTemplate: function(){ 56 store.put({ 57 type: 'SessionTemplate' 58 }) 59 .then(lang.hitch(this,function(obj){ 60 content.goTo('session',{uid:store.getIdentity(obj)}); 61 })); 62 }, 63 _publishSession: function(sessionTemplate) { 64 var session = lang.clone(sessionTemplate); 65 delete session[store.idProperty]; 66 delete session[store.revProperty]; 67 session.type = "SessionInstance"; 68 session.publishedDate = dateStamp.toISOString(new Date(),{zulu: true}); 69 session.creator = "Igor Mayer"; 70 store.add(session) 71 .then(lang.hitch(this,function(){ 72 this._refresh(); 73 this.tabContainer.selectChild(this.sessionsTab); 74 })); 75 } 76 }); 77 this.tabContainer.selectChild(this.sessionsTab); 78 })); 79 } 77 80 }); 78 81 }); -
Dev/branches/rest-dojo-ui/client/rft/pages/survey.html
r382 r407 1 <div data-dojo-type="rft.pages.survey" class="blue"> 2 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="height: 500px;"> 1 <div class="blue"> 3 2 4 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 5 <h2> 6 <span class="rftIcon rftIconSurvey"></span> 7 <span class="headerText" data-rft-attach-point="titleNode">Survey Editor</span> 8 </h2> 3 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 4 <h2> 5 <span class="rftIcon rftIconSurvey"></span> 6 <span class="headerText" data-dojo-attach-point="titleNode">Survey Editor</span> 7 </h2> 8 </div> 9 10 <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'center'"> 11 <div data-dojo-attach-point="questionBrowser"></div> 12 </div> 13 14 <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'right'" style="width: 300px"> 15 <div data-dojo-attach-point="surveyListViewNode" class="rftSurveyListView"> 9 16 </div> 10 11 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'"> 12 <div data-rft-attach-point="questionBrowser"></div> 17 18 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'"> 19 <button data-dojo-type="dijit/form/Button" 20 data-dojo-attach-event="onClick:_onShowProperties" 21 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconProperties'"> 22 Properties</button> 23 <button data-dojo-type="dijit/form/Button" 24 data-dojo-attach-event="onClick:_onSave" 25 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'"> 26 Save Changes</button> 27 <button data-dojo-type="dijit/form/Button" 28 data-dojo-attach-event="onClick:_onDiscard" 29 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'"> 30 Discard changes</button> 31 <button data-dojo-type="dijit/form/Button" 32 data-dojo-attach-event="onClick:_onShowPreview" 33 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconPreview'"> 34 Preview</button> 13 35 </div> 14 15 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'right'" style="width: 300px">16 <div data-rft-attach-point="surveyListViewNode" class="rftSurveyListView">17 </div>18 36 19 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region: 'bottom'"> 20 <button data-dojo-type="dijit.form.Button" 21 data-rft-attach-event="onClick:_onShowProperties" 22 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconProperties'"> 23 Properties</button> 24 <button data-dojo-type="dijit.form.Button" 25 data-rft-attach-event="onClick:_onSave" 26 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconAccept'"> 27 Save Changes</button> 28 <button data-dojo-type="dijit.form.Button" 29 data-rft-attach-event="onClick:_onDiscard" 30 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconCancel'"> 31 Discard changes</button> 32 <button data-dojo-type="dijit.form.Button" 33 data-rft-attach-event="onClick:_onShowPreview" 34 data-dojo-props="baseClass: 'rftLargeButton', iconClass: 'rftIcon rftIconPreview'"> 35 Preview</button> 36 </div> 37 </div> 38 </div> 37 <div data-dojo-type="dijit/Dialog" 38 title="Survey properties" 39 data-dojo-attach-point="propertiesDialog" 40 data-dojo-attach-event="onSubmit:_onPropertiesOk"> 39 41 40 <div data-dojo-type="dijit.Dialog" 41 title="Survey properties" 42 data-rft-attach-point="propertiesDialog" 43 data-rft-attach-event="onSubmit:_onPropertiesOk"> 44 45 <form data-dojo-type="dijit.form.Form" 46 data-rft-attach-point="propertiesForm"> 42 <form data-dojo-type="dijit/form/Form" 43 data-dojo-attach-point="propertiesForm"> 47 44 <label for="title">Title</label> 48 <input data-dojo-type="dijit .form.TextBox" name="title"/><br/>45 <input data-dojo-type="dijit/form/TextBox" name="title"/><br/> 49 46 <label for="description">Description</label> 50 <input data-dojo-type="dijit .form.Textarea" name="description"/><br/>47 <input data-dojo-type="dijit/form/Textarea" name="description"/><br/> 51 48 </form> 52 49 53 50 <div> 54 <button data-dojo-type="dijit .form.Button"51 <button data-dojo-type="dijit/form/Button" 55 52 type="submit" 56 data- rft-attach-event="onClick:_onPropertiesOk">53 data-dojo-attach-event="onClick:_onPropertiesOk"> 57 54 OK</button> 58 <button data-dojo-type="dijit .form.Button"55 <button data-dojo-type="dijit/form/Button" 59 56 type="button" 60 data- rft-attach-event="onClick:_onPropertiesCancel">57 data-dojo-attach-event="onClick:_onPropertiesCancel"> 61 58 Cancel</button> 62 59 </div> 60 63 61 </div> 64 62 -
Dev/branches/rest-dojo-ui/client/rft/pages/survey.js
r402 r407 5 5 'dojo/_base/event', 6 6 'dojo/_base/lang', 7 '../ content',7 '../app/Controller', 8 8 '../store', 9 '../ ui/_Page',9 '../app/Page', 10 10 '../ui/lists/QuestionListView', 11 '../ui/TabbedQuestionBrowser' 12 ], 13 function(array,declare,Deferred,event,lang,content,store,_Page, 14 QuestionListView,TabbedQuestionBrowser){ 15 return declare('rft.pages.survey',[_Page],{ 16 survey: null, 17 questionList: null, 18 _dataMap: null, 19 constructor: function(){ 20 this._dataMap = {}; 21 }, 22 onVisit: function() { 23 if ( this.pageArgs.uid ) { 24 this._setupQuestionBrowser(); 25 this._setupListView(); 26 Deferred.when(store.get(this.pageArgs.uid)) 27 .then(lang.hitch(this,function(obj){ 28 this.survey = obj; 29 store.query(null,{keys:this.survey.questions,include_docs:true}) 30 .forEach(lang.hitch(this.questionList,'appendItem')); 31 this.refresh(); 32 })); 33 } else { 34 throw "No valid uid or survey passed!"; 11 '../ui/TabbedQuestionBrowser', 12 'dojo/text!./survey.html' 13 ],function(array,declare,Deferred,event,lang,Controller,store,Page, 14 QuestionListView,TabbedQuestionBrowser,template){ 15 return declare([Page],{ 16 templateString: template, 17 survey: null, 18 questionList: null, 19 _dataMap: null, 20 constructor: function(){ 21 this._dataMap = {}; 22 }, 23 startup: function() { 24 if ( this._started ) { return; } 25 this.inherited(arguments); 26 if ( this.surveyId ) { 27 this._setupQuestionBrowser(); 28 this._setupListView(); 29 Deferred.when(store.get(this.surveyId)) 30 .then(lang.hitch(this,function(obj){ 31 this.survey = obj; 32 store.query(null,{keys:this.survey.questions,include_docs:true}) 33 .forEach(lang.hitch(this.questionList,'appendItem')); 34 this.refresh(); 35 })); 36 } else { 37 throw "No valid uid or survey passed!"; 38 } 39 }, 40 _setupQuestionBrowser: function() { 41 this.questionBrowser = new TabbedQuestionBrowser({ 42 region: 'center', 43 'class': 'blue', 44 selectedActions: { 45 "Include": { 46 callback: lang.hitch(this,this._includeQuestion), 47 icon: "Accept", 48 description: "Include in survey" 49 } 50 }, 51 itemActions: { 52 "Info": { 53 callback: function(item){ item.description && alert(item.description); }, 54 icon: "Inspect", 55 description: "Show item description" 56 } 35 57 } 36 }, 37 _setupQuestionBrowser: function() { 38 this.questionBrowser = new TabbedQuestionBrowser({ 39 region: 'center', 40 'class': 'blue', 41 selectedActions: { 42 "Include": { 43 callback: lang.hitch(this,this._includeQuestion), 44 icon: "Accept", 45 description: "Include in survey" 46 } 47 }, 48 itemActions: { 49 "Info": { 50 callback: function(item){ item.description && alert(item.description); }, 51 icon: "Inspect", 52 description: "Show item description" 53 } 54 } 55 },this.questionBrowser); 56 this.questionBrowser.startup(); 57 }, 58 _includeQuestion: function(question) { 59 this.questionList.insertItem(question); 60 }, 61 _setupListView: function() { 62 this.questionList = new QuestionListView({ 63 region: 'center' 64 },this.surveyListViewNode); 65 this.questionList.startup(); 66 }, 67 refresh: function() { 68 this.titleNode.innerHTML = this.survey.title || "(set title in properties)"; 69 this.propertiesForm.set('value',this.survey); 70 }, 71 _onShowProperties: function(evt) { 72 this.propertiesDialog.show(); 73 }, 74 _onPropertiesOk: function(evt) { 75 this.propertiesDialog.hide(); 76 lang.mixin(this.survey, this.propertiesForm.get('value')); 77 this.refresh(); 78 event.stop(evt); 79 return false; 80 }, 81 _onPropertiesCancel: function(evt) { 82 this.propertiesDialog.hide(); 83 this.propertiesForm.set('value',this.survey); 84 event.stop(evt); 85 return false; 86 }, 87 _onSave: function(evt) { 88 this.survey.questions = array.map(this.questionList.getItems(),function(item){ 89 return store.getIdentity(item); 90 }); 91 store.put(this.survey) 92 .then(function() { 93 content.goTo('surveys'); 94 }); 95 event.stop(evt); 96 return false; 97 }, 98 _onDiscard: function(evt) { 99 }, 100 _onShowPreview: function() { 101 content.goTo('viewSurvey', {uid: store.getIdentity(this.survey)}); 102 } 103 }); 58 },this.questionBrowser); 59 this.questionBrowser.startup(); 60 }, 61 _includeQuestion: function(question) { 62 this.questionList.insertItem(question); 63 }, 64 _setupListView: function() { 65 this.questionList = new QuestionListView({ 66 region: 'center' 67 },this.surveyListViewNode); 68 this.questionList.startup(); 69 }, 70 refresh: function() { 71 this.titleNode.innerHTML = this.survey.title || "(set title in properties)"; 72 this.propertiesForm.set('value',this.survey); 73 }, 74 _onShowProperties: function(evt) { 75 this.propertiesDialog.show(); 76 }, 77 _onPropertiesOk: function(evt) { 78 this.propertiesDialog.hide(); 79 lang.mixin(this.survey, this.propertiesForm.get('value')); 80 this.refresh(); 81 event.stop(evt); 82 return false; 83 }, 84 _onPropertiesCancel: function(evt) { 85 this.propertiesDialog.hide(); 86 this.propertiesForm.set('value',this.survey); 87 event.stop(evt); 88 return false; 89 }, 90 _onSave: function(evt) { 91 this.survey.questions = array.map(this.questionList.getItems(),function(item){ 92 return store.getIdentity(item); 93 }); 94 store.put(this.survey) 95 .then(function() { 96 Controller.go('/surveys'); 97 }); 98 event.stop(evt); 99 return false; 100 }, 101 _onDiscard: function(evt) { 102 }, 103 _onShowPreview: function() { 104 Controller.go('/viewSurvey/'+store.getIdentity(this.survey)); 105 } 106 }); 104 107 }); 105 108 -
Dev/branches/rest-dojo-ui/client/rft/pages/surveys.html
r358 r407 1 <div data-dojo-type="rft.pages.surveys"> 2 <button data-dojo-type="dijit.form.Button" class="blue" data-dojo-props="disabled: true, baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconEdit'" data-rft-attach-point="btnEdit">Edit</button> 3 <button data-dojo-type="dijit.form.Button" class="blue" data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconPlus'" data-rft-attach-point="btnNew">New</button> 4 <div data-dojo-type="dojox.grid.DataGrid" data-dojo-props="autoWidth:true,autoHeight:true,structure:[{name:'Title',field:'title'}]" 5 data-rft-attach-point="grid"></div> 1 <div> 2 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'center'"> 3 <button data-dojo-type="dijit/form/Button" class="blue" data-dojo-props="disabled: true, baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconEdit'" data-dojo-attach-point="btnEdit">Edit</button> 4 <button data-dojo-type="dijit/form/Button" class="blue" data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconPlus'" data-dojo-attach-point="btnNew">New</button> 5 <div data-dojo-type="dojox/grid/DataGrid" data-dojo-props="autoWidth:true,autoHeight:true,structure:[{name:'Title',field:'title'}]" data-dojo-attach-point="grid"></div> 6 </div> 6 7 </div> -
Dev/branches/rest-dojo-ui/client/rft/pages/surveys.js
r358 r407 1 define(['dojo/_base/declare','dojo/_base/lang','dojo/_base/Deferred','dojo/data/ObjectStore','rft/auth','rft/store','rft/content','rft/ui/_Page'], 2 function(declare,lang,Deferred,ObjectStore,auth,store,content,_Page){ 3 return declare('rft.pages.surveys',[_Page],{ 4 selectedObject: null, 5 onVisit: function() { 6 this.grid.setStore( 7 ObjectStore({objectStore: store}), 8 "_design/default/_view/by_type",{key:'Survey'}); 1 define([ 2 'dojo/_base/declare', 3 'dojo/_base/lang', 4 'dojo/_base/Deferred', 5 'dojo/data/ObjectStore', 6 '../auth', 7 '../store', 8 '../app/Controller', 9 '../app/Page', 10 'dojo/text!./surveys.html' 11 ],function(declare,lang,Deferred,ObjectStore,auth,store,Controller,Page,template){ 12 return declare([Page],{ 13 templateString: template, 14 selectedObject: null, 15 startup: function() { 16 if ( this._started ) { return; } 17 this.inherited(arguments); 18 this.grid.setStore( 19 ObjectStore({objectStore: store}), 20 "_design/default/_view/by_type",{key:'Survey'}); 21 22 this.grid.on('rowclick',lang.hitch(this,function(evt){ 23 this.selectedObject = evt.grid.getItem(evt.rowIndex); 24 this.btnEdit.set('disabled',!this.selectedObject); 25 })); 26 27 this.grid.on('rowdblclick',lang.hitch(this,function(evt){ 28 var obj = evt.grid.getItem(evt.rowIndex); 29 Controller.go('/survey/'+store.getIdentity(obj)); 30 })); 31 32 this.btnNew.on('click',lang.hitch(this,function(){ 33 Deferred.when( store.add({type:'Survey',creator:auth.getUser()}) ) 34 .then(function(obj) { 35 Controller.go('/survey/'+store.getIdentity(obj)); 36 }); 37 })); 38 39 this.btnEdit.on('click',lang.hitch(this,function(){ 40 if ( this.selectedObject ) { 41 Controller.go('/survey/'+store.getIdentity(this.selectedObject)); 42 } 9 43 10 this.grid.on('rowclick',lang.hitch(this,function(evt){ 11 this.selectedObject = evt.grid.getItem(evt.rowIndex); 12 this.btnEdit.set('disabled',!this.selectedObject); 13 })); 14 15 this.grid.on('rowdblclick',lang.hitch(this,function(evt){ 16 var obj = evt.grid.getItem(evt.rowIndex); 17 content.goTo('/survey',{uid:store.getIdentity(obj)}); 18 })); 19 20 this.btnNew.on('click',lang.hitch(this,function(){ 21 Deferred.when( store.add({type:'Survey',creator:auth.getUser()}) ) 22 .then(function(obj) { 23 content.goTo('/survey',{uid:store.getIdentity(obj)}); 24 }); 25 })); 26 27 this.btnEdit.on('click',lang.hitch(this,function(){ 28 if ( this.selectedObject ) { 29 content.goTo('/survey',{uid:store.getIdentity(this.selectedObject)}); 30 } 31 32 })); 33 } 34 }); 44 })); 45 } 46 }); 35 47 }); 36 48 -
Dev/branches/rest-dojo-ui/client/rft/pages/viewSurvey.html
r406 r407 1 <div data-dojo-type="rft.pages.viewSurvey" class="blue"> 2 <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="height: 500px;"> 1 <div class="blue"> 3 2 4 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'">5 6 7 <span class="headerText" data-rft-attach-point="titleNode">Survey</span>8 9 10 11 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'" data-rft-attach-point="questionsPane">12 <form data-dojo-type="dijit.form.Form" data-rft-attach-point="questionsForm"13 data-rft-attach-event="onSubmit:_onSubmit"14 15 <div data-rft-attach-point="questionsAnchor"></div>16 17 18 19 <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'bottom'">20 <button data-dojo-type="dijit.form.Button"21 22 data-rft-attach-event="onClick:_onSubmit">23 24 <button data-dojo-type="dijit.form.Button"25 26 data-rft-attach-event="onClick:_onCancel">27 28 3 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 4 <h2> 5 <span class="rftIcon rftIconSurvey"></span> 6 <span class="headerText" data-dojo-attach-point="titleNode">Survey</span> 7 </h2> 8 </div> 9 10 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" data-dojo-attach-point="questionsPane"> 11 <form data-dojo-type="dijit/form/Form" data-dojo-attach-point="questionsForm" 12 data-dojo-attach-event="onSubmit:_onSubmit" 13 style="overflow: auto"> 14 <div data-dojo-attach-point="questionsAnchor"></div> 15 </form> 16 </div> 17 18 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'bottom'"> 19 <button data-dojo-type="dijit/form/Button" 20 type="submit" 21 data-dojo-attach-event="onClick:_onSubmit"> 22 Submit</button> 23 <button data-dojo-type="dijit/form/Button" 24 type="button" 25 data-dojo-attach-event="onClick:_onCancel"> 26 Cancel</button> 27 </div> 29 28 30 </div>31 29 </div> -
Dev/branches/rest-dojo-ui/client/rft/pages/viewSurvey.js
r406 r407 6 6 'dojo/_base/lang', 7 7 '../store', 8 '../ui/_Page', 9 '../ui/content/ContentWidgetFactory' 10 ], 11 function(array,declare,Deferred,event,lang,store,_Page,ContentWidgetFactory){ 12 return declare('rft.pages.viewSurvey',[_Page],{ 13 survey: null, 14 constructor: function(){ 15 this._dataMap = {}; 16 }, 17 onVisit: function() { 18 if ( this.pageArgs.uid ) { 19 Deferred.when(store.get(this.pageArgs.uid)) 20 .then(lang.hitch(this,function(obj){ 21 var f = new ContentWidgetFactory(); 22 this.survey = obj; 23 store.query(null,{keys:this.survey.questions,include_docs:true}) 24 .forEach(function(question){ 25 array.forEach(question.content || [],function(item){ 26 var w = f.createViewWidget(item,{ 27 name: question.code+'.'+item.code 28 }); 29 if ( w !== null ) { 30 w.placeAt(this.questionsAnchor,'before'); 31 } 32 },this); 8 '../app/Page', 9 '../ui/content/ContentWidgetFactory', 10 'dojo/text!./viewSurvey.html' 11 ],function(array,declare,Deferred,event,lang,store,Page,ContentWidgetFactory,template){ 12 return declare([Page],{ 13 templateString: template, 14 survey: null, 15 constructor: function(){ 16 this._dataMap = {}; 17 }, 18 startup: function() { 19 if ( this._started ) { return; } 20 this.inherited(arguments); 21 if ( this.surveyId ) { 22 Deferred.when(store.get(this.surveyId)) 23 .then(lang.hitch(this,function(obj){ 24 var f = new ContentWidgetFactory(); 25 this.survey = obj; 26 store.query(null,{keys:this.survey.questions,include_docs:true}) 27 .forEach(function(question){ 28 array.forEach(question.content || [],function(item){ 29 var w = f.createViewWidget(item,{ 30 name: question.code+'.'+item.code 31 }); 32 if ( w !== null ) { 33 w.placeAt(this.questionsAnchor,'before'); 34 } 33 35 },this); 34 })); 35 } else { 36 throw "No valid uid or survey passed!"; 37 } 38 }, 39 _onSubmit: function(evt) { 40 var value = this.questionsForm.get('value'); 41 this.questionsPane.set('content','<pre>'+JSON.stringify(value)+'</pre>'); 42 event.stop(evt); 43 return false; 44 }, 45 _onCancel: function(evt) { 46 event.stop(evt); 47 return false; 36 },this); 37 })); 38 } else { 39 throw "No valid uid or survey passed!"; 48 40 } 49 }); 41 }, 42 _onSubmit: function(evt) { 43 var value = this.questionsForm.get('value'); 44 this.questionsPane.set('content','<pre>'+JSON.stringify(value)+'</pre>'); 45 event.stop(evt); 46 return false; 47 }, 48 _onCancel: function(evt) { 49 event.stop(evt); 50 return false; 51 } 52 }); 50 53 }); 51 -
Dev/branches/rest-dojo-ui/client/rft/run.js
r399 r407 1 1 require([ 2 'dojo/_base/connect', 3 'dojo/_base/window', 4 'dojo/dom', 2 'dojo/_base/array', 5 3 'dojo/parser', 6 'rft/auth', 7 'rft/content', 8 'rft/ui/LoginDialog', 9 'rft/indexContent', 4 'rft/app/Controller', 5 'rft/routes', 10 6 'rft/stddeps', 11 7 'dojo/domReady!' 12 ],function( connect,win,dom,parser,auth,content,LoginDialog) {8 ],function(array,parser,controller,routes) { 13 9 parser.parse(); 14 content.init(); 15 16 var login = new LoginDialog().placeAt(win.body()); 17 login.startup(); 18 19 auth.restore() 20 .then(function(){ 21 content.initial(); 22 },function(){ 23 login.show(); 10 array.forEach(routes,function(route){ 11 controller.register(route); 24 12 }); 25 26 connect.connect(dom.byId('loginMenu'),'click',function(){ 27 login.show(); 28 }); 29 13 controller.startup(); 30 14 }); -
Dev/branches/rest-dojo-ui/client/rft/stddeps.js
r399 r407 1 1 define([ 2 // dijit & rft widgets used declaratively in templates and pages2 // dijit & rft widgets used declaratively in templates 3 3 'dijit/Dialog', 4 4 'dijit/DropDownMenu', … … 35 35 'rft/ui/lists/AccountListView', 36 36 'rft/ui/lists/List', 37 'rft/ui/lists/OrderedList', 38 39 // pages -> load dynamically? 40 'rft/pages/index', 41 'rft/pages/questions', 42 'rft/pages/question', 43 'rft/pages/session', 44 'rft/pages/sessions', 45 'rft/pages/surveys', 46 'rft/pages/survey', 47 'rft/pages/viewSurvey' 37 'rft/ui/lists/OrderedList' 48 38 ],function(){}); -
Dev/branches/rest-dojo-ui/client/rft/store.js
r406 r407 10 10 11 11 var CouchStore = declare(null, { 12 /** dojo .Store implementation for CouchDB12 /** dojo Store implementation for CouchDB 13 13 * 14 14 * See for details on the REST API, the wiki -
Dev/branches/rest-dojo-ui/client/rft/ui/Breadcrumbs.js
r406 r407 5 5 'dojo/dom-class', 6 6 'dojo/topic', 7 'dijit/_WidgetBase' 8 ], function(declare, baseArray, Button, domClass, topic, _WidgetBase){ 9 return declare('rft.ui.Breadcrumbs', [_WidgetBase], { 7 'dijit/_WidgetBase', 8 '../app/Controller' 9 ], function(declare, baseArray, Button, domClass, topic, _WidgetBase,Controller){ 10 return declare([_WidgetBase], { 10 11 _crumbs: [], 11 12 … … 14 15 }, 15 16 _getIndexOf: function(label) { 16 dojo.forEach(this._crumbs, function(crumb, index){17 if (crumb.label == label) {17 baseArray.forEach(this._crumbs, function(crumb, index){ 18 if (crumb.label === label) { 18 19 return index; 19 20 } … … 31 32 var removals = this._crumbs.slice(index+1); 32 33 this._crumbs = this._crumbs.slice(0, index+1); 33 dojo.forEach(removals, function(removal){34 baseArray.forEach(removals, function(removal){ 34 35 removal.widget.destroyRecursive(false); // boolean "keepDOMnode" 35 36 }, this); … … 60 61 iconClass: "dijitNoIcon", 61 62 onClick: lang.hitch(this, function(){ 62 rft.api.loadPage(path); // TODO: fix this call!63 Controller.go(path); // TODO: fix this call! 63 64 }) 64 65 }); 65 66 }, 66 67 _createBreadcrumbs: function() { 67 dojo.forEach(this._crumbs, function(crumb, index){68 baseArray.forEach(this._crumbs, function(crumb, index){ 68 69 if (!crumb.widget) { 69 70 crumb.widget = this._createBreadcrumb(crumb.label, crumb.path); -
Dev/branches/rest-dojo-ui/client/rft/ui/LineWithActionsWidget.js
r406 r407 11 11 'dojo/text!./templates/LineWithActionsWidget.html' 12 12 ],function(declare,lang,on,dom,event,domClass,Button,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,templateString){ 13 return declare( 'rft.ui.LineWithActionsWidget',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{13 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{ 14 14 templateString: templateString, 15 15 baseClass: 'rftLineWithButtons', -
Dev/branches/rest-dojo-ui/client/rft/ui/MainMenu.js
r311 r407 2 2 'dijit/_TemplatedMixin','dijit/_WidgetsInTemplateMixin','dojo/text!./templates/MainMenu.html'], 3 3 function(declare,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,template){ 4 return declare( 'rft.ui.MainMenu',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{4 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{ 5 5 templateString: template 6 6 }); -
Dev/branches/rest-dojo-ui/client/rft/ui/MenuBarLink.js
r256 r407 1 define(['dojo/_base/declare','dijit/MenuBarItem','../ content'],2 function(declare,MenuBarItem, content){3 return declare( 'rft.ui.MenuBarLink',[MenuBarItem],{1 define(['dojo/_base/declare','dijit/MenuBarItem','../app/Controller'], 2 function(declare,MenuBarItem,Controller){ 3 return declare([MenuBarItem],{ 4 4 options:{ 5 pa geId: null5 path: null 6 6 }, 7 7 onClick: function(){ 8 content.goTo(this.pageId);8 this.path && Controller.go(this.path); 9 9 } 10 10 }); -
Dev/branches/rest-dojo-ui/client/rft/ui/MenuLink.js
r367 r407 1 define(['dojo/_base/declare','dijit/MenuItem','../ content'],2 function(declare,MenuItem, content){3 return declare( 'rft.ui.MenuLink',[MenuItem],{1 define(['dojo/_base/declare','dijit/MenuItem','../app/Controller'], 2 function(declare,MenuItem,Controller){ 3 return declare([MenuItem],{ 4 4 options:{ 5 pa geId: null5 path: null 6 6 }, 7 7 onClick: function(){ 8 content.goTo(this.pageId);8 this.path && Controller.go(this.path); 9 9 } 10 10 }); -
Dev/branches/rest-dojo-ui/client/rft/ui/MultipleChoiceWidget.js
r288 r407 7 7 _WidgetsInTemplateMixin,_Container, 8 8 templateString,RadioButton,CheckBox,TextBox,Button){ 9 return declare( 'rft.ui.MultipleChoiceWidget',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{9 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{ 10 10 templateString: templateString, 11 11 multiple: true, -
Dev/branches/rest-dojo-ui/client/rft/ui/Notifications.js
r311 r407 1 1 define(['dojo/_base/declare','dojo/_base/lang','dojo/_base/connect','dojox/widget/Toaster'], 2 2 function(declare,lang,connect,Toaster){ 3 return declare( 'rft.ui.Notifications',[Toaster],{3 return declare([Toaster],{ 4 4 positionDirection: "br-up", 5 5 duration: 1000, -
Dev/branches/rest-dojo-ui/client/rft/ui/ObjectBox.js
r406 r407 6 6 'dijit/_WidgetsInTemplateMixin', 7 7 'rft/ui/LineWithActionsWidget', 8 'dojo/text!./templates/ObjectBox.html' ,8 'dojo/text!./templates/ObjectBox.html' 9 9 ], function(declare, lang, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, LineWithActionsWidget, template){ 10 return declare( 'rft.ui.ObjectBox',[_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {10 return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], { 11 11 baseClass: "rftObjectBox", 12 12 templateString: template, -
Dev/branches/rest-dojo-ui/client/rft/ui/QuestionEditorPreview.js
r392 r407 5 5 'dijit/registry', 6 6 './QuestionEditorPreviewItem', 7 './lists/OrderedList' ,8 9 return declare("rft.ui.QuestionEditorPreview",[OrderedList], {10 11 12 7 './lists/OrderedList' 8 ], function(declare, lang, domConstruct, registry, QuestionEditorPreviewItem, OrderedList) { 9 return declare([OrderedList], { 10 baseClass: 'surveyEditorPreview', 11 type: 'questionContent', 12 withHandles: true, 13 13 14 _createAvatarNode: function(item) { 15 return domConstruct.create("span",{ 16 innerHTML: item.type || "Dragging!!!" 17 }); 18 }, 19 _createListNode: function(item) { 20 var previewItem = new QuestionEditorPreviewItem({ 21 item: item 22 }); 23 previewItem.on('close',lang.hitch(this,'removeItem',item)); 24 previewItem.startup(); 25 return previewItem.domNode; 26 }, 27 getItems: function() { 28 return this.source.getAllNodes() 29 .map(function(node){ 30 return registry.byNode(node).get('value'); 31 },this); 32 } 33 }); 14 _createAvatarNode: function(item) { 15 return domConstruct.create("span",{ 16 innerHTML: item.type || "Dragging!!!" 17 }); 18 }, 19 _createListNode: function(item) { 20 var previewItem = new QuestionEditorPreviewItem({ 21 item: item 22 }); 23 previewItem.on('close',lang.hitch(this,'removeItem',item)); 24 previewItem.startup(); 25 return previewItem.domNode; 26 }, 27 getItems: function() { 28 return this.source.getAllNodes() 29 .map(function(node){ 30 return registry.byNode(node).get('value'); 31 },this); 32 } 34 33 }); 34 }); -
Dev/branches/rest-dojo-ui/client/rft/ui/QuestionEditorPreviewItem.js
r405 r407 4 4 'dojo/_base/lang', 5 5 'dojo/dom-class', 6 'dojo/dom-geometry', 6 7 'dojo/on', 7 8 'dijit/_Container', … … 10 11 'dijit/_WidgetsInTemplateMixin', 11 12 './content/ContentWidgetFactory', 12 'dojo/text!./templates/QuestionEditorPreviewItem.html', 13 ], function(declare, fx, lang, domClass, on, _Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, ContentWidgetFactory, template) { 14 return declare("rft.ui.QuestionEditorPreviewItem", [_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], { 15 version: "full", 16 templateString: template, 17 baseClass: "surveyEditorPreviewItem", 18 previousContentHeight: 200, 19 item: null, 20 innerWidget: null, 21 foldDuration: [250, 250], 22 animation: null, 23 _editing: false, 13 'dojo/text!./templates/QuestionEditorPreviewItem.html' 14 ], function( 15 declare, 16 fx, 17 lang, 18 domClass, 19 domGeom, 20 on, 21 _Container, 22 _TemplatedMixin, 23 _WidgetBase, 24 _WidgetsInTemplateMixin, 25 ContentWidgetFactory, 26 template 27 ){ 28 return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], { 29 version: "full", 30 templateString: template, 31 baseClass: "surveyEditorPreviewItem", 32 previousContentHeight: 200, 33 item: null, 34 innerWidget: null, 35 foldDuration: [250, 250], 36 animation: null, 37 _editing: false, 24 38 25 startup: function() { 26 if ( this._started ){ return; } 27 this.inherited(arguments); 28 this.foldButtonNode.onClick = lang.hitch(this, this.toggleFold); 29 this.removeButtonNode.onClick = lang.hitch(this, "onClose"); 30 this.editButtonNode.onClick = lang.hitch(this, this.toggleEdit); 31 if (this.item) { 32 this._showViewWidget(); 39 startup: function() { 40 if ( this._started ){ return; } 41 this.inherited(arguments); 42 this.foldButtonNode.onClick = lang.hitch(this, this.toggleFold); 43 this.removeButtonNode.onClick = lang.hitch(this, "onClose"); 44 this.editButtonNode.onClick = lang.hitch(this, this.toggleEdit); 45 if (this.item) { 46 this._showViewWidget(); 47 } else { 48 throw "No data supplied to create an innerWidget!"; 49 } 50 }, 51 _destroyInnerWidget: function() { 52 if ( this.innerWidget !== null ) { 53 this.innerWidget.destroyRecursive(); 54 } 55 }, 56 _showViewWidget: function() { 57 var factory = new ContentWidgetFactory(); 58 this.innerWidget = factory.createViewWidget( this.item ); 59 if ( this.innerWidget !== null ) { 60 this.innerWidget.placeAt(this.containerNode); 61 this.innerWidget.startup(); 62 this.innerWidget.set('readOnly',true); 63 } 64 this.titleNode.innerHTML = (this.item.code||"(no code)")+" : "+this.item.type+" [preview]"; 65 }, 66 _showEditWidget: function() { 67 var factory = new ContentWidgetFactory(); 68 this.innerWidget = factory.createEditWidget( this.item ); 69 if ( this.innerWidget !== null ) { 70 this.innerWidget.placeAt(this.containerNode); 71 this.innerWidget.startup(); 72 } 73 this.titleNode.innerHTML = (this.item.code||"(no code)")+" : "+this.item.type+" [editing]"; 74 }, 75 onClose: function() {}, 76 _getValueAttr: function(value) { 77 return this.item; 78 }, 79 _setValueAttr: function(value) { 80 this.item = value; 81 this._destroyInnerWidget(); 82 if ( this._editing ) { 83 this._showEditWidget(); 84 } else { 85 this._showViewWidget(); 86 } 87 }, 88 toggleEdit: function() { 89 if(this._editing) { 90 if ( this.innerWidget !== null ) { 91 this.item = this.innerWidget.get('value'); 92 } 93 this._destroyInnerWidget(); 94 this._showViewWidget(); 95 this.editButtonNode.iconNode.className = this.editButtonNode.iconNode.className.replace("rftIconAccept", "rftIconEdit"); 96 this.editButtonNode.set("label", "Edit"); 97 } else { 98 this._destroyInnerWidget(); 99 this._showEditWidget(); 100 this.editButtonNode.iconNode.className = this.editButtonNode.iconNode.className.replace("rftIconEdit", "rftIconAccept"); 101 this.editButtonNode.set("label", "Done"); 102 } 103 this._editing = !this._editing; 104 }, 105 toggleFold: function() { 106 if (!this.animation) { 107 if (!domClass.contains(this.domNode, "fold")) { 108 this.previousContentHeight = domGeom.getMarginBox(this.innerNode).h; 109 this.animation = fx.animateProperty({ 110 node: this.innerNode, 111 duration: this.foldDuration[0], 112 properties: { 113 height: 1 114 }, 115 onEnd: lang.hitch(this, function(){ 116 domClass.add(this.domNode, "fold"); 117 this.animation = null; 118 }) 119 }).play(); 120 this.foldButtonNode.iconNode.className = this.foldButtonNode.iconNode.className.replace("rftIconHalfArrowUp", "rftIconHalfArrowDown"); 33 121 } else { 34 throw "No data supplied to create an innerWidget!"; 35 } 36 }, 37 _destroyInnerWidget: function() { 38 if ( this.innerWidget !== null ) { 39 this.innerWidget.destroyRecursive(); 40 } 41 }, 42 _showViewWidget: function() { 43 var factory = new ContentWidgetFactory(); 44 this.innerWidget = factory.createViewWidget( this.item ); 45 if ( this.innerWidget !== null ) { 46 this.innerWidget.placeAt(this.containerNode); 47 this.innerWidget.startup(); 48 this.innerWidget.set('readOnly',true); 49 } 50 this.titleNode.innerHTML = (this.item.code||"(no node)")+" : "+this.item.type+" [preview]"; 51 }, 52 _showEditWidget: function() { 53 var factory = new ContentWidgetFactory(); 54 this.innerWidget = factory.createEditWidget( this.item ); 55 if ( this.innerWidget !== null ) { 56 this.innerWidget.placeAt(this.containerNode); 57 this.innerWidget.startup(); 58 } 59 this.titleNode.innerHTML = (this.item.code||"(no node)")+" : "+this.item.type+" [editing]"; 60 }, 61 onClose: function() {}, 62 _getValueAttr: function(value) { 63 return this.item; 64 }, 65 _setValueAttr: function(value) { 66 this.item = value; 67 this._destroyInnerWidget(); 68 if ( this._editing ) { 69 this._showEditWidget(); 70 } else { 71 this._showViewWidget(); 72 } 73 }, 74 toggleEdit: function() { 75 if(this._editing) { 76 if ( this.innerWidget !== null ) { 77 this.item = this.innerWidget.get('value'); 78 } 79 this._destroyInnerWidget(); 80 this._showViewWidget(); 81 this.editButtonNode.iconNode.className = this.editButtonNode.iconNode.className.replace("rftIconAccept", "rftIconEdit"); 82 this.editButtonNode.set("label", "Edit"); 83 } else { 84 this._destroyInnerWidget(); 85 this._showEditWidget(); 86 this.editButtonNode.iconNode.className = this.editButtonNode.iconNode.className.replace("rftIconEdit", "rftIconAccept"); 87 this.editButtonNode.set("label", "Done"); 88 } 89 this._editing = !this._editing; 90 }, 91 toggleFold: function() { 92 if (!this.animation) { 93 if (!domClass.contains(this.domNode, "fold")) { 94 this.previousContentHeight = dojo.marginBox(this.innerNode).h; 95 this.animation = fx.animateProperty({ 96 node: this.innerNode, 97 duration: this.foldDuration[0], 98 properties: { 99 height: 1 100 }, 101 onEnd: lang.hitch(this, function(){ 102 domClass.add(this.domNode, "fold"); 103 this.animation = null; 104 }) 105 }).play(); 106 this.foldButtonNode.iconNode.className = this.foldButtonNode.iconNode.className.replace("rftIconHalfArrowUp", "rftIconHalfArrowDown"); 107 } else { 108 this.animation = fx.animateProperty({ 109 node: this.innerNode, 110 duration: this.foldDuration[1], 111 properties: { 112 height: this.previousContentHeight 113 }, 114 onEnd: lang.hitch(this, function(){ 115 domClass.remove(this.domNode, "fold"); 116 this.animation = null; 117 }) 118 }).play(); 119 this.foldButtonNode.iconNode.className = this.foldButtonNode.iconNode.className.replace("rftIconHalfArrowDown", "rftIconHalfArrowUp"); 120 } 122 this.animation = fx.animateProperty({ 123 node: this.innerNode, 124 duration: this.foldDuration[1], 125 properties: { 126 height: this.previousContentHeight 127 }, 128 onEnd: lang.hitch(this, function(){ 129 domClass.remove(this.domNode, "fold"); 130 this.animation = null; 131 }) 132 }).play(); 133 this.foldButtonNode.iconNode.className = this.foldButtonNode.iconNode.className.replace("rftIconHalfArrowDown", "rftIconHalfArrowUp"); 121 134 } 122 135 } 136 } 123 137 124 });125 138 }); 139 }); -
Dev/branches/rest-dojo-ui/client/rft/ui/QuestionEditorToolkit.js
r402 r407 15 15 'dojo/text!./templates/QuestionEditorToolkit.html' 16 16 ], function(declare, lang, Source, domConstruct, Memory, _Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, Button, ComboBox, store, CategoryListView, template) { 17 return declare( "rft.ui.QuestionEditorToolkit",[_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], {17 return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], { 18 18 19 19 templateString: template, -
Dev/branches/rest-dojo-ui/client/rft/ui/QuestionWidget.js
r343 r407 4 4 'dijit/form/Textarea','./MultipleChoiceWidget'], 5 5 function(declare,lang,domConstruct,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,templateString,TextBox,Textarea,MultipleChoiceWidget){ 6 return declare( 'rft.ui.QuestionWidget',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{6 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{ 7 7 templateString: templateString, 8 8 mode: 'view', // view || edit -
Dev/branches/rest-dojo-ui/client/rft/ui/Selector.js
r406 r407 1 1 define([ 2 'dojo/_base/array', 2 3 'dojo/_base/declare', 3 'dojo/_base/array', 4 'dojo/_base/event', 5 'dojo/_base/lang', 6 'dojo/dom-class', 7 'dojo/fx', 8 'dojo/query', 9 'dijit/_Container', 10 'dijit/_TemplatedMixin', 11 'dijit/_WidgetBase', 12 'dijit/_WidgetsInTemplateMixin', 4 13 'dijit/registry', 5 'dojo/_base/lang',6 'dojo/_base/event',7 'dojo/fx',8 'dijit/_WidgetBase',9 'dijit/_TemplatedMixin',10 'dijit/_WidgetsInTemplateMixin',11 'dijit/_Container',12 14 './LineWithActionsWidget', 13 'dojo/text!./templates/Selector.html', 14 'dojo/dom-class', 15 'dojo/text!./templates/Selector.html' 15 16 ],function( 17 baseArray, 16 18 declare, 17 baseArray, 19 event, 20 lang, 21 domClass, 22 fx, 23 query, 24 _Container, 25 _TemplatedMixin, 26 _WidgetBase, 27 _WidgetsInTemplateMixin, 18 28 registry, 19 lang,20 event,21 fx,22 _WidgetBase,23 _TemplatedMixin,24 _WidgetsInTemplateMixin,25 _Container,26 29 LineWithActionsWidget, 27 templateString, 28 domClass 29 ){ 30 return declare('rft.ui.Selector',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{ 30 templateString 31 ){ 32 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{ 31 33 templateString: templateString, 32 34 baseClass: 'rftSelector', … … 125 127 onToggle: function(evt) { 126 128 if (this._folded) { 127 var downArrowIcon = dojo.query(".rftBlockButton .rftIconHalfArrowDown", this._selectorLine.buttonsNode)[0];129 var downArrowIcon = query(".rftBlockButton .rftIconHalfArrowDown", this._selectorLine.buttonsNode)[0]; 128 130 if (downArrowIcon){ 129 131 domClass.replace(downArrowIcon, "rftIconHalfArrowUp", "rftIconHalfArrowDown"); … … 134 136 this._folded = false; 135 137 } else { 136 var upArrowIcon = dojo.query(".rftBlockButton .rftIconHalfArrowUp", this._selectorLine.buttonsNode)[0];138 var upArrowIcon = query(".rftBlockButton .rftIconHalfArrowUp", this._selectorLine.buttonsNode)[0]; 137 139 if (upArrowIcon){ 138 140 domClass.replace(upArrowIcon, "rftIconHalfArrowDown", "rftIconHalfArrowUp"); -
Dev/branches/rest-dojo-ui/client/rft/ui/TabbedQuestionBrowser.js
r405 r407 11 11 ], 12 12 function(declare,lang,win,ContentPane,TabContainer,Standby,store,Selector){ 13 return declare( 'rft.ui.TabbedQuestionBrowser',[TabContainer],{13 return declare([TabContainer],{ 14 14 tabPosition: 'left-h', 15 15 -
Dev/branches/rest-dojo-ui/client/rft/ui/TitleGroup.js
r288 r407 1 1 require(['dojo/_base/declare','dojo/_base/query','dijit/registry','dojox/widget/TitleGroup'], 2 2 function(declare,query,registry,TitleGroup){ 3 return declare( 'rft.ui.TitleGroup',[TitleGroup],{3 return declare([TitleGroup],{ 4 4 getChildren: function() { 5 5 return query("> .dijitTitlePane", this.domNode) -
Dev/branches/rest-dojo-ui/client/rft/ui/content/ContentWidgetFactory.js
r406 r407 17 17 './../lists/OrderedList' 18 18 ],function(array, declare, lang, domConstruct, _TemplatedMixin, _WidgetBase, _Container, Button, CheckBox, NumberSpinner, RadioButton, Textarea, TextBox, TableContainer, _EditableListMixin, OrderedList) { 19 var factory = declare( 'rft.ui.content.ContentWidgetFactory', [], {19 var factory = declare(null, { 20 20 createViewWidget: function(/*Object*/options) { 21 21 // options: Object -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/AccountListView.js
r406 r407 12 12 OrderedList 13 13 ) { 14 return declare( 'rft.ui.lists.AccountListView',[OrderedList],{14 return declare([OrderedList],{ 15 15 baseClass: 'rftAccountListView', 16 16 type: 'account', -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/CategoryListView.js
r396 r407 3 3 'dojo/_base/lang', 4 4 '../LineWithActionsWidget', 5 './List' ,6 7 8 9 10 11 12 return declare('rft.ui.lists.CategoryListView',[List],{13 5 './List' 6 ],function( 7 declare, 8 lang, 9 LineWithActionsWidget, 10 List 11 ) { 12 return declare([List],{ 13 baseClass: 'rftLineListView', 14 14 15 16 17 18 19 20 15 _createAvatarNode: function(item) { 16 var node = document.createElement("div"); 17 node.className = "dragAvatar"; 18 node.innerHTML = item.title; 19 return node; 20 }, 21 21 22 _createListNode: function(item) { 23 var w = new LineWithActionsWidget({ 24 title: item, 25 'class': "orange", 26 actions: { 27 "Remove" : { 28 callback: lang.hitch(this, function() { 29 this.removeItem(item, w); 30 }), 31 properties: { 32 blockButton: false, 33 icon: "Delete" 34 } 22 _createListNode: function(item) { 23 var w = new LineWithActionsWidget({ 24 title: item, 25 'class': "orange", 26 actions: { 27 "Remove" : { 28 callback: lang.hitch(this, function() { 29 this.removeItem(item, w); 30 }), 31 properties: { 32 blockButton: false, 33 icon: "Delete" 35 34 } 36 35 } 37 }); 38 w.startup(); 39 return w.domNode; 40 } 36 } 37 }); 38 w.startup(); 39 return w.domNode; 40 } 41 41 42 });43 42 }); 43 }); -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/List.js
r405 r407 19 19 BorderContainer, 20 20 templateString){ 21 return declare( 'rft.ui.lists.List',[BorderContainer,_TemplatedMixin,_WidgetsInTemplateMixin],{21 return declare([BorderContainer,_TemplatedMixin,_WidgetsInTemplateMixin],{ 22 22 templateString: templateString, 23 23 baseClass: 'rftList', -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/MultipleChoiceListView.js
r406 r407 12 12 OrderedList 13 13 ) { 14 return declare( 'rft.ui.lists.MultipleChoiceListView',[OrderedList],{14 return declare([OrderedList],{ 15 15 baseClass: 'rftMultipleChoiceListView', 16 16 type: 'multipleChoiceOption', -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/OrderedList.js
r405 r407 12 12 templateString 13 13 ){ 14 return declare( 'rft.ui.lists.OrderedList',[List],{14 return declare([List],{ 15 15 templateString: templateString, 16 16 baseClass: 'rftLineListView', -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/QuestionListView.js
r406 r407 12 12 OrderedList 13 13 ){ 14 return declare( 'rft.ui.lists.QuestionListView',[OrderedList],{14 return declare([OrderedList],{ 15 15 baseClass: 'rftSurveyListView', 16 16 type: 'question', -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/_EditableListMixin.js
r404 r407 4 4 'dijit/registry' 5 5 ],function(declare,lang,registry){ 6 return declare( 'rft.ui.lists._EditableListMixin',null,{6 return declare(null,{ 7 7 getItems: function() { 8 8 return this.source.getAllNodes() -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/templates/List.html
r389 r407 1 1 <div> 2 <div data-dojo-type="dijit .layout.ContentPane" data-dojo-props="region: 'top'">2 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'top'"> 3 3 <h3 data-dojo-attach-point="titleNode"></h3> 4 4 </div> 5 <div data-dojo-type="dijit .layout.ContentPane"5 <div data-dojo-type="dijit/layout/ContentPane" 6 6 data-dojo-props="region: 'center'" 7 7 data-dojo-attach-point="sourceNode" -
Dev/branches/rest-dojo-ui/client/rft/ui/lists/templates/OrderedList.html
r389 r407 1 1 <div> 2 <div data-dojo-type="dijit .layout.ContentPane" data-dojo-props="region: 'top'">2 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'top'"> 3 3 <h3 data-dojo-attach-point="titleNode"></h3> 4 4 </div> 5 <div data-dojo-type="dijit .layout.ContentPane"5 <div data-dojo-type="dijit/layout/ContentPane" 6 6 data-dojo-props="region: 'center'" 7 7 data-dojo-attach-point="sourceNode" 8 8 class="${baseClass}Content"> 9 9 </div> 10 <div data-dojo-type="dijit .layout.ContentPane" data-dojo-props="region: 'bottom'" data-dojo-attach-point="buttonsNode">10 <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'" data-dojo-attach-point="buttonsNode"> 11 11 <span>Move selected: </span> 12 12 <button data-dojo-attach-point="btnListMoveUp" ></button> -
Dev/branches/rest-dojo-ui/client/rft/ui/templates/LoginDialog.html
r390 r407 7 7 </div> 8 8 <div data-dojo-attach-point="containerNode"> 9 <form data-dojo-type="dijit .form.Form" data-dojo-attach-point="loginForm">9 <form data-dojo-type="dijit/form/Form" data-dojo-attach-point="loginForm"> 10 10 <fieldset> 11 11 <label for="email" class="loginLabel">Email</label> 12 <input data-dojo-type="dijit .form.TextBox" name="email" type="text" class="loginInput" />12 <input data-dojo-type="dijit/form/TextBox" name="email" type="text" class="loginInput" /> 13 13 <label for="password" class="loginLabel">Password</label> 14 <input data-dojo-type="dijit .form.TextBox" name="password" type="password" class="loginInput" />14 <input data-dojo-type="dijit/form/TextBox" name="password" type="password" class="loginInput" /> 15 15 </fieldset> 16 16 <div style="float: right;"> 17 <button type="button" data-dojo-type="dijit .form.Button" data-dojo-attach-event="onClick:onRegister">Register</button>18 <button type="submit" data-dojo-type="dijit .form.Button" data-dojo-attach-event="onClick:onLogin">Login</button>17 <button type="button" data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:onRegister">Register</button> 18 <button type="submit" data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:onLogin">Login</button> 19 19 </div> 20 20 </form> -
Dev/branches/rest-dojo-ui/client/rft/ui/templates/MainMenu.html
r403 r407 1 1 <div class="mainMenu"> 2 <div data-dojo-type="dijit .MenuBar">3 <div class="rftMainMenuButton" data-dojo-type="rft .ui.MenuBarLink" data-dojo-props="pageId:'sessions'">Sessions</div>4 <div class="rftMainMenuButton" data-dojo-type="dijit .PopupMenuBarItem">2 <div data-dojo-type="dijit/MenuBar"> 3 <div class="rftMainMenuButton" data-dojo-type="rft/ui/MenuBarLink" data-dojo-props="path:'/sessions'">Sessions</div> 4 <div class="rftMainMenuButton" data-dojo-type="dijit/PopupMenuBarItem"> 5 5 <span>Content</span> 6 <div data-dojo-type="dijit .DropDownMenu">7 <div data-dojo-type="rft .ui.MenuLink" class="blue bgColorHover" data-dojo-props="pageId:'surveys', iconClass:'rftIcon rftIconSurvey'">Surveys</div>8 <div data-dojo-type="rft .ui.MenuLink" class="orange bgColorHover" data-dojo-props="pageId:'questions', iconClass:'rftIcon rftIconQuestion'">Questions</div>9 <div data-dojo-type="rft .ui.MenuLink" class="purple bgColorHover" data-dojo-props="pageId:'applications', iconClass: 'rftIcon rftIconApplication'">Applications</div>10 <div data-dojo-type="rft .ui.MenuLink" class="red bgColorHover" data-dojo-props="pageId:'dashboards', iconClass: 'rftIcon rftIconDashboard'">Dashboards</div>6 <div data-dojo-type="dijit/DropDownMenu"> 7 <div data-dojo-type="rft/ui/MenuLink" class="blue bgColorHover" data-dojo-props="path:'/surveys', iconClass:'rftIcon rftIconSurvey'">Surveys</div> 8 <div data-dojo-type="rft/ui/MenuLink" class="orange bgColorHover" data-dojo-props="path:'/questions', iconClass:'rftIcon rftIconQuestion'">Questions</div> 9 <div data-dojo-type="rft/ui/MenuLink" class="purple bgColorHover" data-dojo-props="path:'/applications', iconClass: 'rftIcon rftIconApplication'">Applications</div> 10 <div data-dojo-type="rft/ui/MenuLink" class="red bgColorHover" data-dojo-props="path:'/dashboards', iconClass: 'rftIcon rftIconDashboard'">Dashboards</div> 11 11 </div> 12 12 </div> 13 <div class="rftMainMenuButton" data-dojo-type="rft .ui.MenuBarLink" data-dojo-props="pageId:'results'">Results</div>14 <div class="rftMainMenuButton" data-dojo-type="rft .ui.MenuBarLink" id="loginMenu">Logout</div>13 <div class="rftMainMenuButton" data-dojo-type="rft/ui/MenuBarLink" data-dojo-props="path:'/results'">Results</div> 14 <div class="rftMainMenuButton" data-dojo-type="rft/ui/MenuBarLink" id="loginMenu">Logout</div> 15 15 </div> 16 16 </div> -
Dev/branches/rest-dojo-ui/client/rft/ui/templates/MultipleChoiceWidget.html
r311 r407 3 3 </div> 4 4 <div data-dojo-attach-point="buttons" class="row"> 5 <div><span class="rowBox"/><span class="rowText"/><span class="rowBtn"/><button data-dojo-type="dijit .form.Button" type="button" data-dojo-attach-event="onClick:_onAddRow" class="rowBtn">+</button></div>5 <div><span class="rowBox"/><span class="rowText"/><span class="rowBtn"/><button data-dojo-type="dijit/form/Button" type="button" data-dojo-attach-event="onClick:_onAddRow" class="rowBtn">+</button></div> 6 6 </div> 7 7 </div> -
Dev/branches/rest-dojo-ui/client/rft/ui/templates/QuestionEditorPreviewItem.html
r397 r407 3 3 <span class="title" data-dojo-attach-point="titleNode">Default title</span> 4 4 <span class="floatRight" data-dojo-attach-point="buttonsNode"> 5 <button class="trans bg inheritBgColor" data-dojo-type="dijit .form.Button" data-dojo-attach-point="editButtonNode" data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconEdit'">Edit</button>6 <button class="trans bg inheritBgColor" data-dojo-type="dijit .form.Button" data-dojo-attach-point="foldButtonNode" data-dojo-props="baseClass: 'rftBlockButton', showLabel: false, iconClass: 'rftIcon rftIconHalfArrowUp'">Fold</button>7 <button class="trans bg inheritBgColor" data-dojo-type="dijit .form.Button" data-dojo-attach-point="removeButtonNode" data-dojo-props="baseClass: 'rftBlockButton', showLabel: false, iconClass: 'rftIcon rftIconDelete'">Remove</button>5 <button class="trans bg inheritBgColor" data-dojo-type="dijit/form/Button" data-dojo-attach-point="editButtonNode" data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconEdit'">Edit</button> 6 <button class="trans bg inheritBgColor" data-dojo-type="dijit/form/Button" data-dojo-attach-point="foldButtonNode" data-dojo-props="baseClass: 'rftBlockButton', showLabel: false, iconClass: 'rftIcon rftIconHalfArrowUp'">Fold</button> 7 <button class="trans bg inheritBgColor" data-dojo-type="dijit/form/Button" data-dojo-attach-point="removeButtonNode" data-dojo-props="baseClass: 'rftBlockButton', showLabel: false, iconClass: 'rftIcon rftIconDelete'">Remove</button> 8 8 </span> 9 9 </div> -
Dev/branches/rest-dojo-ui/client/rft/ui/templates/QuestionEditorToolkit.html
r404 r407 1 1 <div> 2 <div data-dojo-type="dojox .widget.TitleGroup">3 <div data-dojo-type="dijit .TitlePane" class="orange" data-dojo-props="open:true" title="Properties" data-dojo-props="iconClass:'rftIcon rftIconProperties'">4 <div data-dojo-type="dijit .form.Form" data-dojo-attach-point="propertiesForm">2 <div data-dojo-type="dojox/widget/TitleGroup"> 3 <div data-dojo-type="dijit/TitlePane" class="orange" data-dojo-props="open:true" title="Properties" data-dojo-props="iconClass:'rftIcon rftIconProperties'"> 4 <div data-dojo-type="dijit/form/Form" data-dojo-attach-point="propertiesForm"> 5 5 <fieldset class="align"> 6 <label>Title:</label><input data-dojo-type="dijit .form.TextBox" name="title"/>7 <label>Code:</label><input data-dojo-type="dijit .form.TextBox" name= "code"/>6 <label>Title:</label><input data-dojo-type="dijit/form/TextBox" name="title"/> 7 <label>Code:</label><input data-dojo-type="dijit/form/TextBox" name= "code"/> 8 8 <label>Categories:</label> 9 9 <div data-dojo-attach-point="listNode" class="rftLineListView"></div> 10 10 <div data-dojo-attach-point="categoriesBoxNode"></div> 11 <button class="inheritBgColor" data-dojo-type="dijit .form.Button" data-dojo-attach-event="onClick:onCategoryAdd" data-dojo-props="baseClass:'rftBlockButton', iconClass: 'rftIcon rftIconPlus'">Add</button><br>11 <button class="inheritBgColor" data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:onCategoryAdd" data-dojo-props="baseClass:'rftBlockButton', iconClass: 'rftIcon rftIconPlus'">Add</button><br> 12 12 <label>Topic:</label> 13 13 <div data-dojo-attach-point="topicBoxNode"></div> 14 <label>Description:</label><textarea data-dojo-type="dijit .form.Textarea" name="description"></textarea>14 <label>Description:</label><textarea data-dojo-type="dijit/form/Textarea" name="description"></textarea> 15 15 </fieldset> 16 16 </div> 17 17 </div> 18 18 19 <div data-dojo-type="dijit .TitlePane" title="Content" data-dojo-props="iconClass:'rftIcon rftIconPlus', open:false">19 <div data-dojo-type="dijit/TitlePane" title="Content" data-dojo-props="iconClass:'rftIcon rftIconPlus', open:false"> 20 20 <div data-dojo-attach-point="ToolkitContentSourceNode"> 21 21 … … 23 23 </div> 24 24 25 <div data-dojo-type="dijit .TitlePane" title="Inputs" data-dojo-props="iconClass:'rftIcon rftIconInput', open:false">25 <div data-dojo-type="dijit/TitlePane" title="Inputs" data-dojo-props="iconClass:'rftIcon rftIconInput', open:false"> 26 26 <div data-dojo-attach-point="ToolkitInputsSourceNode"> 27 27 -
Dev/branches/rest-dojo-ui/client/rft/ui/templates/QuestionWidget.html
r343 r407 1 1 <div> 2 <form data-dojo-type="dijit .form.Form" data-dojo-attach-point="ourForm">2 <form data-dojo-type="dijit/form/Form" data-dojo-attach-point="ourForm"> 3 3 <fieldset> 4 4 <label for="code" class="loginLabel">Code</label> 5 <input data-dojo-type="dijit .form.TextBox" name="code" type="text" class="loginInput" />5 <input data-dojo-type="dijit/form/TextBox" name="code" type="text" class="loginInput" /> 6 6 <label for="question" class="loginLabel">Title</label> 7 <input data-dojo-type="dijit .form.TextBox" name="title" type="text" class="loginInput" />7 <input data-dojo-type="dijit/form/TextBox" name="title" type="text" class="loginInput" /> 8 8 <label for="question" class="loginLabel">Description</label> 9 <input data-dojo-type="dijit .form.Textarea" name="description" type="text" class="loginInput"/>9 <input data-dojo-type="dijit/form/Textarea" name="description" type="text" class="loginInput"/> 10 10 <label for="category" class="loginLabel">Category</label> 11 <input data-dojo-type="dijit .form.TextBox" name="category" type="text" class="loginInput" />11 <input data-dojo-type="dijit/form/TextBox" name="category" type="text" class="loginInput" /> 12 12 </fieldset> 13 13 <fieldset> 14 <select data-dojo-type="dijit .form.Select" data-dojo-attach-point="scaleSelector" data-dojo-attach-event="onChange:_onTypeChange" name="scale">14 <select data-dojo-type="dijit/form/Select" data-dojo-attach-point="scaleSelector" data-dojo-attach-event="onChange:_onTypeChange" name="scale"> 15 15 <option value="string" selected>String</option> 16 16 <option value="text">Text</option> -
Dev/branches/rest-dojo-ui/client/rft/ui/templates/SessionBar.html
r396 r407 1 1 <div class="${baseClass}"> 2 2 <span class="rftIcon rftIconSession" data-dojo-attach-point="iconNode"></span> 3 <div data-dojo-type="rft .ui.LineWithActionsWidget" data-dojo-attach-point="upperNode" data-dojo-props="actions: {'inspect':{callback: inspect, properties: {blockButton: true}}}"></div>4 <div data-dojo-type="rft .ui.LineWithActionsWidget" data-dojo-attach-point="lowerNode"></div>3 <div data-dojo-type="rft/ui/LineWithActionsWidget" data-dojo-attach-point="upperNode" data-dojo-props="actions: {'inspect':{callback: inspect, properties: {blockButton: true}}}"></div> 4 <div data-dojo-type="rft/ui/LineWithActionsWidget" data-dojo-attach-point="lowerNode"></div> 5 5 </div> -
Dev/branches/rest-dojo-ui/client/rft/view.js
r399 r407 1 1 require([ 2 2 'dojo/parser', 3 'rft/auth',4 'rft/content',5 3 'rft/stddeps', 6 'rft/viewContent',7 4 'dojo/domReady!' 8 ],function(parser ,auth,content) {5 ],function(parser) { 9 6 parser.parse(); 10 content.init(); 11 12 auth.restore() 13 .then(function(){ 14 content.initial(); 15 },function(){ 16 }); 17 7 // read options from hash/url 8 // authenticate 9 // set content 10 // go for it 18 11 }); -
Dev/branches/rest-dojo-ui/client/view.html
r399 r407 2 2 <html> 3 3 <head> 4 <title>Survey</title> 4 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>Survey</title>6 <link rel="stylesheet" type="text/css" href="dojotoolkit/dijit/themes/claro/claro.css" />7 <link rel="stylesheet" type="text/css" href="dojotoolkit/dojox/grid/resources/Grid.css" />8 <link rel="stylesheet" type="text/css" href="dojotoolkit/dojox/grid/resources/claroGrid.css" />9 <link rel="stylesheet" type="text/css" href="dojotoolkit/dojox/widget/Toaster/Toaster.css" />10 6 <link rel="stylesheet" type="text/css" href="rft/css/main.css" /> 11 <script type="text/javascript" src="dojotoolkit/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: false, tlmSiblingOfDojo: false, isDebug: true, baseUrl: '', packagePaths: {'dojotoolkit':['dojo','dijit', 'dojox'], '.':['rft']}"></script>12 <script type="text/javascript" src="rft/view.js"></script>13 7 </head> 14 8 <body class="dijitReset claro"> 15 <div class="page" data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="region:'center'" style="width: 100%; height: 100%;"> 16 <div class="topbar" data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'"> 9 <script type="text/javascript" src="dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: false, isDebug: true"></script> 10 <script type="text/javascript" src="rft/view.js"></script> 11 <div class="page" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="region:'center'" style="width: 100%; height: 100%;"> 12 <div class="topbar" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'"> 17 13 <h1>Survey</h1> 18 14 </div> 19 <div id="content" class="content" data-dojo-type="dijit .layout.ContentPane" data-dojo-props="region:'center'">15 <div id="content" class="content" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> 20 16 </div> 21 17 </div> 22 <div id="toaster" data-dojo-type="rft .ui.Notifications">18 <div id="toaster" data-dojo-type="rft/ui/Notifications"> 23 19 </div> 24 20 </body>
Note: See TracChangeset
for help on using the changeset viewer.