summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-04-10 17:12:13 +0200
committerSimon Rettberg2018-04-10 17:12:13 +0200
commitb8f7629f2b6425aa32021d7335a7e67e6d57b804 (patch)
tree3affcc07906abbfe335480f52dab7783b7cc2862
parent[runmode] Add module.json (diff)
downloadslx-admin-b8f7629f2b6425aa32021d7335a7e67e6d57b804.tar.gz
slx-admin-b8f7629f2b6425aa32021d7335a7e67e6d57b804.tar.xz
slx-admin-b8f7629f2b6425aa32021d7335a7e67e6d57b804.zip
[roomplanner] Add icon to PCs that opens machine details from statistics module
-rw-r--r--modules-available/roomplanner/js/grid.js76
-rw-r--r--modules-available/roomplanner/page.inc.php3
-rw-r--r--modules-available/roomplanner/style.css15
-rw-r--r--modules-available/roomplanner/templates/footer.html1
4 files changed, 54 insertions, 41 deletions
diff --git a/modules-available/roomplanner/js/grid.js b/modules-available/roomplanner/js/grid.js
index ced76678..697d7c3f 100644
--- a/modules-available/roomplanner/js/grid.js
+++ b/modules-available/roomplanner/js/grid.js
@@ -40,9 +40,10 @@ if (!roomplanner) var roomplanner = {
if (!(new RegExp(".*(east|south|west|north)$").test($(el).attr('itemlook')))) {
return;
}
-
- $(el).append('<div class="rotationHandle glyphicon glyphicon-repeat"></div>');
- $(el).find('.rotationHandle').click(function () {
+
+ var $e = $('<div class="pcHandle glyphicon glyphicon-repeat"></div>');
+ $(el).append($e);
+ $e.click(function () {
var str = $(el).attr('itemlook');
if (str.indexOf('-') > -1){
var values =str.split('-');
@@ -93,16 +94,34 @@ if (!roomplanner) var roomplanner = {
}
});
},
- initTutor: function(el) {
+ initPcButtons: function(el) {
if ($(el).attr('itemtype') !== 'pc') return;
- $(el).append('<div class="tutorHandle glyphicon glyphicon-blackboard"></div>');
- $(el).find('.tutorHandle').click(function() {
- var wasTutor = ($(this).parent().attr('istutor') === 'true');
- $('[itemtype="pc"]').removeAttr('istutor');
- if (!wasTutor) {
- $(this).parent().attr('istutor', 'true');
- }
- });
+ var $e;
+ if (!PLANNER_READ_ONLY) {
+ $e = $('<div class="pcHandle glyphicon glyphicon-blackboard"></div>');
+ $(el).append($e);
+ $e.click(function () {
+ var wasTutor = ($(this).parent().attr('istutor') === 'true');
+ $('[itemtype="pc"]').removeAttr('istutor');
+ if (!wasTutor) {
+ $(this).parent().attr('istutor', 'true');
+ }
+ });
+ }
+ if (CAN_OPEN_STATS) {
+ $e = $('<div class="pcHandle glyphicon glyphicon-eye-open"></div>');
+ $(el).append($e);
+ $e.click(function () {
+ var uuid = $(this).parent().attr('muuid');
+ console.log('Click: ', uuid);
+ var url = '?do=statistics&uuid=' + uuid;
+ if (roomplanner.serialize() !== plannerLoadState) {
+ window.open(url);
+ } else {
+ window.location.href = url;
+ }
+ });
+ }
},
initTooltip: function(el) {
if ($(el).attr('itemtype') === 'pc') {
@@ -338,9 +357,9 @@ if (!roomplanner) var roomplanner = {
if (!item.hasOwnProperty(prop)) continue;
html += prop+'="'+item[prop]+'" ';
}
- html += 'class="draggable ui-draggable';
- if (PLANNER_READ_ONLY) {
- html += ' disabled';
+ html += 'class="ui-draggable';
+ if (!PLANNER_READ_ONLY) {
+ html += ' draggable';
}
html += '"></div>';
return html;
@@ -367,12 +386,12 @@ if (!roomplanner) var roomplanner = {
$gridInner.find('.draggable').each(function(idx,el) {
roomplanner.initDraggable(el);
roomplanner.initResizable(el);
- if (!PLANNER_READ_ONLY) {
- roomplanner.initTooltip(el);
- roomplanner.initRotation(el);
- roomplanner.initDelete(el);
- roomplanner.initTutor(el);
- }
+ roomplanner.initTooltip(el);
+ roomplanner.initRotation(el);
+ roomplanner.initDelete(el);
+ });
+ $gridInner.find('.ui-draggable').each(function(idx,el) {
+ roomplanner.initPcButtons(el);
});
roomplanner.grid.scale(roomplanner.settings.scale);
@@ -415,10 +434,11 @@ roomplanner.grid = (function() {
var pos = roomplanner.getCellPositionFromGrid($item.attr('gridRow'),$item.attr('gridCol'));
$item.css({width: w+"px", height: h+"px", left: pos[0]+"px", top: pos[1]+"px"});
- $item.draggable("option","grid",[(roomplanner.settings.scale / 4), (roomplanner.settings.scale / 4)]);
-
- if (roomplanner.isElementResizable(item)) {
- $item.resizable("option","grid",[(roomplanner.settings.scale / 4), (roomplanner.settings.scale / 4)]);
+ if ($item.hasClass('draggable')) {
+ $item.draggable("option", "grid", [(roomplanner.settings.scale / 4), (roomplanner.settings.scale / 4)]);
+ if (roomplanner.isElementResizable(item)) {
+ $item.resizable("option", "grid", [(roomplanner.settings.scale / 4), (roomplanner.settings.scale / 4)]);
+ }
}
});
this.resize();
@@ -622,10 +642,10 @@ $(document).ready(function(){
roomplanner.initTooltip(el);
}
});
- }
- roomplanner.initDelete(el);
+ }
roomplanner.initRotation(el);
- roomplanner.initTutor(el);
+ roomplanner.initDelete(el);
+ roomplanner.initPcButtons(el);
}
}
diff --git a/modules-available/roomplanner/page.inc.php b/modules-available/roomplanner/page.inc.php
index 2712560a..023cef73 100644
--- a/modules-available/roomplanner/page.inc.php
+++ b/modules-available/roomplanner/page.inc.php
@@ -87,7 +87,8 @@ class Page_Roomplanner extends Page
'subnetMachines' => json_encode($subnetMachines),
'locationid' => $this->locationid,
'roomConfiguration' => json_encode($roomConfig),
- 'edit_disabled' => $canEdit ? '' : 'disabled'
+ 'edit_disabled' => $canEdit ? '' : 'disabled',
+ 'statistics_disabled' => Module::get('statistics') !== false && User::hasPermission('.statistics.machine.view-details') ? '' : 'disabled',
];
Render::addTemplate('header', $params);
if ($canEdit) {
diff --git a/modules-available/roomplanner/style.css b/modules-available/roomplanner/style.css
index 9359f82b..f1dd994a 100644
--- a/modules-available/roomplanner/style.css
+++ b/modules-available/roomplanner/style.css
@@ -701,24 +701,15 @@ ul.toollist li {
display:none;
float: right;}
-.rotationHandle,
-.tutorHandle {
+.pcHandle {
display:none;
float: left;}
-div.draggable:hover .rotationHandle,
-div.draggable:hover .tutorHandle{
+div.ui-draggable:hover > .deleteHandle,
+div.ui-draggable:hover > .pcHandle {
display:inline;
cursor: pointer;}
-div.draggable:hover .deleteHandle {
- display:inline;
- cursor: pointer;}
-
-.draggable.disabled {
- pointer-events: none;
-}
-
[itemtype="furniture"], [itemtype="furniture_drag"] {
z-index: 99;
background-size: 100% 100%;}
diff --git a/modules-available/roomplanner/templates/footer.html b/modules-available/roomplanner/templates/footer.html
index 6e4e0783..3294d5ee 100644
--- a/modules-available/roomplanner/templates/footer.html
+++ b/modules-available/roomplanner/templates/footer.html
@@ -21,6 +21,7 @@ var locationId = '{{locationid}}';
var subnetMachines, roomConfiguration;
var plannerLoadState = 'invalid';
const PLANNER_READ_ONLY = '{{edit_disabled}}'.length !== 0;
+const CAN_OPEN_STATS = '{{statistics_disabled}}'.length === 0;
document.addEventListener("DOMContentLoaded", function () {
subnetMachines = makeCombinedField({{{subnetMachines}}});