summaryrefslogtreecommitdiff
path: root/templates/project/assets/javascripts/gridster/jquery.coords.js
diff options
context:
space:
mode:
Diffstat (limited to 'templates/project/assets/javascripts/gridster/jquery.coords.js')
-rwxr-xr-xtemplates/project/assets/javascripts/gridster/jquery.coords.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/templates/project/assets/javascripts/gridster/jquery.coords.js b/templates/project/assets/javascripts/gridster/jquery.coords.js
new file mode 100755
index 0000000..e3bd5e6
--- /dev/null
+++ b/templates/project/assets/javascripts/gridster/jquery.coords.js
@@ -0,0 +1,108 @@
+/*
+ * 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));