-
Notifications
You must be signed in to change notification settings - Fork 0
/
sessionTimeData.js
119 lines (98 loc) · 4.12 KB
/
sessionTimeData.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/**
* Created by cgoeke on 06.01.2017.
*/
var SessionTimeData = function (expData) {
this.expData = expData;
this.id = ko.observable(guid());
this.type = "SessionTimeSettings";
this.startCondition = ko.observable('anytime');
this.startTime = ko.observable("00:00");
this.endTime = ko.observable("23:59");
this.startDay = ko.observable(null);
this.endDay = ko.observable(null);
this.startInterval = ko.observable(null);
this.possibleIntervals = ko.observableArray(['every day', 'every week', 'every month']);
this.minimalDaysAfterLast = ko.observable(0);
this.maximalDaysAfterLast = ko.observable(1);
// deprecated
// this.periodStartOption = ko.observable('specific');
// this.possibleMonthDays = ko.observableArray(['1st','2nd','3rd','4th','5th','6th','7th','8th','9th','10th','11th','12th','13th','14th','15th','16th','17th','18th','19th','20th','21st','22th','23th','24th','25th','26th','27th','28th','29th','30th','31th']);
// this.possibleWeekDays = ko.observableArray(['monday','tuesday','wednesday','thursday','friday','saturday','sunday']);
// this.startWeekDay = ko.observable(null);
// this.endWeekDay = ko.observable(null);
// this.startMonthDay = ko.observable(null);
// this.endMonthDay = ko.observable(null);
};
/**
* This function initializes all internal state variables to point to other instances in the same experiment. Usually
* this is called after ALL experiment instances were deserialized using fromJS(). In this function use
* 'entitiesArr.byId[id]' to retrieve an instance from the global list given some unique id.
*
* @param {ko.observableArray} entitiesArr - this is the knockout array that holds all instances.
*/
SessionTimeData.prototype.setPointers = function (entitiesArr) {
};
/**
* Recursively adds all child objects that have a unique id to the global list of entities.
*
* @param {ko.observableArray} entitiesArr - this is the knockout array that holds all instances.
*/
SessionTimeData.prototype.reAddEntities = function (entitiesArr) {
};
/**
* load from a json object to deserialize the states.
* @param {object} data - the json description of the states.
* @returns {ExpSession}
*/
SessionTimeData.prototype.fromJS = function (data) {
this.id(data.id);
this.startCondition(data.startCondition);
this.startTime(data.startTime);
this.endTime(data.endTime);
if (!this.startTime()) {
this.startTime("00:00");
}
if (!this.endTime()) {
this.endTime("23:59");
}
this.startDay(data.startDay);
this.endDay(data.endDay);
this.startInterval(data.startInterval);
this.minimalDaysAfterLast(data.minimalDaysAfterLast);
this.maximalDaysAfterLast(data.maximalDaysAfterLast);
this.possibleIntervals(data.possibleIntervals);
// this.periodStartOption(data.periodStartOption);
// this.possibleMonthDays(data.possibleMonthDays);
// this.possibleWeekDays(data.possibleWeekDays);
// this.startWeekDay(data.startWeekDay) ;
// this.endWeekDay(data.endWeekDay) ;
// this.startMonthDay(data.startMonthDay) ;
// this.endMonthDay(data.endMonthDay);
return this;
};
/**
* serialize the state of this instance into a json object, which can later be restored using the method fromJS.
* @returns {object}
*/
SessionTimeData.prototype.toJS = function () {
return {
id: this.id(),
type: this.type,
startCondition: this.startCondition(),
startTime: this.startTime(),
endTime: this.endTime(),
startDay: this.startDay(),
endDay: this.endDay(),
startInterval: this.startInterval(),
possibleIntervals: this.possibleIntervals(),
minimalDaysAfterLast: this.minimalDaysAfterLast(),
maximalDaysAfterLast: this.maximalDaysAfterLast()
// possibleMonthDays: this.possibleMonthDays(),
// possibleWeekDays: this.possibleWeekDays(),
// periodStartOption: this.periodStartOption(),
// startWeekDay: this.startWeekDay(),
// endWeekDay: this.endWeekDay(),
// startMonthDay: this.startMonthDay(),
// endMonthDay: this.endMonthDay()
};
};