source: trunk/FACT++/scripts/getSchedule.js@ 19690

Last change on this file since 19690 was 18719, checked in by tbretz, 10 years ago
Cosmetics in the ORDER BY clause, added ASC to be more precise.
File size: 2.8 KB
Line 
1// ======================================================================================
2
3function getSchedule()
4{
5 // Get current time
6 var start = new Date();//new Date("2013-04-07 19:00:00 UTC");
7
8 // Because Main.js could start a new observations just in the moment between 'now'
9 // and entering the new data in the database, we have to use the unique id
10 // in Main.js to check if the current observation should be changed (and sub resetted)
11 start = new Date(start.getTime()-10*3600000);
12
13 // ----------------------------------------------------------------------
14
15 // Connect to database
16 var db = new Database($['schedule-database']);
17
18 // Get the current schedule
19 var rows = db.query("SELECT * FROM Schedule "+
20 "LEFT JOIN MeasurementType USING (fMeasurementTypeKey) "+
21 "LEFT JOIN Source USING (fSourceKey) "+
22 "WHERE fStart>'"+start.toISOString()+"' "+
23 "ORDER BY fStart ASC, fMeasurementID ASC");
24
25 // Close db connection
26 db.close();
27
28 // ----------------------------------------------------------------------
29
30 var schedule = [];
31 var entry = -1;
32 var sub = 0;
33
34 for (var i=0; i<rows.length; i++)
35 {
36 var id = rows[i]['fScheduleID'];
37 var sub = rows[i]['fMeasurementID'];
38 if (sub==0)
39 entry++;
40
41 var m = { }
42
43 m.task = rows[i]['fMeasurementTypeName'];
44 if (!m.task)
45 throw new Error("No valid measurement type for id=("+id+":"+sub+")");
46
47 // For simplicity, measurements suspend and resume must be unique in an observation
48 if ((m.task=="suspend" || m.task=="resume") && sub>0)
49 throw new Error("Measurement "+m.task+" not the only one in the observation (id="+id+")");
50
51 m.source = rows[i]['fSourceName'];
52
53 var data = rows[i]['fData'];
54 if (data)
55 {
56 var obj = JSON.parse(("{"+data+"}").replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":"));
57 for (var key in obj)
58 m[key] = obj[key];
59 }
60
61 if (!schedule[entry])
62 schedule[entry] = { };
63
64 schedule[entry].id = id;
65 schedule[entry].date = new Date(rows[i]['fStart']+" UTC");
66
67 if (!schedule[entry].measurements)
68 schedule[entry].measurements = [];
69
70 schedule[entry].measurements[sub] = m;
71 }
72
73 for (var i=0; i<schedule.length; i++)
74 schedule[i] = new Observation(schedule[i]);
75
76 return schedule;
77}
78
79// -------------------------------------------------------------------------------------
80
81/*
82 // remove "
83 conv = conv.replace(/\"(\w+)\":/ig, "$1:");
84 // must contain one , less than :
85 // must not contain " and '
86 //var test = "{ra:12,dec:13}".replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":");
87*/
Note: See TracBrowser for help on using the repository browser.