1 define(['app/yangman/models/baselist.model'], function (BaseListModel){
5 * Base history list object
7 * @param ParsingJsonService
8 * @param RequestsService
10 function HistoryListModel(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;
30 * Mark reqObj as selected
31 * @param {boolean} onlyOneSelected boolean if only this object should be marked as selected
32 * @param reqObj HistoryRequest object to be selected
34 function toggleReqSelection(onlyOneSelected, reqObj){
36 self.selectedRequests.forEach(function (req){
39 self.selectedRequests = [];
42 if (reqObj.selected && !onlyOneSelected){
43 self.selectedRequests.splice(self.selectedRequests.indexOf(reqObj), 1);
46 reqObj.selected = (reqObj.selected && onlyOneSelected) || !reqObj.selected;
48 self.selectedRequests.push(reqObj);
54 * Round timestamp to day
58 function roundTimestampToDate(timeStamp){
59 timeStamp -= timeStamp % (24 * 60 * 60 * 1000);//subtract amount of time since midnight
60 timeStamp += new Date().getTimezoneOffset() * 60 * 1000;//add on the timezone offset
65 * Grouping by date to show date groups in yangman
67 function groupListByDate(){
68 self.list.forEach(addToListDateGroup);
70 function addToListDateGroup(elem){
71 var groupName = roundTimestampToDate(elem.timestamp),
72 dateGroupArr = self.dateGroups.filter(function(group){
73 return group.name === groupName;
77 if (dateGroupArr.length){
78 dateGroup = dateGroupArr[0];
83 longName: new Date(groupName).toDateString(),
86 self.dateGroups.push(dateGroup);
88 dateGroup.requests.push(elem);
95 * @returns {HistoryRequest|*}
97 function createEntry(elem) {
98 return RequestsService.createHistoryRequestFromElement(elem);
105 function addRequestToList(reqObj){
106 self.list.push(reqObj);
113 function deleteRequestItem(elem){
114 self.list.splice(self.list.indexOf(elem), 1);
119 self.dateGroups = [];
120 self.selectedRequests = [];
127 self.toJSON = function () {
128 return self.list.map(function (elem) {
129 return elem.toJSON();
134 * Mark all history requests as deselected
136 function deselectReqs(){
137 self.selectedRequests.forEach(function (request){
138 request.selected = false;
140 self.selectedRequests = [];
144 * Mark all history as selected
146 function selectReqs(requestsList){
147 requestsList.forEach(function (reqObj){
148 reqObj.selected = true;
149 self.selectedRequests.push(reqObj);
154 HistoryListModel.prototype = Object.create(BaseListModel.prototype);
156 return HistoryListModel;