1 define(['app/yangman/models/baselist.model'], function (BaseListModel){
5 * Base history list object
7 * @param ParsingJsonService
8 * @param RequestsService
10 function HistoryListModel($filter, ParsingJsonService, RequestsService){
12 BaseListModel.call(this, ParsingJsonService);
14 /* jshint validthis: true */
18 self.selectedRequests = [];
20 self.addRequestToList = addRequestToList;
22 self.createEntry = createEntry;
23 self.deleteRequestItem = deleteRequestItem;
24 self.deselectReqs = deselectReqs;
25 self.groupListByDate = groupListByDate;
26 self.selectReqs = selectReqs;
27 self.toggleReqSelection = toggleReqSelection;
28 self.getNewestRequest = getNewestRequest;
31 * Get request with max timestamp (was executed as the last)
33 function getNewestRequest() {
34 return $filter('orderBy')(self.list, '-timestamp')[0];
38 * Mark reqObj as selected
39 * @param {boolean} onlyOneSelected boolean if only this object should be marked as selected
40 * @param reqObj HistoryRequest object to be selected
42 function toggleReqSelection(onlyOneSelected, reqObj){
44 self.selectedRequests.forEach(function (req){
47 self.selectedRequests = [];
50 if (reqObj.selected && !onlyOneSelected){
51 self.selectedRequests.splice(self.selectedRequests.indexOf(reqObj), 1);
54 reqObj.selected = (reqObj.selected && onlyOneSelected) || !reqObj.selected;
56 self.selectedRequests.push(reqObj);
62 * Round timestamp to day
66 function roundTimestampToDate(timeStamp){
67 timeStamp -= timeStamp % (24 * 60 * 60 * 1000);//subtract amount of time since midnight
68 timeStamp += new Date().getTimezoneOffset() * 60 * 1000;//add on the timezone offset
73 * Grouping by date to show date groups in yangman
75 function groupListByDate(){
76 self.list.forEach(addToListDateGroup);
78 function addToListDateGroup(elem){
80 var groupName = roundTimestampToDate(elem.timestamp),
81 dateGroupArr = self.dateGroups.filter(function(group){
82 return group.name === groupName;
86 if (dateGroupArr.length){
87 dateGroup = dateGroupArr[0];
92 longName: new Date(groupName).toDateString(),
95 self.dateGroups.push(dateGroup);
97 dateGroup.requests.push(elem);
105 * @returns {HistoryRequest|*}
107 function createEntry(elem) {
108 return RequestsService.createHistoryRequestFromElement(elem);
115 function addRequestToList(reqObj){
116 self.list.push(reqObj);
123 function deleteRequestItem(elem){
124 self.list.splice(self.list.indexOf(elem), 1);
129 self.dateGroups = [];
130 self.selectedRequests = [];
137 self.toJSON = function () {
138 return self.list.map(function (elem) {
139 return elem.toJSON();
144 * Mark all history requests as deselected
146 function deselectReqs(){
147 self.selectedRequests.forEach(function (request){
148 request.selected = false;
150 self.selectedRequests = [];
154 * Mark all history requests as selected
156 function selectReqs(requestsList){
157 requestsList.forEach(function (reqObj){
158 reqObj.selected = true;
159 self.selectedRequests.push(reqObj);
164 HistoryListModel.prototype = Object.create(BaseListModel.prototype);
166 return HistoryListModel;