123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- // 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');
- }
- });
- });
|