summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2011-08-25 14:34:45 +0200
committerXavier Morel <xmo@openerp.com>2011-08-25 14:34:45 +0200
commitb8cd28fb355de91b9ec736be4f42d77afef0a137 (patch)
treeed521a6c35032c7a85a8b9fad12d1334f50afe0a
parentb5a429d008536f6410e82b24ee12ec481b6d6397 (diff)
[FIX] widgets client action handler: one action per widget
bzr revid: xmo@openerp.com-20110825123445-ayhaeipasl4imvqt
-rw-r--r--addons/base_dashboard/static/src/js/dashboard.js59
-rw-r--r--addons/base_dashboard/static/src/xml/base_dashboard.xml9
2 files changed, 32 insertions, 36 deletions
diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/base_dashboard/static/src/js/dashboard.js
index e5b06a13461..3f9da51b157 100644
--- a/addons/base_dashboard/static/src/js/dashboard.js
+++ b/addons/base_dashboard/static/src/js/dashboard.js
@@ -372,39 +372,36 @@ openerp.base_dashboard.ApplicationTiles = openerp.base.View.extend({
}
});
openerp.base.client_actions.add(
- 'board.home.widgets', 'openerp.base_dashboard.Widgets');
-openerp.base_dashboard.Widgets = openerp.base.View.extend({
- template: 'HomeWidgets',
+ 'board.home.widgets', 'openerp.base_dashboard.Widget');
+openerp.base_dashboard.Widget = openerp.base.View.extend(/** @lends openerp.base_dashboard.Widgets# */{
+ template: 'HomeWidget',
+ /**
+ * Initializes a "HomeWidget" client widget: handles the display of a given
+ * res.widget objects in an OpenERP view (mainly a dashboard).
+ *
+ * @constructs
+ * @extends openerp.base.View
+ * @param {Object} parent
+ * @param {Object} options
+ * @param {Number} options.widget_id
+ */
+ init: function (parent, options) {
+ this._super(parent);
+ this.widget_id = options.widget_id;
+ },
start: function () {
- return new openerp.base.DataSetSearch(
- this, 'res.widget.user', null,
- ['|', ['user_id', '=', false],
- ['user_id', '=', parseInt(this.session.uid, 10)]])
- .read_slice(['widget_id', 'user_id'], {}, this.on_widgets_list_loaded);
+ return new openerp.base.DataSet(this, 'res.widget').read_ids(
+ [this.widget_id], ['title'], this.on_widget_loaded);
},
- on_widgets_list_loaded: function (user_widgets) {
- var self = this;
- var widget_user = {};
- _(user_widgets).each(function (widget) {
- widget['widget_id'] = widget['widget_id'][0];
- widget_user[widget['widget_id']] = {
- removable: widget['user_id'] !== false,
- user_widget_id: widget['id']
- };
- });
- new openerp.base.DataSetSearch(this, 'res.widget')
- .read_ids(_(user_widgets).pluck('widget_id'), ['title'], function (widgets) {
- _(widgets).each(function (widget) {
- _.extend(widget, widget_user[widget['id']]);
- });
- var url = _.sprintf(
- '/base_dashboard/widgets/content?session_id=%s&widget_id=',
- self.session.session_id);
- self.$element.html(QWeb.render('HomeWidgets', {
- widgets: widgets,
- url: url
- }));
- });
+ on_widget_loaded: function (widgets) {
+ var widget = widgets[0];
+ var url = _.sprintf(
+ '/base_dashboard/widgets/content?session_id=%s&widget_id=%d',
+ this.session.session_id, widget.id);
+ this.$element.html(QWeb.render('HomeWidget.content', {
+ widget: widget,
+ url: url
+ }));
}
});
};
diff --git a/addons/base_dashboard/static/src/xml/base_dashboard.xml b/addons/base_dashboard/static/src/xml/base_dashboard.xml
index 51657dfd068..b60e466964b 100644
--- a/addons/base_dashboard/static/src/xml/base_dashboard.xml
+++ b/addons/base_dashboard/static/src/xml/base_dashboard.xml
@@ -107,10 +107,9 @@
</td>
</tr>
</table>
-<div t-name="HomeWidgets" class="oe-dashboard-home-widgets"/>
-<div t-name="HomeWidgets.content" class="oe-dashboard-home-widgets-widget"
- t-foreach="widgets" t-as="widget">
+<div t-name="HomeWidget" class="oe-dashboard-home-widget"/>
+<t t-name="HomeWidget.content">
<h3><t t-esc="widget.title"/></h3>
- <iframe width="100%" frameborder="0" t-att-src="url + widget.id"/>
-</div>
+ <iframe width="100%" frameborder="0" t-att-src="url"/>
+</t>
</template>