Commit 75263b72e1623600d56e435e6d41c76fccb55b83
1 parent
b64d9472
prepared object for save . need to get score and move code in functions.
Showing
8 changed files
with
245 additions
and
33 deletions
400-SOURCECODE/AIAHTML5.API/AIAHTML5.API.csproj
... | ... | @@ -60,17 +60,17 @@ |
60 | 60 | <HintPath>..\packages\MongoDB.Driver.Core.2.5.0\lib\net45\MongoDB.Driver.Core.dll</HintPath> |
61 | 61 | <Private>True</Private> |
62 | 62 | </Reference> |
63 | - <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> | |
64 | - <SpecificVersion>False</SpecificVersion> | |
65 | - <HintPath>..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath> | |
63 | + <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> | |
64 | + <HintPath>..\packages\Newtonsoft.Json.5.0.6\lib\net45\Newtonsoft.Json.dll</HintPath> | |
65 | + <Private>True</Private> | |
66 | 66 | </Reference> |
67 | 67 | <Reference Include="System.Buffers, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> |
68 | 68 | <HintPath>..\packages\System.Buffers.4.3.0\lib\netstandard1.1\System.Buffers.dll</HintPath> |
69 | 69 | <Private>True</Private> |
70 | 70 | </Reference> |
71 | 71 | <Reference Include="System.Net.Http" /> |
72 | - <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | |
73 | - <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath> | |
72 | + <Reference Include="System.Net.Http.Formatting, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | |
73 | + <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.0.0\lib\net45\System.Net.Http.Formatting.dll</HintPath> | |
74 | 74 | <Private>True</Private> |
75 | 75 | </Reference> |
76 | 76 | <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> |
... | ... | @@ -86,12 +86,12 @@ |
86 | 86 | <Reference Include="System.Core" /> |
87 | 87 | <Reference Include="System.Data.DataSetExtensions" /> |
88 | 88 | <Reference Include="System.Web.Extensions" /> |
89 | - <Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | |
90 | - <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath> | |
89 | + <Reference Include="System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | |
90 | + <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\System.Web.Http.dll</HintPath> | |
91 | 91 | <Private>True</Private> |
92 | 92 | </Reference> |
93 | - <Reference Include="System.Web.Http.WebHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | |
94 | - <HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll</HintPath> | |
93 | + <Reference Include="System.Web.Http.WebHost, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | |
94 | + <HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.0.0\lib\net45\System.Web.Http.WebHost.dll</HintPath> | |
95 | 95 | <Private>True</Private> |
96 | 96 | </Reference> |
97 | 97 | <Reference Include="System.Xml.Linq" /> |
... | ... | @@ -121,6 +121,7 @@ |
121 | 121 | <Compile Include="Controllers\AdminAccessController.cs" /> |
122 | 122 | <Compile Include="Controllers\AuthenticateController.cs" /> |
123 | 123 | <Compile Include="Controllers\ForgotUserController.cs" /> |
124 | + <Compile Include="Controllers\LabExerciseController.cs" /> | |
124 | 125 | <Compile Include="Controllers\LicenseTermConditionController.cs" /> |
125 | 126 | <Compile Include="Controllers\PixelLocationsController.cs" /> |
126 | 127 | <Compile Include="Controllers\ResetPasswordController.cs" /> | ... | ... |
400-SOURCECODE/AIAHTML5.API/Controllers/LabExerciseController.cs
0 → 100644
1 | +using Newtonsoft.Json.Linq; | |
2 | +using System; | |
3 | +using System.Collections.Generic; | |
4 | +using System.Linq; | |
5 | +using System.Net; | |
6 | +using System.Net.Http; | |
7 | +using System.Web.Http; | |
8 | + | |
9 | +namespace AIAHTML5.API.Controllers | |
10 | +{ | |
11 | + public class LabExerciseController : ApiController | |
12 | + { | |
13 | + // GET api/<controller> | |
14 | + public IEnumerable<string> Get() | |
15 | + { | |
16 | + return new string[] { "value1", "value2" }; | |
17 | + } | |
18 | + | |
19 | + // GET api/<controller>/5 | |
20 | + public string Get(int id) | |
21 | + { | |
22 | + return "value"; | |
23 | + } | |
24 | + | |
25 | + // POST api/<controller> | |
26 | + public void Post([FromBody]JObject labExerciseUserAttemptData) | |
27 | + { | |
28 | + } | |
29 | + | |
30 | + // PUT api/<controller>/5 | |
31 | + public void Put(int id, [FromBody]string value) | |
32 | + { | |
33 | + } | |
34 | + | |
35 | + // DELETE api/<controller>/5 | |
36 | + public void Delete(int id) | |
37 | + { | |
38 | + } | |
39 | + } | |
40 | +} | |
0 | 41 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/Controllers/LabExercises.cs
0 → 100644
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Web; | |
5 | +using System; | |
6 | +using System.Threading.Tasks; | |
7 | +using MongoDB.Bson; | |
8 | +using MongoDB.Driver; | |
9 | +using AIAHTML5.API.Properties; | |
10 | +using MongoDB.Driver.Builders; | |
11 | + | |
12 | +namespace AIAHTML5.API.Models | |
13 | +{ | |
14 | + public class LabExercises | |
15 | + { | |
16 | + public int Attemptnumber { get; set; } | |
17 | + public string labExerciseCode { get; set; } | |
18 | + public string Answer { get; set; } | |
19 | + public int Question { get; set; } | |
20 | + public int Score { get; set; } | |
21 | + | |
22 | + | |
23 | + public void UpdateUserLabExercise(Users objUser) | |
24 | + { | |
25 | + var client = new MongoClient(); | |
26 | + var db = client.GetDatabase(Settings.Default.database); | |
27 | + | |
28 | + var collection = db.GetCollection<BsonDocument>("Users"); | |
29 | + | |
30 | + collection.UpdateOne( | |
31 | + Builders<BsonDocument>.Filter.Eq("loginId", objUser.loginId), | |
32 | + Builders<BsonDocument>.Update.Set("LabExerciseAttempt", objUser.labExerciseAttempt)); | |
33 | + | |
34 | + | |
35 | + } | |
36 | + } | |
37 | +} | |
0 | 38 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.API/packages.config
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | 2 | <packages> |
3 | 3 | <package id="DnsClient" version="1.0.7" targetFramework="net45" /> |
4 | + <package id="Microsoft.AspNet.WebApi" version="5.0.0" targetFramework="net45" /> | |
5 | + <package id="Microsoft.AspNet.WebApi.Client" version="5.0.0" targetFramework="net45" /> | |
6 | + <package id="Microsoft.AspNet.WebApi.Core" version="5.0.0" targetFramework="net45" /> | |
7 | + <package id="Microsoft.AspNet.WebApi.WebHost" version="5.0.0" targetFramework="net45" /> | |
4 | 8 | <package id="MongoDB.Bson" version="2.5.0" targetFramework="net45" /> |
5 | 9 | <package id="MongoDB.Driver" version="2.5.0" targetFramework="net45" /> |
6 | 10 | <package id="MongoDB.Driver.Core" version="2.5.0" targetFramework="net45" /> |
11 | + <package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" /> | |
7 | 12 | <package id="System.Buffers" version="4.3.0" targetFramework="net45" /> |
8 | 13 | <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" targetFramework="net45" /> |
9 | 14 | </packages> |
10 | 15 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/controllers/LabExercController.js
1 | 1 | /// <reference path="../../content/data/json/le/LabExercise.js" /> |
2 | -AIA.controller("LabExercController", ["$scope", "$rootScope", "pages", "$log", '$http', 'DataService', '$filter', '$location', '$document', '$sce',"$compile","$location", | |
3 | -function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location, $document, $sce, $compile, $location) { | |
2 | +AIA.controller("LabExercController", ["$scope", "$rootScope", "pages", "$log", '$http', 'DataService', '$filter', '$location', '$document', '$sce', "$compile", "$location", "LabExerciseService", | |
3 | +function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location, $document, $sce, $compile, $location, LabExerciseService) { | |
4 | 4 | $scope.$sce = $sce; |
5 | 5 | $scope.LabExerciseName; |
6 | 6 | $scope.LabExerciseQuiz = null; |
... | ... | @@ -10,13 +10,12 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
10 | 10 | $scope.Title = ""; |
11 | 11 | $scope.Imagepath = ""; |
12 | 12 | $scope.DraggedList = []; |
13 | + $scope.AnswerList = []; | |
14 | + $scope.UserAnswersForAllQuestions = []; | |
15 | + $scope.LabExercise = []; | |
13 | 16 | $scope.dragableId = ""; |
14 | 17 | $scope.blReviewAttempt = false; |
15 | 18 | $scope.$on('$viewContentLoaded', function (event) { |
16 | - | |
17 | - if ($rootScope.refreshcheck == null) { | |
18 | - $location.path('/'); | |
19 | - } | |
20 | 19 | // code that will be executed ... |
21 | 20 | // every time this view is loaded |
22 | 21 | |
... | ... | @@ -31,7 +30,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
31 | 30 | $rootScope.currentActiveModuleTitle = selectedModuleName; |
32 | 31 | }) |
33 | 32 | |
34 | - $scope.showTabButton = false; | |
33 | + $scope.showme = false; | |
35 | 34 | $rootScope.currentActiveModuleTitle = pages[8].name; |
36 | 35 | $scope.getLabExerciseModules(); |
37 | 36 | |
... | ... | @@ -47,7 +46,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
47 | 46 | |
48 | 47 | }); |
49 | 48 | |
50 | - // $scope.showTabButton = false; | |
49 | + // $scope.showme = false; | |
51 | 50 | $scope.IsVisible = function () { |
52 | 51 | // $scope.scroll(); |
53 | 52 | |
... | ... | @@ -92,19 +91,16 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
92 | 91 | |
93 | 92 | |
94 | 93 | $scope.GetQuizByTopic = function () { |
95 | - | |
96 | - if ($rootScope.refreshcheck == null) { | |
97 | - $location.path('/'); | |
98 | - } | |
99 | 94 | var keywords = $location.search(); |
100 | 95 | $scope.LabExerciseName = keywords.labexercise; |
101 | 96 | $scope.LabExerciseModules = null; |
102 | 97 | $scope.LabExerciseBoxes = null; |
98 | + //alert($scope.LabExerciseName) | |
103 | 99 | var labExerciseModulePath = '~/../content/data/json/le/' + $scope.LabExerciseName + '.json'; |
104 | 100 | |
105 | 101 | DataService.getAnotherJson(labExerciseModulePath).then( |
106 | 102 | function (result) { |
107 | - //debugger; | |
103 | + $scope.LabExData = result; | |
108 | 104 | // alert(JSON.stringify(result.LabExercise)); |
109 | 105 | $.each(result.LabExercise, function (index, value) { |
110 | 106 | $scope.LabExerciseName = result.LabExercise[index].Topic; |
... | ... | @@ -115,12 +111,13 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
115 | 111 | if (result.LabExercise[index].Questions[index1].Number == $scope.quiznumber) { |
116 | 112 | if (result.LabExercise[index].Questions[index1].ImagePath == "") { |
117 | 113 | $("#imgblock").css("display", "none"); |
114 | + //$("#imgblock").remove(); | |
118 | 115 | $scope.IsVisible = false; |
119 | 116 | $("#textblock").css("display", "block"); |
120 | 117 | $scope.LabExerciseModules = result.LabExercise[index].Questions[index1]; |
121 | 118 | $scope.deliberatelyTrustDangerousSnippet = function (html) { |
122 | - //var htmltag= $compile(html)($scope); | |
123 | - return $sce.trustAsHtml(html); | |
119 | + //var htmltag= $compile(html)($scope); | |
120 | + return $sce.trustAsHtml(html); | |
124 | 121 | }; |
125 | 122 | $scope.activityTitle = result.LabExercise[index].Questions[index1].activityTitle; |
126 | 123 | $scope.Title = result.LabExercise[index].Questions[index1].Title; |
... | ... | @@ -129,6 +126,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
129 | 126 | $("#imgblock").css("display", "block"); |
130 | 127 | $scope.IsVisible = true; |
131 | 128 | $("#textblock").css("display", "none"); |
129 | + // $("#textblock").remove(); | |
132 | 130 | $scope.LabExerciseModules = result.LabExercise[index].Questions[index1]; |
133 | 131 | $scope.activityTitle = result.LabExercise[index].Questions[index1].activityTitle; |
134 | 132 | $scope.Title = result.LabExercise[index].Questions[index1].Title; |
... | ... | @@ -151,6 +149,16 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
151 | 149 | } |
152 | 150 | |
153 | 151 | $scope.nextQuiz = function () { |
152 | + //need to save all questions till the current question number when user clicks on save | |
153 | + if ($scope.dragableId!="") { | |
154 | + $scope.UserAnswersForAllQuestions.push({'QuestionNo':$scope.quiznumber,'UserAnswer':$scope.AnswerList}) | |
155 | + | |
156 | + } | |
157 | + else { | |
158 | + //need to anattampted question means user ahs not dragged, dropped options so save blank | |
159 | + $scope.UserAnswersForAllQuestions.push({ 'QuestionNo': $scope.quiznumber, 'UserAnswer': "" }) | |
160 | + } | |
161 | + $scope.dragableId = ""; | |
154 | 162 | if ($scope.quiznumber == $scope.TotalNumberofQuiz) |
155 | 163 | return; |
156 | 164 | else |
... | ... | @@ -160,6 +168,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
160 | 168 | } |
161 | 169 | |
162 | 170 | $scope.prevQuiz = function () { |
171 | + $scope.dragableId = ""; | |
163 | 172 | if ($scope.quiznumber == 1) |
164 | 173 | return; |
165 | 174 | else |
... | ... | @@ -188,7 +197,10 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
188 | 197 | //alert(x.left + "," + $("#droppable").clientWidth + "," + x.top); |
189 | 198 | |
190 | 199 | var id = $(this).attr("id"); |
200 | + | |
191 | 201 | var keywords = $location.search(); |
202 | + $scope.labExercideIdentifier = (keywords.labexercise.replace('.json', '')).split('dat_')[1]; | |
203 | + | |
192 | 204 | var dataText = e.dataTransfer.getData('text/plain'); |
193 | 205 | if (id == "divoptions" || id == "divleft" || id == "divright") { |
194 | 206 | var item = $('#' + $scope.dragableId).html(); |
... | ... | @@ -196,17 +208,21 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
196 | 208 | var labExerciseModulePath = '~/../content/data/json/le/' + keywords.labexercise + '.json'; |
197 | 209 | DataService.getAnotherJson(labExerciseModulePath).then( |
198 | 210 | function (result) { |
199 | - | |
211 | + | |
200 | 212 | $.each(result.LabExercise, function (index, value) { |
201 | 213 | if (result.LabExercise[index].Slug == keywords.labexercise) { |
202 | 214 | $.each(result.LabExercise[index].Questions, function (index1, value1) { |
203 | 215 | if (result.LabExercise[index].Questions[index1].Number == $scope.quiznumber) { |
204 | 216 | var Options = result.LabExercise[index].Questions[index1].Options; |
217 | + $scope.maxScore = Options.length; | |
218 | + | |
205 | 219 | $.each(Options, function (inx, value2) { |
206 | 220 | if (Options[inx].OptionTitle == item) { |
207 | 221 | if ($scope.DraggedList != null) { |
208 | 222 | $.each($scope.DraggedList, function (inx1, value3) { |
209 | - | |
223 | + // $scope.AnswerList.push({ "optionName": id.split('-')[1], "AnswerName": $scope.dragableId.split('-')[1] }); | |
224 | + var balnkBox=id.split('-')[1]; | |
225 | + $scope.UserAttempt.push({balnkBox :+ $scope.dragableId.split('-')[1] }); | |
210 | 226 | if ($scope.DraggedList[inx1].Value == item) { |
211 | 227 | $scope.DraggedList.splice(inx1, 1); |
212 | 228 | $('#block-' + Options[inx].OptionNumber).css("display", "block"); |
... | ... | @@ -249,6 +265,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
249 | 265 | }); |
250 | 266 | } |
251 | 267 | |
268 | + $scope.AnswerList.push({ "optionName": id.split('-')[1], "AnswerName": $scope.dragableId.split('-')[1] }); | |
252 | 269 | $scope.DraggedList.push({ "id": id.split('-')[1], "optionName": id.split('-')[1], "Value": dataText, "topcoord": Options[inx].topcoord, "leftcoord": Options[inx].leftcoord }); |
253 | 270 | //$('#' + $scope.dragableId).remove(); |
254 | 271 | $('#' + $scope.dragableId).css("display", "none"); |
... | ... | @@ -274,6 +291,7 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
274 | 291 | //{ |
275 | 292 | // $("#divoptions").html("<br><br><br><br>") |
276 | 293 | //} |
294 | + //alert(JSON.stringify($scope.AnswerList)); | |
277 | 295 | }; |
278 | 296 | |
279 | 297 | $scope.handleDragOver = function (e) { |
... | ... | @@ -342,7 +360,93 @@ function ($scope, $rootScope, pages, log, $http, DataService, $filter, $location |
342 | 360 | } |
343 | 361 | |
344 | 362 | }; |
345 | - | |
363 | + | |
364 | + $scope.SaveAnswer = function () { | |
365 | + | |
366 | + //get user answers | |
367 | + var userAnswers = []; | |
368 | + var blockBoxes = $("div[id*='blockbox']"); | |
369 | + var blockBoxesInTextBlock = $("#textblock").children(); | |
370 | + | |
371 | + var blockBoxLength = blockBoxes.length - blockBoxesInTextBlock.length; | |
372 | + var blockAnswers = $("div[id*='blockans']"); | |
373 | + for (var i = 0; i < blockAnswers.length; i++) { | |
374 | + | |
375 | + var id = (blockAnswers[i].id).split('-')[1]; | |
376 | + userAnswers[id.replace('T','')] = blockAnswers[i].innerHTML; | |
377 | + } | |
378 | + | |
379 | + var commaSeperatedUserAnswers = ''; | |
380 | + for (var i = 1; i <=blockBoxLength; i++) { | |
381 | + | |
382 | + var userAns = userAnswers[i]; | |
383 | + if(userAns!=undefined){ | |
384 | + commaSeperatedUserAnswers +=userAns + ','; | |
385 | + } | |
386 | + else{ | |
387 | + commaSeperatedUserAnswers +=''+','; | |
388 | + } | |
389 | + } | |
390 | + //remove last comma | |
391 | + commaSeperatedUserAnswers = commaSeperatedUserAnswers.replace(/,$/, ''); | |
392 | + | |
393 | + | |
394 | + //get correct response | |
395 | + $scope.correctResponse =''; | |
396 | + $scope.correctResponseForSavingDatabase =''; | |
397 | + var cr = new jinqJs() | |
398 | + .from($scope.LabExData.LabExercise[0].Questions) | |
399 | + .where('Number == ' + $scope.quiznumber) | |
400 | + .select(); | |
401 | + for (var i = 0; i < cr[0].correctResponse.length; i++) { | |
402 | + var blankBox = cr[0].correctResponse[i].OptionBox; | |
403 | + var options = cr[0].correctResponse[i].Answer; | |
404 | + $scope.correctResponse += blankBox + ' ' + options + ','; | |
405 | + $scope.correctResponseForSavingDatabase += parseInt(blankBox.replace('T',''))-1 + ':' + options + ','; | |
406 | + } | |
407 | + | |
408 | + $scope.correctResponse = $scope.correctResponse.replace(/,$/, ''); | |
409 | + $scope.correctResonseKeyValue = $scope.correctResponse.split(','); | |
410 | + | |
411 | + $scope.correctResponseForSavingDatabase = $scope.correctResponseForSavingDatabase.replace(/,$/, ''); | |
412 | + // $scope.correctResponseForSavingDatabaseArray = $scope.correctResponseForSavingDatabase.split(','); | |
413 | + | |
414 | + //get dragItems | |
415 | + var OptionBoxes = $("div[id*='block-']"); | |
416 | + $scope.DragItems = ''; | |
417 | + for (var i = 0; i < OptionBoxes.length; i++) { | |
418 | + $scope.DragItems += OptionBoxes[i].id.replace('block-', '') + ',' + OptionBoxes[i].innerHTML + ';'; | |
419 | + } | |
420 | + $scope.DragItems = DragItems.replace(/;$/, ''); | |
421 | + | |
422 | + | |
423 | + //get score | |
424 | + | |
425 | + $scope.LabExerciseAttemptedData = { | |
426 | + userId: localStorage.getItem('loggedInUserDetails').id, | |
427 | + //Attemptnumber: 1, | |
428 | + labExerciseIdentifier: $scope.labExercideIdentifier, | |
429 | + LastQuestion: $scope.quiznumber, | |
430 | + TotalQuestions: $scope.TotalNumberofQuiz, | |
431 | + MaxScore: $scope.maxScore, | |
432 | + UserAnswer: commaSeperatedUserAnswers, | |
433 | + QuestionNo: $scope.quiznumber, | |
434 | + CorrectAnswer: JSON.stringify($scope.correctResponseForSavingDatabase), | |
435 | + DragItems: $scope.DragItems, | |
436 | + Score: 1 | |
437 | + } | |
438 | + var abc = $scope.AnswerList; | |
439 | + //LabExerciseService.saveLabExerciseAttempt("superadmin", $scope.LabExerciseAttemptedData) | |
440 | + LabExerciseService.saveLabExerciseAttempt($scope.LabExerciseAttemptedData) | |
441 | + .then( | |
442 | + function (result) { | |
443 | + alert("Successfully updated"); | |
444 | + }, | |
445 | + function (error) { | |
446 | + console.log(' Error in authentication = ' + error.statusText); | |
447 | + alert("Error"); | |
448 | + }); | |
449 | + }; | |
346 | 450 | }] |
347 | 451 | |
348 | 452 | ); | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/services/LabExerciseService.js
0 → 100644
1 | +AIA.factory('LabExerciseService', function ($http, $q) { | |
2 | + return { | |
3 | + saveLabExerciseAttempt: function (username, labExercieObj) { | |
4 | + var deferred = $q.defer(); | |
5 | + | |
6 | + $http.post('/API/api/Authenticate', JSON.stringify(userInfo), { | |
7 | + headers: { | |
8 | + 'Content-Type': 'application/json' | |
9 | + } | |
10 | + }) | |
11 | + .success(function (data, status, headers, config) { | |
12 | + console.log('success') | |
13 | + deferred.resolve(data); | |
14 | + }).error(function (data, status, headers, config) { | |
15 | + console.log('error') | |
16 | + deferred.reject(data); | |
17 | + $rootScope.isVisibleLogin = true; | |
18 | + $rootScope.errorMessage = data; | |
19 | + $("#messageModal").modal('show'); | |
20 | + | |
21 | + }); | |
22 | + return deferred.promise; | |
23 | + }, | |
24 | + } | |
25 | +}) | |
0 | 26 | \ No newline at end of file | ... | ... |
400-SOURCECODE/AIAHTML5.Web/app/views/LabExerc/lab-exercises-detail.html
... | ... | @@ -26,7 +26,7 @@ |
26 | 26 | </div> |
27 | 27 | <div class="panel-body" style="padding:2px;overflow:scroll"> |
28 | 28 | <div id="textblock" style="margin:20px;"> |
29 | - <div style="margin:14px;" ng-repeat="optionbox in LabExerciseModules.OptionBox" droppable="true" class="droppable ui-droppable options" id="blockbox-{{optionbox.BoxName}}"> | |
29 | + <div style="margin: 20px;" ng-repeat="optionbox in LabExerciseModules.OptionBox" droppable="true" class="droppable ui-droppable options" id="blockbox-{{optionbox.BoxName}}"> | |
30 | 30 | <div ng-bind-html="deliberatelyTrustDangerousSnippet(optionbox.QuizText)"></div> |
31 | 31 | </div> |
32 | 32 | <!--<ul> |
... | ... | @@ -38,16 +38,16 @@ |
38 | 38 | <div draggable="true" ng-repeat="option in LabExerciseModules.Options | filter:{'textalign':'left'}" ng-style="{'width': '150px', 'height':'40px','font-size':'8px;','valign':'middle','text-align':'center', 'vertical-align:middle','background-color': '#808080','margin':'10px !important','float':'{{option.textalign}}'} " style="margin-bottom: 10px !important; width: 180px;" class="thumbnail caption col-sm-2 col-lg-3 ui-draggable marginR5 " id="block-{{option.OptionNumber}}">{{option.OptionTitle}}</div> |
39 | 39 | </div> |
40 | 40 | <div class="col-sm-9"> |
41 | - <div style="position: relative; margin-left: 70px;" id="imgdiv"> | |
41 | + <div style="position: relative; margin-left: 85px;" id="imgdiv"> | |
42 | 42 | <div id="imgblock"> |
43 | - <img id="droppable" ng-src="content/images/LE/{{Imagepath}}" alt="" ng-click="onClick()" imageonload /> | |
43 | + <img id="droppable" ng-src="content/images/LE/{{Imagepath}}" alt="" ng-click="onClick()" imageonload /> | |
44 | 44 | </div> |
45 | 45 | |
46 | 46 | <div ng-show="IsVisible" ng-repeat="optionbox in LabExerciseModules.OptionBox" droppable="true" class="droppable ui-droppable options" id="blockbox-{{optionbox.BoxName}}" ng-style="{'top':{{optionbox.topcoord}}, 'left':{{optionbox.leftcoord}},'position': 'absolute', 'width': '155px', 'height':'30px', 'border':'0px solid #333', 'background': '#E8E8E8' }">{{optionbox.Answervalue}}</div> |
47 | 47 | <div draggable="true" ng-repeat="ans in DraggedList" droppable="true" class="droppable ui-droppable answerdroppable" id="blockans-{{ans.id}}" ng-style="{'top':{{ans.topcoord}}, 'left':{{ans.leftcoord}},'position': 'absolute', 'width': '158px', 'height':'30px', 'border':'0px solid #333', 'background': 'transparent','font-size': '12px','border-color':'#FF0000','padding-top':'5px'}">{{ans.Value}}</div> |
48 | 48 | </div> |
49 | 49 | |
50 | - <div class="col-sm-12" style="margin-left: 200px; margin-top: 10px; height:80px;" id="divoptions" droppable="true" > | |
50 | + <div class="col-sm-12" style="margin-left: 215px; margin-top: 10px; height:80px;" id="divoptions" droppable="true"> | |
51 | 51 | <!--<div class="col-sm-3 col-lg-3 ui-draggable" >--> |
52 | 52 | <div draggable="true" ng-repeat="option in LabExerciseModules.Options | filter:{'textalign':'bottom'}" ng-style="{'width': '150px', 'height':'40px','font-size':'8px;','valign':'middle','text-align':'center', 'vertical-align:middle','background-color': '#808080','margin':'5px !important','float':'{{option.textalign}}'} " style="margin-bottom: 5px !important; width: 180px;" class="thumbnail caption col-sm-2 col-lg-3 ui-draggable marginR5 " id="block-{{option.OptionNumber}}">{{option.OptionTitle}}</div> |
53 | 53 | <!--</div>--> |
... | ... | @@ -64,7 +64,7 @@ |
64 | 64 | </div> |
65 | 65 | <div class="pull-right"> |
66 | 66 | <div class="btn-group pull-left marginR5"> |
67 | - <button class="btn btn-sm btn-primary">Save</button> | |
67 | + <button class="btn btn-sm btn-primary" ng-click="SaveAnswer()">Save</button> | |
68 | 68 | <button class="btn btn-sm btn-primary" ng-click="ReviewAttempt()">Review Your Attempt</button> |
69 | 69 | <button class="btn btn-sm btn-primary" ng-click="resetQuiz()">Reset</button> |
70 | 70 | </div> | ... | ... |
400-SOURCECODE/AIAHTML5.Web/index.html
... | ... | @@ -1435,7 +1435,7 @@ |
1435 | 1435 | <script src="app/services/TermService.js"></script> |
1436 | 1436 | <script src="libs/jquery/jquery_plugin/jqueryui.js"></script> |
1437 | 1437 | <script src="libs/jquery/jquery_plugin/slider-pips/jquery-ui-slider-pips.js"></script> |
1438 | - | |
1438 | + <script src="../app/services/LabExerciseService.js"></script> | |
1439 | 1439 | <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script> |
1440 | 1440 | |
1441 | 1441 | <script src="libs/jquery/jquery_plugin/color-picker/jquery.minicolors.min.js"></script> | ... | ... |