diff options
| author | Vidhin Mehta (OpenERP) <vme@tinyerp.com> | 2011-09-14 11:07:46 +0530 |
|---|---|---|
| committer | Vidhin Mehta (OpenERP) <vme@tinyerp.com> | 2011-09-14 11:07:46 +0530 |
| commit | b6076c3cc3ca5141349b99821268b8fd5e148b77 (patch) | |
| tree | bb875d3ef5127cf5b8c35de6475de14e5477dbbd /addons/web/static/src/js/view_editor.js | |
| parent | 243e1bdb0079ea9f214696ead8228d464ecb2cfc (diff) | |
| parent | c7c2b5846d3775780bbaa9a84a93ad755bdb8756 (diff) | |
[Merge] upto revno 1024.
bzr revid: vme@tinyerp.com-20110914053746-ri6d5s341mm6tc7n
Diffstat (limited to 'addons/web/static/src/js/view_editor.js')
| -rw-r--r-- | addons/web/static/src/js/view_editor.js | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js new file mode 100644 index 00000000000..22800facf9b --- /dev/null +++ b/addons/web/static/src/js/view_editor.js @@ -0,0 +1,147 @@ +openerp.web.view_editor = function(openerp) { +openerp.web.ViewEditor = openerp.web.Widget.extend({ + init: function(parent, element_id, dataset, view, options) { + this._super(parent); + this.element_id = element_id + this.parent = parent + this.dataset = dataset; + this.model = dataset.model; + this.xml_id = 0; + }, + start: function() { + this.View_editor(); + }, + View_editor : function(){ + var self = this; + var action = { + name:'ViewEditor', + context:this.session.user_context, + domain: [["model", "=", this.dataset.model]], + res_model: 'ir.ui.view', + views : [[false, 'list']], + type: 'ir.actions.act_window', + target: "current", + limit : 80, + auto_search : true, + flags: { + sidebar: false, + views_switcher: false, + action_buttons:false, + search_view:false, + pager:false, + radio:true + }, + }; + var action_manager = new openerp.web.ActionManager(this); + this.dialog = new openerp.web.Dialog(this,{ + modal: true, + title: 'ViewEditor', + width: 750, + height: 500, + buttons: { + "Create": function(){ + + }, + "Edit": function(){ + self.xml_id=0; + self.edit_view(); + }, + "Close": function(){ + $(this).dialog('destroy'); + } + }, + + }); + this.dialog.start(); + this.dialog.open(); + action_manager.appendTo(this.dialog); + action_manager.do_action(action); + + + }, + check_attr:function(xml,tag){ + var obj = new Object(); + obj.child_id = []; + obj.id = this.xml_id++; + var att_list = []; + var name1 = "<" + tag; + $(xml).each(function() { + att_list = this.attributes; + att_list = _.select(att_list, function(attrs){ + if(attrs.nodeName == "string" || attrs.nodeName == "name" || attrs.nodeName == "index"){ + name1 += ' ' +attrs.nodeName+'='+'"'+attrs.nodeValue+'"';} + }); + name1+= ">"; + }); + obj.name = name1; + return obj; + }, + recursiveFunction : function(main_object,parent_id,child_id){ + var self = this; + var check = false; + var main_object = _.detect(main_object , function(node){ + if(node.id == parent_id){ + node.child_id = child_id; + check = true; + } + return main_object; + }); + if(check){ + return main_object; + }else{ + //todo recursion for saving object into objects + } + }, + children_function : function(xml,root,main_object,parent_id){ + var self = this; + var child_obj_list = []; + var main_object = main_object; + var children_list = $(xml).filter(root).children(); + _.each(children_list, function(child_node){ + var string = self.check_attr(child_node,child_node.tagName.toLowerCase()); + child_obj_list.push(string); + }); + if(children_list.length != 0){ + main_object = self.recursiveFunction(main_object,parent_id,child_obj_list); + } + for(var i=0;i<children_list.length;i++){ + self.children_function(children_list[i],children_list[i].tagName.toLowerCase(),main_object,child_obj_list[i].id); + } + return child_obj_list; + }, + edit_view : function(){ + var self = this; + var view_id =(($("input[name='radiogroup']:checked").parent()).parent()).attr('data-id'); + var ve_dataset = new openerp.web.DataSet(this,'ir.ui.view'); + ve_dataset.read_ids([parseInt(view_id)],['arch'],function (arch) { + var arch = arch[0].arch; + var root = $(arch).filter(":first")[0]; + var tag = root.tagName.toLowerCase(); + var root_object = self.check_attr(root,tag); + var all_list = self.children_function(arch,tag,[root_object],root_object.id); + + //todo render the final object of tree view so xml with it child node display... + }); + this.dialog = new openerp.web.Dialog(this,{ + modal: true, + title: 'Edit Xml', + width: 750, + height: 500, + buttons: { + "Inherited View": function(){ + + }, + "Preview": function(){ + + }, + "Close": function(){ + $(this).dialog('destroy'); + } + }, + + }); + this.dialog.start().open(); + } + +}); +}; |
