resources/Editors/Editor.Roo.LayoutDialog.bjs
authorEdward <edward@roojs.com>
Wed, 6 May 2015 10:18:08 +0000 (18:18 +0800)
committerEdward <edward@roojs.com>
Wed, 6 May 2015 10:18:08 +0000 (18:18 +0800)
resources/Editors/Editor.Roo.LayoutDialog.js

resources/Editors/Editor.Roo.LayoutDialog.bjs
resources/Editors/Editor.Roo.LayoutDialog.js

index 508a3ac..c042d2f 100644 (file)
@@ -25,7 +25,7 @@
     "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
    },
    "| function loadData" : "function(data) { \n\n    //alert(\"IPC:TEST:\" + JSON.stringify(data,null,4));\n\n    var fields = _this.grid.dataSource.reader.recordType.prototype.fields;\n    \n    \n    var d = [];\n\n    for (var k in data) { \n        var r = data[k];\n        var has_s = typeof(r.relates_to_schema) != 'undefined';\n        \n        var rt = '', rc = '', rs = [];\n        \n        if(has_s){\n            for (var kk in r.relates_to_schema) {         \n                var rr = r.relates_to_schema[kk];\n                \n                rt = r.relates_to_table;\n                rc = r.relates_to_col;\n                \n                rs.push([rr.Field]);\n                \n            }\n        }\n        \n        var o = {\n            active : !has_s,\n            dataIndex : r.Field,\n            type : r.Type,\n            title : r.Field,\n            width : 200,\n            ftype : 'TextField',\n            display_field : rc, //r.Field + '_display_name',\n            relates_to_table : rt,\n            relates_to_col : rc,\n            relates_to_schema : rs\n        };\n        \n        d.push(o);\n        \n        if (!has_s) {\n            continue;\n        }\n        \n        for (var kk in r.relates_to_schema) {         \n            var rr = r.relates_to_schema[kk];\n            if (rr.Field == r.relates_to_col) {\n                continue;\n            }\n            \n            var o = {\n                active : false,\n                dataIndex : r.Field + '_'+ rr.Field,\n                type : r.Type,\n                title : r.Field,\n                width : 100\n            };\n            \n            d.push(o);\n        }\n    }\n\n    var ar = [];\n    \n    Roo.each(d, function(dd){\n\n        var a = [];\n        \n        for(var j = 0; j < fields.length; j++){\n            var f = fields.items[j];\n            \n            if(dd.hasOwnProperty(f.name)){\n                a.push(dd[f.name]);\n            }\n        }\n        \n        ar.push(a);\n    });\n    \n    this.schema = data;\n    \n    //alert(\"IPC:TEST:\" + JSON.stringify(ar));\n    this.grid.dataSource.loadData(ar);\n}",
-   "| function toBJS" : "function() { \n\n// convert the selected cells into a BJS data ready to send back to the UI..\n\n    this.table = \"XXX\";\n    this.firstTxtCol = \"XXX\";\n   \n    var formHeight = 50;\n    \n    var jreader = {};\n    var  formElements = [];\n    this.grid.dataSource.each(function(rec) {\n        if (!rec.data.active) {\n            return;\n        }\n        \n        var el = {\n            fieldLabel : rec.data.title,\n            name : rec.data.dataIndex,\n            width : rec.data.width,\n            '|xns' : 'Roo.form',\n            xtype : rec.data.ftype\n        }\n         if (el.xtype == 'DateField') {\n            el.format = 'Y-m-d';\n            el.useIso = true;\n            el.width = 100;\n        }\n        \n        if (el.xtype == 'TextArea') {\n            el.height = 100;\n        }\n        \n        if (el.xtype == 'Hidden') {\n            delete el.fieldLabel;\n            delete el.width;\n        }\n        if (el.xtype == 'ComboBox') {\n        \n\n            el.queryParam  = 'query[' + rec.data.display_field + ']';// SET WHEN USED\n            \n            el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id\n            el.name  = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name\n            \n            el.displayField = rec.data.display_field // SET WHEN USED eg. project_id\n            el.valueField = rec.data.relates_to_col \n            \n            el.tpl = '<div class=\"x-grid-cell-text x-btn button\"><b>{' + rec.data.display_field +'}</b> </div>'; // SET WHEN USED\n          \n        \n           el.items = [\n                {\n                        \n                    '*prop' : 'store',\n                    'xtype' : 'Store',\n                    '|xns' : 'Roo.data',\n                    'remoteSort' : true,\n                    '|sortInfo' : '{ direction : \\'ASC\\', field: \\'id\\' }',\n                    listeners : {\n                        '|beforeload' : 'function (_self, o)' +\n                        \"{\\n\" +\n                        \"    o.params = o.params || {};\\n\" +\n                        \"    // set more here\\n\" +\n                        \"}\\n\"\n                    },\n                    items : [\n                        {\n                            '*prop' : 'proxy',\n                            'xtype' : 'HttpProxy',\n                            'method' : 'GET',\n                            '|xns' : 'Roo.data',\n                            '|url' : \"baseURL + '/Roo/\" + rec.data.relates_to_table + \".php'\",\n                        },\n                        \n                        {\n                            '*prop' : 'reader',\n                            'xtype' : 'JsonReader',\n                            '|xns' : 'Roo.data',\n                            'id' : 'id',\n                            'root' : 'data',\n                            'totalProperty' : 'total'\n\n                            \n                        }\n                    ]\n                }\n            ];\n        \n        }\n        \n        if (el.xtype == 'HtmlEditor') {\n            el.height = 250,\n            el.resizable = 's',\n            el.toolbar = [\n                {\n                    '|xns' : 'Roo.form.HtmlEditor',\n                    'xtype' : 'ToolbarContext'\n                },\n                {\n                    '|xns' : 'Roo.form.HtmlEditor',\n                    'xtype' : 'ToolbarStandard'\n\n               }\n            ]\n        }\n        \n        formElements.push(el);\n        \n        formHeight += rec.data.ftype == 'TextArea' ? 100 : ((rec.data.ftype == 'HtmlEditor') ? 250 : 30);\n        \n        \n    });\n    \n    \n    \n    \n    \n    \n     var frmCfg = \n    {\n        '|xns' : 'Roo.form',\n        xtype : \"Form\",\n        listeners : {\n            \"|actioncomplete\" : \"function(_self,action)\\n\"+\n                \"{\\n\"+\n                \"    if (action.type == 'setdata') {\\n\"+\n                \"       //this.load({ method: 'GET', params: { '_id' : _this.data.id }});\\n\"+\n                \"       return;\\n\"+\n                \"    }\\n\"+\n                \"    if (action.type == 'load') {\\n\"+\n                \"        return;\\n\"+\n                \"    }\\n\"+\n                \"    if (action.type =='submit') {\\n\"+\n                \"    \\n\"+\n                \"        _this.dialog.hide();\\n\"+\n                \"    \\n\"+\n                \"         if (_this.callback) {\\n\"+\n                \"            _this.callback.call(_this, action.result.data);\\n\"+\n                \"         }\\n\"+\n                \"         _this.form.reset();\\n\"+\n                \"         return;\\n\"+\n                \"    }\\n\"+\n                \"}\\n\",\n            \n            \"|rendered\" : \"function (form)\\n\"+\n                \"{\\n\"+\n                \"    _this.form= form;\\n\"+\n                \"}\\n\"\n        },\n        method : \"POST\",\n        style : \"margin:10px;\",\n        \"|url\" : \"baseURL + '/Roo/\" + this.table + \"'\",\n        items : formElements\n    };\n    \n\n    alert(\"IPC:OUT:\" + JSON.stringify({\n            \"closable\": false,\n            \"collapsible\": false,\n            \"height\": formHeight,\n            \"resizable\": false,\n            \"title\": \"Edit / Create \" + this.table,\n            \"width\": 400,\n            \"modal\" : true,\n            \"xtype\": \"LayoutDialog\",\n            \"|xns\": \"Roo\",\n            \"items\": [\n                {\n                    \"|xns\": \"Roo\",\n                    \"xtype\": \"LayoutRegion\",\n                    \"*prop\": \"center\"\n                },\n                {\n                    \"region\": \"center\",\n                    \"xtype\": \"ContentPanel\",\n                    \"|xns\": \"Roo\",\n                    \"items\": [\n                        frmCfg\n                    ]\n                },\n                \n                {\n                    \"listeners\": {\n                        \"click\": \"function (_self, e)\\n{\\n    _this.dialog.hide();\\n}\"\n                    },\n                    \"*prop\": \"buttons[]\",\n                    \"text\": \"Cancel\",\n                    \"xtype\": \"Button\",\n                    \"|xns\": \"Roo\"\n                },\n                {\n                    \"listeners\": {\n                        \"click\": \"function (_self, e)\\n{\\n    // do some checks?\\n     \\n    \\n    _this.dialog.el.mask(\\\"Saving\\\");\\n    _this.form.doAction(\\\"submit\\\");\\n\\n}\"\n                    },\n                    \"*prop\": \"buttons[]\",\n                    \"text\": \"Save\",\n                    \"xtype\": \"Button\",\n                    \"|xns\": \"Roo\"\n                }\n            ]\n        \n        \n        \n    }, null, 4));\n\n}",
+   "| function toBJS" : "function() { \n\n// convert the selected cells into a BJS data ready to send back to the UI..\n\n    this.table = \"XXX\";\n    this.firstTxtCol = \"XXX\";\n   \n    var formHeight = 50;\n    \n    var jreader = {};\n    var  formElements = [];\n    this.grid.dataSource.each(function(rec) {\n        if (!rec.data.active) {\n            return;\n        }\n        \n        var el = {\n            fieldLabel : rec.data.title,\n            name : rec.data.dataIndex,\n            width : rec.data.width,\n            '|xns' : 'Roo.form',\n            xtype : rec.data.ftype\n        }\n         if (el.xtype == 'DateField') {\n            el.format = 'Y-m-d';\n            el.useIso = true;\n            el.width = 100;\n        }\n        \n        if (el.xtype == 'TextArea') {\n            el.height = 100;\n        }\n        \n        if (el.xtype == 'Hidden') {\n            delete el.fieldLabel;\n            delete el.width;\n        }\n        if (el.xtype == 'ComboBox') {\n        \n\n            el.queryParam  = 'query[' + rec.data.display_field + ']';// SET WHEN USED\n            \n            el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id\n            el.name  = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name\n            \n            el.displayField = rec.data.display_field // SET WHEN USED eg. project_id\n            el.valueField = rec.data.relates_to_col \n            \n            el.tpl = '<div class=\"x-grid-cell-text x-btn button\"><b>{' + rec.data.display_field +'}</b> </div>'; // SET WHEN USED\n          \n        \n           el.items = [\n                {\n                        \n                    '*prop' : 'store',\n                    'xtype' : 'Store',\n                    '|xns' : 'Roo.data',\n                    'remoteSort' : true,\n                    '|sortInfo' : '{ direction : \\'ASC\\', field: \\'id\\' }',\n                    listeners : {\n                        '|beforeload' : 'function (_self, o)' +\n                        \"{\\n\" +\n                        \"    o.params = o.params || {};\\n\" +\n                        \"    // set more here\\n\" +\n                        \"}\\n\"\n                    },\n                    items : [\n                        {\n                            '*prop' : 'proxy',\n                            'xtype' : 'HttpProxy',\n                            'method' : 'GET',\n                            '|xns' : 'Roo.data',\n                            '|url' : \"baseURL + '/Roo/\" + rec.data.relates_to_table + \".php'\",\n                        },\n                        \n                        {\n                            '*prop' : 'reader',\n                            'xtype' : 'JsonReader',\n                            '|xns' : 'Roo.data',\n                            'id' : 'id',\n                            'root' : 'data',\n                            'totalProperty' : 'total'\n\n                            \n                        }\n                    ]\n                }\n            ];\n        \n        }\n        \n        if (el.xtype == 'HtmlEditor') {\n            el.height = 250,\n            el.resizable = 's',\n            el.items = [\n                {\n                    '* prop' : 'toolbars[]',\n                    '|xns' : 'Roo.form.HtmlEditor',\n                    'xtype' : 'ToolbarContext'\n                },\n                {\n                    '* prop' : 'toolbars[]',\n                    '|xns' : 'Roo.form.HtmlEditor',\n                    'xtype' : 'ToolbarStandard'\n\n               }\n            ]\n        }\n        \n        formElements.push(el);\n        \n        formHeight += rec.data.ftype == 'TextArea' ? 100 : ((rec.data.ftype == 'HtmlEditor') ? 250 : 30);\n        \n        \n    });\n    \n    \n    \n    \n    \n    \n     var frmCfg = \n    {\n        '|xns' : 'Roo.form',\n        xtype : \"Form\",\n        listeners : {\n            \"|actioncomplete\" : \"function(_self,action)\\n\"+\n                \"{\\n\"+\n                \"    if (action.type == 'setdata') {\\n\"+\n                \"       //this.load({ method: 'GET', params: { '_id' : _this.data.id }});\\n\"+\n                \"       return;\\n\"+\n                \"    }\\n\"+\n                \"    if (action.type == 'load') {\\n\"+\n                \"        return;\\n\"+\n                \"    }\\n\"+\n                \"    if (action.type =='submit') {\\n\"+\n                \"    \\n\"+\n                \"        _this.dialog.hide();\\n\"+\n                \"    \\n\"+\n                \"         if (_this.callback) {\\n\"+\n                \"            _this.callback.call(_this, action.result.data);\\n\"+\n                \"         }\\n\"+\n                \"         _this.form.reset();\\n\"+\n                \"         return;\\n\"+\n                \"    }\\n\"+\n                \"}\\n\",\n            \n            \"|rendered\" : \"function (form)\\n\"+\n                \"{\\n\"+\n                \"    _this.form= form;\\n\"+\n                \"}\\n\"\n        },\n        method : \"POST\",\n        style : \"margin:10px;\",\n        \"|url\" : \"baseURL + '/Roo/\" + this.table + \"'\",\n        items : formElements\n    };\n    \n\n    alert(\"IPC:OUT:\" + JSON.stringify({\n            \"closable\": false,\n            \"collapsible\": false,\n            \"height\": formHeight,\n            \"resizable\": false,\n            \"title\": \"Edit / Create \" + this.table,\n            \"width\": 400,\n            \"modal\" : true,\n            \"xtype\": \"LayoutDialog\",\n            \"|xns\": \"Roo\",\n            \"items\": [\n                {\n                    \"|xns\": \"Roo\",\n                    \"xtype\": \"LayoutRegion\",\n                    \"*prop\": \"center\"\n                },\n                {\n                    \"region\": \"center\",\n                    \"xtype\": \"ContentPanel\",\n                    \"|xns\": \"Roo\",\n                    \"items\": [\n                        frmCfg\n                    ]\n                },\n                \n                {\n                    \"listeners\": {\n                        \"click\": \"function (_self, e)\\n{\\n    _this.dialog.hide();\\n}\"\n                    },\n                    \"*prop\": \"buttons[]\",\n                    \"text\": \"Cancel\",\n                    \"xtype\": \"Button\",\n                    \"|xns\": \"Roo\"\n                },\n                {\n                    \"listeners\": {\n                        \"click\": \"function (_self, e)\\n{\\n    // do some checks?\\n     \\n    \\n    _this.dialog.el.mask(\\\"Saving\\\");\\n    _this.form.doAction(\\\"submit\\\");\\n\\n}\"\n                    },\n                    \"*prop\": \"buttons[]\",\n                    \"text\": \"Save\",\n                    \"xtype\": \"Button\",\n                    \"|xns\": \"Roo\"\n                }\n            ]\n        \n        \n        \n    }, null, 4));\n\n}",
    "fitToframe" : true,
    "background" : false,
    "region" : "center",
index 1adbc67..ee1878b 100644 (file)
@@ -704,12 +704,14 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
            if (el.xtype == 'HtmlEditor') {
                el.height = 250,
                el.resizable = 's',
-               el.toolbar = [
+               el.items = [
                    {
+                       '* prop' : 'toolbars[]',
                        '|xns' : 'Roo.form.HtmlEditor',
                        'xtype' : 'ToolbarContext'
                    },
                    {
+                       '* prop' : 'toolbars[]',
                        '|xns' : 'Roo.form.HtmlEditor',
                        'xtype' : 'ToolbarStandard'