mirror of
https://github.com/Icinga/icingaweb2-module-businessprocess.git
synced 2025-12-25 09:09:34 -05:00
47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
/*! Icinga Web 2 | (c) 2018 Icinga Development Team | GPLv2+ */
|
|
|
|
(function(Icinga, $) {
|
|
|
|
'use strict';
|
|
|
|
Icinga.Behaviors = Icinga.Behaviors || {};
|
|
|
|
var Sortable = function (icinga) {
|
|
Icinga.EventListener.call(this, icinga);
|
|
this.on('rendered', this.onRendered, this);
|
|
};
|
|
|
|
Sortable.prototype = new Icinga.EventListener();
|
|
|
|
Sortable.prototype.onRendered = function(e) {
|
|
$(e.target).find('.sortable').each(function() {
|
|
var $el = $(this);
|
|
var options = {
|
|
scroll: $el.closest('.container')[0],
|
|
onMove: function (/**Event*/ event, /**Event*/ originalEvent) {
|
|
if (typeof this.options['filter'] !== 'undefined' && $(event.related).is(this.options['filter'])) {
|
|
// Assumes the filtered item is either at the very start or end of the list and prevents the
|
|
// user from dropping other items before (if at the very start) or after it.
|
|
return false;
|
|
}
|
|
}
|
|
};
|
|
|
|
$.each($el.data(), function (i, v) {
|
|
if (i.length > 8 && i.substring(0, 8) === 'sortable') {
|
|
options[i.charAt(8).toLowerCase() + i.substr(9)] = v;
|
|
}
|
|
});
|
|
|
|
if (typeof options.group !== 'undefined' && typeof options.group.put === 'string' && options.group.put.substring(0, 9) === 'function:') {
|
|
var module = icinga.module($el.closest('.icinga-module').data('icingaModule'));
|
|
options.group.put = module.object[options.group.put.substr(9)];
|
|
}
|
|
|
|
$(this).sortable(options);
|
|
});
|
|
};
|
|
|
|
Icinga.Behaviors.Sortable = Sortable;
|
|
|
|
})(Icinga, jQuery);
|