Files
MYSOPHAL/js/rack.js
2025-08-07 13:15:31 +01:00

181 lines
5.3 KiB
JavaScript

/**
* ---------------------------------------------------------------------
* GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2015-2020 Teclib' and contributors.
*
* http://glpi-project.org
*
* based on GLPI - Gestionnaire Libre de Parc Informatique
* Copyright (C) 2003-2014 by the INDEPNET Development Team.
*
* ---------------------------------------------------------------------
*
* LICENSE
*
* This file is part of GLPI.
*
* GLPI is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GLPI is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GLPI. If not, see <http://www.gnu.org/licenses/>.
* ---------------------------------------------------------------------
*/
/* global grid_link_url, grid_rack_add_tip, grid_rack_id, grid_rack_units */
var x_before_drag = 0;
var y_before_drag = 0;
var dirty = false;
var initRack = function() {
// grid events
$(document)
.on("click", "#sviewlist", function() {
$('#viewlist').show();
$('#viewgraph').hide();
$(this).addClass('selected');
$('#sviewgraph').removeClass('selected');
})
.on("click", "#sviewgraph", function() {
$('#viewlist').hide();
$('#viewgraph').show();
$(this).addClass('selected');
$('#sviewlist').removeClass('selected');
})
.on("click", "#toggle_images", function() {
$('#toggle_text').toggle();
$(this).toggleClass('active');
$('#viewgraph').toggleClass('clear_picture');
})
.on("click", "#toggle_text", function() {
$(this).toggleClass('active');
$('#viewgraph').toggleClass('clear_text');
})
.on("click", ".cell_add", function() {
var index = grid_rack_units - $(this).index();
var side = $(this).parents('.rack_side').hasClass('rack_front')
? 0 // front
: 1; // rear
$.ajax({
url : grid_link_url,
data: {
racks_id: grid_rack_id,
orientation: side,
position: index,
ajax: true
},
success: function(data) {
$('#grid-dialog')
.html(data)
.dialog({
modal: true,
width: 'auto'
});
}
});
});
// use each to re-init options for each grid
$('.grid-stack').each(function() {
$(this).gridstack({
cellHeight: 20,
verticalMargin: 1,
float: true,
disableOneColumnMode: true,
animate: true,
removeTimeout: 100,
disableResize: true,
draggable: {
handle: '.grid-stack-item-content',
appendTo: 'body',
containment: '.grid-stack',
cursor: 'move',
scroll: true
}
});
});
$('.grid-stack')
.on('dragstart', function(event) {
var element = $(event.target);
var node = element.data('_gridstack_node');
// store position before drag
x_before_drag = Number(node.x);
y_before_drag = Number(node.y);
// disable qtip
element.qtip('hide', true);
})
.on('click', function(event) {
var element = $(event.target);
var el_url = element.find('.itemrack_name').attr('href');
if (el_url) {
window.location = el_url;
}
});
$('#viewgraph .cell_add, #viewgraph .grid-stack-item').each(function() {
var tipcontent = $(this).find('.tipcontent');
if (tipcontent.length) {
$(this).qtip({
position: {
my: 'left center',
at: 'right center'
},
content: {
text: tipcontent
},
style: {
classes: 'qtip-shadow qtip-bootstrap rack_tipcontent'
}
});
}
});
for (var i = grid_rack_units; i >= 1; i--) {
// add index number front of each rows
$('.indexes').append('<li>' + i + '</li>');
// append cells for adding new items
$('.racks_add').append(
'<div class="cell_add"><span class="tipcontent">'+grid_rack_add_tip+'</span></div>'
);
}
// lock all item (prevent pushing down elements)
$('.grid-stack').each(function (idx, gsEl) {
$(gsEl)
.data('gridstack')
.locked('.grid-stack-item', true);
});
// add containment to items, this avoid bad collisions on the start of the grid
$('.grid-stack .grid-stack-item')
.draggable('option', 'containment', 'parent');
};
var getHpos = function(x, is_half_rack, is_rack_rear) {
if (!is_half_rack) {
return 0;
} else if (x == 0 && !is_rack_rear) {
return 1;
} else if (x == 0 && is_rack_rear) {
return 2;
} else if (x == 1 && is_rack_rear) {
return 1;
} else if (x == 1 && !is_rack_rear) {
return 2;
}
};