/**
* 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.settings = null;
- self.addRequestToList = addRequestToList;
+ self.addItemToList = addItemToList;
self.clear = clear;
- self.createEntry = createEntry;
+ self.createItem = createItem;
self.deleteRequestItem = deleteRequestItem;
- self.groupListByDate = groupListByDate;
+ self.deselectReqs = deselectReqs;
+ self.selectReqs = selectReqs;
self.toggleReqSelection = toggleReqSelection;
+ self.getNewestRequest = getNewestRequest;
+ self.setSettings = setSettings;
+
+ /**
+ *
+ */
+ function setSettings(settingsObj) {
+ self.settings = settingsObj;
+ }
+
+
+ /**
+ * Get request with max timestamp (was executed as the last)
+ */
+ function getNewestRequest() {
+ return $filter('orderBy')(self.list, '-timestamp')[0];
+ }
/**
* Mark reqObj as selected
*/
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);
}
}
* @returns {number|*}
*/
function roundTimestampToDate(timeStamp){
- timeStamp -= timeStamp % (24 * 60 * 60 * 1000);//subtract amount of time since midnight
timeStamp += new Date().getTimezoneOffset() * 60 * 1000;//add on the timezone offset
+ timeStamp -= timeStamp % (24 * 60 * 60 * 1000);//subtract amount of time since midnight
return timeStamp;
}
/**
- * 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;
}
}
+ function shiftElemFromListDateGroup(elem){
+ if (elem.timestamp){
+ var groupName = roundTimestampToDate(elem.timestamp),
+ dateGroupArr = self.dateGroups.filter(function (group){
+ return group.name === groupName;
+ }),
+ dateGroup = dateGroupArr[0];
+
+ dateGroup.requests.shift();
+ }
+ }
+
+
/**
*
* @param elem
* @returns {HistoryRequest|*}
*/
- function createEntry(elem) {
+ function createItem(elem) {
return RequestsService.createHistoryRequestFromElement(elem);
}
*
* @param reqObj
*/
- function addRequestToList(reqObj){
+ function addItemToList(reqObj){
self.list.push(reqObj);
+ addElemToListDateGroup(reqObj);
+
+ if (self.list.length > self.settings.data.requestsCount) {
+ shiftElemFromListDateGroup(self.list.shift());
+ }
}
/**
function clear() {
self.list = [];
self.dateGroups = [];
- self.selectedRequests = [];
+ self.selectedItems = [];
}
/**
return elem.toJSON();
});
};
+
+ /**
+ * Mark all history requests as deselected
+ */
+ function deselectReqs(){
+ self.selectedItems.forEach(function (request){
+ request.selected = false;
+ });
+ self.selectedItems = [];
+ }
+
+ /**
+ * Mark all history requests as selected
+ */
+ function selectReqs(requestsList){
+ requestsList.forEach(function (reqObj){
+ reqObj.selected = true;
+ self.selectedItems.push(reqObj);
+ });
+ }
}
HistoryListModel.prototype = Object.create(BaseListModel.prototype);