/**
* 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
*/
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);
}
}
}
/**
- * 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;
}
}
+
/**
*
* @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);
}
/**
function clear() {
self.list = [];
self.dateGroups = [];
- self.selectedRequests = [];
+ self.selectedItems = [];
}
/**
* 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 = [];
}
/**
function selectReqs(requestsList){
requestsList.forEach(function (reqObj){
reqObj.selected = true;
- self.selectedRequests.push(reqObj);
+ self.selectedItems.push(reqObj);
});
}
}