User editable dashboards... implementation in progress

SVN:trunk[1997]
This commit is contained in:
Denis Flaven
2012-05-21 13:52:12 +00:00
parent 1e605c43b0
commit c47b2b57ec

79
js/dashlet.js Normal file
View File

@@ -0,0 +1,79 @@
// 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); } );
},
// 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');
// 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 );
},
// _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');
$('#event_bus').trigger('dashlet-selected', {'dashlet_id': this.options.dashlet_id, 'dashlet_class': this.options.dashlet_class})
},
_deselect: function()
{
this.element.removeClass('dashlet-selected');
},
_on_click: function(event)
{
var sCurrentId = this.element.attr('id');
$(':itop-dashlet').each(function(){
var sId = $(this).attr('id');
var oWidget = $(this).data('dashlet');
if (oWidget)
{
if (sCurrentId != sId)
{
oWidget._deselect();
}
}
});
this._select();
}
});
});