Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab
authorYasin <mohammed-yasin.rahman@lip6.fr>
Thu, 24 Jul 2014 15:59:13 +0000 (17:59 +0200)
committerYasin <mohammed-yasin.rahman@lip6.fr>
Thu, 24 Jul 2014 15:59:13 +0000 (17:59 +0200)
manifoldapi/static/css/manifold.css
manifoldapi/static/js/manifold.js
manifoldapi/static/js/plugin.js
portal/static/css/onelab.css
portal/templates/base.html

index 42c034d..535950e 100644 (file)
@@ -2,3 +2,18 @@
        visibility: hidden;
        position: absolute;
 }
+
+.loading {
+    background-color:white;
+    color:black;
+    position:fixed;
+    top:160px;
+    left:50%;
+    width:30%;
+    margin: 0 0 0 -15%;
+    padding:25px 50px;
+    box-shadow: 4px 4px 5px #888;
+    border:1pt solid #30196D;
+    display:none;
+    z-index:100;
+}
index d96deed..e0454a5 100644 (file)
@@ -17,6 +17,32 @@ function debug_query (msg, query) {
     else messages.debug ("debug_query: " + msg + " query= " + query);
 }
 
+// http://stackoverflow.com/questions/7837456/comparing-two-arrays-in-javascript
+// attach the .equals method to Array's prototype to call it on any array
+Array.prototype.equals = function (array) {
+    // if the other array is a falsy value, return
+    if (!array)
+        return false;
+
+    // compare lengths - can save a lot of time 
+    if (this.length != array.length)
+        return false;
+
+    for (var i = 0, l=this.length; i < l; i++) {
+        // Check if we have nested arrays
+        if (this[i] instanceof Array && array[i] instanceof Array) {
+            // recurse into the nested arrays
+            if (!this[i].equals(array[i]))
+                return false;
+        }
+        else if (this[i] != array[i]) {
+            // Warning - two different object instances will never be equal: {x:20} != {x:20}
+            return false;
+        }
+    }
+    return true;
+}
+
 // http://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/
 Object.toType = (function toType(global) {
   return function(obj) {
@@ -462,7 +488,7 @@ function QueryStore() {
     {
         var query_ext = this.find_analyzed_query_ext(query_uuid);
         query_ext.filters = $.grep(query_ext.filters, function(x) {
-            return x != filter;
+            return !(x.equals(filter));
         });
 
         this.apply_filters(query_uuid);
index 76e1cb5..324c8c4 100644 (file)
@@ -316,15 +316,18 @@ var Plugin = Class.extend({
     // use spin() to get our default spin settings (called presets)
     // use spin(true) to get spin's builtin defaults
     // you can also call spin_presets() yourself and tweak what you need to, like topmenuvalidation does
-    spin: function (presets) {
-       var presets = ( presets === undefined ) ? spin_presets() : presets;
-       try { this.$element.spin(presets); }
-       catch (err) { messages.debug("Cannot turn on spin " + err); }
+    spin: function (message) {
+       if (!message) {
+               message = 'Please be patient, this can take a few seconds.';
+       }
+       $('div.loading').fadeIn('fast');
+       $('div.loading').find('.message').text(message);
+
     },
 
     unspin: function() {
-       try { this.$element.spin(false); }
-       catch (err) { messages.debug("Cannot turn off spin " + err); }
+       $('div.loading').fadeOut('fast');
+
     },
 
     /* TEMPLATE */
index 4c53cce..5be1bf3 100644 (file)
@@ -12,6 +12,7 @@ body {
 a, a:active, a:focus {
     outline: 0;
     text-decoration:none;
+    color:#201E62;
 }
 
 h1 {
@@ -26,13 +27,20 @@ h1 img {
     margin-right:10px;
 }
 h2 {
+    margin:0 0 15px 0;
     font-size:14pt;
     color:#333333;
 }
 h3 {
+    margin:0 0 5px 0;
     font-size:13pt;
     color:#201E62;
 }
+h4 {
+    margin:0 0 5px 0;
+    font-size:12pt;
+    color:#333333;
+}
 input[type=text], input[type=password], input[type=email], input[type=tel], input[type=number], select, option {
     min-width:260px;
     padding:6px;
@@ -61,6 +69,9 @@ div.breadcrumbs {
     color:gray;
     font-size:10pt;
 }
+.tab-pane {
+    padding-top:15px;
+}
 /* buttons */
 button.btn, input.btn {
     padding:6px 10px;
index 237cfa6..96aa08e 100644 (file)
@@ -92,5 +92,14 @@ $(document).ready(function() {
        {% block base_content %}
        {% endblock %}
 {% endblock container %}
+<div class="loading">
+       <div class="row">
+               <div class="col-xs-11">Loading...</div>
+               <div class="col-xs-1"><img src="{{ STATIC_URL }}/img/loading.gif" /></div>
+       </div>
+       <div class="row">
+               <div class="col-xs-12 message"></div>
+       </div>
+</div>
 </body>
 </html>