mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
109 lines
2.5 KiB
JavaScript
109 lines
2.5 KiB
JavaScript
/*
|
|
* jquery.coords
|
|
* https://github.com/ducksboard/gridster.js
|
|
*
|
|
* Copyright (c) 2012 ducksboard
|
|
* Licensed under the MIT licenses.
|
|
*/
|
|
|
|
;(function($, window, document, undefined){
|
|
/**
|
|
* Creates objects with coordinates (x1, y1, x2, y2, cx, cy, width, height)
|
|
* to simulate DOM elements on the screen.
|
|
* Coords is used by Gridster to create a faux grid with any DOM element can
|
|
* collide.
|
|
*
|
|
* @class Coords
|
|
* @param {HTMLElement|Object} obj The jQuery HTMLElement or a object with: left,
|
|
* top, width and height properties.
|
|
* @return {Object} Coords instance.
|
|
* @constructor
|
|
*/
|
|
function Coords(obj) {
|
|
if (obj[0] && $.isPlainObject(obj[0])) {
|
|
this.data = obj[0];
|
|
}else {
|
|
this.el = obj;
|
|
}
|
|
|
|
this.isCoords = true;
|
|
this.coords = {};
|
|
this.init();
|
|
return this;
|
|
}
|
|
|
|
|
|
var fn = Coords.prototype;
|
|
|
|
|
|
fn.init = function(){
|
|
this.set();
|
|
this.original_coords = this.get();
|
|
};
|
|
|
|
|
|
fn.set = function(update, not_update_offsets) {
|
|
var el = this.el;
|
|
|
|
if (el && !update) {
|
|
this.data = el.offset();
|
|
this.data.width = el.width();
|
|
this.data.height = el.height();
|
|
}
|
|
|
|
if (el && update && !not_update_offsets) {
|
|
var offset = el.offset();
|
|
this.data.top = offset.top;
|
|
this.data.left = offset.left;
|
|
}
|
|
|
|
var d = this.data;
|
|
|
|
this.coords.x1 = d.left;
|
|
this.coords.y1 = d.top;
|
|
this.coords.x2 = d.left + d.width;
|
|
this.coords.y2 = d.top + d.height;
|
|
this.coords.cx = d.left + (d.width / 2);
|
|
this.coords.cy = d.top + (d.height / 2);
|
|
this.coords.width = d.width;
|
|
this.coords.height = d.height;
|
|
this.coords.el = el || false ;
|
|
|
|
return this;
|
|
};
|
|
|
|
|
|
fn.update = function(data){
|
|
if (!data && !this.el) {
|
|
return this;
|
|
}
|
|
|
|
if (data) {
|
|
var new_data = $.extend({}, this.data, data);
|
|
this.data = new_data;
|
|
return this.set(true, true);
|
|
}
|
|
|
|
this.set(true);
|
|
return this;
|
|
};
|
|
|
|
|
|
fn.get = function(){
|
|
return this.coords;
|
|
};
|
|
|
|
|
|
//jQuery adapter
|
|
$.fn.coords = function() {
|
|
if (this.data('coords') ) {
|
|
return this.data('coords');
|
|
}
|
|
|
|
var ins = new Coords(this, arguments[0]);
|
|
this.data('coords', ins);
|
|
return ins;
|
|
};
|
|
|
|
}(jQuery, window, document));
|