Index: trunk/FACT++/scripts/getSchedule.js
===================================================================
--- trunk/FACT++/scripts/getSchedule.js	(revision 18712)
+++ trunk/FACT++/scripts/getSchedule.js	(revision 18713)
@@ -3,7 +3,4 @@
 function getSchedule()
 {
-    // List of all available measurement types (see also Observation_class.js)
-    var measurementType = [ "STARTUP", "IDLE", "DRSCALIB", "SINGLEPE", "DATA", "RATESCAN", "SHUTDOWN", "OVTEST", "RATESCAN2", "SLEEP", "CUSTOM" ];
-
     // Get current time
     var start = new Date();//new Date("2013-04-07 19:00:00 UTC");
@@ -19,9 +16,10 @@
     var db = new Database($['schedule-database']);
 
-    // get all sources from database
-    var sources = db.query("SELECT * from Source");
-
     // Get the current schedule
-    var rows = db.query("SELECT * FROM Schedule WHERE fStart>'"+start.toISOString()+"' ORDER BY fStart, fMeasurementID");
+    var rows = db.query("SELECT * FROM Schedule "+
+                        "LEFT JOIN MeasurementType USING (fMeasurementTypeKey) "+
+                        "LEFT JOIN Source USING (fSourceKey) "+
+                        "WHERE fStart>'"+start.toISOString()+"' "+
+                        "ORDER BY fStart, fMeasurementID");
 
     // Close db connection
@@ -36,4 +34,5 @@
     for (var i=0; i<rows.length; i++)
     {
+        var id  = rows[i]['fScheduleID'];
         var sub = rows[i]['fMeasurementID'];
         if (sub==0)
@@ -42,17 +41,13 @@
         var m = { }
 
-        var task = rows[i]['fMeasurementTypeKey'];
-        m.task = measurementType[task];
+        m.task = rows[i]['fMeasurementTypeName'];
+        if (!m.task)
+            throw new Error("No valid measurement type for id=("+id+":"+sub+")");
 
-        var src = rows[i]['fSourceKey'];
-        if (src)
-        {
-            // Convert SourceKey to SourceName
-            var arr = sources.filter(function(e) { return e['fSourceKEY']==src; });
-            if (arr.length==0)
-                throw new Error("SourceKey "+src+" unknown.");
+        // For simplicity, measurements suspend and resume must be unique in an observation
+        if ((m.task=="suspend" || m.task=="resume") && sub>0)
+            throw new Error("Measurement "+m.task+" not the only one in the observation (id="+id+")");
 
-            m.source = arr[0]['fSourceName'];
-        }
+        m.source = rows[i]['fSourceName'];
 
         var data = rows[i]['fData'];
@@ -67,5 +62,5 @@
             schedule[entry] = { };
 
-        schedule[entry].id   = rows[i]['fScheduleID'];
+        schedule[entry].id   = id;
         schedule[entry].date = new Date(rows[i]['fStart']+" UTC");
 
