mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-12 23:14:18 +01:00
133 lines
3.1 KiB
JavaScript
133 lines
3.1 KiB
JavaScript
// jQuery UI style "widget" for editing an iTop "dashlet"
|
|
$(function()
|
|
{
|
|
// the widget definition, where "itop" is the namespace,
|
|
// "dashlet" the widget name
|
|
$.widget( "itop.dashlet",
|
|
{
|
|
// default options
|
|
options:
|
|
{
|
|
dashlet_id: '',
|
|
dashlet_class: ''
|
|
},
|
|
|
|
// the constructor
|
|
_create: function()
|
|
{
|
|
var me = this;
|
|
|
|
this.element
|
|
.addClass('itop-dashlet')
|
|
.bind('click.itop-dashlet', function(event) { me._on_click(event); } );
|
|
|
|
this._update();
|
|
},
|
|
|
|
// to call when the contents are changed
|
|
_update: function()
|
|
{
|
|
var me = this;
|
|
|
|
this.closeBox = $('<div class="close-box"/>');
|
|
this.closeBox
|
|
.click(function() { me._remove_dashlet(); })
|
|
.prependTo(this.element);
|
|
if (this.element.hasClass('dashlet-selected'))
|
|
{
|
|
this.closeBox.show();
|
|
}
|
|
else
|
|
{
|
|
this.closeBox.hide();
|
|
}
|
|
|
|
},
|
|
|
|
// called when created, and later when changing options
|
|
_refresh: function()
|
|
{
|
|
},
|
|
// events bound via _bind are removed automatically
|
|
// revert other modifications here
|
|
destroy: function()
|
|
{
|
|
this.element
|
|
.removeClass('itop-dashlet')
|
|
.unbind('click.itop-dashlet');
|
|
|
|
this.closeBox.remove();
|
|
|
|
// call the original destroy method since we overwrote it
|
|
$.Widget.prototype.destroy.call( this );
|
|
},
|
|
// _setOptions is called with a hash of all options that are changing
|
|
_setOptions: function()
|
|
{
|
|
// in 1.9 would use _superApply
|
|
$.Widget.prototype._setOptions.apply( this, arguments );
|
|
this._update();
|
|
},
|
|
// _setOption is called for each individual option that is changing
|
|
_setOption: function( key, value )
|
|
{
|
|
// in 1.9 would use _super
|
|
$.Widget.prototype._setOption.call( this, key, value );
|
|
},
|
|
select: function()
|
|
{
|
|
this.element.addClass('dashlet-selected');
|
|
this.closeBox.fadeIn(500);
|
|
$('#event_bus').trigger('dashlet-selected', {'dashlet_id': this.options.dashlet_id, 'dashlet_class': this.options.dashlet_class})
|
|
},
|
|
deselect: function()
|
|
{
|
|
this.element.removeClass('dashlet-selected');
|
|
this.closeBox.hide();
|
|
},
|
|
deselect_all: function()
|
|
{
|
|
$(':itop-dashlet').each(function(){
|
|
var sId = $(this).attr('id');
|
|
var oWidget = $(this).data('dashlet');
|
|
if (oWidget)
|
|
{
|
|
oWidget.deselect();
|
|
}
|
|
});
|
|
},
|
|
_on_click: function(event)
|
|
{
|
|
this.deselect_all();
|
|
this.select();
|
|
},
|
|
get_params: function()
|
|
{
|
|
var oParams = {};
|
|
var oProperties = $('#dashlet_properties_'+this.options.dashlet_id);
|
|
oProperties.find(':itop-property_field').each(function(){
|
|
var oWidget = $(this).data('property_field');
|
|
if (oWidget)
|
|
{
|
|
var oVal = oWidget._get_committed_value();
|
|
oParams[oVal.name] = oVal.value;
|
|
}
|
|
});
|
|
oParams.dashlet_id = this.options.dashlet_id;
|
|
oParams.dashlet_class = this.options.dashlet_class;
|
|
return oParams;
|
|
},
|
|
get_drag_icon: function()
|
|
{
|
|
var oDragItem = $('#dashlet_'+this.options.dashlet_class).clone();
|
|
oDragItem.css({zIndex: 999});
|
|
oDragItem.appendTo('body');
|
|
return oDragItem;
|
|
},
|
|
_remove_dashlet: function()
|
|
{
|
|
$('#dashlet_properties_'+this.options.dashlet_id).remove();
|
|
this.element.remove();
|
|
}
|
|
});
|
|
}); |