summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/basic')
-rw-r--r--addons/web/static/src/js/views/basic/basic_controller.js29
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js6
-rw-r--r--addons/web/static/src/js/views/basic/basic_renderer.js29
-rw-r--r--addons/web/static/src/js/views/basic/basic_view.js19
4 files changed, 38 insertions, 45 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_controller.js b/addons/web/static/src/js/views/basic/basic_controller.js
index 183885b9fb8..7f578da077d 100644
--- a/addons/web/static/src/js/views/basic/basic_controller.js
+++ b/addons/web/static/src/js/views/basic/basic_controller.js
@@ -36,8 +36,8 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
this.confirmOnDelete = params.confirmOnDelete;
this.hasButtons = params.hasButtons;
FieldManagerMixin.init.call(this, this.model);
- this.handle = params.initialState.id;
this.mode = params.mode || 'readonly';
+ this.handle = this.initialState.id;
},
/**
* @override
@@ -201,6 +201,18 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
self._updatePager();
});
},
+ /**
+ * @override
+ */
+ reload: function (params) {
+ if (params && params.controllerState) {
+ if (params.controllerState.currentId) {
+ params.currentId = params.controllerState.currentId;
+ }
+ params.ids = params.controllerState.resIds;
+ }
+ return this._super.apply(this, arguments);
+ },
//--------------------------------------------------------------------------
// Private
@@ -369,6 +381,20 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
}
},
/**
+ * Override to add the current record ID (currentId) and the list of ids
+ * (resIds) in the current dataPoint to the exported state.
+ *
+ * @override
+ */
+ exportState: function () {
+ var state = this._super.apply(this, arguments);
+ var env = this.model.get(this.handle, {env: true});
+ return _.extend(state, {
+ currentId: env.currentId,
+ resIds: env.ids,
+ });
+ },
+ /**
* Returns the new sidebar env
*
* @private
@@ -487,7 +513,6 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
var sidebarEnv = this._getSidebarEnv();
this.sidebar.updateEnv(sidebarEnv);
}
- this.trigger_up('env_updated', {controllerID: this.controllerID, env: env});
},
/**
* Helper method, to make sure the information displayed by the pager is up
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js
index 598f88637d8..8266b1dee42 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -2053,14 +2053,12 @@ var BasicModel = AbstractModel.extend({
// We don't do it now because it's not an important case.
// However, we can for sure increment by 1 if we are on the last page.
-
var handleFieldValue = computedList.data[index].data[handleField];
if (position === 'top') {
handleFieldValue--;
} else if (list.count <= list.offset + list.limit - (list.tempLimitIncrement || 0)) {
handleFieldValue++;
}
-
return {
field: handleField,
value: handleFieldValue,
@@ -4383,7 +4381,9 @@ var BasicModel = AbstractModel.extend({
if (options.context !== undefined) {
element.context = options.context;
- element.orderedBy = options.context.orderedBy || element.orderedBy;
+ }
+ if (options.orderedBy !== undefined) {
+ element.orderedBy = options.orderedBy || element.orderedBy;
}
if (options.domain !== undefined) {
element.domain = options.domain;
diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js
index 8db200183ef..27821081f96 100644
--- a/addons/web/static/src/js/views/basic/basic_renderer.js
+++ b/addons/web/static/src/js/views/basic/basic_renderer.js
@@ -518,35 +518,6 @@ var BasicRenderer = AbstractRenderer.extend({
});
},
/**
- * Renders a button according to a given node element.
- *
- * @private
- * @param {Object} node
- * @param {Object} [options]
- * @param {string} [options.extraClass]
- * @param {boolean} [options.textAsTitle=false]
- * @returns {jQuery}
- */
- _renderButtonFromNode: function (node, options) {
- var btnOptions = {
- attrs: _.omit(node.attrs, 'icon', 'string', 'type', 'attrs', 'modifiers', 'options'),
- icon: node.attrs.icon,
- };
- if (options && options.extraClass) {
- var classes = btnOptions.attrs.class ? btnOptions.attrs.class.split(' ') : [];
- btnOptions.attrs.class = _.uniq(classes.concat(options.extraClass.split(' '))).join(' ');
- }
- var str = (node.attrs.string || '').replace(/_/g, '');
- if (str) {
- if (options && options.textAsTitle) {
- btnOptions.attrs.title = str;
- } else {
- btnOptions.text = str;
- }
- }
- return dom.renderButton(btnOptions);
- },
- /**
* Instantiates the appropriate AbstractField specialization for the given
* node and prepares its rendering and addition to the DOM. Indeed, the
* rendering of the widget will be started and the associated deferred will
diff --git a/addons/web/static/src/js/views/basic/basic_view.js b/addons/web/static/src/js/views/basic/basic_view.js
index eb3efe7001d..d5d6cfa18d5 100644
--- a/addons/web/static/src/js/views/basic/basic_view.js
+++ b/addons/web/static/src/js/views/basic/basic_view.js
@@ -51,7 +51,6 @@ var BasicView = AbstractView.extend({
this.loadParams.fieldsInfo = this.fieldsInfo;
this.loadParams.fields = this.fields;
- this.loadParams.context = params.context || {};
this.loadParams.limit = parseInt(this.arch.attrs.limit, 10) || params.limit;
this.loadParams.viewType = this.viewType;
this.loadParams.parentID = params.parentID;
@@ -96,19 +95,17 @@ var BasicView = AbstractView.extend({
* @private
* @returns {Deferred}
*/
- _loadData: function () {
+ _loadData: function (model) {
if (this.recordID) {
- var self = this;
-
// Add the fieldsInfo of the current view to the given recordID,
// as it will be shared between two views, and it must be able to
// handle changes on fields that are only on this view.
- this.model.addFieldsInfo(this.recordID, {
+ model.addFieldsInfo(this.recordID, {
fields: this.fields,
fieldsInfo: this.fieldsInfo,
});
- var record = this.model.get(this.recordID);
+ var record = model.get(this.recordID);
var viewType = this.viewType;
var viewFields = Object.keys(record.fieldsInfo[viewType]);
var fieldNames = _.difference(viewFields, Object.keys(record.data));
@@ -168,14 +165,14 @@ var BasicView = AbstractView.extend({
// onchange RPCs), that we haven't been able to process earlier
// (because those fields were unknow at that time). So we ask
// the model to process them.
- def = this.model.applyRawChanges(record.id, viewType).then(function () {
- if (self.model.isNew(record.id)) {
- return self.model.applyDefaultValues(record.id, {}, {
+ def = model.applyRawChanges(record.id, viewType).then(function () {
+ if (model.isNew(record.id)) {
+ return model.applyDefaultValues(record.id, {}, {
fieldNames: fieldNames,
viewType: viewType,
});
} else {
- return self.model.reload(record.id, {
+ return model.reload(record.id, {
fieldNames: fieldNames,
keepChanges: true,
viewType: viewType,
@@ -184,7 +181,7 @@ var BasicView = AbstractView.extend({
});
}
return $.when(def).then(function () {
- return record.id;
+ return model.get(record.id);
});
}
return this._super.apply(this, arguments);