Pman.Tab.MTrackTicket.bjs
authorAlan Knowles <alan@roojs.com>
Wed, 30 Dec 2020 08:30:10 +0000 (16:30 +0800)
committerAlan Knowles <alan@roojs.com>
Wed, 30 Dec 2020 08:30:10 +0000 (16:30 +0800)
Pman.Tab.MTrackTicket.js

Pman.Tab.MTrackTicket.bjs
Pman.Tab.MTrackTicket.js

index 7de959b..2ecbe20 100644 (file)
@@ -79,9 +79,9 @@
    "listeners" : {
     "activate" : "function (_self)\n{\n    _this.panel = _self;\n    (function () {\n        if (_this.tpanel) {\n            _this.panel.layout.getRegion('south').hide();\n            //_this.panel.layout.getRegion('north').hide();\n        }\n    }).defer(100);\n    try {\n        if (!_this.url || !_this.project || (_this.project != MTrack.projectCombo.getValue())) {\n            (function() { \n                if (_this.tpanel) { \n                 //   _this.tpanel.mload(\"/Report/1\"); \n                }\n            }).defer(300);\n        }\n        \n        \n    } catch(e) {Roo.log(\"activate fail\" + e.toString()); }\n}"
    },
+   "fitToFrame" : true,
    "background" : true,
    "region" : "center",
-   "fitToFrame" : true,
    "title" : "Tickets",
    "xtype" : "NestedLayoutPanel",
    "fitContainer" : true,
@@ -94,8 +94,8 @@
      "items" : [
       {
        "xtype" : "LayoutRegion",
-       "tabPosition" : "top",
        "$ xns" : "Roo",
+       "tabPosition" : "top",
        "* prop" : "center"
       },
       {
        "listeners" : {
         "|activate" : "function() {\n    _this.gpanel = this;\n    if (_this.grid) {\n        _this.grid.ds.load({});\n    }\n}"
        },
+       "fitToframe" : true,
        "background" : true,
        "region" : "north",
-       "fitToframe" : true,
        "title" : "mtrack_ticket",
        "xtype" : "GridPanel",
        "fitContainer" : true,
          "items" : [
           {
            "listeners" : {
-            "afterselectionchange" : "function (_self, rowIndex, colIndex)\n{\n    \n    var   sels =   _this.grid.selModel.getSelections();\n    \n    if (!sels || sels.length > 1) {\n    \n        return;\n    }\n    \n    var rec = sels[0];\n    \n    // verify nothing has chagned.. \n     \n    // load the ticked, and render a view of it...\n    new Pman.Request({\n        url : baseURL + '/Roo/mtrack_ticket',\n        method : 'GET',\n        params : { \n            _id : rec.data.id\n        },\n        success : function(res) {\n            //Roo.log(res.data);\n            // render it into a template..\n            _this.tpanel.setContent(Pman.MTrack.template.ticket_view(res.data));\n            _this.tpanel.el.scrollTo('top',0);\n             \n            //... ehh\n             Pman.MTrack.loadAudit(rec.data.id, _this.tpanel.el.select('.mtrack-ticket-events',true).first());\n         \n            \n           \n            new Pman.Request({\n                url : baseURL + '/Roo/Images',\n                method : 'GET',\n                params : { \n                    onid : rec.data.id,\n                    ontable : 'mtrack_ticket'\n                },\n                success : function(ares) {\n                    Roo.log(ares.data);\n                    var el = Roo.select('.ticket-status-attachments .attachments-list', true).first();\n                    // fill in the attachement area with data from this..\n                    el.dom.innerHTML =  Pman.MTrack.template.ticket_attachments(ares) ;\n                }\n            });\n             \n            \n            _this.form.reset();\n\n            _this.form.setValues({\n                id : rec.data.id,\n                owner_id : rec.data.owner_id,\n                owner_id_name : rec.data.owner_id_name,\n                status : rec.data.status,\n                status_name : \"No Change\"\n            }); \n            \n            \n            for(var k in res.data) {\n                rec.set(k,res.data[k]);\n            }\n            \n        }\n    });\n        \n    \n    \n}",
-            "cellselect" : "function (_self, rowIndex, colIndex)\n{\n    return false;\n    var rec = _this.grid.ds.getAt(rowIndex);\n    \n    // verify nothing has chagned.. \n     \n    // load the ticked, and render a view of it...\n    new Pman.Request({\n        url : baseURL + '/Roo/mtrack_ticket',\n        method : 'GET',\n        params : { \n            _id : rec.data.id\n        },\n        success : function(res) {\n            //Roo.log(res.data);\n            // render it into a template..\n            _this.tpanel.setContent(Pman.MTrack.template.ticket_view(res.data));\n            _this.tpanel.el.scrollTo('top',0);\n             \n            //... ehh\n             Pman.MTrack.loadAudit(rec.data.id, _this.tpanel.el.select('.mtrack-ticket-events',true).first());\n         \n            new Pman.Request({\n                url : baseURL + '/Roo/Images',\n                method : 'GET',\n                params : { \n                    onid : rec.data.id,\n                    ontable : 'mtrack_ticket'\n                },\n                success : function(ares) {\n                    Roo.log(ares.data);\n                    var el = Roo.select('.ticket-status-attachments .attachments-list', true).first();\n                    // fill in the attachement area with data from this..\n                    el.dom.innerHTML =  Pman.MTrack.template.ticket_attachments(ares) ;\n                }\n            });\n             \n            \n            _this.form.reset();\n\n            _this.form.setValues({\n                id : rec.data.id,\n                owner_id : rec.data.owner_id,\n                owner_id_name : rec.data.owner_id_name,\n                status : rec.data.status,\n                status_name : \"No Change\"\n            }); \n            \n            \n            for(var k in res.data) {\n                rec.set(k,res.data[k]);\n            }\n            \n        }\n    });\n        \n    \n    \n}"
+            "cellselect" : "function (_self, rowIndex, colIndex)\n{\n    return false;\n    var rec = _this.grid.ds.getAt(rowIndex);\n    \n    // verify nothing has chagned.. \n     \n    // load the ticked, and render a view of it...\n    new Pman.Request({\n        url : baseURL + '/Roo/mtrack_ticket',\n        method : 'GET',\n        params : { \n            _id : rec.data.id\n        },\n        success : function(res) {\n            //Roo.log(res.data);\n            // render it into a template..\n            _this.tpanel.setContent(Pman.MTrack.template.ticket_view(res.data));\n            _this.tpanel.el.scrollTo('top',0);\n             \n            //... ehh\n             Pman.MTrack.loadAudit(rec.data.id, _this.tpanel.el.select('.mtrack-ticket-events',true).first());\n         \n            new Pman.Request({\n                url : baseURL + '/Roo/Images',\n                method : 'GET',\n                params : { \n                    onid : rec.data.id,\n                    ontable : 'mtrack_ticket'\n                },\n                success : function(ares) {\n                    Roo.log(ares.data);\n                    var el = Roo.select('.ticket-status-attachments .attachments-list', true).first();\n                    // fill in the attachement area with data from this..\n                    el.dom.innerHTML =  Pman.MTrack.template.ticket_attachments(ares) ;\n                }\n            });\n             \n            \n            _this.form.reset();\n\n            _this.form.setValues({\n                id : rec.data.id,\n                owner_id : rec.data.owner_id,\n                owner_id_name : rec.data.owner_id_name,\n                status : rec.data.status,\n                status_name : \"No Change\"\n            }); \n            \n            \n            for(var k in res.data) {\n                rec.set(k,res.data[k]);\n            }\n            \n        }\n    });\n        \n    \n    \n}",
+            "afterselectionchange" : "function (_self, rowIndex, colIndex)\n{\n    \n    var   sels =   _this.grid.selModel.getSelections();\n    \n    if (!sels || sels.length > 1) {\n    \n        return;\n    }\n    \n    var rec = sels[0];\n    \n    // verify nothing has chagned.. \n     \n    // load the ticked, and render a view of it...\n    new Pman.Request({\n        url : baseURL + '/Roo/mtrack_ticket',\n        method : 'GET',\n        params : { \n            _id : rec.data.id\n        },\n        success : function(res) {\n            //Roo.log(res.data);\n            // render it into a template..\n            _this.tpanel.setContent(Pman.MTrack.template.ticket_view(res.data));\n            _this.tpanel.el.scrollTo('top',0);\n             \n            //... ehh\n             Pman.MTrack.loadAudit(rec.data.id, _this.tpanel.el.select('.mtrack-ticket-events',true).first());\n         \n            \n           \n            new Pman.Request({\n                url : baseURL + '/Roo/Images',\n                method : 'GET',\n                params : { \n                    onid : rec.data.id,\n                    ontable : 'mtrack_ticket'\n                },\n                success : function(ares) {\n                    Roo.log(ares.data);\n                    var el = Roo.select('.ticket-status-attachments .attachments-list', true).first();\n                    // fill in the attachement area with data from this..\n                    el.dom.innerHTML =  Pman.MTrack.template.ticket_attachments(ares) ;\n                }\n            });\n             \n            \n            _this.form.reset();\n\n            _this.form.setValues({\n                id : rec.data.id,\n                owner_id : rec.data.owner_id,\n                owner_id_name : rec.data.owner_id_name,\n                status : rec.data.status,\n                status_name : \"No Change\"\n            }); \n            \n            \n            for(var k in res.data) {\n                rec.set(k,res.data[k]);\n            }\n            \n        }\n    });\n        \n    \n    \n}"
            },
            "xtype" : "RowSelectionModel",
            "$ xns" : "Roo.grid",
           {
            "listeners" : {
             "update" : "function (_self, record, operation)\n{\n    Roo.log('update: ' + JSON.stringify(operation));\n    if (operation != 'commit') {\n        return;\n    }\n    // send things that might change..\n    new Pman.Request({\n        url : baseURL + '/Roo/mtrack_ticket',\n        method : 'POST',\n        params : {\n            id : record.data.id,\n            milestone_id : record.data.milestone_id,\n            priority_id : record.data.priority_id,\n            severity_id : record.data.severity_id,\n            classification_id : record.data.classification_id,\n            estimated : record.data.estimated,\n            developer_id : record.data.developer_id\n        },\n        success : function(res)\n        {\n            var r = res.data;\n            //Roo.log(r);\n            // do nothing?\n            record.modified = record.modified || {};\n            for (var k in r) {\n                // update the \n                 \n                if (k.match(/_id$/) || k.match(/_id_/) || k.match(/^status_/)) {\n     \n                    record.data[k] = r[k];\n                    record.modified[k] = r[k];\n                }\n            }\n            record.store.afterEdit(record);\n        }\n        // we should really have a failure - to reset to the old value.\n    });\n     \n    \n    \n}",
-            "beforeload" : "function (_self, options)\n{\n    \n   if (Pman.building) { return false; }\n    options.params =     options.params || {};\n    options.params['query[search]'] = _this.searchBox.getValue();\n    var sq =        options.params['query[viewtype]'] = _this.status.getValue(); \n    var pc = false;\n    var ps = false;\n    try {\n         pc = _this.grid.colModel.getIndexByDataIndex('project_id_name');\n        \n    } catch(e) {} \n    \n\n    if (!options.params['query[search]'].length || isNaN(options.params['query[search]'])) {\n            \n        \n        ps = _this.personSel.getValue();\n        ps = ps ? ps : 0;\n        if (ps ) {\n            options.params.developer_id = ps <0 ? 0 : ps;\n        }\n\n         \n        \n        \n        try { \n            options.params.project_id  = Pman.Tab.DocumentsTab.panel.getProjectId();\n        } catch(e) {\n            options.params.project_id  = MTrack.projectCombo.getValue();\n        }\n        options.params.project_id =      options.params.project_id || undefined;\n     }\n     \n\n         \n           \n    if (  ps < 1 && pc !== false) {\n        _this.grid.colModel.setHidden(pc, true);\n        \n    }\n    \n    // project column\n    if (pc!== false) {\n         _this.grid.colModel.setHidden(pc, true);\n     }\n     \n    if (pc !== false && !options.params.project_id) {\n\n         _this.grid.colModel.setHidden(pc, false);       \n\n    }\n\n    options.params.limit = 999;\n    // columns...\n\n    \n    \n}"
+            "beforeload" : "function (_self, options)\n{\n    \n   if (Pman.building) { return false; }\n    options.params =     options.params || {};\n    options.params['query[search]'] = _this.searchBox.getValue();\n    var sq =        options.params['query[viewtype]'] = _this.status.getValue(); \n    var pc = false;\n    var ps = false;\n    try {\n         pc = _this.grid.colModel.getIndexByDataIndex('project_id_name');\n        \n    } catch(e) {} \n    \n\n    if (!options.params['query[search]'].length || isNaN(options.params['query[search]'])) {\n            \n        \n        ps = _this.personSel.getValue();\n        ps = ps ? ps : 0;\n        if (ps ) {\n            options.params.developer_id = ps <0 ? 0 : ps;\n        }\n\n         \n        \n        \n        try { \n            options.params.project_id  = Pman.Tab.DocumentsTab.panel.getProjectId();\n        } catch(e) {\n            options.params.project_id  = MTrack? MTrack.projectCombo.getValue(): 0;\n        }\n        options.params.project_id =      options.params.project_id || undefined;\n     }\n     \n\n         \n           \n    if (  ps < 1 && pc !== false) {\n        _this.grid.colModel.setHidden(pc, true);\n        \n    }\n    \n    // project column\n    if (pc!== false) {\n         _this.grid.colModel.setHidden(pc, true);\n     }\n     \n    if (pc !== false && !options.params.project_id) {\n\n         _this.grid.colModel.setHidden(pc, false);       \n\n    }\n\n    options.params.limit = 999;\n    // columns...\n\n    \n    \n}"
            },
            "xtype" : "Store",
            "remoteSort" : true,
            "items" : [
             {
              "$ url" : "baseURL + '/Roo/mtrack_ticket.php'",
-             "method" : "GET",
              "xtype" : "HttpProxy",
+             "method" : "GET",
              "$ xns" : "Roo.data",
              "* prop" : "proxy"
             },
                 "load" : "function (_self, records, options)\n{\n    Roo.log(records);\n    var ua = _this.personSel.store.reader.newRow({\n        developer_id : -1,\n        developer_id_name : '-- Un-assigned --'\n    });\n    this.insert(0,[ua]);\n//    records.unshift(ua);\n}"
                },
                "xtype" : "Store",
-               "$ sortInfo" : "{ field : 'developer_id_name' , dir : 'ASC' }",
                "$ xns" : "Roo.data",
+               "$ sortInfo" : "{ field : 'developer_id_name' , dir : 'ASC' }",
                "* prop" : "store",
                "items" : [
                 {
                  "$ url" : "baseURL + '/Roo/Mtrack_ticket.php'",
-                 "xtype" : "HttpProxy",
                  "method" : "GET",
+                 "xtype" : "HttpProxy",
                  "$ xns" : "Roo.data",
                  "* prop" : "proxy"
                 },
                  "items" : [
                   {
                    "$ url" : "baseURL + '/Roo/mtrack_milestone.php'",
-                   "method" : "GET",
                    "xtype" : "HttpProxy",
+                   "method" : "GET",
                    "$ xns" : "Roo.data",
                    "* prop" : "proxy"
                   },
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Summary",
            "width" : 200,
+           "header" : "Summary",
            "$ renderer" : "function(v,x,r) { \n    \n    var col = '#000'; // closed?\n    switch (r.data.status_name) {\n        case 'resolved':\n            col = '#0cc'; break; // blue\n        case 'open':\n        case 'reopened':        \n        case 'new':                \n            col = '#c00'; break; // redish\n        case 'closed':                \n            col = '#999'; break; // grey\n   }\n    \n    return String.format(\n        r.data.status_name == 'closed'  ?\n              '{2}</span><s style=\"color:{3}\">[{1}]</s> {0}':\n              '{2}<span style=\"color:{3}\">[{1}]</span> {0}',\n            v,\n            r.data.status_name == 'closed'  ?\n                r.data.resolution_id_name : \n                 r.data.status_name ,\n            r.json.jira_ref ?  (r.json.jira_ref+ ' ')  : '',\n            col\n            ); \n}\n",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Owner",
            "width" : 75,
+           "header" : "Owner",
            "$ renderer" : "function(v) { return String.format('{0}', v); }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Developer",
            "width" : 75,
+           "header" : "Developer",
            "$ renderer" : "function(v,x,r) { return String.format('{0}', r.data.developer_id_name); }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
                  "items" : [
                   {
                    "$ url" : "baseURL + '/Roo/Person.php'",
-                   "method" : "GET",
                    "xtype" : "HttpProxy",
+                   "method" : "GET",
                    "$ xns" : "Roo.data",
                    "* prop" : "proxy"
                   },
                  "items" : [
                   {
                    "$ url" : "baseURL + '/Roo/core_enum.php'",
-                   "xtype" : "HttpProxy",
                    "method" : "GET",
+                   "xtype" : "HttpProxy",
                    "$ xns" : "Roo.data",
                    "* prop" : "proxy"
                   },
                  "items" : [
                   {
                    "$ url" : "baseURL + '/Roo/core_enum.php'",
-                   "xtype" : "HttpProxy",
                    "method" : "GET",
+                   "xtype" : "HttpProxy",
                    "$ xns" : "Roo.data",
                    "* prop" : "proxy"
                   },
                  "items" : [
                   {
                    "$ url" : "baseURL + '/Roo/core_enum.php'",
-                   "xtype" : "HttpProxy",
                    "method" : "GET",
+                   "xtype" : "HttpProxy",
                    "$ xns" : "Roo.data",
                    "* prop" : "proxy"
                   },
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Hours",
            "width" : 50,
+           "header" : "Hours",
            "$ renderer" : "function(v,x,r) { \n    return String.format('{0}/{1}', r.data.spent, v); \n}",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
         "resize" : "function (_self, width, height)\n{\n    // create and update the CSS style\n    \n    if (!_this.css) {\n        _this.css = Roo.util.CSS;\n    \n        _this.css.createStyleSheet(\n            \n                \".ticket-view-main .ticket-left-col {  }\\n\" +\n                \".ticket-view-main .readonly-tkt-description { }\\n\" +\n                \".ticket-view-main .mtrack-ticket-events {} \\n\"\n            ,\n            Roo.id()\n        );   \n         \n    }\n    var w = width - 400;\n    Roo.log(\"new width: \" + Math.max(0,w));\n    \n    _this.css.updateRule(\n        \".ticket-view-main .ticket-left-col\", \n            \"width\", Math.max(0, w) +  'px'\n    );\n     _this.css.updateRule(\n        \".ticket-view-main .readonly-tkt-description\",\n            \"width\", Math.max(0, w-10) +  'px'\n    );\n     _this.css.updateRule(\n        \".ticket-view-main .mtrack-ticket-events\",\n            \"width\", Math.max(0, w-10) +  'px'\n    );\n}"
        },
        "autoScroll" : true,
-       "background" : false,
        "fitToFrame" : true,
+       "background" : false,
        "region" : "center",
        "title" : "Tickets",
        "xtype" : "ContentPanel",
           "|rendered" : "function (form)\n{\n    _this.form= form;\n}\n"
          },
          "$ url" : "baseURL + '/Roo/mtrack_ticket.php'",
-         "xtype" : "Form",
          "method" : "POST",
+         "xtype" : "Form",
          "style" : "margin:10px;",
          "$ xns" : "Roo.form",
          "items" : [
           {
            "xtype" : "Row",
-           "$ xns" : "Roo.form",
            "width" : 900,
+           "$ xns" : "Roo.form",
            "items" : [
             {
              "labelAlign" : "top",
                  "items" : [
                   {
                    "$ url" : "baseURL + '/Roo/Mtrack_ticket.php'",
-                   "xtype" : "HttpProxy",
                    "method" : "GET",
+                   "xtype" : "HttpProxy",
                    "$ xns" : "Roo.data",
                    "* prop" : "proxy"
                   },
                  "items" : [
                   {
                    "$ url" : "baseURL + '/Roo/core_person.php'",
-                   "method" : "GET",
                    "xtype" : "HttpProxy",
+                   "method" : "GET",
                    "$ xns" : "Roo.data",
                    "* prop" : "proxy"
                   },
index 7502ee9..173a0fd 100644 (file)
@@ -650,7 +650,7 @@ Pman.Tab.MTrackTicket = new Roo.XComponent({
                   try { 
                       options.params.project_id  = Pman.Tab.DocumentsTab.panel.getProjectId();
                   } catch(e) {
-                      options.params.project_id  = MTrack.projectCombo.getValue();
+                      options.params.project_id  = MTrack? MTrack.projectCombo.getValue(): 0;
                   }
                   options.params.project_id =      options.params.project_id || undefined;
                }