From 22b598bc1b8331907ba0ce77739b64c48d6fcbbd Mon Sep 17 00:00:00 2001 From: Kishan Gajjar Date: Thu, 24 Jan 2019 10:29:28 +0000 Subject: [IMP] web: export improvements * remove center buttons, corresponding features either moved to fields list (handle / bin on exported, etc...) or removed entirely (e.g. clear) * replace XLS to XLSX format, increases rows# to 1048579 * add FAYT filtering of available fields * sort available fields alphabetically (CI) always * change export templates UI: remove buttons TaskID: 1910953 closes odoo/odoo#32339 Signed-off-by: Xavier Morel (xmo) --- addons/web/static/src/js/widgets/data_export.js | 257 +++++++++++++----------- 1 file changed, 144 insertions(+), 113 deletions(-) (limited to 'addons/web/static/src/js/widgets/data_export.js') diff --git a/addons/web/static/src/js/widgets/data_export.js b/addons/web/static/src/js/widgets/data_export.js index 9031dd43232..975cc99e35c 100644 --- a/addons/web/static/src/js/widgets/data_export.js +++ b/addons/web/static/src/js/widgets/data_export.js @@ -19,15 +19,14 @@ var DataExport = Dialog.extend({ 'click .o_add_field': '_onClickAddField', 'click .o_delete_exported_list': '_onClickDeleteExportListBtn', 'click .o_expand': '_onClickExpand', - 'click .o_move_down': '_onClickMovedown', - 'click .o_move_up': '_onClickMoveup', - 'click .o_remove_all_field': '_onClickRemoveAllFields', 'click .o_remove_field': '_onClickRemoveField', - 'click .o_toggle_save_list': '_onClickSaveList', - 'click .o_save_list > button': '_onClickSaveListBtn', + 'click .o_save_list .o_save_list_btn': '_onClickSaveListBtn', + 'click .o_save_list .o_cancel_list_btn': '_resetTemplateField', 'click .o_export_tree_item': '_onClickTreeItem', 'dblclick .o_export_tree_item:not(.haschild)': '_onDblclickTreeItem', - 'keydown .o_export_tree_item': '_onKeydownTreeItem' + 'keydown .o_export_tree_item': '_onKeydownTreeItem', + 'keydown .o_save_list_name': '_onKeydownSaveList', + 'input .o_export_search_input': '_onSearchInput', }, /** * @constructor @@ -39,7 +38,7 @@ var DataExport = Dialog.extend({ var options = { title: _t("Export Data"), buttons: [ - {text: _t("Export To File"), click: this._exportData, classes: 'btn-primary'}, + {text: _t("Export"), click: this._exportData, classes: 'btn-primary'}, {text: _t("Close"), close: true}, ], }; @@ -65,7 +64,6 @@ var DataExport = Dialog.extend({ this.$modal.find('.modal-content').css('height', '100%'); this.$fieldsList = this.$('.o_fields_list'); - this.$importCompatRadios = this.$('.o_import_compat input'); proms.push(this._rpc({route: '/web/export/formats'}).then(doSetupExportFormats)); proms.push(this._onChangeCompatibleInput()); @@ -81,29 +79,37 @@ var DataExport = Dialog.extend({ })); proms.push(this._showExportsList().then(function () { - _.each(self.records, function (record, key) { - if (_.contains(self.defaultExportFields, key)) { - self._addField(key, record.string); - } + _.each(self.defaultExportFields, function (field) { + var record = self.records[field]; + self._addField(record.id, record.string); }); })); + // Bind sortable events after Dialog is open + this.opened().then(function () { + self.$('.o_fields_list').sortable({ + axis: 'y', + handle: '.o_short_field', + forcePlaceholderSize: true, + placeholder: 'o-field-placeholder', + update: self.proxy('_resetTemplateField'), + }); + }); return Promise.all(proms); function doSetupExportFormats(formats) { var $fmts = self.$('.o_export_format'); _.each(formats, function (format) { - var $radio = $('', {type: 'radio', value: format.tag, name: 'o_export_format_name'}); - var $label = $('', {html: format.label}); + var $radio = $('', {type: 'radio', value: format.tag, name: 'o_export_format_name', class: 'form-check-input', id: 'o_radio' + format.label}); + var $label = $('