querytable plugin’s internal key passed by caller : QueryTable (… id_key=‘hrn’ )
[myslice.git] / plugins / querytable / static / js / querytable.js
index 12232c8..9d7bced 100644 (file)
             var query = manifold.query_store.find_analyzed_query(this.options.query_uuid);
             this.method = query.object;
 
-            var keys = manifold.metadata.get_key(this.method);
-            this.key = (keys && keys.length == 1) ? keys[0] : null;
-
-           // xxx temporary hack
-           // as of nov. 28 2013 we have here this.key='urn', but in any place where
-           // the code tries to access record[this.key] the records only have
-           // keys=type,hrn,network_hrn,hostname
-           // so for now we force using hrn instead
-           // as soon as record have their primary key set this line can be removed
-           // see also same hack in googlemap
-           this.key= (this.key == 'urn') ? 'hrn' : this.key;
+           // xxx beware that this.key needs to contain a key that all records will have
+           // in general query_all will return well populated records, but query
+           // returns records with only the fields displayed on startup. 
+           this.key = (this.options.id_key);
+           if (! this.key) {
+               // if not specified by caller, decide from metadata
+               var keys = manifold.metadata.get_key(this.method);
+               this.key = (keys && keys.length == 1) ? keys[0] : null;
+           }
+           if (! this.key) messages.warning("querytable.init could not kind valid key");
+
+           messages.debug("querytable: key="+this.key);
 
             /* Setup query and record handlers */
             this.listen_query(options.query_uuid);