mirror of
https://github.com/stylersnico/librenms.git
synced 2026-07-13 00:16:21 +02:00
c5d4c0a49f
git-subtree-dir: lib/gridster git-subtree-mainline:80f8419dacgit-subtree-split:a7ed9a4ade
152 lines
3.7 KiB
JavaScript
152 lines
3.7 KiB
JavaScript
;(function(root, factory) {
|
|
'use strict';
|
|
if(typeof exports === 'object') {
|
|
module.exports = factory(require('jquery'), require('./jquery.gridster.js'));
|
|
}
|
|
else if (typeof define === 'function' && define.amd) {
|
|
define(['jquery', 'gridster'], factory);
|
|
} else {
|
|
root.Gridster = factory(root.$ || root.jQuery, root.Gridster);
|
|
}
|
|
|
|
}(this, function($, Gridster) {
|
|
'use strict';
|
|
var fn = Gridster.prototype;
|
|
|
|
fn.widgets_in_col = function(col) {
|
|
if (!this.gridmap[col]) {
|
|
return false;
|
|
}
|
|
|
|
for (var i = this.gridmap[col].length - 1; i >= 0; i--) {
|
|
if (this.is_widget(col, i) !== false) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
fn.widgets_in_row = function(row) {
|
|
for (var i = this.gridmap.length; i >= 1; i--) {
|
|
if (this.is_widget(i, row) !== false) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
fn.get_bottom_most_occupied_cell = function() {
|
|
var row = 0;
|
|
var col = 0;
|
|
this.for_each_cell(function($el, c, r) {
|
|
if ($el && r > row) {
|
|
row = r;
|
|
col = c;
|
|
}
|
|
});
|
|
|
|
return {col: col, row: row};
|
|
};
|
|
|
|
|
|
fn.get_right_most_occupied_cell = function() {
|
|
var row = 0;
|
|
var col = 0;
|
|
this.for_each_cell(function($el, c, r) {
|
|
if ($el) {
|
|
row = r;
|
|
col = c;
|
|
return false;
|
|
}
|
|
});
|
|
|
|
return {col: col, row: row};
|
|
};
|
|
|
|
|
|
fn.for_each_cell = function(callback, gridmap) {
|
|
gridmap || (gridmap = this.gridmap);
|
|
var cols = gridmap.length;
|
|
var rows = gridmap[1].length;
|
|
|
|
cols_iter:
|
|
for (var c = cols - 1; c >= 1; c--) {
|
|
for (var r = rows - 1; r >= 1; r--) {
|
|
var $el = gridmap[c] && gridmap[c][r];
|
|
if (callback) {
|
|
if (callback.call(this, $el, c, r) === false) {
|
|
break cols_iter;
|
|
} else { continue; }
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
fn.next_position_in_range = function(size_x, size_y) {
|
|
size_x || (size_x = 1);
|
|
size_y || (size_y = 1);
|
|
var ga = this.gridmap;
|
|
var cols_l = ga.length;
|
|
var valid_pos = [];
|
|
var rows_l;
|
|
|
|
for (var c = 1; c < cols_l; c++) {
|
|
rows_l = this.options.max_rows || ga[c].length;
|
|
for (var r = 1; r <= rows_l; r++) {
|
|
var can_move_to = this.can_move_to({
|
|
size_x: size_x,
|
|
size_y: size_y
|
|
}, c, r);
|
|
|
|
if (can_move_to) {
|
|
valid_pos.push({
|
|
col: c,
|
|
row: r,
|
|
size_y: size_y,
|
|
size_x: size_x
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
if (valid_pos.length >= 1) {
|
|
return Gridster.sort_by_col_asc(valid_pos)[0];
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
|
|
fn.closest_to_right = function(col, row) {
|
|
if (!this.gridmap[col]) { return false; }
|
|
var cols_l = this.gridmap.length - 1;
|
|
|
|
for (var c = col; c <= cols_l; c++) {
|
|
if (this.gridmap[c][row]) {
|
|
return { col: c, row: row };
|
|
}
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
|
|
fn.closest_to_left = function(col, row) {
|
|
if (!this.gridmap[col]) { return false; }
|
|
|
|
for (var c = col; c >= 1; c--) {
|
|
if (this.gridmap[c][row]) {
|
|
return { col: c, row: row };
|
|
}
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
return Gridster;
|
|
|
|
}));
|