diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js index eb0cceb387e..c45d5eed4da 100644 --- a/addons/web/static/src/js/view_editor.js +++ b/addons/web/static/src/js/view_editor.js @@ -651,24 +651,61 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ } }); this.edit_node_dialog.start().open(); + var _PROPERTIES_ATTRIBUTES = { + 'name' : {'string': 'Name', 'type': 'char'}, + 'string' : {'string': 'String', 'type': 'char'}, + 'required' : {'string': 'Required', 'type': 'boolean'}, + 'readonly' : {'string': 'Readonly', 'type': 'boolean'}, + 'domain' : {'string': 'Domain', 'type': 'char'}, + 'context' : {'string': 'Context', 'type': 'char'}, + 'limit' : {'string': 'Limit', 'type': 'char'}, + 'min_rows' : {'string': 'Minimum rows', 'type': 'char'}, + 'date_start' : {'string': 'Start date', 'type': 'char'}, + 'date_delay' : {'string': 'Delay date', 'type': 'char'}, + 'day_length' : {'string': 'Day length', 'type': 'char'}, + 'mode' : {'string': 'Mode', 'type': 'char'}, + 'align' : {'string': 'Alignment ', 'type': 'selection', 'selection': [['', ''], ['0.0', 'Left'], ['0.5', 'Center'], ['1.0', 'Right']]}, + 'icon' : {'string': 'Icon', 'type': 'selection', 'selection': _ICONS}, + 'type' : {'string': 'Type', 'type': 'selection', 'selection': [['', ''], ['action', 'Action'], ['object', 'Object'], ['workflow', 'Workflow'], ['server_action', 'Server Action']]}, + 'special' : {'string': 'Special', 'type': 'selection', 'selection': [['',''],['save', 'Save Button'], ['cancel', 'Cancel Button'], ['open', 'Open Button']]}, + 'target' : {'string': 'Target', 'type': 'selection', 'selection': [['', ''], ['new', 'New Window']]}, + 'confirm' : {'string': 'Confirm', 'type': 'char'}, + 'style' : {'string': 'Style', 'type': 'selection', 'selection':[["",""],["1", "1"],["1-1", "1-1"],["1-2", "1-2"],["2-1", "2-1"],["1-1-1", "1-1-1"]]}, + 'filename' : {'string': 'File Name', 'type': 'char'}, + 'width' : {'string': 'Width', 'type': 'char'}, + 'height' : {'string': 'Height', 'type': 'char'}, + 'attrs' : {'string': 'Attrs', 'type': 'char'}, + 'col' : {'string': 'col', 'type': 'char'}, + 'link' : {'string': 'Link', 'type': 'char'}, + 'position' : {'string': 'Position', 'type': 'selection', 'selection': [['',''],['after', 'After'],['before', 'Before'],['inside', 'Inside'],['replace', 'Replace']]}, + 'states' : {'string': 'states', 'type': 'char'}, + 'eval' : {'string': 'Eval', 'type': 'char'}, + 'ref' : {'string': 'Ref', 'type': 'char'}, + 'on_change' : {'string': 'On change', 'type': 'char'}, + 'nolabel' : {'string': 'No label', 'type': 'boolean'}, + 'completion' : {'string': 'Completion', 'type': 'boolean'}, + 'colspan' : {'string': 'Colspan', 'type': 'char'}, + 'widget' : {'string': 'widget', 'type': 'selection'}, + 'groups' : {'string': 'Groups', 'type': 'seleciton_multi'}, + }; var widget = _.keys(self.property.map); var arch_val = self.get_object_by_id(clicked_tr_id,obj['main_object'], []); this.edit_node_dialog.$element.append('
'); this.edit_widget = []; - _.each(properties, function(property) { - type_widget = false; - self.ready = $.when(self.on_groups(property)).then(function () { - if (_.include(widget, property)){ - type_widget = new (self.property.get_any([property])) (self.edit_node_dialog, property); - } else { - type_widget = new openerp.web.ViewEditor.FieldChar (self.edit_node_dialog, property); - } + self.ready = $.when(self.on_groups(properties)).then(function () { + _PROPERTIES_ATTRIBUTES['groups']['selection'] = self.groups; + var values = _.keys( openerp.web.form.widgets.map); + values.push(''); + values.sort(); + _PROPERTIES_ATTRIBUTES['widget']['selection'] = values; + _.each(properties, function(property) { + var type_widget = new (self.property.get_any([_PROPERTIES_ATTRIBUTES[property].type])) (self.edit_node_dialog, property); var value = _.detect(arch_val[0]['att_list'],function(res) { return _.include(res, property); }); + type_widget.selection = _PROPERTIES_ATTRIBUTES[property].selection value = value instanceof Array ? value[1] : value; - if (property == 'groups') type_widget.selection = self.groups; - self.edit_node_dialog.$element.find('table[id=rec_table]').append('' + property + ':' + type_widget.render() + ''); + self.edit_node_dialog.$element.find('table[id=rec_table]').append('' + _PROPERTIES_ATTRIBUTES[property].string + ':' + type_widget.render() + ''); type_widget.start(); type_widget.set_value(value) self.edit_widget.push(type_widget); @@ -676,12 +713,12 @@ openerp.web.ViewEditor = openerp.web.Widget.extend({ }); }, //for getting groups - on_groups: function(property){ + on_groups: function(properties){ var self = this, def = $.Deferred(); - if (property != 'groups') { + if (!_.include(properties, 'groups')) { self.groups = false; - return false; + def.resolve(); } var group_ids = [], group_names = {}, @@ -800,53 +837,7 @@ openerp.web.ViewEditor.FieldSelect = openerp.web.ViewEditor.Field.extend({ return this.$element.find("select").val(); } }); -openerp.web.ViewEditor.WidgetProperty = openerp.web.ViewEditor.FieldSelect.extend({ - init: function(view, name) { - this._super(view, name); - this.registry = openerp.web.form.widgets; - var values = _.keys(this.registry.map); - values.push(''); - values.sort(); - this.selection = values; - }, -}); -openerp.web.ViewEditor.IconProperty = openerp.web.ViewEditor.FieldSelect.extend({ - init: function(view, name) { - this._super(view, name); - this.selection = _ICONS; - }, -}); -openerp.web.ViewEditor.ButtonTargetProperty = openerp.web.ViewEditor.FieldSelect.extend({ - init: function(view, name) { - this._super(view, name); - this.selection = [['', ''], ['new', 'New Window']]; - }, -}); -openerp.web.ViewEditor.ButtonTypeProperty = openerp.web.ViewEditor.FieldSelect.extend({ - init: function(view, name) { - this._super(view, name); - this.selection = [['', ''], ['action', 'Action'], ['object', 'Object'], ['workflow', 'Workflow'], ['server_action', 'Server Action']]; - }, -}); -openerp.web.ViewEditor.AlignProperty = openerp.web.ViewEditor.FieldSelect.extend({ - init: function(view, name) { - this._super(view, name); - this.selection = [['', ''], ['0.0', 'Left'], ['0.5', 'Center'], ['1.0', 'Right']]; - }, -}); -openerp.web.ViewEditor.ButtonSpecialProperty = openerp.web.ViewEditor.FieldSelect.extend({ - init: function(view, name) { - this._super(view, name); - this.selection = [['',''],['save', 'Save Button'], ['cancel', 'Cancel Button'], ['open', 'Open Button']]; - }, -}); -openerp.web.ViewEditor.PositionProperty = openerp.web.ViewEditor.FieldSelect.extend({ - init: function(view, name) { - this._super(view, name); - this.selection = [['',''],['after', 'After'],['before', 'Before'],['inside', 'Inside'],['replace', 'Replace']]; - }, -}); -openerp.web.ViewEditor.GroupsProperty = openerp.web.ViewEditor.FieldSelect.extend({ +openerp.web.ViewEditor.FieldSelectMulti = openerp.web.ViewEditor.FieldSelect.extend({ start: function () { this._super(); this.$element.find("select[id=" + this.name + "]").css('height', '100px').attr("multiple",true); @@ -864,7 +855,7 @@ openerp.web.ViewEditor.GroupsProperty = openerp.web.ViewEditor.FieldSelect.exten }); var _PROPERTIES = { 'field' : ['name', 'string', 'required', 'readonly', 'domain', 'context', 'nolabel', 'completion', - 'colspan', 'widget', 'eval', 'ref', 'on_change', 'groups', 'attrs'], + 'colspan', 'widget', 'eval', 'ref', 'on_change', 'attrs', 'groups'], 'form' : ['string', 'col', 'link'], 'notebook' : ['colspan', 'position', 'groups'], 'page' : ['string', 'states', 'attrs', 'groups'], @@ -881,43 +872,6 @@ var _PROPERTIES = { 'graph' : ['string', 'type'], 'calendar' : ['string', 'date_start', 'date_stop', 'date_delay', 'day_length', 'color', 'mode'], }; -var _PROPERTIES_ATTRIBUTES = { - 'name' : {'string': 'Name', 'type': 'char'}, - 'string' : {'string': 'String', 'type': 'char'}, - 'required' : {'string': 'Required', 'type': 'boolean'}, - 'readonly' : {'string': 'Readonly', 'type': 'boolean'}, - 'domain' : {'string': 'Domain', 'type': 'char'}, - 'context' : {'string': 'Context', 'type': 'char'}, - 'limit' : {'string': 'Limit', 'type': 'selection'}, - 'min_rows' : {'string': 'Minimum rows', 'type': 'char'}, - 'date_start' : {'string': 'Start date', 'type': 'char'}, - 'date_delay' : {'string': 'Delay date', 'type': 'char'}, - 'day_length' : {'string': 'Day length', 'type': 'char'}, - 'mode' : {'string': 'Mode', 'type': 'char'}, - 'align' : {'string': 'Alignment ', 'type': 'selection'}, - 'icon' : {'string': 'Icon', 'type': 'selection'}, - 'type' : {'string': 'Type', 'type': 'selection'}, - 'special' : {'string': 'Special', 'type': 'selection'}, - 'target' : {'string': 'Target', 'type': 'selection'}, - 'confirm' : {'string': 'Confirm', 'type': 'char'}, - 'style' : {'string': 'Style', 'type': 'selection'}, - 'filename' : {'string': 'File Name', 'type': 'char'}, - 'width' : {'string': 'Width', 'type': 'char'}, - 'height' : {'string': 'Height', 'type': 'char'}, - 'groups' : {'string': 'Groups', 'type': 'seleciton_multi'}, - 'attrs' : {'string': 'Attrs', 'type': 'char'}, - 'col' : {'string': 'col', 'type': 'char'}, - 'link' : {'string': 'Link', 'type': 'char'}, - 'position' : {'string': 'Position', 'type': 'selection'}, - 'states' : {'string': 'states', 'type': 'char'}, - 'eval' : {'string': 'Eval', 'type': 'char'}, - 'ref' : {'string': 'Ref', 'type': 'char'}, - 'on_change' : {'string': 'On change', 'type': 'char'}, - 'nolabel' : {'string': 'No label', 'type': 'boolean'}, - 'completion' : {'string': 'Completion', 'type': 'boolean'}, - 'colspan' : {'string': 'Colspan', 'type': 'char'}, - 'widget' : {'string': 'widget', 'type': 'selection'}, -}; var _ICONS = ['','STOCK_ABOUT', 'STOCK_ADD', 'STOCK_APPLY', 'STOCK_BOLD', 'STOCK_CANCEL', 'STOCK_CDROM', 'STOCK_CLEAR', 'STOCK_CLOSE', 'STOCK_COLOR_PICKER', 'STOCK_CONNECT', 'STOCK_CONVERT', 'STOCK_COPY', 'STOCK_CUT', 'STOCK_DELETE', @@ -946,18 +900,8 @@ var _ICONS = ['','STOCK_ABOUT', 'STOCK_ADD', 'STOCK_APPLY', 'STOCK_BOLD', 'terp-project', 'terp-report', 'terp-stock', 'terp-calendar', 'terp-graph' ]; openerp.web.ViewEditor.property_widget = new openerp.web.Registry({ - 'required' : 'openerp.web.ViewEditor.FieldBoolean', - 'readonly' : 'openerp.web.ViewEditor.FieldBoolean', - 'nolabel' : 'openerp.web.ViewEditor.FieldBoolean', - 'completion' : 'openerp.web.ViewEditor.FieldBoolean', - 'widget' : 'openerp.web.ViewEditor.WidgetProperty', - 'groups' : 'openerp.web.ViewEditor.GroupsProperty', - 'position' : 'openerp.web.ViewEditor.PositionProperty', - 'icon' : 'openerp.web.ViewEditor.IconProperty', - 'align' : 'openerp.web.ViewEditor.AlignProperty', - 'special' : 'openerp.web.ViewEditor.ButtonSpecialProperty', - 'type' : 'openerp.web.ViewEditor.ButtonTypeProperty', - 'target' : 'openerp.web.ViewEditor.ButtonTargetProperty', + 'boolean' : 'openerp.web.ViewEditor.FieldBoolean', + 'seleciton_multi' : 'openerp.web.ViewEditor.FieldSelectMulti', 'selection' : 'openerp.web.ViewEditor.FieldSelect', 'char' : 'openerp.web.ViewEditor.FieldChar', });