| 1 | // ====================================================================================== | 
|---|
| 2 |  | 
|---|
| 3 | function getSchedule() | 
|---|
| 4 | { | 
|---|
| 5 | // List of all available measurement types (see also Observation_class.js) | 
|---|
| 6 | var measurementType = [ "STARTUP", "IDLE", "DRSCALIB", "SINGLEPE", "DATA", "RATESCAN", "SHUTDOWN", "OVTEST", "RATESCAN2", "SLEEP", "CUSTOM" ]; | 
|---|
| 7 |  | 
|---|
| 8 | // Get current time | 
|---|
| 9 | var start = new Date();//new Date("2013-04-07 19:00:00 UTC"); | 
|---|
| 10 |  | 
|---|
| 11 | // Because Main.js could start a new observations just in the moment between 'now' | 
|---|
| 12 | // and entering the new data in the database, we have to use the unique id | 
|---|
| 13 | // in Main.js to check if the current observation should be changed (and sub resetted) | 
|---|
| 14 | start = new Date(start.getTime()-10*3600000); | 
|---|
| 15 |  | 
|---|
| 16 | // ---------------------------------------------------------------------- | 
|---|
| 17 |  | 
|---|
| 18 | // Connect to database | 
|---|
| 19 | var db = new Database($['schedule-database']); | 
|---|
| 20 |  | 
|---|
| 21 | // get all sources from database | 
|---|
| 22 | var sources = db.query("SELECT * from Source"); | 
|---|
| 23 |  | 
|---|
| 24 | // Get the current schedule | 
|---|
| 25 | var rows = db.query("SELECT * FROM Schedule WHERE fStart>'"+start.toISOString()+"' ORDER BY fStart, fMeasurementID"); | 
|---|
| 26 |  | 
|---|
| 27 | // Close db connection | 
|---|
| 28 | db.close(); | 
|---|
| 29 |  | 
|---|
| 30 | // ---------------------------------------------------------------------- | 
|---|
| 31 |  | 
|---|
| 32 | var schedule = []; | 
|---|
| 33 | var entry    = -1; | 
|---|
| 34 | var sub      =  0; | 
|---|
| 35 |  | 
|---|
| 36 | for (var i=0; i<rows.length; i++) | 
|---|
| 37 | { | 
|---|
| 38 | var sub = rows[i]['fMeasurementID']; | 
|---|
| 39 | if (sub==0) | 
|---|
| 40 | entry++; | 
|---|
| 41 |  | 
|---|
| 42 | var m = { } | 
|---|
| 43 |  | 
|---|
| 44 | var task = rows[i]['fMeasurementTypeKey']; | 
|---|
| 45 | m.task = measurementType[task]; | 
|---|
| 46 |  | 
|---|
| 47 | var src = rows[i]['fSourceKey']; | 
|---|
| 48 | if (src) | 
|---|
| 49 | { | 
|---|
| 50 | // Convert SourceKey to SourceName | 
|---|
| 51 | var arr = sources.filter(function(e) { return e['fSourceKEY']==src; }); | 
|---|
| 52 | if (arr.length==0) | 
|---|
| 53 | throw new Error("SourceKey "+src+" unknown."); | 
|---|
| 54 |  | 
|---|
| 55 | m.source = arr[0]['fSourceName']; | 
|---|
| 56 | } | 
|---|
| 57 |  | 
|---|
| 58 | var data = rows[i]['fData']; | 
|---|
| 59 | if (data) | 
|---|
| 60 | { | 
|---|
| 61 | var obj = JSON.parse(("{"+data+"}").replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":")); | 
|---|
| 62 | for (var key in obj) | 
|---|
| 63 | m[key] = obj[key]; | 
|---|
| 64 | } | 
|---|
| 65 |  | 
|---|
| 66 | if (!schedule[entry]) | 
|---|
| 67 | schedule[entry] = { }; | 
|---|
| 68 |  | 
|---|
| 69 | schedule[entry].id   = rows[i]['fScheduleID']; | 
|---|
| 70 | schedule[entry].date = new Date(rows[i]['fStart']+" UTC"); | 
|---|
| 71 |  | 
|---|
| 72 | if (!schedule[entry].measurements) | 
|---|
| 73 | schedule[entry].measurements = []; | 
|---|
| 74 |  | 
|---|
| 75 | schedule[entry].measurements[sub] = m; | 
|---|
| 76 | } | 
|---|
| 77 |  | 
|---|
| 78 | for (var i=0; i<schedule.length; i++) | 
|---|
| 79 | schedule[i] = new Observation(schedule[i]); | 
|---|
| 80 |  | 
|---|
| 81 | return schedule; | 
|---|
| 82 | } | 
|---|
| 83 |  | 
|---|
| 84 | // ------------------------------------------------------------------------------------- | 
|---|
| 85 |  | 
|---|
| 86 | /* | 
|---|
| 87 | // remove " | 
|---|
| 88 | conv = conv.replace(/\"(\w+)\":/ig, "$1:"); | 
|---|
| 89 | // must contain one , less than : | 
|---|
| 90 | // must not contain " and ' | 
|---|
| 91 | //var test = "{ra:12,dec:13}".replace(/\ /g, "").replace(/(\w+):/gi, "\"$1\":"); | 
|---|
| 92 | */ | 
|---|