{
- "id": "roo-file-245",
- "name": "Pman.Tab.MTrackTimeline",
- "parent": "Pman.Tab.DocumentsTab",
- "title": "",
- "path": "/home/alan/gitlive/Pman.MTrack/Pman.Tab.MTrackTimeline.bjs",
- "items": [
+ "name" : "Pman.Tab.MTrackTimeline",
+ "parent" : "Pman.Tab.DocumentsTab",
+ "title" : "",
+ "path" : "/home/alan/gitlive/Pman.MTrack/Pman.Tab.MTrackTimeline.bjs",
+ "permname" : "",
+ "modOrder" : "300",
+ "strings" : {
+ "9a9984a2dd014cc958919b73e2a1f33a" : "Project Timeline",
+ "87f9f735a1d36793ceaecd4e47124b63" : "Events",
+ "9e727fdd3aec8274f46685441900280d" : "Project",
+ "4ee972120bcda675f75222c87cb9d356" : "Who",
+ "3d1f92a565d3b1a61880236e33c49bf3" : "Timeline",
+ "c112bb3542e98308d12d5ecb10a67abc" : "Changes",
+ "e77ec81408c215410441b24d83ef5bec" : "Repos",
+ "ff5572e3fac2fd20b897cebfdf14e9d5" : "Code Changes",
+ "6c099dca310fcc4e75f7cc0d01e5afe1" : "Select a date to refresh.."
+ },
+ "items" : [
+ {
+ "listeners" : {
+ "activate" : "function (_self)\n{\n // navigation..\n // a) record the fact we go here.. (for history)\n \n // when page loads, we have to go to this page..\n \n // at other times, we just check \n // a) project was the same as before... - do not change.\n // b) \n _this.project = _this.project || 0;\n \n \n if (typeof(MTrackWeb) != 'undefined' && !MTrackWeb.Layout) {\n return;\n }\n \n if (typeof(Pman.Tab.DocumentsTab) == 'undefined') {\n return;\n }\n /*\n if (!_this.iscroll) { \n \n (function() {\n \n try {\n _this.iscroll = new Roo.ux.Iscroll(_this.tpanel.el.dom);\n } catch(e) { \n Roo.log(e);\n }\n }).defer(100); \n\n }\n _this.iscroll = true; \n \n */\n var chg_project = (_this.project != Pman.Tab.DocumentsTab.panel.getProjectId());\n \n _this.project = Pman.Tab.DocumentsTab.panel.getProjectId();\n \n if (typeof(MTrackWeb) == 'undefined') {\n return;\n }\n try { \n window.history.pushState( { url: '/Timeline' }, 'Timeline' , baseURL + '/Timeline' );\n } catch (e) {}\n \n MTrack.currentURL = '/Timeline';\n if (chg_project) {\n (function() {\n _this.grid.ds.load({});\n //_this.tpanel.view.store.load({});\n }).defer(100);\n }\n \n \n}"
+ },
+ "fitToFrame" : true,
+ "background" : true,
+ "region" : "center",
+ "title" : "Project Timeline",
+ "xtype" : "NestedLayoutPanel",
+ "fitContainer" : true,
+ "$ xns" : "Roo",
+ "items" : [
+ {
+ "xtype" : "BorderLayout",
+ "$ xns" : "Roo",
+ "* prop" : "layout",
+ "items" : [
+ {
+ "xtype" : "LayoutRegion",
+ "tabPosition" : "top",
+ "$ xns" : "Roo",
+ "* prop" : "center"
+ },
+ {
+ "xtype" : "LayoutRegion",
+ "width" : 250,
+ "$ xns" : "Roo",
+ "* prop" : "west"
+ },
+ {
+ "listeners" : {
+ "activate" : "function (_self)\n{\n \n}",
+ "render" : "function (_self)\n{\n _this.commitpanel = _self;\n}"
+ },
+ "autoScroll" : true,
+ "region" : "center",
+ "fitToFrame" : true,
+ "title" : "Code Changes",
+ "xtype" : "ContentPanel",
+ "$ xns" : "Roo",
+ "items" : [
{
- "listeners": {
- "activate": "function (_self)\n{\n // navigation..\n // a) record the fact we go here.. (for history)\n \n // when page loads, we have to go to this page..\n \n // at other times, we just check \n // a) project was the same as before... - do not change.\n // b) \n _this.project = _this.project || 0;\n \n \n if (typeof(MTrackWeb) != 'undefined' && !MTrackWeb.Layout) {\n return;\n }\n \n if (typeof(Pman.Tab.DocumentsTab) == 'undefined') {\n return;\n }\n /*\n if (!_this.iscroll) { \n \n (function() {\n \n try {\n _this.iscroll = new Roo.ux.Iscroll(_this.tpanel.el.dom);\n } catch(e) { \n Roo.log(e);\n }\n }).defer(100); \n\n }\n _this.iscroll = true; \n \n */\n var chg_project = (_this.project != Pman.Tab.DocumentsTab.panel.getProjectId());\n \n _this.project = Pman.Tab.DocumentsTab.panel.getProjectId();\n \n if (typeof(MTrackWeb) == 'undefined') {\n return;\n }\n try { \n window.history.pushState( { url: '/Timeline' }, 'Timeline' , baseURL + '/Timeline' );\n } catch (e) {}\n \n MTrack.currentURL = '/Timeline';\n if (chg_project) {\n (function() {\n _this.grid.ds.load({});\n //_this.tpanel.view.store.load({});\n }).defer(100);\n }\n \n \n}"
+ "listeners" : {
+ "preparedata" : "function (_self, data, i, rec)\n{\n Roo.apply(data, rec.json);\n}"
+ },
+ "$ tpl" : "new Roo.DomTemplate({url : rootURL +'/Pman/MTrack/domtemplates/dailychanges.html'})",
+ "xtype" : "View",
+ "$ xns" : "Roo",
+ "* prop" : "view",
+ "items" : [
+ {
+ "listeners" : {
+ "beforeload" : "function (_self, o)\n{\n o.params = o.params || {};\n o.params._daychanges = _this.datePicker.activeDate.format(\"Y-m-d\");\n var re = _this.grid.selModel.getSelected();\n if (!re) {\n return false;\n }\n o.params.id = re.data.repo_id;\n}"
+ },
+ "xtype" : "Store",
+ "$ xns" : "Roo.data",
+ "* prop" : "store",
+ "items" : [
+ {
+ "$ url" : "baseURL + '/Roo/mtrack_repos'",
+ "method" : "GET",
+ "xtype" : "HttpProxy",
+ "timeout" : 60000,
+ "$ xns" : "Roo.data",
+ "* prop" : "proxy"
},
- "background": true,
- "fitContainer": true,
- "fitToFrame": true,
- "region": "center",
- "title": "Project Timeline",
- "xtype": "NestedLayoutPanel",
- "|xns": "Roo",
- "items": [
+ {
+ "id" : "id",
+ "root" : "data",
+ "xtype" : "JsonReader",
+ "$ fields" : "[\n {\n 'name': 'id',\n 'type': 'int'\n },\n 'name'\n]",
+ "$ xns" : "Roo.data",
+ "* prop" : "reader"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "listeners" : {
+ "activate" : "function (_self)\n{\n _this.tpanel = _self;\n}"
+ },
+ "autoScroll" : true,
+ "background" : true,
+ "fitToFrame" : true,
+ "region" : "center",
+ "title" : "Timeline",
+ "xtype" : "ContentPanel",
+ "fitContainer" : true,
+ "$ xns" : "Roo",
+ "$ mload" : "function(url) {\n\n // can you actually link to this page..\n // perhaps a specific day..\n\n this._url = url;\n // this._project = MTrack.projectCombo.getValue();\n // MTrack.ajaxLoad(url, this);\n _this.grid.ds.load({});\n \n}\n",
+ "items" : [
+ {
+ "xtype" : "Toolbar",
+ "$ xns" : "Roo",
+ "* prop" : "toolbar",
+ "items" : [
+ {
+ "text" : "Select a date to refresh..",
+ "xtype" : "Button",
+ "$ xns" : "Roo.Toolbar"
+ }
+ ]
+ },
+ {
+ "listeners" : {
+ "beforeclick" : "function (_self, index, node, e)\n{\n Roo.log(node);\n Roo.log(e);\n}",
+ "beforeselect" : "function (_self, node, selections)\n{\n //Roo.log(node)\n //Roo.log(this.indexOf(node));\n var rec = this.store.getAt(this.indexOf(node));\n //Roo.log(data);\n \n new Pman.Request({\n url : baseURL + '/Roo/mtrack_change',\n method :'GET',\n params : {\n _id : rec.data.id,\n _withdiff : 1\n },\n success : function (res) {\n \n //.. this.tpl.\n //Roo.log( _this.tpanel.view.chgtmp.apply(res));\n \n \n }\n });\n \n \n \n \n}"
+ },
+ "selectedClass" : "change-log-item-expanded",
+ "multiSelect" : true,
+ "xtype" : "View",
+ "toggleSelect" : true,
+ "singleSelect" : false,
+ "$ xns" : "Roo",
+ "items" : [
+ {
+ "$ url" : "rootURL + '/Pman/MTrack/templates/timeline.html'",
+ "xtype" : "XTemplate",
+ "$ xns" : "Roo",
+ "* prop" : "tpl"
+ },
+ {
+ "listeners" : {
+ "beforeload" : "function (_self, o)\n{\n o = o || {};\n o.params = o.params || {};\n \n var sel = _this.grid.selModel.getSelected();\n if (!sel) {\n return false;\n }\n \n \n o.params.from_date =_this.datePicker.activeDate.format(\"Y-m-d\");\n o.params.person_id = sel.data.person_id;\n // o.params.viewtype = 'summary'; \n o.params.timeline = 1;\n // project?\n o.params.project_id = sel.data.project_id;\n o.params.limit = 9999;\n}"
+ },
+ "xtype" : "Store",
+ "remoteSort" : true,
+ "$ sortInfo" : "{ field : 'person_name', direction: 'ASC' }",
+ "$ xns" : "Roo.data",
+ "* prop" : "store",
+ "items" : [
+ {
+ "$ url" : "baseURL + '/Roo/mtrack_change.php'",
+ "xtype" : "HttpProxy",
+ "method" : "GET",
+ "$ xns" : "Roo.data",
+ "* prop" : "proxy"
+ },
+ {
+ "id" : "id",
+ "root" : "data",
+ "xtype" : "JsonReader",
+ "$ fields" : "[\n {\n 'name': 'person_id',\n 'type': 'int'\n },\n {\n 'name': 'person_name',\n 'type': 'string'\n },\n {\n 'name': 'changeday',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'nchanges',\n 'type': 'int'\n },\n 'project_code',\n 'project_id'\n \n\n]",
+ "$ xns" : "Roo.data",
+ "* prop" : "reader",
+ "totalProperty" : "total"
+ }
+ ]
+ },
+ {
+ "$ url" : "rootURL + '/Pman/MTrack/templates/timeline-changelog.html'",
+ "xtype" : "XTemplate",
+ "$ xns" : "Roo",
+ "* prop" : "chgtpl"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "region" : "west",
+ "xtype" : "NestedLayoutPanel",
+ "$ xns" : "Roo",
+ "items" : [
+ {
+ "xtype" : "BorderLayout",
+ "$ xns" : "Roo",
+ "* prop" : "layout",
+ "items" : [
+ {
+ "xtype" : "LayoutRegion",
+ "$ xns" : "Roo",
+ "* prop" : "center"
+ },
+ {
+ "xtype" : "LayoutRegion",
+ "$ xns" : "Roo",
+ "* prop" : "north",
+ "height" : 220
+ },
+ {
+ "listeners" : {
+ "|activate" : "function() {\n _this.gridpanel = this;\n\n}"
+ },
+ "autoScroll" : true,
+ "background" : false,
+ "fitToframe" : true,
+ "region" : "center",
+ "title" : "Events",
+ "xtype" : "GridPanel",
+ "fitContainer" : true,
+ "$ xns" : "Roo",
+ "tableName" : "Events",
+ "items" : [
+ {
+ "listeners" : {
+ "|render" : "function() \n{\n _this.grid = this; \n //_this.dialog = Pman.Dialog.FILL_IN\n this.dataSource.load({});\n\n}"
+ },
+ "autoExpandColumn" : "person_id_name",
+ "xtype" : "Grid",
+ "loadMask" : true,
+ "$ xns" : "Roo.grid",
+ "* prop" : "grid",
+ "items" : [
+ {
+ "listeners" : {
+ "afterselectionchange" : "function (_self)\n{\n // select the data..\n \n var r= _this.grid.sm.getSelected();\n \n \n //_this.datePicker.setValue(r.data.changeday);\n //\n _this.commitpanel.view.store.load({});\n // _this.tpanel.view.store.load({});\n \n} "
+ },
+ "xtype" : "RowSelectionModel",
+ "singleSelect" : true,
+ "$ xns" : "Roo.grid",
+ "* prop" : "sm"
+ },
+ {
+ "listeners" : {
+ "beforeload" : "function (_self, o)\n{\n o = o || {};\n o.params = o.params || {};\n \n if (!_this.datePicker || !_this.datePicker.getValue) {\n return false;\n }\n o.params.on_date = _this.datePicker.activeDate.format(\"Y-m-d\");\n o.params.viewtype = 'summary'; \n o.params.timeline = 1;\n // project?\n o.params.project_id = Pman.Tab.DocumentsTab ? \n Pman.Tab.DocumentsTab.panel.getProjectId() : 0;\n}"
+ },
+ "xtype" : "Store",
+ "remoteSort" : true,
+ "$ sortInfo" : "{ field : 'person_name', direction: 'ASC' }",
+ "$ xns" : "Roo.data",
+ "* prop" : "dataSource",
+ "items" : [
+ {
+ "$ url" : "baseURL + '/Roo/mtrack_change.php'",
+ "xtype" : "HttpProxy",
+ "method" : "GET",
+ "$ xns" : "Roo.data",
+ "* prop" : "proxy"
+ },
{
- "|xns": "Roo",
- "xtype": "BorderLayout",
- "*prop": "layout",
- "items": [
- {
- "*prop": "center",
- "tabPosition": "top",
- "xtype": "LayoutRegion",
- "|xns": "Roo"
- },
- {
- "*prop": "west",
- "width": 250,
- "xtype": "LayoutRegion",
- "|xns": "Roo"
- },
- {
- "listeners": {
- "activate": "function (_self)\n{\n this.load({\n method : 'GET',\n url : baseURL + '',\n params : {\n \n }\n });\n}"
- },
- "region": "center",
- "title": "Code Changes",
- "xtype": "ContentPanel",
- "|xns": "Roo"
- },
- {
- "listeners": {
- "activate": "function (_self)\n{\n \n \n \n \n}",
- "render": "function (_self)\n{\n _this.cpanel = _self;\n}"
- },
- "region": "center",
- "title": "Commits",
- "xtype": "ContentPanel",
- "|xns": "Roo",
- "items": [
- {
- "listeners": {
- "preparedata": "function (_self, data, i, rec)\n{\n Roo.apply(data, rec.json);\n}"
- },
- "*prop": "view",
- "xtype": "View",
- "|tpl": "new Roo.DomTemplate({url : rootURL +'/Pman/MTrack/domtemplates/dailychanges.html'})",
- "|xns": "Roo",
- "items": [
- {
- "listeners": {
- "beforeload": "function (_self, o)\n{\n o.params = o.params || {};\n o.params._daychanges = _this.dateField.getValue().format('Y-m-d') ;\n var re = _this.repogrid.selModel.getSelected();\n if (!re) {\n return;\n }\n o.params.id = re.data.id;\n}"
- },
- "*prop": "store",
- "xtype": "Store",
- "|xns": "Roo.data",
- "items": [
- {
- "*prop": "proxy",
- "method": "GET",
- "xtype": "HttpProxy",
- "|url": "baseURL + '/Roo/Mtrack_repos'",
- "|xns": "Roo.data"
- },
- {
- "|fields": "[\n {\n 'name': 'id',\n 'type': 'int'\n },\n 'name'\n]",
- "*prop": "reader",
- "id": "id",
- "root": "data",
- "xtype": "JsonReader",
- "|xns": "Roo.data"
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "listeners": {
- "activate": "function (_self)\n{\n _this.tpanel = _self;\n}"
- },
- "autoScroll": true,
- "background": true,
- "fitContainer": true,
- "fitToFrame": true,
- "region": "center",
- "title": "Timeline",
- "xtype": "ContentPanel",
- "|mload": "function(url) {\n\n // can you actually link to this page..\n // perhaps a specific day..\n\n this._url = url;\n // this._project = MTrack.projectCombo.getValue();\n // MTrack.ajaxLoad(url, this);\n _this.grid.ds.load({});\n \n}\n",
- "|xns": "Roo",
- "items": [
- {
- "|xns": "Roo",
- "xtype": "Toolbar",
- "*prop": "toolbar",
- "items": [
- {
- "text": "Select a date to refresh..",
- "xtype": "Button",
- "|xns": "Roo.Toolbar"
- }
- ]
- },
- {
- "listeners": {
- "beforeselect": "function (_self, node, selections)\n{\n //Roo.log(node)\n //Roo.log(this.indexOf(node));\n var rec = this.store.getAt(this.indexOf(node));\n //Roo.log(data);\n \n new Pman.Request({\n url : baseURL + '/Roo/mtrack_change',\n method :'GET',\n params : {\n _id : rec.data.id,\n _withdiff : 1\n },\n success : function (res) {\n \n //.. this.tpl.\n //Roo.log( _this.tpanel.view.chgtmp.apply(res));\n \n \n }\n });\n \n \n \n \n}",
- "beforeclick": "function (_self, index, node, e)\n{\n Roo.log(node);\n Roo.log(e);\n}"
- },
- "multiSelect": true,
- "selectedClass": "change-log-item-expanded",
- "singleSelect": false,
- "toggleSelect": true,
- "xtype": "View",
- "|xns": "Roo",
- "items": [
- {
- "*prop": "tpl",
- "xtype": "XTemplate",
- "|url": "rootURL + '/Pman/MTrack/templates/timeline.html'",
- "|xns": "Roo"
- },
- {
- "listeners": {
- "beforeload": "function (_self, o)\n{\n o = o || {};\n o.params = o.params || {};\n \n var sel = _this.grid.selModel.getSelected();\n if (!sel) {\n return false;\n }\n \n \n o.params.from_date =_this.datePicker.activeDate.format(\"Y-m-d\");\n o.params.person_id = sel.data.person_id;\n // o.params.viewtype = 'summary'; \n o.params.timeline = 1;\n // project?\n o.params.project_id = sel.data.project_id;\n o.params.limit = 9999;\n}"
- },
- "*prop": "store",
- "remoteSort": true,
- "xtype": "Store",
- "|sortInfo": "{ field : 'person_name', direction: 'ASC' }",
- "|xns": "Roo.data",
- "items": [
- {
- "*prop": "proxy",
- "method": "GET",
- "xtype": "HttpProxy",
- "|url": "baseURL + '/Roo/mtrack_change.php'",
- "|xns": "Roo.data"
- },
- {
- "*prop": "reader",
- "id": "id",
- "root": "data",
- "totalProperty": "total",
- "xtype": "JsonReader",
- "|fields": "[\n {\n 'name': 'person_id',\n 'type': 'int'\n },\n {\n 'name': 'person_name',\n 'type': 'string'\n },\n {\n 'name': 'changeday',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'nchanges',\n 'type': 'int'\n },\n 'project_code',\n 'project_id',\n \n\n]",
- "|xns": "Roo.data"
- }
- ]
- },
- {
- "*prop": "chgtpl",
- "xtype": "XTemplate",
- "|url": "rootURL + '/Pman/MTrack/templates/timeline-changelog.html'",
- "|xns": "Roo"
- }
- ]
- }
- ]
- },
- {
- "region": "west",
- "xtype": "NestedLayoutPanel",
- "|xns": "Roo",
- "items": [
- {
- "|xns": "Roo",
- "xtype": "BorderLayout",
- "*prop": "layout",
- "items": [
- {
- "*prop": "center",
- "xtype": "LayoutRegion",
- "|xns": "Roo"
- },
- {
- "*prop": "north",
- "height": 220,
- "xtype": "LayoutRegion",
- "|xns": "Roo"
- },
- {
- "listeners": {
- "|activate": "function() {\n _this.gridpanel = this;\n\n}"
- },
- "autoScroll": true,
- "background": false,
- "fitContainer": true,
- "fitToframe": true,
- "region": "center",
- "tableName": "Events",
- "title": "Events",
- "xtype": "GridPanel",
- "|xns": "Roo",
- "items": [
- {
- "listeners": {
- "|render": "function() \n{\n _this.grid = this; \n //_this.dialog = Pman.Dialog.FILL_IN\n this.dataSource.load({});\n\n}"
- },
- "*prop": "grid",
- "autoExpandColumn": "person_id_name",
- "loadMask": true,
- "xtype": "Grid",
- "|xns": "Roo.grid",
- "items": [
- {
- "listeners": {
- "afterselectionchange": "function (_self)\n{\n // select the data..\n \n var r= _this.grid.sm.getSelected();\n \n \n _this.datePicker.setValue(r.data.changeday);\n _this.tpanel.view.store.load({});\n \n} "
- },
- "*prop": "sm",
- "singleSelect": true,
- "xtype": "RowSelectionModel",
- "|xns": "Roo.grid"
- },
- {
- "listeners": {
- "beforeload": "function (_self, o)\n{\n o = o || {};\n o.params = o.params || {};\n \n if (!_this.datePicker || !_this.datePicker.getValue) {\n return false;\n }\n o.params.on_date = _this.datePicker.activeDate.format(\"Y-m-d\");\n o.params.viewtype = 'summary'; \n o.params.timeline = 1;\n // project?\n o.params.project_id = Pman.Tab.DocumentsTab ? \n Pman.Tab.DocumentsTab.panel.getProjectId() : 0;\n}"
- },
- "*prop": "dataSource",
- "remoteSort": true,
- "xtype": "Store",
- "|sortInfo": "{ field : 'person_name', direction: 'ASC' }",
- "|xns": "Roo.data",
- "items": [
- {
- "*prop": "proxy",
- "method": "GET",
- "xtype": "HttpProxy",
- "|url": "baseURL + '/Roo/mtrack_change.php'",
- "|xns": "Roo.data"
- },
- {
- "*prop": "reader",
- "id": "id",
- "root": "data",
- "totalProperty": "total",
- "xtype": "JsonReader",
- "|fields": "[\n {\n 'name': 'person_id',\n 'type': 'int'\n },\n {\n 'name': 'person_name',\n 'type': 'string'\n },\n {\n 'name': 'changeday',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'nchanges',\n 'type': 'int'\n },\n 'project_code',\n 'project_id',\n \n\n]",
- "|xns": "Roo.data"
- }
- ]
- },
- {
- "*prop": "colModel[]",
- "dataIndex": "changeday",
- "header": "Date",
- "width": 30,
- "xtype": "ColumnModel",
- "|renderer": "function(v,x,r) { \n\n return String.format('{0}', v ? v.format('d') : '' );\n }",
- "|xns": "Roo.grid"
- },
- {
- "*prop": "colModel[]",
- "dataIndex": "project_code",
- "header": "Project",
- "width": 50,
- "xtype": "ColumnModel",
- "|renderer": "function(v,x,r) { \n \n Roo.log(r);\n return String.format( '{0}' ,v );\n }\n ",
- "|xns": "Roo.grid"
- },
- {
- "*prop": "colModel[]",
- "dataIndex": "person_name",
- "header": "Who",
- "width": 100,
- "xtype": "ColumnModel",
- "|renderer": "function(v,x,r) { \n \n return String.format( '{0}' , v);\n }\n ",
- "|xns": "Roo.grid"
- },
- {
- "*prop": "colModel[]",
- "align": "right",
- "dataIndex": "nchanges",
- "header": "Changes",
- "width": 30,
- "xtype": "ColumnModel",
- "|renderer": "function(v,x,r) { \n return v * 1;\n }\n ",
- "|xns": "Roo.grid"
- }
- ]
- }
- ]
- },
- {
- "region": "north",
- "xtype": "ContentPanel",
- "|xns": "Roo",
- "items": [
- {
- "listeners": {
- "render": "function (_self)\n{\n _this.datePicker = _self;\n}",
- "select": "function (_self, date)\n{\n if (! _this.grid) {\n return;\n }\n _this.grid.ds.load({});\n}",
- "monthchange": "function (_self, date)\n{\n \n}"
- },
- "xtype": "DatePicker",
- "|xns": "Roo"
- }
- ]
- }
- ]
- }
- ]
- }
- ]
+ "id" : "id",
+ "root" : "data",
+ "xtype" : "JsonReader",
+ "$ fields" : "[\n {\n 'name': 'person_id',\n 'type': 'int'\n },\n {\n 'name': 'person_name',\n 'type': 'string'\n },\n {\n 'name': 'changeday',\n 'type': 'date',\n 'dateFormat': 'Y-m-d'\n },\n {\n 'name': 'nchanges',\n 'type': 'int'\n },\n 'project_code',\n 'project_id',\n 'repo_id',\n 'repo_name'\n \n\n]",
+ "$ xns" : "Roo.data",
+ "* prop" : "reader",
+ "totalProperty" : "total"
}
- ]
+ ]
+ },
+ {
+ "xtype" : "ColumnModel",
+ "header" : "Repos",
+ "width" : 30,
+ "$ renderer" : "function(v,x,r) { \n\n return String.format('{0}', v ? v : '' );\n }",
+ "$ xns" : "Roo.grid",
+ "* prop" : "colModel[]",
+ "dataIndex" : "repo_name"
+ },
+ {
+ "xtype" : "ColumnModel",
+ "header" : "Project",
+ "width" : 50,
+ "$ renderer" : "function(v,x,r) { \n \n Roo.log(r);\n return String.format( '{0}' ,v );\n }\n ",
+ "$ xns" : "Roo.grid",
+ "* prop" : "colModel[]",
+ "dataIndex" : "project_code"
+ },
+ {
+ "xtype" : "ColumnModel",
+ "header" : "Who",
+ "width" : 100,
+ "$ renderer" : "function(v,x,r) { \n \n return String.format( '{0}' , v);\n }\n ",
+ "$ xns" : "Roo.grid",
+ "* prop" : "colModel[]",
+ "dataIndex" : "person_name"
+ },
+ {
+ "align" : "right",
+ "xtype" : "ColumnModel",
+ "header" : "Changes",
+ "width" : 30,
+ "$ renderer" : "function(v,x,r) { \n return v * 1;\n }\n ",
+ "$ xns" : "Roo.grid",
+ "* prop" : "colModel[]",
+ "dataIndex" : "nchanges"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "region" : "north",
+ "xtype" : "ContentPanel",
+ "$ xns" : "Roo",
+ "items" : [
+ {
+ "listeners" : {
+ "render" : "function (_self)\n{\n _this.datePicker = _self;\n}",
+ "monthchange" : "function (_self, date)\n{\n \n}",
+ "select" : "function (_self, date)\n{\n if (! _this.grid) {\n return;\n }\n _this.grid.ds.load({});\n}"
+ },
+ "xtype" : "DatePicker",
+ "$ xns" : "Roo"
+ }
+ ]
+ }
+ ]
}
- ],
- "permname": "",
- "modOrder": "300"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
}
\ No newline at end of file