SimpleList No Result optional warning msg
[myslice.git] / plugins / lists / static / js / simplelist.js
index 254fb22..6df47cf 100644 (file)
     var SimpleList = Plugin.extend ({
 
        init: function (options, element) {
-           this.classname=options.classname;
+           this.classname = options.classname;
            this._super (options, element);
-           this.buffered_records=[];
-            this.listen_query(options.query_uuid);
+           this.buffered_records = [];
+        this.listen_query(options.query_uuid);
+        /* Optional parameter warning_msg */
+        if(options.warning_msg != "unknown-setting-warning_msg"){
+            this.warning_msg = options.warning_msg;
+        }else{
+            this.warning_msg = "No Result";
+        }
        }, 
 
         on_query_in_progress: function() {
         },
 
         on_query_done: function() {
-           this._display_table();
+               this._display_table();
             this.unspin();
+            console.log("query simple list done");
+            console.log(this);
+            console.log(this.buffered_records);
         },
         
         on_new_record: function(record) {
 
        _display_table: function() {
            var self=this;
-            var $plugindiv = this.elmt();
-            var options = this.options;
-            // locate the <table> element; with datatables in the way,
-            // this might not be a direct son of the div-plugin
-            var $table = $plugindiv.find("table."+this.classname).first();
-            // also we may or may not have a header
-            var $tbody = $table.find("tbody."+this.classname).first();
-            var use_datatables = $table.hasClass("with-datatables");
+        var $plugindiv = this.elmt();
+        var options = this.options;
+        // locate the <table> element; with datatables in the way,
+        // this might not be a direct son of the div-plugin
+        var $table = $plugindiv.find("table."+this.classname).first();
+        // also we may or may not have a header
+        var $tbody = $table.find("tbody."+this.classname).first();
+        var use_datatables = $table.hasClass("with-datatables");
            var rows=self.buffered_records;
            self.buffered_records=[];
-            if (debug) 
-               messages.debug($plugindiv.attr('id') + " udt= " + use_datatables + " rows="+rows.length);
-       
-            if (rows.length == 0) {
-               if (use_datatables)
-                    this._datatables_set_message ($table, $tbody, unfold.warning("No result"));
-               else
-                   this._regular_set_message ($table, $tbody, unfold.warning("No result"));
-               return;
+        if (debug){
+                   messages.debug($plugindiv.attr('id') + " udt= " + use_datatables + " rows="+rows.length);
+           }
+        // check if rows contains results related to the object key
+        object_key = this.options.key.split('.');
+        if (rows.length == 0 || rows[0][object_key[0]].length == 0) {
+               if (use_datatables){
+                this._datatables_set_message ($table, $tbody, unfold.warning(self.warning_msg));
+               }else{
+                   this._regular_set_message ($table, $tbody, unfold.warning(self.warning_msg));
             }
+                   return;
+        }
 
-            if (typeof rows[0].error != 'undefined') {
-               var error="ERROR: " + rows[0].error;
-               if (use_datatables) 
-                    this._datatables_set_message ($table, $tbody, unfold.error(error));
-               else
+        if (typeof rows[0].error != 'undefined') {
+                   var error="ERROR: " + rows[0].error;
+                   if (use_datatables){
+                this._datatables_set_message ($table, $tbody, unfold.error(error));
+                   }else{
                    this._regular_set_message ($table, $tbody, unfold.error(error));
-               return;
             }
+                   return;
+        }
 
-           if (use_datatables) 
-               this._datatables_update_table($table, $tbody, rows, options.key);
-           else
-               this._regular_update_table($table, $tbody, rows, options.key, this.classname);
+           if (use_datatables){
+                   this._datatables_update_table($table, $tbody, rows, options.key);
+           }else{
+                   this._regular_update_table($table, $tbody, rows, options.key, this.classname);
+        }
        },
 
        _regular_set_message: function ($table, $tbody, message) {