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 */ 93