DataObjects/core.sql
[Pman.Core] / Pman.Dialog.CoreNotifyRecur.bjs
index db826f4..b7bf9bb 100644 (file)
@@ -1,12 +1,15 @@
 {
-    "id": "roo-file-94",
+    "id": "roo-file-31",
     "name": "Pman.Dialog.CoreNotifyRecur",
     "parent": "",
     "title": "",
-    "path": "/home/alan/gitlive/Pman.Core/Pman.Dialog.CoreNotifyRecur.bjs",
+    "path": "/home/chris/gitlive/Pman.Core/Pman.Dialog.CoreNotifyRecur.bjs",
     "items": [
         {
-            "height": 500,
+            "listeners": {
+                "show": "function (_self)\n{\n    _this.grid.ds.load({});\n}"
+            },
+            "height": 550,
             "modal": true,
             "resizable": false,
             "title": "Modify Recurrent Notifications",
@@ -23,7 +26,7 @@
                 },
                 {
                     "listeners": {
-                        "|activate": "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
+                        "|activate": "function() {\n _this.panel = this;\n    if (_this.grid) {\n//        _this.grid.footer.onClick('first');\n    }\n}"
                     },
                     "background": false,
                     "fitContainer": true,
@@ -36,7 +39,7 @@
                     "items": [
                         {
                             "listeners": {
-                                "|render": "function() \n{\n    _this.grid = this; \n    //_this.dialog = Pman.Dialog.FILL_IN\n    if (_this.panel.active) {\n       this.footer.onClick('first');\n    }\n}",
+                                "|render": "function() \n{\n    _this.grid = this; \n    //_this.dialog = Pman.Dialog.FILL_IN\n    if (_this.panel.active) {\n    //   this.footer.onClick('first');\n    }\n}",
                                 "|rowdblclick": "function (_self, rowIndex, e)\n{\n    if (!_this.dialog) return;\n    _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\n        _this.grid.footer.onClick('first');\n    }); \n}\n",
                                 "afteredit": "function (e)\n{\n   e.record.commit();\n}"
                             },
@@ -49,7 +52,8 @@
                             "items": [
                                 {
                                     "listeners": {
-                                        "update": "function (_self, record, operation)\n{\n    Roo.log(operation);\n    if (operation != 'commit') {\n        return;\n    }\n    new Pman.Request({\n        url : baseURL + '/Roo/Core_notify_recur',\n        method :'POST',\n        params : record.data,\n        success : function()\n        {\n            //??\n        },\n        failure : function() {\n            Roo.MessageBox.alert(\"Error\", \"There was a problem saving\");\n        }\n    });\n       \n    \n    \n}"
+                                        "update": "function (_self, record, operation)\n{\n    //Roo.log(operation);\n    if (operation != 'commit') {\n        return;\n    }\n    var p = Roo.apply({}, record.data);\n    p.dtstart = record.data.dtstart.format('Y-m-d');\n    p.dtend = record.data.dtend.format('Y-m-d');    \n    \n    \n    new Pman.Request({\n        url : baseURL + '/Roo/Core_notify_recur',\n        method :'POST',\n        params : p,\n        success : function(data)\n        {\n            //Roo.log(data);\n            record.set('id', data.data.id);\n        },\n        failure : function() {\n            Roo.MessageBox.alert(\"Error\", \"There was a problem saving\");\n        }\n    });\n       \n    \n    \n}",
+                                        "beforeload": "function (_self, o)\n{\n    if (!_this.data) {\n        return false;\n    }\n    o.params =  Roo.apply(o.params || {}, {\n        person_id : _this.data.person_id,\n        onid : _this.data.onid,\n        ontable : _this.data.ontable,\n        method : _this.data.method\n    });\n        \n}"
                                     },
                                     "*prop": "dataSource",
                                     "remoteSort": true,
                                         }
                                     ]
                                 },
-                                {
-                                    "*prop": "footer",
-                                    "xtype": "PagingToolbar",
-                                    "pageSize": 25,
-                                    "displayInfo": true,
-                                    "displayMsg": "Displaying core_notify_recur{0} - {1} of {2}",
-                                    "emptyMsg": "No core_notify_recur found",
-                                    "|xns": "Roo"
-                                },
                                 {
                                     "*prop": "toolbar",
                                     "xtype": "Toolbar",
@@ -91,7 +86,7 @@
                                     "items": [
                                         {
                                             "listeners": {
-                                                "|click": "function()\n{\n    var grid = _this.grid;\n    var r = grid.getDataSource().reader.newRow({\n    // defaults..\n        person_id : _this.data.person_id,\n        dtstart : new Date(0),\n        dtend : Date.parseDate('2050-01-01', 'Y-m-d'),\n        tz : 'Asia/Hong Kong',\n        onid : _this.data.onid,\n        ontable : _this.data.ontable,\n        method : _this.data.method,\n        last_event_id : 0,\n        freq_day_name : '',\n        freq_hour_name : '',\n        freq_name : ''\n        \n    \n    });\n    grid.stopEditing();\n    grid.getDataSource().insert(0, r); \n    grid.startEditing(0, 2); \n    \n\n}\n"
+                                                "|click": "function()\n{\n    var grid = _this.grid;\n    var r = grid.getDataSource().reader.newRow({\n    // defaults..\n        person_id : _this.data.person_id,\n        dtstart : new Date(),\n        dtend : Date.parseDate('2050-01-01', 'Y-m-d'),\n        tz : 'Asia/Hong_Kong',\n        onid : _this.data.onid,\n        ontable : _this.data.ontable,\n        method : _this.data.method, // default...\n        \n        method_id : _this.data.method_id, // default...\n        method_id_display_name : _this.data.method_id_display_name, // default...        \n        \n        last_event_id : 0,\n        freq_day_name : '',\n        freq_hour_name : '',\n        freq_name : ''\n        \n    \n    });\n    grid.stopEditing();\n    grid.getDataSource().insert(0, r); \n    grid.startEditing(0, 2); \n    \n\n}\n"
                                             },
                                             "cls": "x-btn-text-icon",
                                             "text": "Add",
                                             "xtype": "Fill"
                                         },
                                         {
-                                            "text": "Delete",
-                                            "cls": "x-btn-text-icon",
-                                            "|icon": "rootURL + '/Pman/templates/images/trash.gif'",
-                                            "xtype": "Button",
                                             "listeners": {
-                                                "|click": "function()\n{\n     Pman.genericDelete(_this, 'core_notify_recur'); \n}\n        "
+                                                "|click": "function()\n{\n     _this.grid.stopEditing();\n     var s = _this.grid.selModel.getSelectedCell();\n     if (!s) {\n        Roo.MessageBox.alert(\"Error\", \"Select row\");\n        return;\n    }\n    \n    new Pman.Request({\n        url : baseURL + '/Roo/core_notify_recur',\n        method : 'POST',\n        params : {\n            _delete : _this.grid.ds.getAt(s[0]).data.id\n        }, \n        success : function() {\n            _this.grid.ds.load({});\n        },\n        failure : function() {\n            Roo.MessageBox.alert(\"Error\", \"Deleting failed - try reloading\");\n        }\n   });\n    \n}\n        "
                                             },
+                                            "cls": "x-btn-text-icon",
+                                            "text": "Delete",
+                                            "xtype": "Button",
+                                            "|icon": "rootURL + '/Pman/templates/images/trash.gif'",
                                             "|xns": "Roo.Toolbar"
                                         }
                                     ]
                                 },
                                 {
                                     "*prop": "colModel[]",
-                                    "dataIndex": "dtstart",
-                                    "header": "From",
-                                    "width": 75,
+                                    "dataIndex": "method_id",
+                                    "header": "Type",
+                                    "width": 120,
                                     "xtype": "ColumnModel",
-                                    "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
+                                    "|renderer": "function(v,x,r) {\n     return String.format('{0}', r.data.method_id_display_name); \n}",
                                     "|xns": "Roo.grid",
                                     "items": [
                                         {
                                             "*prop": "editor",
                                             "items": [
                                                 {
+                                                    "*prop": "field",
+                                                    "allowBlank": "false",
+                                                    "displayField": "display_name",
+                                                    "editable": false,
+                                                    "emptyText": "Select Type",
+                                                    "fieldLabel": "core_enum",
+                                                    "forceSelection": true,
+                                                    "hiddenName": "method_id",
+                                                    "listWidth": 400,
+                                                    "loadingText": "Searching...",
+                                                    "name": "method_id_display_name",
+                                                    "pageSize": 20,
+                                                    "qtip": "Select core_enum",
+                                                    "selectOnFocus": true,
+                                                    "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{display_name}</b> </div>",
+                                                    "triggerAction": "all",
+                                                    "typeAhead": true,
+                                                    "valueField": "id",
+                                                    "width": 300,
+                                                    "xtype": "ComboBox",
                                                     "|xns": "Roo.form",
-                                                    "xtype": "DateField",
-                                                    "*prop": "field"
+                                                    "items": [
+                                                        {
+                                                            "listeners": {
+                                                                "|beforeload": "function (_self, o){\n    o.params = o.params || {};\n    // set more here\n    o.params.etype = 'core_notify_recur';\n}\n"
+                                                            },
+                                                            "*prop": "store",
+                                                            "remoteSort": true,
+                                                            "xtype": "Store",
+                                                            "|sortInfo": "{ direction : 'ASC', field: 'id' }",
+                                                            "|xns": "Roo.data",
+                                                            "items": [
+                                                                {
+                                                                    "*prop": "proxy",
+                                                                    "xtype": "HttpProxy",
+                                                                    "method": "GET",
+                                                                    "|xns": "Roo.data",
+                                                                    "|url": "baseURL + '/Roo/core_enum.php'"
+                                                                },
+                                                                {
+                                                                    "*prop": "reader",
+                                                                    "xtype": "JsonReader",
+                                                                    "|xns": "Roo.data",
+                                                                    "id": "id",
+                                                                    "root": "data",
+                                                                    "totalProperty": "total",
+                                                                    "|fields": "[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"etype\",\"type\":\"string\"}]"
+                                                                }
+                                                            ]
+                                                        }
+                                                    ]
                                                 }
                                             ]
                                         }
                                 },
                                 {
                                     "*prop": "colModel[]",
-                                    "dataIndex": "dtend",
-                                    "header": "Until",
+                                    "dataIndex": "dtstart",
+                                    "header": "From",
                                     "width": 75,
                                     "xtype": "ColumnModel",
                                     "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
                                 },
                                 {
                                     "*prop": "colModel[]",
-                                    "dataIndex": "freq",
-                                    "header": "Frequency",
-                                    "width": 70,
+                                    "dataIndex": "dtend",
+                                    "header": "Until",
+                                    "width": 75,
                                     "xtype": "ColumnModel",
-                                    "|renderer": "function(v,x,r) { \n\n    Roo.log(this);\n    var cm = _this.grid.colModel;\n    var ix = cm.findColumnIndex('freq');\n    var ce = cm.getCellEditor(ix)\n    var matches = ce.field.store.query('code',v);\n    if (!matches.length) {\n        return '';\n    }\n    return String.format('{0}', matches.first().data.title);\n }",
+                                    "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
                                     "|xns": "Roo.grid",
                                     "items": [
                                         {
                                             "*prop": "editor",
                                             "items": [
                                                 {
-                                                    "*prop": "field",
-                                                    "allowBlank": false,
-                                                    "displayField": "title",
-                                                    "editable": false,
-                                                    "fieldLabel": "Country",
-                                                    "hiddenName": "freq",
-                                                    "listWidth": 200,
-                                                    "mode": "local",
-                                                    "name": "freq_name",
-                                                    "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{title}</b> </div>",
-                                                    "triggerAction": "all",
-                                                    "valueField": "code",
-                                                    "width": 200,
-                                                    "xtype": "ComboBox",
                                                     "|xns": "Roo.form",
-                                                    "items": [
-                                                        {
-                                                            "*prop": "store",
-                                                            "xtype": "SimpleStore",
-                                                            "|data": "[ \n    [ 'HOURLY' , 'Hourly at' ] ,\n       [ 'DAILY' , 'Daily at'] ,\n        [ 'WEEKLY' , 'Weekly at'] ,\n         [ 'Montly' , 'Montly at'] \n]",
-                                                            "|fields": "['code', 'title']",
-                                                            "|sortInfo": "{ field : 'title', direction: 'ASC' }",
-                                                            "|xns": "Roo.data"
-                                                        }
-                                                    ]
+                                                    "xtype": "DateField",
+                                                    "*prop": "field"
                                                 }
                                             ]
                                         }
                                     "header": "on day(s)",
                                     "width": 100,
                                     "xtype": "ColumnModel",
-                                    "|renderer": "function(v,x,r) { \n    \n    return String.format('{0}', r.data.freq_day_name || v); \n    \n}",
+                                    "|renderer": "function(v,x,r) { \n    \n    if (v.length) {\n     \n        var cm = _this.grid.colModel;\n       \n        var ci = cm.getColumnByDataIndex(this.name);\n       \n         var tv = [];\n        var vals = Roo.decode(v);\n        Roo.each(vals, function(k) {\n            var r = this.findRecord(this.valueField, k);\n            if(r){\n                tv.push(r.data[this.displayField]);\n            }else if(this.valueNotFoundText !== undefined){\n                tv.push( this.valueNotFoundText );\n            }\n        },ci.editor.field);\n\n        r.data[this.name + '_name'] = tv.join(', ');\n        return String.format('{0}',tv.join(', '));\n\n        \n    \n    }\n    r.data[this.name + '_name'] = '';\n    return String.format('{0}', r.data.freq_day_name || v); \n    \n}",
                                     "|xns": "Roo.grid",
                                     "items": [
                                         {
                                     "header": "at Hour(s)",
                                     "width": 250,
                                     "xtype": "ColumnModel",
-                                    "|renderer": "function(v,x,r) { \n    \n    return String.format('{0}', r.data.freq_hour_name || v); \n    \n}",
+                                    "|renderer": "function(v,x,r) { \n    \n \n    if (v.length) {\n     \n        var cm = _this.grid.colModel;\n       \n        var ci = cm.getColumnByDataIndex(this.name);\n       \n         var tv = [];\n        var vals = Roo.decode(v);\n        Roo.each(vals, function(k) {\n            var r = this.findRecord(this.valueField, k);\n            if(r){\n                tv.push(r.data[this.displayField]);\n            }else if(this.valueNotFoundText !== undefined){\n                tv.push( this.valueNotFoundText );\n            }\n        },ci.editor.field);\n\n         r.data[this.name + '_name'] = tv.join(', ');\n        return String.format('{0}',tv.join(', '));\n\n        \n    \n    }\n        r.data[this.name + '_name'] = '';\n    return String.format('{0}', r.data.freq_hour_name || v); \n    \n}",
                                     "|xns": "Roo.grid",
                                     "items": [
                                         {
                                                         {
                                                             "*prop": "store",
                                                             "xtype": "SimpleStore",
-                                                            "|data": "(function() { \n    var ret = [];\n    for (var i = 5; i < 25; i++) {\n        var h = i < 10 ? ('0' + i) : i;\n        var mer = i < 12 || i > 23 ? 'am' : 'pm';\n        var dh = i < 13 ? i : i-12;\n        \n        ret.push([ h+':00', dh+':00' + mer ]);\n        ret.push([ h+':00', dh+':30' + mer ]);        \n    }\n    return ret;\n})()",
+                                                            "|data": "(function() { \n    var ret = [];\n    for (var i = 5; i < 25; i++) {\n        var h = i < 10 ? ('0' + i) : i;\n        var mer = i < 12 || i > 23 ? 'am' : 'pm';\n        var dh = i < 13 ? i : i-12;\n        \n        ret.push([ h+':00', dh+':00' + mer ]);\n        ret.push([ h+':30', dh+':30' + mer ]);        \n    }\n    return ret;\n})()",
                                                             "|fields": "['code', 'title']",
                                                             "|sortInfo": "{ field : 'title', direction: 'ASC' }",
                                                             "|xns": "Roo.data"
                                             "*prop": "editor",
                                             "items": [
                                                 {
+                                                    "*prop": "field",
                                                     "allowBlank": "false",
                                                     "displayField": "tz",
                                                     "editable": true,
                                                     "emptyText": "Select timezone",
                                                     "fieldLabel": "core_enum",
                                                     "forceSelection": true,
-                                                    "hiddenName": "tz",
                                                     "listWidth": 400,
                                                     "loadingText": "Searching...",
                                                     "minChars": 2,
-                                                    "name": "tz_name",
+                                                    "name": "tz",
                                                     "pageSize": 999,
                                                     "qtip": "Select timezone",
+                                                    "queryParam": "q",
                                                     "selectOnFocus": true,
                                                     "tpl": "<div class=\"x-grid-cell-text x-btn button\"><b>{tz}</b> </div>",
                                                     "triggerAction": "all",
                                                     "typeAhead": true,
-                                                    "valueField": "tz",
                                                     "width": 300,
                                                     "xtype": "ComboBox",
                                                     "|xns": "Roo.form",
                                                                 },
                                                                 {
                                                                     "*prop": "reader",
-                                                                    "xtype": "JsonReader",
-                                                                    "|xns": "Roo.data",
                                                                     "id": "id",
                                                                     "root": "data",
                                                                     "totalProperty": "total",
-                                                                    "|fields": "[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"etype\",\"type\":\"string\"}]"
+                                                                    "xtype": "JsonReader",
+                                                                    "|fields": "[{\"name\":\"tz\",\"type\":\"string\"}]",
+                                                                    "|xns": "Roo.data"
                                                                 }
                                                             ]
                                                         }
                                     ]
                                 },
                                 {
-                                    "xtype": "ColumnModel",
-                                    "header": "Last event",
-                                    "width": 75,
+                                    "*prop": "colModel[]",
                                     "dataIndex": "last_event_id",
-                                    "|renderer": "function(v) { return String.format('{0}', v); }",
-                                    "|xns": "Roo.grid",
-                                    "*prop": "colModel[]"
+                                    "header": "Last Sent",
+                                    "width": 75,
+                                    "xtype": "ColumnModel",
+                                    "|renderer": "function(v) { return String.format('{0}', v ? v : 'never'); }",
+                                    "|xns": "Roo.grid"
                                 }
                             ]
                         }
                     ]
                 },
                 {
+                    "listeners": {
+                        "click": "function (_self, e)\n{\n    _this.dialog.hide();\n}"
+                    },
                     "*prop": "buttons[]",
                     "text": "Done",
                     "xtype": "Button",