Yangman - changed loop types
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / models / historylist.model.js
index 80095547f82d84a99dc2cf06dcc351f11e1fdf51..62cd60cee573f4c26e5ff62a9567e7a438b733d4 100644 (file)
@@ -3,28 +3,41 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
 
     /**
      * Base history list object
+
      * @constructor
      * @param ParsingJsonService
      * @param RequestsService
      */
-    function HistoryListModel(ParsingJsonService, RequestsService){
+    function HistoryListModel($filter, ParsingJsonService, RequestsService){
 
-        BaseListModel.call(this, ParsingJsonService);
+        BaseListModel.call(this, $filter, ParsingJsonService);
 
         /* jshint validthis: true */
         var self = this;
-        self.list = [];
+
+
+        /**
+         * Array of groups in which are requests from self.list groupped
+         * @type {Array}
+         */
         self.dateGroups = [];
-        self.selectedRequests = [];
 
-        self.addRequestToList = addRequestToList;
+        self.addItemToList = addItemToList;
         self.clear = clear;
-        self.createEntry = createEntry;
+        self.createItem = createItem;
         self.deleteRequestItem = deleteRequestItem;
         self.deselectReqs = deselectReqs;
-        self.groupListByDate = groupListByDate;
         self.selectReqs = selectReqs;
         self.toggleReqSelection = toggleReqSelection;
+        self.getNewestRequest = getNewestRequest;
+
+
+        /**
+         * Get request with max timestamp (was executed as the last)
+         */
+        function getNewestRequest() {
+            return $filter('orderBy')(self.list, '-timestamp')[0];
+        }
 
         /**
          * Mark reqObj as selected
@@ -33,19 +46,19 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          */
         function toggleReqSelection(onlyOneSelected, reqObj){
             if (onlyOneSelected){
-                self.selectedRequests.forEach(function (req){
+                self.selectedItems.forEach(function (req){
                     req.selected = false;
                 });
-                self.selectedRequests = [];
+                self.selectedItems = [];
             }
 
             if (reqObj.selected && !onlyOneSelected){
-                self.selectedRequests.splice(self.selectedRequests.indexOf(reqObj), 1);
+                self.selectedItems.splice(self.selectedItems.indexOf(reqObj), 1);
             }
 
             reqObj.selected = (reqObj.selected && onlyOneSelected) || !reqObj.selected;
             if (reqObj.selected){
-                self.selectedRequests.push(reqObj);
+                self.selectedItems.push(reqObj);
             }
 
         }
@@ -62,14 +75,13 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         }
 
         /**
-         * Grouping by date to show date groups in yangman
+         * Add element to date group
+         * @param elem
          */
-        function groupListByDate(){
-            self.list.forEach(addToListDateGroup);
-
-            function addToListDateGroup(elem){
+        function addElemToListDateGroup(elem){
+            if (elem.timestamp){
                 var groupName = roundTimestampToDate(elem.timestamp),
-                    dateGroupArr = self.dateGroups.filter(function(group){
+                    dateGroupArr = self.dateGroups.filter(function (group){
                         return group.name === groupName;
                     }),
                     dateGroup = null;
@@ -89,12 +101,13 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
             }
         }
 
+
         /**
          *
          * @param elem
          * @returns {HistoryRequest|*}
          */
-        function createEntry(elem) {
+        function createItem(elem) {
             return RequestsService.createHistoryRequestFromElement(elem);
         }
 
@@ -102,8 +115,9 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          *
          * @param reqObj
          */
-        function addRequestToList(reqObj){
+        function addItemToList(reqObj){
             self.list.push(reqObj);
+            addElemToListDateGroup(reqObj);
         }
 
         /**
@@ -117,7 +131,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         function clear() {
             self.list = [];
             self.dateGroups = [];
-            self.selectedRequests = [];
+            self.selectedItems = [];
         }
 
         /**
@@ -134,10 +148,10 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          * Mark all history requests as deselected
          */
         function deselectReqs(){
-            self.selectedRequests.forEach(function (request){
+            self.selectedItems.forEach(function (request){
                 request.selected = false;
             });
-            self.selectedRequests = [];
+            self.selectedItems = [];
         }
 
         /**
@@ -146,7 +160,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         function selectReqs(requestsList){
             requestsList.forEach(function (reqObj){
                 reqObj.selected = true;
-                self.selectedRequests.push(reqObj);
+                self.selectedItems.push(reqObj);
             });
         }
     }