David Jean Louis avatar David Jean Louis committed 039144e

More robust dashboard layout (should fix definitively broken layout issues)

Comments (0)

Files changed (2)

admin_tools/dashboard/static/admin_tools/js/jquery/jquery.dashboard.js

         var percent = Math.floor(100 / options.columns);
         var start = 0;
         var stop = 0;
+        var last_stop = 0;
+        if (options.columns != sizes.length) {
+            // don't break layout if columns count changed
+            sizes = [];
+        }
         for (var i = 0; i < options.columns; i++) {
             if (typeof(sizes[i]) == 'undefined') {
                 start = i * size;
                 stop  = start + size;
+                last_stop = stop;
             } else if (sizes[i] == 0) {
-                elt.append(
-                    '<div class="dashboard-column" style="float:left;width:'+percent+'%;"/>'
-                );
+                var empty_col = '<div class="dashboard-column" style="float:left;width:'+percent+'%;"/>';
+                if ($('.dashboard-column').last().length) {
+                    $('.dashboard-column').last().after(empty_col);
+                } else {
+                    elt.prepend(empty_col);
+                }
                 continue;
             } else {
-                start = (i == 0) ? 0 : start + sizes[i-1];
+                start = (i == 0) ? 0 : start + last_stop;
                 stop  = start + sizes[i];
+                last_stop = sizes[i];
             }
             elts.slice(start, stop).wrapAll(
                 '<div class="dashboard-column" style="float:left;width:'+percent+'%;"/>'

admin_tools/media/admin_tools/js/jquery/jquery.dashboard.js

         var percent = Math.floor(100 / options.columns);
         var start = 0;
         var stop = 0;
+        var last_stop = 0;
+        if (options.columns != sizes.length) {
+            // don't break layout if columns count changed
+            sizes = [];
+        }
         for (var i = 0; i < options.columns; i++) {
             if (typeof(sizes[i]) == 'undefined') {
                 start = i * size;
                 stop  = start + size;
+                last_stop = stop;
             } else if (sizes[i] == 0) {
-                elt.append(
-                    '<div class="dashboard-column" style="float:left;width:'+percent+'%;"/>'
-                );
+                var empty_col = '<div class="dashboard-column" style="float:left;width:'+percent+'%;"/>';
+                if ($('.dashboard-column').last().length) {
+                    $('.dashboard-column').last().after(empty_col);
+                } else {
+                    elt.prepend(empty_col);
+                }
                 continue;
             } else {
-                start = (i == 0) ? 0 : start + sizes[i-1];
+                start = (i == 0) ? 0 : start + last_stop;
                 stop  = start + sizes[i];
+                last_stop = sizes[i];
             }
             elts.slice(start, stop).wrapAll(
                 '<div class="dashboard-column" style="float:left;width:'+percent+'%;"/>'
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.