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
|
var scheds = {};
function example() {
var taskStatus = {'Stand':'Stand',
'Table ronde':'Table-ronde',
'Atelier':'Atelier',
'Concert':'Concert',
'Conference':'Conference',
'Repas':'Repas'}
d3.json("le-prog-json", function(error, JsonContent) {
if (error)
return console.warn(error);
$.each( JsonContent,
function( EventType, ListEvType ) {
$.each( ListEvType,
function( Day, ListEvent ) {
var placeNames = [];
for ( var i = 0; i < ListEvent.length; i++) {
placeNames.push(ListEvent[i]["placeName"]);
// convert json text to js Date
ListEvent[i]["startDate"] = new Date(ListEvent[i]["startDate"]);
ListEvent[i]["endDate"] = new Date(ListEvent[i]["endDate"]);
}
//placeNames.push("unk")
scheds[EventType+"_"+Day] = new d3.sched("SVG_"+Day)
.taskTypes(placeNames)
.taskStatus(taskStatus)
.tickFormat("%H:%M");
//scheds[EventType+"_"+Day].timeDomainMode("fit");
//scheds[EventType+"_"+Day].margin(margin);
scheds[EventType+"_"+Day](ListEvent);
//scheds[EventType+"_"+Day].zoomed();
scheds[EventType+"_"+Day].redraw("SVG_"+Day, ListEvent)
});
});
});
};
// Query Programme
example();
function changeTimeDomain(timeDomainString) {
this.timeDomainString = timeDomainString;
switch (timeDomainString) {
case "1hr":
format = "%H:%M:%S";
sched.timeDomain([ d3.time.hour.offset(getEndDate(), -1), getEndDate() ]);
break;
case "3hr":
format = "%H:%M";
sched.timeDomain([ d3.time.hour.offset(getEndDate(), -3), getEndDate() ]);
break;
case "6hr":
format = "%H:%M";
sched.timeDomain([ d3.time.hour.offset(getEndDate(), -6), getEndDate() ]);
break;
case "1day":
format = "%H:%M";
sched.timeDomain([ d3.time.day.offset(getEndDate(), -1), getEndDate() ]);
break;
case "1week":
format = "%a %H:%M";
sched.timeDomain([ d3.time.day.offset(getEndDate(), -7), getEndDate() ]);
break;
default:
format = "%H:%M"
}
sched.tickFormat(format);
sched.redraw(tasks);
}
function getEndDate() {
var lastEndDate = Date.now();
if (tasks.length > 0) {
lastEndDate = tasks[tasks.length - 1].endDate;
}
return lastEndDate;
}
function addTask() {
var lastEndDate = getEndDate();
var taskStatusKeys = Object.keys(taskStatus);
var taskStatusName = taskStatusKeys[Math.floor(Math.random() * taskStatusKeys.length)];
var taskName = taskNames[Math.floor(Math.random() * taskNames.length)];
tasks.push({
"startDate" : d3.time.hour.offset(lastEndDate, Math.ceil(1 * Math.random())),
"endDate" : d3.time.hour.offset(lastEndDate, (Math.ceil(Math.random() * 3)) + 1),
"taskName" : taskName,
"status" : taskStatusName
});
changeTimeDomain(timeDomainString);
sched.redraw(tasks);
};
function removeTask() {
tasks.pop();
changeTimeDomain(timeDomainString);
sched.redraw(tasks);
};
|