summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/view_editor.js
diff options
context:
space:
mode:
authorVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-09-14 11:07:46 +0530
committerVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-09-14 11:07:46 +0530
commitb6076c3cc3ca5141349b99821268b8fd5e148b77 (patch)
treebb875d3ef5127cf5b8c35de6475de14e5477dbbd /addons/web/static/src/js/view_editor.js
parent243e1bdb0079ea9f214696ead8228d464ecb2cfc (diff)
parentc7c2b5846d3775780bbaa9a84a93ad755bdb8756 (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.js147
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();
+ }
+
+});
+};