summaryrefslogtreecommitdiffstats
path: root/modules-available/roomplanner/js/grid.js
diff options
context:
space:
mode:
authorAndreas Berenz2016-09-06 08:29:32 +0200
committerAndreas Berenz2016-09-06 08:29:32 +0200
commitb435e1629cd4a30664a70687e9021503d53d8d3e (patch)
treed1e03a3dad413151e4c7007013e017405fd034cb /modules-available/roomplanner/js/grid.js
parent[sysconfig/ad] Add debug output to failed self-search (diff)
downloadslx-admin-b435e1629cd4a30664a70687e9021503d53d8d3e.tar.gz
slx-admin-b435e1629cd4a30664a70687e9021503d53d8d3e.tar.xz
slx-admin-b435e1629cd4a30664a70687e9021503d53d8d3e.zip
collision behaviour for tables / computers / etc
Diffstat (limited to 'modules-available/roomplanner/js/grid.js')
-rw-r--r--modules-available/roomplanner/js/grid.js43
1 files changed, 23 insertions, 20 deletions
diff --git a/modules-available/roomplanner/js/grid.js b/modules-available/roomplanner/js/grid.js
index f0c18316..44f32123 100644
--- a/modules-available/roomplanner/js/grid.js
+++ b/modules-available/roomplanner/js/grid.js
@@ -101,33 +101,27 @@ if (!roomplanner) var roomplanner = {
$(this).addClass("obstacle");
}
- if ($(this).attr('itemtype') == "pc_drag") {
- $(this).attr('itemtype','pc');
+ if ($(this).attr('itemtype').indexOf('_drag') > -1) {
+ var itemtype = $(this).attr('itemtype').replace('_drag','');
+ $(this).attr('itemtype',itemtype);
}
-
},
"preventCollision" : true,
"restraint": "#draw-element-area",
- "obstacle" : ".obstacle",
+ "obstacle" : '[itemtype="'+$(el).attr('itemtype')+'"]',
"start": function(ev,ui) {
if (roomplanner.isElementResizable(this)) {
$(this).resizable("option","maxHeight",null);
$(this).resizable("option","maxWidth",null);
}
- if ($(this).attr('itemtype') == "pc") {
- $(this).attr('itemtype','pc_drag');
- }
+ var itemtype = $(this).attr('itemtype');
+ $(this).attr('itemtype',itemtype+'_drag');
$(this).removeClass("obstacle");
}
};
- // pcs can be placed everywhere
- if ($(el).attr('itemtype') == "pc") {
- options.obstacle = '[itemtype="pc"]';
- }
-
for (var o in options) {
$(el).draggable("option",o,options[o]);
}
@@ -137,7 +131,7 @@ if (!roomplanner) var roomplanner = {
$(el).resizable({
containment : "#draw-element-area",
- obstacle: ".obstacle",
+ obstacle: '[itemtype="'+$(el).attr('itemtype')+'"]',
handles: "se",
autoHide: true,
grid: [(roomplanner.settings.scale / 4), (roomplanner.settings.scale / 4)],
@@ -145,7 +139,10 @@ if (!roomplanner) var roomplanner = {
var gridSteps = $(this).resizable("option","grid");
- var collides = $(this).collision(".obstacle");
+ var collides = $(this).collision('[itemtype="'+$(el).attr('itemtype').replace('_drag','')+'"]');
+
+
+
var pos = $(this).offset();
var self = this;
@@ -187,6 +184,10 @@ if (!roomplanner) var roomplanner = {
},
start: function(ev,ui) {
$(this).removeClass("obstacle");
+
+ var itemtype = $(this).attr('itemtype');
+ $(this).attr('itemtype',itemtype+'_drag');
+
$(this).css('opacity',0.8);
var gridSteps = $(this).resizable("option","grid");
@@ -219,6 +220,11 @@ if (!roomplanner) var roomplanner = {
$(this).addClass("obstacle");
}
+ if ($(this).attr('itemtype').indexOf('_drag') > -1) {
+ var itemtype = $(this).attr('itemtype').replace('_drag','');
+ $(this).attr('itemtype',itemtype);
+ }
+
var gridSteps = $(this).resizable("option","grid");
var mw = $(this).resizable("option","maxWidth");
if (mw) {
@@ -427,9 +433,7 @@ $(document).ready(function(){
// the element is already in drawing area
var el = (ui.helper == ui.draggable) ? ui.draggable : $(ui.helper.clone());
- var collidingSelector = ($(el).attr('itemtype') =="pc_drag") ? '[itemtype="pc"]' : '.obstacle';
-
- if ($(el).collision(collidingSelector).length) {
+ if ($(el).collision('[itemtype="'+$(el).attr('itemtype').replace('_drag','')+'"]').length) {
return;
}
@@ -504,9 +508,8 @@ $(document).ready(function(){
var type = $(ui.helper).attr('itemtype');
$(ui.helper).attr('itemtype',type+"_drag");
},
- drag: function(ev,ui) {
- var collidingSelector = ($(ui.helper).attr('itemtype') =="pc_drag") ? '[itemtype="pc"]' : '.obstacle';
- if ($(ui.helper).collision(collidingSelector).length) {
+ drag: function(ev,ui) {
+ if ($(ui.helper).collision('[itemtype="'+$(ui.helper).attr('itemtype').replace('_drag','')+'"]').length) {
$(ui.helper).addClass('collides');
} else {
$(ui.helper).removeClass('collides');