additonal help control changes
This commit is contained in:
		| @ -34,7 +34,7 @@ | |||||||
|  |  | ||||||
|             </div><!--toggle navigation end--> |             </div><!--toggle navigation end--> | ||||||
|             <div class="lessonTitle" > |             <div class="lessonTitle" > | ||||||
|                 <h1 id="lessonTitle">Please login</h1> |                  | ||||||
|             </div><!--lesson title end--> |             </div><!--lesson title end--> | ||||||
|  |  | ||||||
|         </header> |         </header> | ||||||
|  | |||||||
| @ -54,8 +54,8 @@ | |||||||
|                         <i class="fa fa-bars"></i> |                         <i class="fa fa-bars"></i> | ||||||
|                     </button> |                     </button> | ||||||
|                 </div><!--toggle navigation end--> |                 </div><!--toggle navigation end--> | ||||||
|                 <div id="lessonTitleWrapper" > |                 <div id="lesson-title-wrapper" > | ||||||
|                     <h1 class="lessonTitle"></h1> |                      | ||||||
|                 </div><!--lesson title end--> |                 </div><!--lesson title end--> | ||||||
|                 <div class="user-nav pull-right" style="margin-right: 75px;"> |                 <div class="user-nav pull-right" style="margin-right: 75px;"> | ||||||
|                     <div class="dropdown" style="display:inline"> |                     <div class="dropdown" style="display:inline"> | ||||||
| @ -98,13 +98,13 @@ | |||||||
|                         <div class="col-md-8"> |                         <div class="col-md-8"> | ||||||
|                             <div class="col-md-12" align="left"> |                             <div class="col-md-12" align="left"> | ||||||
|                                 <div class="panel" id="help-controls"> |                                 <div class="panel" id="help-controls"> | ||||||
|                                     <div id="help-buttons" class="panel-body"> |                                     <!-- <div id="help-buttons" class="panel-body"> --> | ||||||
|                                         <!-- <button type="button" id="showSourceBtn" ng-show="showSource" class="btn btn-primary btn-xs" onclick="showLessonSource()">Java [Source]</button> |                                         <!-- <button type="button" id="showSourceBtn" ng-show="showSource" class="btn btn-primary btn-xs" onclick="showLessonSource()">Java [Source]</button> | ||||||
|                                         <button type="button" id="showSolutionBtn" class="btn btn-primary btn-xs" onclick="showLessonSolution()">Solution</button> |                                         <button type="button" id="showSolutionBtn" class="btn btn-primary btn-xs" onclick="showLessonSolution()">Solution</button> | ||||||
|                                         <button type="button" id="showPlanBtn" class="btn btn-primary btn-xs" onclick="showLessonPlan()">Lesson Plan</button> |                                         <button type="button" id="showPlanBtn" class="btn btn-primary btn-xs" onclick="showLessonPlan()">Lesson Plan</button> | ||||||
|                                         <button type="button" id="showHintsBtn" ng-show="showHints" class="btn btn-primary btn-xs"  onclick="viewHints()">Hints</button> |                                         <button type="button" id="showHintsBtn" ng-show="showHints" class="btn btn-primary btn-xs"  onclick="viewHints()">Hints</button> | ||||||
|                                         <button type="button" id="restartLessonBtn"  class="btn btn-xs"  onclick="restartLesson()">Restart Lesson</button> --> |                                         <button type="button" id="restartLessonBtn"  class="btn btn-xs"  onclick="restartLesson()">Restart Lesson</button> --> | ||||||
|                                     </div> |                                     <!-- </div> --> | ||||||
|                                 </div> |                                 </div> | ||||||
|                                 <div class="lessonHelp" id="lesson-hint-row"> |                                 <div class="lessonHelp" id="lesson-hint-row"> | ||||||
|                                     <h4>Hints</h4> |                                     <h4>Hints</h4> | ||||||
|  | |||||||
| @ -1,2 +1,2 @@ | |||||||
| #lessonTitle {position:absolute;left:94px;top:75px;width:690px;height:22px;z-index:1;float: right;font-size: 20px;color: #FFFFFF;} | #lesson-title {position:absolute;left:94px;top:75px;width:690px;height:22px;z-index:1;float: right;font-size: 20px;color: #FFFFFF;} | ||||||
| #hMenuBar {position:absolute;left:245px;top:108px;width:538px;height:22px;z-index:2;} | #hMenuBar {position:absolute;left:245px;top:108px;width:538px;height:22px;z-index:2;} | ||||||
|  | |||||||
| @ -132,7 +132,7 @@ img { | |||||||
| #header .user-nav button:hover i { | #header .user-nav button:hover i { | ||||||
|   color: #F6F6F6; |   color: #F6F6F6; | ||||||
| } | } | ||||||
| #header .lessonTitle { | #header #lesson-title-wrapper { | ||||||
| 	display: inline-block; | 	display: inline-block; | ||||||
| 	margin:0 0 0 20px;	 | 	margin:0 0 0 20px;	 | ||||||
| } | } | ||||||
| @ -849,8 +849,16 @@ cookieContainer { | |||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| .info { | .info { | ||||||
| 	color:#e84c3d; | 	color:#e84c3d; | ||||||
| 	font-weight: bold;  | 	font-weight: bold;  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #help-controls { | ||||||
|  |   padding-left: 4px; | ||||||
|  |   padding-top: 4px | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .help-button { | ||||||
|  |   margin-right:4px; | ||||||
| } | } | ||||||
| @ -6,7 +6,8 @@ define(['jquery', | |||||||
| 	'goatApp/view/PlanView', | 	'goatApp/view/PlanView', | ||||||
| 	'goatApp/view/SourceView', | 	'goatApp/view/SourceView', | ||||||
| 	'goatApp/view/SolutionView', | 	'goatApp/view/SolutionView', | ||||||
| 	'goatApp/view/LessonHintView' | 	'goatApp/view/LessonHintView', | ||||||
|  | 	'goatApp/view/HelpControlsView' | ||||||
| 	],  | 	],  | ||||||
| 	function($, | 	function($, | ||||||
| 		_, | 		_, | ||||||
| @ -16,7 +17,8 @@ define(['jquery', | |||||||
| 		PlanView, | 		PlanView, | ||||||
| 		SourceView, | 		SourceView, | ||||||
| 		SolutionView, | 		SolutionView, | ||||||
| 		LessonHintView | 		LessonHintView, | ||||||
|  | 		HelpControlsView | ||||||
| 	) { | 	) { | ||||||
| 		'use strict' | 		'use strict' | ||||||
| 		 | 		 | ||||||
| @ -33,7 +35,7 @@ define(['jquery', | |||||||
| 			_.extend(Controller.prototype,Backbone.Events); | 			_.extend(Controller.prototype,Backbone.Events); | ||||||
| 			this.start = function() { | 			this.start = function() { | ||||||
| 				this.listenTo(this.lessonContent,'contentLoaded',this.onContentLoaded); | 				this.listenTo(this.lessonContent,'contentLoaded',this.onContentLoaded); | ||||||
| 			} | 			}; | ||||||
|  |  | ||||||
| 			//load View, which can pull data | 			//load View, which can pull data | ||||||
| 			this.loadLesson = function(scr,menu) { | 			this.loadLesson = function(scr,menu) { | ||||||
| @ -60,19 +62,37 @@ define(['jquery', | |||||||
| 				//load title view (initially hidden) << currently handled via menu click but need to be able to handle via routed request | 				//load title view (initially hidden) << currently handled via menu click but need to be able to handle via routed request | ||||||
| 				//plan view (initially hidden) | 				//plan view (initially hidden) | ||||||
| 				this.planView = new PlanView(); | 				this.planView = new PlanView(); | ||||||
|  | 				this.listenTo(this.planView,'plan:loaded',this.areHelpsReady); | ||||||
| 				//solution view (initially hidden) | 				//solution view (initially hidden) | ||||||
| 				this.solutionView = new SolutionView(); | 				this.solutionView = new SolutionView(); | ||||||
|  | 				this.listenTo(this.solutionView,'solution:loaded',this.areHelpsReady); | ||||||
| 				//source (initially hidden) | 				//source (initially hidden) | ||||||
| 				this.sourceView = new SourceView(); | 				this.sourceView = new SourceView(); | ||||||
|  | 				this.listenTo(this.sourceView,'source:loaded',this.areHelpsReady); | ||||||
| 				//load help controls view (contextul to what helps are available) | 				//load help controls view (contextul to what helps are available) | ||||||
| 				this.lessonHintView = new LessonHintView(); | 				this.lessonHintView = new LessonHintView(); | ||||||
| 				this.listenTo(this.lessonHintView,'hints:loaded',this.areHelpsReady); | 				this.listenTo(this.lessonHintView,'hints:loaded',this.areHelpsReady); | ||||||
| 			}, | 				 | ||||||
|  | 			}; | ||||||
|  |  | ||||||
| 			this.areHelpsReady = function (curHelp) { | 			this.areHelpsReady = function (curHelp) { | ||||||
| 				this.helpsLoaded[curHelp.helpElement] = curHelp.value; | 				this.addCurHelpState(curHelp); | ||||||
| 				// check if all are ready | 				// check if all are ready | ||||||
| 			} | 				if (this.helpsLoaded['hints'] && this.helpsLoaded['plan'] && this.helpsLoaded['solution'] && this.helpsLoaded['source']) { | ||||||
| 			 | 					// | ||||||
|  | 					this.helpControlsView = new HelpControlsView({ | ||||||
|  | 						hasPlan:(this.planView.model.get('content') !== null), | ||||||
|  | 						hasSolution:(this.solutionView.model.get('content') !== null), | ||||||
|  | 						hasSource:(this.sourceView.model.get('content') !== null), | ||||||
|  | 						hasHints:(this.lessonHintView.collection.length > 0), | ||||||
|  | 					}); | ||||||
|  | 					this.helpControlsView.render(); | ||||||
|  | 				} | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			this.addCurHelpState = function (curHelp) { | ||||||
|  | 				this.helpsLoaded[curHelp.helpElement] = curHelp.value; | ||||||
|  | 			};			 | ||||||
| 		}; | 		}; | ||||||
| 		return Controller; | 		return Controller; | ||||||
| }); | }); | ||||||
| @ -18,4 +18,4 @@ define(['jquery', | |||||||
| 			this.trigger('menuData:loaded'); | 			this.trigger('menuData:loaded'); | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| }) | }); | ||||||
| @ -7,19 +7,4 @@ define(['jquery', | |||||||
|  |  | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| }); | }); | ||||||
|  |  | ||||||
| 	// accordionMenu = function(id) { |  | ||||||
|  //        if ($('ul#' + id).attr('isOpen') == 0) { |  | ||||||
|  //            $scope.expandMe = true; |  | ||||||
|  //        } else { |  | ||||||
|  //            $('ul#' + id).slideUp(300).attr('isOpen', 0);u |  | ||||||
|  //            return; |  | ||||||
|  //        } |  | ||||||
|  //        $scope.openMenu = id; |  | ||||||
|  //        $('.lessonsAndStages').not('ul#' + id).slideUp(300).attr('isOpen', 0); |  | ||||||
|  //        if ($scope.expandMe) { |  | ||||||
|  //            $('ul#' + id).slideDown(300).attr('isOpen', 1); |  | ||||||
|  //        } |  | ||||||
|  //    } |  | ||||||
|  |  | ||||||
| @ -4,6 +4,14 @@ define(['jquery', | |||||||
| function($,_,Backbone) { | function($,_,Backbone) { | ||||||
| 	return Backbone.View.extend({ | 	return Backbone.View.extend({ | ||||||
| 		el:'#help-controls', //Check this | 		el:'#help-controls', //Check this | ||||||
|  | 		helpButtons: { | ||||||
|  | 			//TODO: move this into a template | ||||||
|  | 			showSource:$('<button>',{id:'showSourceBtn','class':'btn btn-primary btn-xs help-button',type:'button',text:'Java [Source]'}), | ||||||
|  | 			showSolution:$('<button>',{id:'showSolutionBtn','class':'btn btn-primary btn-xs help-button',type:'button',text:'Solution'}), | ||||||
|  | 			showPlan:$('<button>',{id:'showPlanBtn','class':'btn btn-primary btn-xs help-button',type:'button',text:'Lesson Plan]'}), | ||||||
|  | 			showHints:$('<button>',{id:'showHintsBtn','class':'btn btn-primary btn-xs help-button',type:'button',text:'Hints'}), | ||||||
|  | 			restartLesson:$('<button>',{id:'restartLessonBtn','class':'btn btn-xs help-button',type:'button',text:'Restart Lesson'}) | ||||||
|  | 		}, | ||||||
| 		initialize: function (options) { | 		initialize: function (options) { | ||||||
| 			if (!options) { | 			if (!options) { | ||||||
| 				return; | 				return; | ||||||
| @ -14,7 +22,20 @@ function($,_,Backbone) { | |||||||
| 			this.hasHints = options.hasHints; | 			this.hasHints = options.hasHints; | ||||||
| 		}, | 		}, | ||||||
| 		render:function(title) { | 		render:function(title) { | ||||||
| 			 | 			if (this.hasSource) { | ||||||
|  | 				this.$el.append(this.helpButtons.showSource); | ||||||
|  | 			} | ||||||
|  | 			if (this.hasSolution) { | ||||||
|  | 				this.$el.append(this.helpButtons.showSolution); | ||||||
|  | 			} | ||||||
|  | 			if (this.hasPlan) { | ||||||
|  | 				this.$el.append(this.helpButtons.showPlan); | ||||||
|  | 			} | ||||||
|  | 			if (this.hasHints) { | ||||||
|  | 				this.$el.append(this.helpButtons.showHints); | ||||||
|  | 			} | ||||||
|  | 			// | ||||||
|  | 			this.$el.append(this.helpButtons.restartLesson); | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| }); | }); | ||||||
							
								
								
									
										23
									
								
								src/main/webapp/js/goatApp/view/HelpView.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/main/webapp/js/goatApp/view/HelpView.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | define(['jquery', | ||||||
|  | 	'underscore', | ||||||
|  | 	'backbone', | ||||||
|  | 	'goatApp/model/LessonSourceModel'], | ||||||
|  | function($, | ||||||
|  | 	_, | ||||||
|  | 	Backbone, | ||||||
|  | 	LessonSourceModel) { | ||||||
|  | 	return Backbone.View.extend({ | ||||||
|  | 		el:'#lessonHelpWrapper .lessonHelp.lessonPlan', //Check this | ||||||
|  | 		initialize: function() { | ||||||
|  | 			this.model = new LessonSourceModel(); | ||||||
|  | 			this.listenTo(this.model,'loaded',this.onModelLoaded); | ||||||
|  | 			this.model.loadData(); | ||||||
|  | 		}, | ||||||
|  | 		render:function(title) { | ||||||
|  | 			 | ||||||
|  | 		}, | ||||||
|  | 		onModelLoaded: function() { | ||||||
|  | 			this.trigger(this.loadedMessage,this.helpElement); | ||||||
|  | 		} | ||||||
|  | 	}); | ||||||
|  | }); | ||||||
| @ -17,7 +17,7 @@ function($, | |||||||
| 			 | 			 | ||||||
| 		}, | 		}, | ||||||
| 		onModelLoaded: function() { | 		onModelLoaded: function() { | ||||||
| 			// ??? | 			this.trigger('plan:loaded',{'helpElement':'plan','value':true}); | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| }); | }); | ||||||
| @ -2,6 +2,7 @@ define(['jquery', | |||||||
| 	'underscore', | 	'underscore', | ||||||
| 	'backbone', | 	'backbone', | ||||||
| 	'goatApp/model/LessonSolutionModel'], | 	'goatApp/model/LessonSolutionModel'], | ||||||
|  | 	//TODO: create a base 'HelpView class' | ||||||
| function($,_,Backbone,LessonSolutionModel) { | function($,_,Backbone,LessonSolutionModel) { | ||||||
| 	return Backbone.View.extend({ | 	return Backbone.View.extend({ | ||||||
| 		el:'#lessonHelpWrapper .lessonHelp.lessonSolution', //Check this | 		el:'#lessonHelpWrapper .lessonHelp.lessonSolution', //Check this | ||||||
| @ -9,12 +10,13 @@ function($,_,Backbone,LessonSolutionModel) { | |||||||
| 			this.model = new LessonSolutionModel(); | 			this.model = new LessonSolutionModel(); | ||||||
| 			this.listenTo(this.model,'loaded',this.onModelLoaded); | 			this.listenTo(this.model,'loaded',this.onModelLoaded); | ||||||
| 			this.model.loadData(); | 			this.model.loadData(); | ||||||
|  | 			//TODO: handle error cases | ||||||
| 		}, | 		}, | ||||||
| 		render:function(title) { | 		render:function(title) { | ||||||
| 			 | 			 | ||||||
| 		}, | 		}, | ||||||
| 		onModelLoaded: function() { | 		onModelLoaded: function() { | ||||||
| 			// ??? | 			this.trigger('solution:loaded',{'helpElement':'solution','value':true}); | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| }); | }); | ||||||
| @ -1,23 +1,21 @@ | |||||||
| define(['jquery', | define(['jquery', | ||||||
| 	'underscore', | 	'underscore', | ||||||
| 	'backbone', | 	'backbone', | ||||||
| 	'goatApp/model/LessonSourceModel'], | 	'goatApp/model/LessonSourceModel', | ||||||
|  | 	'goatApp/view/HelpView'], | ||||||
| function($, | function($, | ||||||
| 	_, | 	_, | ||||||
| 	Backbone, | 	Backbone, | ||||||
| 	LessonSourceModel) { | 	LessonSourceModel, | ||||||
| 	return Backbone.View.extend({ | 	HelpView) { | ||||||
|  | 	return HelpView.extend({ | ||||||
|  | 		helpElement:{'helpElement':'source','value':true}, | ||||||
|  | 		loadedMessage:'source:loaded', | ||||||
| 		el:'#lessonHelpWrapper .lessonHelp.lessonPlan', //Check this | 		el:'#lessonHelpWrapper .lessonHelp.lessonPlan', //Check this | ||||||
| 		initialize: function() { | 		initialize: function() { | ||||||
| 			this.model = new LessonSourceModel(); | 			this.model = new LessonSourceModel(); | ||||||
| 			this.listenTo(this.model,'loaded',this.onModelLoaded); | 			this.listenTo(this.model,'loaded',this.onModelLoaded); | ||||||
| 			this.model.loadData(); | 			this.model.loadData(); | ||||||
| 		}, |  | ||||||
| 		render:function(title) { |  | ||||||
| 			 |  | ||||||
| 		}, |  | ||||||
| 		onModelLoaded: function() { |  | ||||||
| 			// ??? |  | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| }); | }); | ||||||
| @ -3,9 +3,11 @@ define(['jquery', | |||||||
| 	'backbone'], | 	'backbone'], | ||||||
| function($,_,Backbone) { | function($,_,Backbone) { | ||||||
| 	return Backbone.View.extend({ | 	return Backbone.View.extend({ | ||||||
| 		el:'#lessonTitleWrapper', | 		el:'#header #lesson-title-wrapper', | ||||||
| 		render:function(title) { | 		render:function(title) { | ||||||
| 			this.$el.find('.lessonTitle').html(title); | 			var lessonTitleEl = $('<h1>',{id:'lesson-title',text:title}); | ||||||
|  | 			this.$el.html(lessonTitleEl); | ||||||
|  | 			//this.$el.append(lessonTitleEl); | ||||||
| 		} | 		} | ||||||
| 	}); | 	}); | ||||||
| }); | }); | ||||||
		Reference in New Issue
	
	Block a user