php warnings
[Pman.MTrack] / Pman.Tab.MTrackMilestone.bjs
index 56ef0b0..a91a876 100644 (file)
 {
-    "id": "roo-file-126",
-    "name": "Pman.Tab.MTrackMilestone",
-    "parent": "Pman.Tab.MTrack",
-    "title": "Pman.Tab.MTrackMilestone",
-    "path": "/home/alan/gitlive/Pman.MTrack/Pman.Tab.MTrackMilestone.bjs",
-    "items": [
+ "name" : "Pman.Tab.MTrackMilestone",
+ "parent" : "Pman.Tab.MTrack",
+ "title" : "Pman.Tab.MTrackMilestone",
+ "path" : "/home/alan/gitlive/Pman.MTrack/Pman.Tab.MTrackMilestone.bjs",
+ "permname" : "",
+ "modOrder" : "200",
+ "strings" : {
+  "fa444e1c75f40633fccded45b0870206" : "No mtrack_milestone found",
+  "54e1d44609e3abed11f6e1eb6ae54988" : "Projects",
+  "b8cb81ab43044c454c1e69dbba646b68" : "On-hold",
+  "ec211f7c20af43e742bf2570c3cb84f9" : "Add",
+  "9e727fdd3aec8274f46685441900280d" : "Project",
+  "7dce122004969d56ae2e0245cb754d35" : "Edit",
+  "d5e96f1a04f3dd132b193765eee39b9e" : "Duedate",
+  "c6030af9c753c4081d7ba01420cd0922" : "Displaying mtrack_milestone{0} - {1} of {2}",
+  "1243daf593fa297e07ab03bf06d925af" : "Searching...",
+  "df25de42c84837baf5fa15049a8bc764" : "View:",
+  "5288ef9e03a2b0686856a301272e8e56" : "#Tickets",
+  "24f27bda5dd2c488aa9bc7700ba98c34" : "Select Projects",
+  "0460245609b5dc1fc4e3c72a84f95bb7" : "Startdate",
+  "780c165edced420f2207a4d5983e4bd0" : "Merge With another Milestone",
+  "07ca5050e697392c9ed47e6453f1453f" : "Completed",
+  "4ab658036f4f174205c384b863fed5c2" : "Milestones",
+  "e15e216fc1c639f787b1231ecdfa1bf8" : "HEAD",
+  "f2a6c498fb90ee345d997f888fce3b18" : "Delete",
+  "49ee3087348e8d44e1feda1917443987" : "Name",
+  "b5a7adde1af5c87d7fd797b6245c2a39" : "Description",
+  "db478325306f02298b2980f40223a413" : "#ref"
+ },
+ "named_strings" : {
+  "project_id_name_emptyText" : "24f27bda5dd2c488aa9bc7700ba98c34",
+  "project_id_name_loadingText" : "1243daf593fa297e07ab03bf06d925af",
+  "project_id_name_qtip" : "24f27bda5dd2c488aa9bc7700ba98c34",
+  "project_id_name_fieldLabel" : "54e1d44609e3abed11f6e1eb6ae54988"
+ },
+ "items" : [
+  {
+   "listeners" : {
+    "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
+   },
+   "background" : true,
+   "region" : "center",
+   "fitToframe" : true,
+   "title" : "Milestones",
+   "xtype" : "GridPanel",
+   "fitContainer" : true,
+   "$ xns" : "Roo",
+   "tableName" : "mtrack_milestone",
+   "items" : [
+    {
+     "listeners" : {
+      "|rowdblclick" : "function (_self, rowIndex, e)\n{\n    if (!_this.dialog) { return; }\n    _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {\n        _this.grid.footer.onClick('first');\n    }); \n}\n",
+      "|render" : "function() \n{\n    _this.grid = this; \n     _this.dialog = Pman.Dialog.MTrackMilestone;\n    if (_this.panel.active) {\n       this.footer.onClick('first');\n    }\n}"
+     },
+     "autoExpandColumn" : "description",
+     "xtype" : "Grid",
+     "loadMask" : true,
+     "$ xns" : "Roo.grid",
+     "* prop" : "grid",
+     "items" : [
+      {
+       "listeners" : {
+        "beforeload" : "function (_self, options)\n{\n    options.params._with_active_tickets = 1;\n    if (!_this.viewType) {\n        return false;\n    }\n    options.params._viewtype = _this.viewType.getValue();\n    \n    if (_this.projsel.getValue()) {\n         options.params.project_id = _this.projsel.getValue();\n    }\n    \n    \n}"
+       },
+       "xtype" : "Store",
+       "remoteSort" : true,
+       "$ sortInfo" : "{ field : 'duedate', direction: 'ASC' }",
+       "$ xns" : "Roo.data",
+       "* prop" : "dataSource",
+       "items" : [
         {
-            "|xns": "Roo",
-            "xtype": "GridPanel",
-            "title": "mtrack_milestone",
-            "fitToframe": true,
-            "fitContainer": true,
-            "tableName": "mtrack_milestone",
-            "background": true,
-            "region": "center",
-            "listeners": {
-                "|activate": "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
+         "$ url" : "baseURL + '/Roo/mtrack_milestone.php'",
+         "method" : "GET",
+         "xtype" : "HttpProxy",
+         "$ xns" : "Roo.data",
+         "* prop" : "proxy"
+        },
+        {
+         "id" : "id",
+         "root" : "data",
+         "xtype" : "JsonReader",
+         "$ xns" : "Roo.data",
+         "$ fields" : "[\n    {\n        'name': 'id',\n        'type': 'int'\n    },\n    {\n        'name': 'name',\n        'type': 'string'\n    },\n    {\n        'name': 'description',\n        'type': 'string'\n    },\n    {\n        'name': 'startdate',\n        'type': 'date',\n        'dateFormat': 'Y-m-d'\n    },\n    {\n        'name': 'duedate',\n        'type': 'date',\n        'dateFormat': 'Y-m-d'\n    },\n    {\n        'name': 'completed',\n        'type': 'date',\n        'dateFormat': 'Y-m-d'\n    },\n    {\n        'name': 'deleted',\n        'type': 'int'\n    },\n    {\n        'name': 'created',\n        'type': 'int'\n    },\n    {\n        'name': 'updated',\n        'type': 'int'\n    },\n    {\n        'name': 'project_id',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_id',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_person_id',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_ontable',\n        'type': 'string'\n    },\n    {\n        'name': 'deleted_onid',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_changedate',\n        'type': 'date'\n    },\n    {\n        'name': 'deleted_reason',\n        'type': 'string'\n    },\n    {\n        'name': 'updated_id',\n        'type': 'int'\n    },\n    {\n        'name': 'updated_person_id',\n        'type': 'int'\n    },\n    {\n        'name': 'updated_ontable',\n        'type': 'string'\n    },\n    {\n        'name': 'updated_onid',\n        'type': 'int'\n    },\n    {\n        'name': 'updated_changedate',\n        'type': 'date'\n    },\n    {\n        'name': 'updated_reason',\n        'type': 'string'\n    },\n    {\n        'name': 'created_id',\n        'type': 'int'\n    },\n    {\n        'name': 'created_person_id',\n        'type': 'int'\n    },\n    {\n        'name': 'created_ontable',\n        'type': 'string'\n    },\n    {\n        'name': 'created_onid',\n        'type': 'int'\n    },\n    {\n        'name': 'created_changedate',\n        'type': 'date'\n    },\n    {\n        'name': 'created_reason',\n        'type': 'string'\n    }\n]",
+         "* prop" : "reader",
+         "totalProperty" : "total"
+        }
+       ]
+      },
+      {
+       "pageSize" : 100,
+       "xtype" : "PagingToolbar",
+       "emptyMsg" : "No mtrack_milestone found",
+       "$ xns" : "Roo",
+       "displayInfo" : true,
+       "displayMsg" : "Displaying mtrack_milestone{0} - {1} of {2}",
+       "* prop" : "footer"
+      },
+      {
+       "xtype" : "Toolbar",
+       "$ xns" : "Roo",
+       "* prop" : "toolbar",
+       "items" : [
+        {
+         "text" : "View:",
+         "xtype" : "TextItem",
+         "$ xns" : "Roo.Toolbar"
+        },
+        {
+         "listeners" : {
+          "render" : "function (_self)\n{\n   _this.viewType = this;\n}",
+          "beforeselect" : "function (combo, record, index)\n{\n  (function() { _this.grid.footer.onClick('first'); }).defer(100);\n}"
+         },
+         "listWidth" : 200,
+         "triggerAction" : "all",
+         "forceSelection" : true,
+         "displayField" : "val",
+         "hiddenName" : "currency",
+         "value" : "HEAD",
+         "valueField" : "key",
+         "xtype" : "ComboBox",
+         "allowBlank" : false,
+         "editable" : false,
+         "width" : 150,
+         "$ xns" : "Roo.form",
+         "items" : [
+          {
+           "xtype" : "SimpleStore",
+           "$ data" : "[ \n  [ 'HEAD', 'Head Milestones' ],\n  [ 'ACTIVE', 'Active Milestones' ],\n  [ 'ALL', 'All Milestones' ]\n  ]",
+           "$ fields" : "[ 'key' , 'val' ]",
+           "$ xns" : "Roo.data",
+           "* prop" : "store"
+          }
+         ]
+        },
+        {
+         "listeners" : {
+          "render" : "function (_self)\n{\n   _this.projsel = _self;\n}",
+          "beforeselect" : "function (combo, record, index)\n{\n  (function() { _this.grid.footer.onClick('first')}).defer(100);\n}"
+         },
+         "listWidth" : 400,
+         "triggerAction" : "all",
+         "fieldLabel" : "Projects",
+         "forceSelection" : true,
+         "selectOnFocus" : true,
+         "pageSize" : 50,
+         "displayField" : "name",
+         "emptyText" : "Select Projects",
+         "hiddenName" : "project_id",
+         "minChars" : 2,
+         "valueField" : "id",
+         "xtype" : "ComboBox",
+         "allowBlank" : false,
+         "typeAhead" : true,
+         "editable" : false,
+         "width" : 200,
+         "$ xns" : "Roo.form",
+         "name" : "project_id_name",
+         "qtip" : "Select Projects",
+         "queryParam" : "",
+         "tpl" : "<div class=\"x-grid-cell-text x-btn button\"><b>{code}</b> {name}</div>",
+         "loadingText" : "Searching...",
+         "items" : [
+          {
+           "listeners" : {
+            "|beforeload" : "function (_self, o){\n    o.params = o.params || {};\n    // set more here\n}\n"
+           },
+           "xtype" : "Store",
+           "remoteSort" : true,
+           "$ sortInfo" : "{ direction : 'ASC', field: 'code' }",
+           "$ xns" : "Roo.data",
+           "* prop" : "store",
+           "items" : [
+            {
+             "$ url" : "baseURL + '/Roo/Projects.php'",
+             "method" : "GET",
+             "xtype" : "HttpProxy",
+             "$ xns" : "Roo.data",
+             "* prop" : "proxy"
             },
-            "items": [
-                {
-                    "*prop": "grid",
-                    "xtype": "Grid",
-                    "autoExpandColumn": "name",
-                    "loadMask": true,
-                    "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}",
-                        "|rowdblclick": "function (_self, rowIndex, e)\n{\n    if (!_this.dialog) return;\n    _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {\n        _this.grid.footer.onClick('first');\n    }); \n}\n"
-                    },
-                    "|xns": "Roo.grid",
-                    "items": [
-                        {
-                            "*prop": "dataSource",
-                            "xtype": "Store",
-                            "remoteSort": true,
-                            "|sortInfo": "{ field : 'name', direction: 'ASC' }",
-                            "|xns": "Roo.data",
-                            "items": [
-                                {
-                                    "*prop": "proxy",
-                                    "xtype": "HttpProxy",
-                                    "method": "GET",
-                                    "|url": "baseURL + '/Roo/mtrack_milestone.php'",
-                                    "|xns": "Roo.data"
-                                },
-                                {
-                                    "|xns": "Roo.data",
-                                    "xtype": "JsonReader",
-                                    "totalProperty": "total",
-                                    "root": "data",
-                                    "*prop": "reader",
-                                    "id": "id",
-                                    "|fields": "[\n    {\n        'name': 'id',\n        'type': 'int'\n    },\n    {\n        'name': 'name',\n        'type': 'string'\n    },\n    {\n        'name': 'description',\n        'type': 'string'\n    },\n    {\n        'name': 'startdate',\n        'type': 'date',\n        'dateFormat': 'Y-m-d'\n    },\n    {\n        'name': 'duedate',\n        'type': 'date',\n        'dateFormat': 'Y-m-d'\n    },\n    {\n        'name': 'completed',\n        'type': 'date',\n        'dateFormat': 'Y-m-d'\n    },\n    {\n        'name': 'deleted',\n        'type': 'int'\n    },\n    {\n        'name': 'created',\n        'type': 'int'\n    },\n    {\n        'name': 'updated',\n        'type': 'int'\n    },\n    {\n        'name': 'project_id',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_id',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_person_id',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_ontable',\n        'type': 'string'\n    },\n    {\n        'name': 'deleted_onid',\n        'type': 'int'\n    },\n    {\n        'name': 'deleted_changedate',\n        'type': 'date'\n    },\n    {\n        'name': 'deleted_reason',\n        'type': 'string'\n    },\n    {\n        'name': 'updated_id',\n        'type': 'int'\n    },\n    {\n        'name': 'updated_person_id',\n        'type': 'int'\n    },\n    {\n        'name': 'updated_ontable',\n        'type': 'string'\n    },\n    {\n        'name': 'updated_onid',\n        'type': 'int'\n    },\n    {\n        'name': 'updated_changedate',\n        'type': 'date'\n    },\n    {\n        'name': 'updated_reason',\n        'type': 'string'\n    },\n    {\n        'name': 'created_id',\n        'type': 'int'\n    },\n    {\n        'name': 'created_person_id',\n        'type': 'int'\n    },\n    {\n        'name': 'created_ontable',\n        'type': 'string'\n    },\n    {\n        'name': 'created_onid',\n        'type': 'int'\n    },\n    {\n        'name': 'created_changedate',\n        'type': 'date'\n    },\n    {\n        'name': 'created_reason',\n        'type': 'string'\n    }\n]"
-                                }
-                            ]
-                        },
-                        {
-                            "*prop": "footer",
-                            "xtype": "PagingToolbar",
-                            "pageSize": 25,
-                            "displayInfo": true,
-                            "displayMsg": "Displaying mtrack_milestone{0} - {1} of {2}",
-                            "emptyMsg": "No mtrack_milestone found",
-                            "|xns": "Roo"
-                        },
-                        {
-                            "*prop": "toolbar",
-                            "xtype": "Toolbar",
-                            "|xns": "Roo",
-                            "items": [
-                                {
-                                    "text": "Add",
-                                    "xtype": "Button",
-                                    "cls": "x-btn-text-icon",
-                                    "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
-                                    "listeners": {
-                                        "|click": "function()\n{\n    if (!_this.dialog) return;\n    _this.dialog.show( { id : 0 } , function() {\n        _this.grid.footer.onClick('first');\n   }); \n}\n"
-                                    },
-                                    "|xns": "Roo.Toolbar"
-                                },
-                                {
-                                    "text": "Edit",
-                                    "xtype": "Button",
-                                    "cls": "x-btn-text-icon",
-                                    "|icon": "Roo.rootURL + 'images/default/tree/leaf.gif'",
-                                    "listeners": {
-                                        "|click": "function()\n{\n    var s = _this.grid.getSelectionModel().getSelections();\n    if (!s.length || (s.length > 1))  {\n        Roo.MessageBox.alert(\"Error\", s.length ? \"Select only one Row\" : \"Select a Row\");\n        return;\n    }\n    if (!_this.dialog) return;\n    _this.dialog.show(s[0].data, function() {\n        _this.grid.footer.onClick('first');\n    }); \n    \n}\n"
-                                    },
-                                    "|xns": "Roo.Toolbar"
-                                },
-                                {
-                                    "text": "Delete",
-                                    "cls": "x-btn-text-icon",
-                                    "|icon": "rootURL + '/Pman/templates/images/trash.gif'",
-                                    "xtype": "Button",
-                                    "listeners": {
-                                        "|click": "function()\n{\n     Pman.genericDelete(_this, 'mtrack_milestone'); \n}\n        "
-                                    },
-                                    "|xns": "Roo.Toolbar"
-                                }
-                            ]
-                        },
-                        {
-                            "xtype": "ColumnModel",
-                            "header": "Id",
-                            "width": 75,
-                            "dataIndex": "id",
-                            "|renderer": "function(v) { return String.format('{0}', v); }",
-                            "|xns": "Roo.grid",
-                            "*prop": "colModel[]"
-                        },
-                        {
-                            "*prop": "colModel[]",
-                            "dataIndex": "project_id_name",
-                            "header": "Project",
-                            "width": 75,
-                            "xtype": "ColumnModel",
-                            "|renderer": "function(v) { return String.format('{0}', v); }",
-                            "|xns": "Roo.grid"
-                        },
-                        {
-                            "xtype": "ColumnModel",
-                            "header": "Name",
-                            "width": 200,
-                            "dataIndex": "name",
-                            "|renderer": "function(v) { return String.format('{0}', v); }",
-                            "|xns": "Roo.grid",
-                            "*prop": "colModel[]"
-                        },
-                        {
-                            "xtype": "ColumnModel",
-                            "header": "Description",
-                            "width": 200,
-                            "dataIndex": "description",
-                            "|renderer": "function(v) { return String.format('{0}', v); }",
-                            "|xns": "Roo.grid",
-                            "*prop": "colModel[]"
-                        },
-                        {
-                            "xtype": "ColumnModel",
-                            "header": "Startdate",
-                            "width": 75,
-                            "dataIndex": "startdate",
-                            "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
-                            "|xns": "Roo.grid",
-                            "*prop": "colModel[]"
-                        },
-                        {
-                            "xtype": "ColumnModel",
-                            "header": "Duedate",
-                            "width": 75,
-                            "dataIndex": "duedate",
-                            "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
-                            "|xns": "Roo.grid",
-                            "*prop": "colModel[]"
-                        },
-                        {
-                            "xtype": "ColumnModel",
-                            "header": "Completed",
-                            "width": 75,
-                            "dataIndex": "completed",
-                            "|renderer": "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
-                            "|xns": "Roo.grid",
-                            "*prop": "colModel[]"
-                        }
-                    ]
-                }
-            ]
+            {
+             "id" : "id",
+             "root" : "data",
+             "xtype" : "JsonReader",
+             "$ xns" : "Roo.data",
+             "$ fields" : "[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"name\",\"type\":\"string\"}]",
+             "* prop" : "reader",
+             "totalProperty" : "total"
+            }
+           ]
+          }
+         ]
+        },
+        {
+         "xtype" : "Fill",
+         "$ xns" : "Roo.Toolbar"
+        },
+        {
+         "listeners" : {
+          "|click" : "function()\n{\nif (!_this.dialog) { return; }\n    _this.dialog.show( { id : 0 } , function() {\n        _this.grid.footer.onClick('first');\n   }); \n}\n"
+         },
+         "text" : "Add",
+         "xtype" : "Button",
+         "cls" : "x-btn-text-icon",
+         "$ icon" : "Roo.rootURL + 'images/default/dd/drop-add.gif'",
+         "$ xns" : "Roo.Toolbar"
+        },
+        {
+         "listeners" : {
+          "|click" : "function()\n{\n    var s = _this.grid.getSelectionModel().getSelections();\n    if (!s.length || (s.length > 1))  {\n        Roo.MessageBox.alert(\"Error\", s.length ? \"Select only one Row\" : \"Select a Row\");\n        return;\n    }\n    if (!_this.dialog) { return; }\n    _this.dialog.show(s[0].data, function() {\n        _this.grid.footer.onClick('first');\n    }); \n    \n}\n"
+         },
+         "text" : "Edit",
+         "xtype" : "Button",
+         "cls" : "x-btn-text-icon",
+         "$ icon" : "Roo.rootURL + 'images/default/tree/leaf.gif'",
+         "$ xns" : "Roo.Toolbar"
+        },
+        {
+         "listeners" : {
+          "|click" : "function()\n{\n    var s = _this.grid.getSelectionModel().getSelections();\n    if (!s.length || (s.length > 1))  {\n        Roo.MessageBox.alert(\"Error\", s.length ? \"Select only one Row\" : \"Select a Row\");\n        return;\n    }\n      \n    Pman.Dialog.MTrackMilestoneMerge.show(s[0].data, function() {\n        Pman.genericDelete(_this, 'mtrack_milestone'); \n    }); \n    \n} \n"
+         },
+         "text" : "Merge With another Milestone",
+         "xtype" : "Button",
+         "cls" : "x-btn-text-icon",
+         "$ icon" : "Roo.rootURL + 'images/default/tree/leaf.gif'",
+         "$ xns" : "Roo.Toolbar"
+        },
+        {
+         "listeners" : {
+          "|click" : "function()\n        {\n        Pman.genericDelete(_this, 'mtrack_milestone'); \n        }\n        "
+         },
+         "text" : "Delete",
+         "xtype" : "Button",
+         "cls" : "x-btn-text-icon",
+         "$ icon" : "rootURL + '/Pman/templates/images/trash.gif'",
+         "$ xns" : "Roo.Toolbar"
         }
-    ],
-    "permname": "",
-    "modOrder": "200"
+       ]
+      },
+      {
+       "xtype" : "ColumnModel",
+       "width" : 50,
+       "header" : "#ref",
+       "$ renderer" : "function(v) { return String.format('{0}', v); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "id"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "sortable" : true,
+       "header" : "Project",
+       "width" : 150,
+       "$ renderer" : "function(v) { return String.format('{0}', v); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "project_id_name"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "header" : "#Tickets",
+       "width" : 50,
+       "$ renderer" : "function(v) { return String.format('{0}', v); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "active_tickets"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "width" : 200,
+       "header" : "Name",
+       "$ renderer" : "function(v) { return String.format('{0}', v); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "name"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "width" : 200,
+       "header" : "Description",
+       "$ renderer" : "function(v) { return String.format('{0}', v); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "description"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "sortable" : true,
+       "header" : "Startdate",
+       "width" : 75,
+       "$ renderer" : "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "startdate"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "width" : 75,
+       "header" : "Duedate",
+       "$ renderer" : "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "duedate"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "header" : "On-hold",
+       "width" : 75,
+       "$ renderer" : "function(v) { return String.format('{0}', v ? 'HOLD' : '' ); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "on_hold"
+      },
+      {
+       "xtype" : "ColumnModel",
+       "width" : 75,
+       "header" : "Completed",
+       "$ renderer" : "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }",
+       "$ xns" : "Roo.grid",
+       "* prop" : "colModel[]",
+       "dataIndex" : "completed"
+      }
+     ]
+    }
+   ]
+  }
+ ]
 }
\ No newline at end of file