return (node.getAttribute('name'))?
_.sprintf( "<%s name='%s'>",node.tagName.toLowerCase(), node.getAttribute('name')):
_.sprintf( "<%s>",node.tagName.toLowerCase());
- }else if(node.tagName.toLowerCase() == "group"){
- return (node.getAttribute('string'))?
- _.sprintf( "<%s>",node.getAttribute('string')):
- _.sprintf( "<%s>",node.tagName.toLowerCase());
}else{
return (node.getAttribute('string'))?
_.sprintf( "<%s string='%s'>",node.tagName.toLowerCase(), node.getAttribute('string')):
}
switch (this.id) {
case "side-add":
+ var tr = $(side).find('a').text();
+ var parent_tr = ($(side).prevAll("tr[level="+String(clicked_tr_level - 1)+"]"))[0];
+ parent_tr = $(parent_tr).find('a').text();
+ self.rpc("/web/searchview/fields_get", {model:self.model}, function(result) {
+ var fields = _.keys(result.fields);
+ fields.push(" "),fields.sort();
+ var property_to_check = [];
+ _.each([tr,parent_tr],function(element){
+ property_to_check.push(
+ _.detect(_.keys(_CHILDREN),function(res){
+ return _.includes(element, res);
+ }));
+ });
+ self.on_add_node(property_to_check, fields);
+ });
break;
case "side-remove":
break;
child_list.splice(index-1, 0, re_insert_obj[0]);
} else if (move_direct == "update_node") {
_.each(update_values, function(val){
- $(arch1).attr(val[0],val[1]);
+ if(val[0] == "required"){
+ $(arch1).attr("required", "true");
+ }else{
+ $(arch1).attr(val[0],val[1]);
+ }
});
var new_obj = self.create_View_Node(arch1);
new_obj.id = obj.id,new_obj.child_id = obj.child_id;
this.edit_node_dialog.$element.append('<table id="rec_table" style="width:400px" class="oe_forms"></table>');
this.edit_widget = [];
_.each(properties, function(record) {
- var id = record,
+ var id = record,
type_widget;
self.ready = $.when(self.on_groups(id)).then(function () {
if (_.include(widget,id)){
if (id == 'groups') type_widget.selection = self.groups;
self.edit_node_dialog.$element.find('table[id=rec_table]').append('<tr><td align="right">'+id+':</td><td>'+type_widget.render()+'</td></tr>');
type_widget.start();
- type_widget.set_value(value)
+ type_widget.set_value(value);
self.edit_widget.push(type_widget);
});
});
});
})
return def.promise();
+ },
+ on_add_node: function(properties,fields){
+ var self = this;
+ var positions = ['After','Before','Inside'];
+ var render_list = [];
+ render_list.push(["node_type",(_.keys(_CHILDREN)).sort()]);
+ render_list.push(["position",positions]);
+ render_list.push(["Fields",fields]);
+ this.edit_widget = [];
+ this.add_node_dialog = new openerp.web.Dialog(this,{
+ modal: true,
+ title: 'Properties',
+ width: 500,
+ height: 300,
+ buttons: {
+ "Update": function(){
+ var node_type,position,fields;
+ var check_add_node = true;
+ _.each(self.edit_widget, function(widget) {
+ (widget.name == "node_type")?node_type = widget.get_value()[1]:false;
+ (widget.name == "position")?position = widget.get_value()[1]:false;
+ (widget.name == "Fields")?fields = widget.get_value()[1]:false;
+ });
+ (position == "Inside")?
+ check_add_node =(_.include(_CHILDREN[properties[0]],node_type))?true:false:
+ check_add_node =(_.include(_CHILDREN[properties[1]],node_type))?true:false;
+ if(node_type == "field" && check_add_node )
+ {check_add_node = (fields != " ")?true:false;
+ }
+ if(check_add_node){
+ var tag = _.sprintf("<%s></%s>",node_type,node_type);
+ }else{alert("Can't Update View");}
+ },
+ "Cancel": function(){
+ self.add_node_dialog.close();
+ }
+ }
+ }).start().open();
+ this.add_node_dialog.$element.
+ append('<table id="rec_table" style="width:400px" class="oe_forms"></table>');
+ var table_selector = self.add_node_dialog.$element.find('table[id=rec_table]');
+ _.each(render_list,function(node){
+ type_widget = new openerp.web.ViewEditor.FieldSelect (self.add_node_dialog, node[0]);
+ type_widget.selection = node[1];
+ if(node[0]=="Fields"){ node[0] = "";}
+ table_selector.append('<tr><td align="right">'+node[0]+'</td><td>'+type_widget.render()+'</td></tr>');
+ type_widget.start();
+ self.edit_widget.push(type_widget);
+ });
+ table_selector.append('<tr><td align="right"> <button id="new_field">New Field</button></td></tr>');
+ self.add_node_dialog.$element.find("select[id=node_type] option[value=field]").attr("selected",1);
+ self.add_node_dialog.$element.find('#new_field').click(function() {
+ //to do
+ });
}
});
openerp.web.ViewEditor.Field = openerp.web.Class.extend({
var self = this;
this.$element.find("select[id=" + this.name + "]").css('width', '100%').change(function() {
self.on_ui_change();
+ add_node = self.get_value();
+ if(add_node[0] == "node_type"){
+ if(add_node[1] == "field"){self.$element.find("select[id=Fields]").show();}
+ else{self.$element.find("select[id=Fields]").hide();}
+ }
});
},
set_value: function(value) {
'graph' : ['string', 'type'],
'calendar' : ['string', 'date_start', 'date_stop', 'date_delay', 'day_length', 'color', 'mode'],
};
+_CHILDREN = {
+ 'form': ['notebook', 'group', 'field', 'label', 'button','board', 'newline', 'separator'],
+ 'tree': ['field'],
+ 'graph': ['field'],
+ 'calendar': ['field'],
+ 'notebook': ['page'],
+ 'page': ['notebook', 'group', 'field', 'label', 'button', 'newline', 'separator'],
+ 'group': ['field', 'label', 'button', 'separator', 'newline'],
+ 'board': ['column'],
+ 'child2': ['action'],
+ 'action': [],
+ 'field': ['form', 'tree', 'graph'],
+ 'label': [],
+ 'button' : [],
+ 'newline': [],
+ 'separator': [],
+};
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',