mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 15:34:12 +01:00
- mark the dashboard as modified when a dashlet was added / moved / deleted - prevent clicking on the hyperlinks inside the preview of the dashboard Unrelated modification of the stylesheet to make "actions" buttons look nicer (no gap in the background color) when the displayed at a zoom level different from 100% (e.g. 90% or 75 %) SVN:trunk[3739]
136 lines
3.3 KiB
JavaScript
136 lines
3.3 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();
|
|
},
|
|
// _setOptions is called with a hash of all options that are changing
|
|
_setOptions: function()
|
|
{
|
|
// in 1.9 would use _superApply
|
|
this._superApply(arguments);
|
|
this._update();
|
|
},
|
|
// _setOption is called for each individual option that is changing
|
|
_setOption: function( key, value )
|
|
{
|
|
// in 1.9 would use _super
|
|
this._superApply(arguments);
|
|
},
|
|
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('itopDashlet');
|
|
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('itopProperty_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()
|
|
{
|
|
var iDashletId = this.options.dashlet_id;
|
|
var sDashletClass = this.options.dashlet_class;
|
|
var oContainer = this.element.parent();
|
|
|
|
$('#dashlet_properties_'+iDashletId).remove();
|
|
this.element.remove();
|
|
$('#event_bus').trigger('dashlet-removed', {'dashlet_id': iDashletId, 'dashlet_class': sDashletClass, 'container': oContainer});
|
|
$('.itop-dashboard').trigger('mark_as_modified');
|
|
}
|
|
});
|
|
}); |