sync
[Pman.Admin] / Pman.Tab.AdminLogEvents.js
index 47d4d70..41b7847 100644 (file)
@@ -7,6 +7,7 @@ Roo.namespace('Pman.Tab');
 Pman.Tab.AdminLogEvents = new Roo.XComponent({
 
  _strings : {
+  'e4ef97f584a9c8d2d686f84569307575' :"Download to Excel (with extra descriptions)",
   '231bc72756b5e6de492aaaa1577f61b1' :"Remarks",
   '2ea72778ebaacc973260c88837dd7a2f' :"Displaying Events  {0} - {1} of {2}",
   '87f9f735a1d36793ceaecd4e47124b63' :"Events",
@@ -16,16 +17,33 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
   '01bd6a16732dfa2b760dc8566c58afae' :"Download to Excel",
   '498f79c4c5bbde77f1bceb6c86fd0f6d' :"Show",
   '037fd50b0e85bb65995ca7125d06c7cd' :"Select Person Table",
-  'fd7535ce3979bb8547e2c01689db0767' :"Select Person ",
+  '40bed7cf9b3d4bb3a3d7a7e3eb18c5eb' :"Person ",
+  '340c2ee497b85d5954b01c64de7f44f6' :"Select Person ",
   '679308a758de538c5f39c4c6cdba6593' :"Select Affects",
   'a8929eb5c1553d3f70497f862d25d0ce' :"Select Action",
   '39b9e051f9fe75e65c7a330bb00499d4' :"Date Range",
   '4e97aeeaa8b15ca1180fcd1f3ac478d1' :"When",
   '40bed7cf9b3d4bb3a3d7a7e3eb18c5eb' :"Person",
   '004bf6c9a40003140292e97330236c53' :"Action",
+  '2bd339d85ee3b33e513359ce781b60cc' :"Restore",
   '90e4ac2e5a22e53df63b6b186d8727ba' :"No Events found",
   '2c92a9a6a5dbf570825e62eabcdecd8d' :"Affected"
  },
+ _named_strings : {
+  'person_table_loadingText' : '1243daf593fa297e07ab03bf06d925af' /* Searching... */ ,
+  'person_id_name_qtip' : '340c2ee497b85d5954b01c64de7f44f6' /* Select Person  */ ,
+  'person_table_qtip' : '037fd50b0e85bb65995ca7125d06c7cd' /* Select Person Table */ ,
+  'person_table_emptyText' : '037fd50b0e85bb65995ca7125d06c7cd' /* Select Person Table */ ,
+  'person_id_name_emptyText' : '340c2ee497b85d5954b01c64de7f44f6' /* Select Person  */ ,
+  'person_id_name_fieldLabel' : '40bed7cf9b3d4bb3a3d7a7e3eb18c5eb' /* Person */ ,
+  'on_table_qtip' : 'a8929eb5c1553d3f70497f862d25d0ce' /* Select Action */ ,
+  'on_table_emptyText' : '679308a758de538c5f39c4c6cdba6593' /* Select Affects */ ,
+  'action_emptyText' : 'a8929eb5c1553d3f70497f862d25d0ce' /* Select Action */ ,
+  'action_loadingText' : '1243daf593fa297e07ab03bf06d925af' /* Searching... */ ,
+  'action_qtip' : 'a8929eb5c1553d3f70497f862d25d0ce' /* Select Action */ ,
+  'on_table_loadingText' : '1243daf593fa297e07ab03bf06d925af' /* Searching... */ ,
+  'person_id_name_loadingText' : '1243daf593fa297e07ab03bf06d925af' /* Searching... */ 
+ },
 
   part     :  ["Admin", "LogEvents" ],
   order    : '001-Pman.Tab.AdminLogEvents',
@@ -34,266 +52,93 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
   name     : "Admin - Logs - Events",
   disabled : false, 
   permname : 'Admin.Logs', 
-  _tree : function()
+  _tree : function(_data)
   {
    var _this = this;
    var MODULE = this;
    return {
+   xtype : 'NestedLayoutPanel',
+   region : 'center',
+   title : _this._strings['87f9f735a1d36793ceaecd4e47124b63'] /* Events */,
+   xns : Roo,
+   '|xns' : 'Roo',
    layout : {
+    xtype : 'BorderLayout',
+    xns : Roo,
+    '|xns' : 'Roo',
     center : {
-     '|xns' : 'Roo',
+     xtype : 'LayoutRegion',
      xns : Roo,
-     xtype : 'LayoutRegion'
+     '|xns' : 'Roo'
     },
     south : {
-     '|xns' : 'Roo',
+     xtype : 'LayoutRegion',
      autoScroll : true,
      height : 150,
      split : true,
      xns : Roo,
-     xtype : 'LayoutRegion'
+     '|xns' : 'Roo'
     },
-    '|xns' : 'Roo',
-    xns : Roo,
-    xtype : 'BorderLayout',
-    items : [
+    items  : [
      {
-      '|xns' : 'Roo',
+      xtype : 'ContentPanel',
       fitToFrame : true,
       region : 'south',
-      xns : Roo,
-      xtype : 'ContentPanel',
       listeners : {
        render : function (_self)
         {
           _this.viewPanel = _self;
         }
-      }
+      },
+      xns : Roo,
+      '|xns' : 'Roo'
      },
      {
-      grid : {
-       sm : {
-        '|xns' : 'Roo.grid',
-        singleSelect : true,
-        xns : Roo.grid,
-        xtype : 'RowSelectionModel',
-        listeners : {
-         afterselectionchange : function (_self)
-          {
-              // load detail log in _this.viewPanel;
-              if (!this.getSelected()) {
-                  this.viewPanel.setContent("Nothing Selected");
-                  return;
-              }
-              var id = this.getSelected().data.id;
-              _this.viewPanel.load( { url : baseURL + "/Admin/EventView/" + id + ".html" });
-              
-          }
+      xtype : 'GridPanel',
+      background : false,
+      fitContainer : true,
+      fitToframe : true,
+      region : 'center',
+      tableName : 'Events',
+      title : _this._strings['87f9f735a1d36793ceaecd4e47124b63'] /* Events */,
+      listeners : {
+       activate : function() {
+            _this.panel = this;
+            if (_this.grid) {
+                _this.grid.footer.onClick('first');
+            }
         }
-       },
-       dataSource : {
-        reader : {
-         '|xns' : 'Roo.data',
-         fields : [
-             {
-                 'name': 'id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_name',
-                 'type': 'string'
-             },
-             {
-                 'name': 'event_when',
-                 'type': 'date',
-                 'dateFormat': 'Y-m-d'
-             },
-             {
-                 'name': 'action',
-                 'type': 'string'
-             },
-             {
-                 'name': 'ipaddr',
-                 'type': 'string'
-             },
-             {
-                 'name': 'on_id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'on_table',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'remarks',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_office_id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_name',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_phone',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_fax',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_email',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_company_id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_role',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_active',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_remarks',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_passwd',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_owner_id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_lang',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_no_reset_sent',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_action_type',
-                 'type': 'string'
-             },
-             {
-                 'name': 'person_id_project_id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_deleted_by',
-                 'type': 'int'
-             },
-             {
-                 'name': 'person_id_deleted_dt',
-                 'type': 'date'
+      },
+      xns : Roo,
+      '|xns' : 'Roo',
+      grid : {
+       xtype : 'Grid',
+       autoExpandColumn : 'remarks',
+       loadMask : true,
+       listeners : {
+        render : function () 
+         {
+             _this.grid = this; 
+             //_this.dialog = Pman.Dialog.FILL_IN
+             if (_this.panel.active) {
+                this.footer.onClick('first');
              }
-         ],
-         id : 'id',
-         root : 'data',
-         totalProperty : 'total',
-         xns : Roo.data,
-         xtype : 'JsonReader'
-        },
-        proxy : {
-         '|xns' : 'Roo.data',
-         method : 'GET',
-         url : baseURL + '/Roo/Events.php',
-         xns : Roo.data,
-         xtype : 'HttpProxy'
-        },
-        '|xns' : 'Roo.data',
-        remoteSort : true,
-        sortInfo : { field: 'event_when', direction: 'DESC'},
-        xns : Roo.data,
-        xtype : 'Store',
-        listeners : {
-         beforeload : function (_self, o)
-          {
-              if (!Pman.buildCompleted) {
-                  return false;
-              }
-             
-             
-             if (! _this.personSel) {
-              return false;
-              }
-              o.params = o.params || {};
-              o.params.person_id = _this.personSel.getValue();
-              o.params.person_table = _this.tableSel.getValue();
-              var act = _this.actionSel.getValue();
-              if (act.length) {
-                  o.params.action = act;
-              }
-              var tbl = _this.affectSel.getValue();
-              if (tbl.length) {
-                  o.params.on_table = tbl;
-              }
-              act = _this.dateFrom.getValue();
-              if (act.format) {
-                  o.params['query[from]'] = act.format('Y-m-d');
-              }
-              act = _this.dateTo.getValue();
-              if (act.format) {
-                  o.params['query[to]'] = act.format('Y-m-d');
-              }
-           
-              
-              /*
-              act = _this.groupedCombo.getValue();
-              o.params['query[grouped]'] = act;
-              if (o.params['query[grouped]'] == 'gr') {
-              
-                  if (!tbl.length) {
-                      Roo.MessageBox.alert("Error", "Select a table to group results on");
-                      return false;
-                  }
-          //        o.params['_columns']  = 
-                  o.params['_distinct'] = 'on_id';
-                  
-                  
-              }
-              
-              */
-          
-              
-          }
-        },
-        items : [
-
-        ]
-
+         }
        },
+       xns : Roo.grid,
+       '|xns' : 'Roo.grid',
        footer : {
-        '|xns' : 'Roo',
+        xtype : 'PagingToolbar',
         displayInfo : true,
-        displayMsg : _this._strings['2ea72778ebaacc973260c88837dd7a2f'],
-        emptyMsg : _this._strings['90e4ac2e5a22e53df63b6b186d8727ba'],
+        displayMsg : _this._strings['2ea72778ebaacc973260c88837dd7a2f'] /* Displaying Events  {0} - {1} of {2} */,
+        emptyMsg : _this._strings['90e4ac2e5a22e53df63b6b186d8727ba'] /* No Events found */,
         pageSize : 25,
         xns : Roo,
-        xtype : 'PagingToolbar',
-        items : [
+        '|xns' : 'Roo',
+        items  : [
          {
-          '|xns' : 'Roo.Toolbar',
-          text : _this._strings['01bd6a16732dfa2b760dc8566c58afae'],
-          xns : Roo.Toolbar,
           xtype : 'Button',
+          text : _this._strings['01bd6a16732dfa2b760dc8566c58afae'] /* Download to Excel */,
           listeners : {
            click : function (_self, e)
             {
@@ -310,7 +155,7 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
                     'csvTitles[3]' : 'Record ID',   'csvCols[3]' : 'on_id'       ,
                     'csvTitles[4]' : 'Record Type',   'csvCols[4]' : 'on_table',
                     'csvTitles[5]' : 'Remarks',   'csvCols[5]' : 'remarks'        
-                }
+                };
                     
                 params.person_id = _this.personSel.getValue();
                 var act = _this.actionSel.getValue();
@@ -339,61 +184,134 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
                     
                 });
             }
-          }
-         }
-        ]
-
+          },
+          xns : Roo.Toolbar,
+          '|xns' : 'Roo.Toolbar'
+         },
+         {
+          xtype : 'Button',
+          text : _this._strings['e4ef97f584a9c8d2d686f84569307575'] /* Download to Excel (with extra descriptions) */,
+          listeners : {
+           click : function (_self, e)
+            {
+                
+                var params = {
+                    'sort' : 'event_when',
+                    'dir' : 'DESC',
+                    'start' : 0,
+                    'limit' : 900,
+                    person_id : _this.personSel.getValue(), 
+                    'csvTitles[0]' : 'ID#',   'csvCols[0]' : 'id',         
+                    'csvTitles[1]' : 'When',   'csvCols[1]' : 'event_when', 
+                    'csvTitles[2]' : 'Staff',   'csvCols[2]' : 'person_id_name', 
+                    'csvTitles[3]' : 'Action',   'csvCols[3]' : 'action', 
+                    'csvTitles[4]' : 'Record ID',   'csvCols[4]' : 'on_id'       ,
+                    'csvTitles[5]' : 'Record Type',   'csvCols[5]' : 'on_table',
+                    'csvTitles[6]' : 'Remarks',   'csvCols[6]' : 'remarks'        
+                };
+                params._with_obj_summary = 1;
+                params.person_id = _this.personSel.getValue();
+                var act = _this.actionSel.getValue();
+                if (act.length) {
+                    params.action = act;
+                }
+                var tbl = _this.affectSel.getValue();
+                if (tbl.length) {
+                    params.on_table = tbl;
+                }
+                act = _this.dateFrom.getValue();
+                if (act.format) {
+                    params['query[from]'] = act.format('Y-m-d');
+                }
+                act = _this.dateTo.getValue();
+                if (act.format) {
+                    params['query[to]'] = act.format('Y-m-d');
+                }
+                params.limit = 9999;
+                
+            
+                new Pman.download({
+                    url : baseURL + '/Roo/Events.php',
+                    params : params ,
+                    newWindow: true
+                    
+                });
+            }
+          },
+          xns : Roo.Toolbar,
+          '|xns' : 'Roo.Toolbar'
+         },
+         {
+          xtype : 'Separator',
+          xns : Roo.Toolbar,
+          '|xns' : 'Roo.Toolbar'
+         },
+         {
+          xtype : 'Button',
+          cls : 'x-btn-text-icon',
+          icon : Roo.rootURL + 'images/default/tree/leaf.gif',
+          text : _this._strings['2bd339d85ee3b33e513359ce781b60cc'] /* Restore */,
+          listeners : {
+           click : function()
+            {
+                var s = _this.grid.getSelectionModel().getSelected();
+                
+                if(!s || s.data.id * 1 < 1 || s.data.action != 'DELETE'){
+                    Roo.MessageBox.alert('Error', 'Please select a deleted person');
+                    return;
+                }
+                
+                new Pman.Request({
+                   url: baseURL + '/Roo/Events',
+                   method : 'POST',
+                   mask : 'Sending...',
+                   params : {
+                       id : s.data.id,
+                       _restore : 1
+                   },
+                   success : function(ret) {
+                        _this.grid.footer.onClick('refresh');
+                        Roo.MessageBox.alert('Notice', 'Restored person successfully');
+                   }
+               });
+            }
+          },
+          xns : Roo.Toolbar,
+          '|xns' : 'Roo.Toolbar'
+         }
+        ]
        },
        toolbar : {
-        '|xns' : 'Roo',
-        xns : Roo,
         xtype : 'Toolbar',
-        items : [
+        xns : Roo,
+        '|xns' : 'Roo',
+        items  : [
          {
-          '|xns' : 'Roo.Toolbar',
-          text : _this._strings['498f79c4c5bbde77f1bceb6c86fd0f6d'],
+          xtype : 'TextItem',
+          text : _this._strings['498f79c4c5bbde77f1bceb6c86fd0f6d'] /* Show */,
           xns : Roo.Toolbar,
-          xtype : 'TextItem'
+          '|xns' : 'Roo.Toolbar'
          },
          {
-          store : {
-           '|xns' : 'Roo.data',
-           data : (function() { 
-           
-               if(typeof(uiConfig) == 'undefined' || typeof(uiConfig.events_person_table) == 'undefined' || !uiConfig.events_person_table.length){
-           
-                   return [];        
-               }
-           
-               return uiConfig.events_person_table;
-               
-           })(),
-           fields : [ 'value' ],
-           isLocal : true,
-           xns : Roo.data,
-           xtype : 'SimpleStore'
-          },
-          '|xns' : 'Roo.form',
+          xtype : 'ComboBox',
           allowBlank : true,
           alwaysQuery : true,
           displayField : 'value',
           editable : false,
-          emptyText : _this._strings['037fd50b0e85bb65995ca7125d06c7cd'],
+          emptyText : _this._strings['037fd50b0e85bb65995ca7125d06c7cd'] /* Select Person Table */,
           forceSelection : true,
           listWidth : 300,
-          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'],
+          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'] /* Searching... */,
           minChars : 2,
           name : 'person_table',
           pageSize : 20,
-          qtip : _this._strings['037fd50b0e85bb65995ca7125d06c7cd'],
+          qtip : _this._strings['037fd50b0e85bb65995ca7125d06c7cd'] /* Select Person Table */,
           selectOnFocus : true,
           tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{value}</b> </div>',
           triggerAction : 'all',
           typeAhead : true,
           valueField : 'value',
           width : 150,
-          xns : Roo.form,
-          xtype : 'ComboBox',
           listeners : {
            render : function (_self)
             {
@@ -413,22 +331,83 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
               _this.grid.footer.onClick('first');
             }
           },
-          items : [
-
-          ]
-
+          xns : Roo.form,
+          '|xns' : 'Roo.form',
+          store : {
+           xtype : 'SimpleStore',
+           data : (function() { 
+           
+               if(typeof(uiConfig) == 'undefined' || typeof(uiConfig.events_person_table) == 'undefined' || !uiConfig.events_person_table.length){
+           
+                   return [];        
+               }
+           
+               return uiConfig.events_person_table;
+               
+           })(),
+           fields : [ 'value' ],
+           isLocal : true,
+           xns : Roo.data,
+           '|xns' : 'Roo.data'
+          }
          },
          {
+          xtype : 'ComboBox',
+          allowBlank : true,
+          displayField : 'name',
+          editable : true,
+          emptyText : _this._strings['340c2ee497b85d5954b01c64de7f44f6'] /* Select Person  */,
+          fieldLabel : _this._strings['40bed7cf9b3d4bb3a3d7a7e3eb18c5eb'] /* Person  */,
+          forceSelection : true,
+          listWidth : 600,
+          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'] /* Searching... */,
+          minChars : 2,
+          name : 'person_id_name',
+          pageSize : 20,
+          qtip : _this._strings['340c2ee497b85d5954b01c64de7f44f6'] /* Select Person  */,
+          queryParam : 'query[name]',
+          selectOnFocus : true,
+          tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{name}</b> ({company_id_name}) &lt;{email}&gt; </div>',
+          triggerAction : 'all',
+          typeAhead : true,
+          valueField : 'id',
+          width : 150,
+          listeners : {
+           render : function (_self)
+            {
+              _this.personSel = _self;
+            },
+           select : function (combo, record, index)
+            {
+              _this.grid.footer.onClick('first');
+              
+            }
+          },
+          xns : Roo.form,
+          '|xns' : 'Roo.form',
           store : {
+           xtype : 'Store',
+           remoteSort : true,
+           sortInfo : { field : 'name' , direction : 'ASC' },
+           listeners : {
+            beforeload : function (_self, o)
+             {
+                 o.params = o.params || {};
+                 // this will show everyone... - for MO - that means they can see users.
+                 //o.params.company_id = Pman.Login.authUser.company_id;
+             }
+           },
+           xns : Roo.data,
+           '|xns' : 'Roo.data',
            proxy : {
-            '|xns' : 'Roo.data',
+            xtype : 'HttpProxy',
             method : 'GET',
-            url : baseURL + '/Roo/Person.php',
+            url : baseURL + '/Roo/core_person',
             xns : Roo.data,
-            xtype : 'HttpProxy'
+            '|xns' : 'Roo.data'
            },
            reader : {
-            '|xns' : 'Roo.data',
+            xtype : 'JsonReader',
             fields : [
                 {
                     'name': 'id',
@@ -768,74 +747,69 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
             root : 'data',
             totalProperty : 'total',
             xns : Roo.data,
-            xtype : 'JsonReader'
-           },
-           '|xns' : 'Roo.data',
-           remoteSort : true,
-           sortInfo : { field : 'name' , direction : 'ASC' },
-           xns : Roo.data,
-           xtype : 'Store',
-           listeners : {
-            beforeload : function (_self, o)
-             {
-                 o.params = o.params || {};
-                 o.params.company_id = Pman.Login.authUser.company_id;
-             }
-           },
-           items : [
-
-           ]
-
-          },
-          '|xns' : 'Roo.form',
+            '|xns' : 'Roo.data'
+           }
+          }
+         },
+         {
+          xtype : 'ComboBox',
           allowBlank : true,
-          displayField : 'name',
+          displayField : 'action',
           editable : true,
-          emptyText : _this._strings['fd7535ce3979bb8547e2c01689db0767'],
-          fieldLabel : 'Person ',
+          emptyText : _this._strings['a8929eb5c1553d3f70497f862d25d0ce'] /* Select Action */,
           forceSelection : true,
-          listWidth : 600,
-          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'],
+          listWidth : 300,
+          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'] /* Searching... */,
           minChars : 2,
-          name : 'person_id_name',
+          name : 'action',
           pageSize : 20,
-          qtip : _this._strings['fd7535ce3979bb8547e2c01689db0767'],
-          queryParam : 'query[name]',
+          qtip : _this._strings['a8929eb5c1553d3f70497f862d25d0ce'] /* Select Action */,
+          queryParam : 'query[action]',
           selectOnFocus : true,
-          tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{name}</b> ({company_id_name}) &lt;{email}&gt; </div>',
+          tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{action}</b> </div>',
           triggerAction : 'all',
           typeAhead : true,
-          valueField : 'id',
+          valueField : 'action',
           width : 150,
-          xns : Roo.form,
-          xtype : 'ComboBox',
           listeners : {
            render : function (_self)
             {
-              _this.personSel = _self;
+              _this.actionSel = _self;
             },
            select : function (combo, record, index)
             {
               _this.grid.footer.onClick('first');
-              
             }
           },
-          items : [
-
-          ]
-
-         },
-         {
+          xns : Roo.form,
+          '|xns' : 'Roo.form',
           store : {
+           xtype : 'Store',
+           remoteSort : true,
+           sortInfo : { field : 'action' , direction : 'ASC' },
+           listeners : {
+            beforeload : function (_self, o)
+             {
+                 o.params = o.params || {};
+                 // staff can see all logs, other companies can only see their own.
+                 if (Pman.Login.authUser.company_id_comptype != 'OWNER') {
+                     o.params.company_id = Pman.Login.authUser.company_id;
+                 }
+                 o.params._distinct = 'action';
+                 o.params._columns ='action';
+             }
+           },
+           xns : Roo.data,
+           '|xns' : 'Roo.data',
            proxy : {
-            '|xns' : 'Roo.data',
+            xtype : 'HttpProxy',
             method : 'GET',
             url : baseURL + '/Roo/Events.php',
             xns : Roo.data,
-            xtype : 'HttpProxy'
+            '|xns' : 'Roo.data'
            },
            reader : {
-            '|xns' : 'Roo.data',
+            xtype : 'JsonReader',
             fields : [
                 {
                     'name': 'id',
@@ -951,77 +925,73 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
             root : 'data',
             totalProperty : 'total',
             xns : Roo.data,
-            xtype : 'JsonReader'
-           },
-           '|xns' : 'Roo.data',
-           remoteSort : true,
-           sortInfo : { field : 'action' , direction : 'ASC' },
-           xns : Roo.data,
-           xtype : 'Store',
-           listeners : {
-            beforeload : function (_self, o)
-             {
-                 o.params = o.params || {};
-                 // staff can see all logs, other companies can only see their own.
-                 if (Pman.Login.authUser.company_id_comptype != 'OWNER') {
-                     o.params.company_id = Pman.Login.authUser.company_id;
-                 }
-                 o.params._distinct = 'action';
-                 o.params._columns ='action';
-             }
-           },
-           items : [
-
-           ]
-
-          },
-          '|xns' : 'Roo.form',
+            '|xns' : 'Roo.data'
+           }
+          }
+         },
+         {
+          xtype : 'ComboBox',
           allowBlank : true,
-          displayField : 'action',
+          displayField : 'on_table',
           editable : true,
-          emptyText : _this._strings['a8929eb5c1553d3f70497f862d25d0ce'],
+          emptyText : _this._strings['679308a758de538c5f39c4c6cdba6593'] /* Select Affects */,
           forceSelection : true,
           listWidth : 300,
-          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'],
+          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'] /* Searching... */,
           minChars : 2,
-          name : 'action',
+          name : 'on_table',
           pageSize : 20,
-          qtip : _this._strings['a8929eb5c1553d3f70497f862d25d0ce'],
-          queryParam : 'query[action]',
+          qtip : _this._strings['a8929eb5c1553d3f70497f862d25d0ce'] /* Select Action */,
+          queryParam : 'query[on_table]',
           selectOnFocus : true,
-          tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{action}</b> </div>',
+          tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{on_table}</b> </div>',
           triggerAction : 'all',
           typeAhead : true,
           valueField : 'action',
           width : 150,
-          xns : Roo.form,
-          xtype : 'ComboBox',
           listeners : {
            render : function (_self)
             {
-              _this.actionSel = _self;
+                _this.affectSel = _self;
+              
+                if(!Pman.hasPerm('Admin.Logs_Affects', 'S')){
+                    this.hide();
+                }
             },
            select : function (combo, record, index)
             {
               _this.grid.footer.onClick('first');
             }
           },
-          items : [
-
-          ]
-
-         },
-         {
+          xns : Roo.form,
+          '|xns' : 'Roo.form',
           store : {
-           proxy : {
-            '|xns' : 'Roo.data',
-            method : 'GET',
-            url : baseURL + '/Roo/Events.php',
-            xns : Roo.data,
-            xtype : 'HttpProxy'
+           xtype : 'Store',
+           remoteSort : true,
+           sortInfo : { field : 'on_table' , direction : 'ASC' },
+           listeners : {
+            beforeload : function (_self, o)
+             {
+                 o.params = o.params || {};
+                 // staff can see all logs, other companies can only see their own.
+                 if (Pman.Login.authUser.company_id_comptype != 'OWNER') {
+                     o.params.company_id = Pman.Login.authUser.company_id;
+                 }
+                 o.params._distinct = 'on_table';
+                 o.params._columns ='on_table';
+             }
+           },
+           xns : Roo.data,
+           '|xns' : 'Roo.data',
+           proxy : {
+            xtype : 'HttpProxy',
+            method : 'GET',
+            url : baseURL + '/Roo/Events.php',
+            xns : Roo.data,
+            '|xns' : 'Roo.data'
            },
            reader : {
-            '|xns' : 'Roo.data',
+            xtype : 'JsonReader',
             fields : [
                 {
                     'name': 'id',
@@ -1137,81 +1107,19 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
             root : 'data',
             totalProperty : 'total',
             xns : Roo.data,
-            xtype : 'JsonReader'
-           },
-           '|xns' : 'Roo.data',
-           remoteSort : true,
-           sortInfo : { field : 'on_table' , direction : 'ASC' },
-           xns : Roo.data,
-           xtype : 'Store',
-           listeners : {
-            beforeload : function (_self, o)
-             {
-                 o.params = o.params || {};
-                 // staff can see all logs, other companies can only see their own.
-                 if (Pman.Login.authUser.company_id_comptype != 'OWNER') {
-                     o.params.company_id = Pman.Login.authUser.company_id;
-                 }
-                 o.params._distinct = 'on_table';
-                 o.params._columns ='on_table';
-             }
-           },
-           items : [
-
-           ]
-
-          },
-          '|xns' : 'Roo.form',
-          allowBlank : true,
-          displayField : 'on_table',
-          editable : true,
-          emptyText : _this._strings['679308a758de538c5f39c4c6cdba6593'],
-          forceSelection : true,
-          listWidth : 300,
-          loadingText : _this._strings['1243daf593fa297e07ab03bf06d925af'],
-          minChars : 2,
-          name : 'on_table',
-          pageSize : 20,
-          qtip : _this._strings['a8929eb5c1553d3f70497f862d25d0ce'],
-          queryParam : 'query[on_table]',
-          selectOnFocus : true,
-          tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{on_table}</b> </div>',
-          triggerAction : 'all',
-          typeAhead : true,
-          valueField : 'action',
-          width : 150,
-          xns : Roo.form,
-          xtype : 'ComboBox',
-          listeners : {
-           render : function (_self)
-            {
-                _this.affectSel = _self;
-              
-                if(!Pman.hasPerm('Admin.Logs_Affects', 'S')){
-                    this.hide();
-                }
-            },
-           select : function (combo, record, index)
-            {
-              _this.grid.footer.onClick('first');
-            }
-          },
-          items : [
-
-          ]
-
+            '|xns' : 'Roo.data'
+           }
+          }
          },
          {
-          '|xns' : 'Roo.Toolbar',
-          text : _this._strings['39b9e051f9fe75e65c7a330bb00499d4'],
+          xtype : 'TextItem',
+          text : _this._strings['39b9e051f9fe75e65c7a330bb00499d4'] /* Date Range */,
           xns : Roo.Toolbar,
-          xtype : 'TextItem'
+          '|xns' : 'Roo.Toolbar'
          },
          {
-          '|xns' : 'Roo.form',
-          format : 'Y-m-d',
-          xns : Roo.form,
           xtype : 'DateField',
+          format : 'Y-m-d',
           listeners : {
            change : function (_self, newValue, oldValue)
             {
@@ -1221,13 +1129,13 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
             {
               _this.dateFrom = _self;
             }
-          }
+          },
+          xns : Roo.form,
+          '|xns' : 'Roo.form'
          },
          {
-          '|xns' : 'Roo.form',
-          format : 'Y-m-d',
-          xns : Roo.form,
           xtype : 'DateField',
+          format : 'Y-m-d',
           listeners : {
            change : function (_self, newValue, oldValue)
             {
@@ -1237,150 +1145,318 @@ Pman.Tab.AdminLogEvents = new Roo.XComponent({
             {
               _this.dateTo = _self;
             }
-          }
+          },
+          xns : Roo.form,
+          '|xns' : 'Roo.form'
          }
         ]
-
        },
-       '|xns' : 'Roo.grid',
-       autoExpandColumn : 'remarks',
-       loadMask : true,
-       xns : Roo.grid,
-       xtype : 'Grid',
-       colModel : [
-         {
-          '|xns' : 'Roo.grid',
-          dataIndex : 'event_when',
-          header : _this._strings['4e97aeeaa8b15ca1180fcd1f3ac478d1'],
-          renderer : function(v) { return v ? v.dateFormat('d/m/Y H:i') : ''; },
-          width : 100,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'id',
-          header : _this._strings['1b7f7d24575cdbfadb83b9587fa1bf97'],
-          width : 100,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'person_id_name',
-          header : _this._strings['40bed7cf9b3d4bb3a3d7a7e3eb18c5eb'],
-          renderer : function(v,x,r) { 
-              
-              var ptable = _this.tableSel.getValue();
+       dataSource : {
+        xtype : 'Store',
+        remoteSort : true,
+        sortInfo : { field: 'event_when', direction: 'DESC'},
+        listeners : {
+         beforeload : function (_self, o)
+          {
+              if (!Pman.buildCompleted) {
+                  return false;
+              }
+             
+             
+             if (! _this.personSel) {
+              return false;
+              }
+              o.params = o.params || {};
+              o.params.person_id = _this.personSel.getValue();
+              o.params.person_table = _this.tableSel.getValue();
+              var act = _this.actionSel.getValue();
+              if (act.length) {
+                  o.params.action = act;
+              }
+              var tbl = _this.affectSel.getValue();
+              if (tbl.length) {
+                  o.params.on_table = tbl;
+              }
+              act = _this.dateFrom.getValue();
+              if (act.format) {
+                  o.params['query[from]'] = act.format('Y-m-d');
+              }
+              act = _this.dateTo.getValue();
+              if (act.format) {
+                  o.params['query[to]'] = act.format('Y-m-d');
+              }
+           
               
-              var efield = 'person_id_email';
-              var nfield = 'person_id_name';    
+              /*
+              act = _this.groupedCombo.getValue();
+              o.params['query[grouped]'] = act;
+              if (o.params['query[grouped]'] == 'gr') {
               
-              if(ptable.length && ptable != 'Person'){
-                  efield = ptable + '_id_email';
-                  nfield = ptable + '_id_name';    
+                  if (!tbl.length) {
+                      Roo.MessageBox.alert("Error", "Select a table to group results on");
+                      return false;
+                  }
+          //        o.params['_columns']  = 
+                  o.params['_distinct'] = 'on_id';
+                  
+                  
               }
               
-              //Roo.log([r, efield, nfield]);
-              
-              var email = r.json[efield]; // ? r.data.person_id_email : r.data.person_id_email;
-              var name  = r.json[nfield]; // ? r.data.person_id_name : r.data.person_id_name;    
-              return String.format('{0} &lt;<a href="mailto:{1}">{1}</a>&gt;', 
-                  name, email); 
-          
+              */
           
-          },
-          width : 150,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'action',
-          header : _this._strings['004bf6c9a40003140292e97330236c53'],
-          renderer : function(v) { return String.format('{0}', v); },
-          width : 100,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'ipaddr',
-          header : _this._strings['a12a3079e14ced46e69ba52b8a90b21a'],
-          renderer : function(v) { return String.format('{0}', v); },
-          width : 100,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'on_table',
-          header : _this._strings['2c92a9a6a5dbf570825e62eabcdecd8d'],
-          renderer : function(v, x, r) {                     
-                      return v ? String.format('{0}({1})', v,  r.data.on_id)  : '';  
+              
+          }
+        },
+        xns : Roo.data,
+        '|xns' : 'Roo.data',
+        proxy : {
+         xtype : 'HttpProxy',
+         method : 'GET',
+         url : baseURL + '/Roo/Events.php',
+         xns : Roo.data,
+         '|xns' : 'Roo.data'
+        },
+        reader : {
+         xtype : 'JsonReader',
+         fields : [
+             {
+                 'name': 'id',
+                 'type': 'int'
              },
-          width : 100,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'remarks',
-          header : _this._strings['231bc72756b5e6de492aaaa1577f61b1'],
-          renderer : function(v) { return String.format('<span qtip="{1}">{0}</span>', v, Roo.util.Format.htmlEncode(v)); },
-          width : 300,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         }
-       ],
-       listeners : {
-        render : function () 
-         {
-             _this.grid = this; 
-             //_this.dialog = Pman.Dialog.FILL_IN
-             if (_this.panel.active) {
-                this.footer.onClick('first');
+             {
+                 'name': 'person_name',
+                 'type': 'string'
+             },
+             {
+                 'name': 'event_when',
+                 'type': 'date',
+                 'dateFormat': 'Y-m-d'
+             },
+             {
+                 'name': 'action',
+                 'type': 'string'
+             },
+             {
+                 'name': 'ipaddr',
+                 'type': 'string'
+             },
+             {
+                 'name': 'on_id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'on_table',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'remarks',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_office_id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_name',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_phone',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_fax',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_email',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_company_id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_role',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_active',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_remarks',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_passwd',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_owner_id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_lang',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_no_reset_sent',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_action_type',
+                 'type': 'string'
+             },
+             {
+                 'name': 'person_id_project_id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_deleted_by',
+                 'type': 'int'
+             },
+             {
+                 'name': 'person_id_deleted_dt',
+                 'type': 'date'
              }
-         }
+         ],
+         id : 'id',
+         root : 'data',
+         totalProperty : 'total',
+         xns : Roo.data,
+         '|xns' : 'Roo.data'
+        }
        },
-       items : [
-
-       ]
-
-      },
-      '|xns' : 'Roo',
-      background : false,
-      fitContainer : true,
-      fitToframe : true,
-      region : 'center',
-      tableName : 'Events',
-      title : _this._strings['87f9f735a1d36793ceaecd4e47124b63'],
-      xns : Roo,
-      xtype : 'GridPanel',
-      listeners : {
-       activate : function() {
-            _this.panel = this;
-            if (_this.grid) {
-                _this.grid.footer.onClick('first');
-            }
+       sm : {
+        xtype : 'RowSelectionModel',
+        singleSelect : true,
+        listeners : {
+         afterselectionchange : function (_self)
+          {
+              // load detail log in _this.viewPanel;
+              if (!this.getSelected()) {
+                  this.viewPanel.setContent("Nothing Selected");
+                  return;
+              }
+              var id = this.getSelected().data.id;
+              _this.viewPanel.load( { url : baseURL + "/Admin/EventView/" + id + ".html" });
+              
+          }
+        },
+        xns : Roo.grid,
+        '|xns' : 'Roo.grid'
+       },
+       colModel : [
+        {
+         xtype : 'ColumnModel',
+         dataIndex : 'event_when',
+         header : _this._strings['4e97aeeaa8b15ca1180fcd1f3ac478d1'] /* When */,
+         renderer : function(v) { return v ? v.dateFormat('d/m/Y H:i') : ''; },
+         width : 100,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid'
+        },
+        {
+         xtype : 'ColumnModel',
+         dataIndex : 'id',
+         header : _this._strings['1b7f7d24575cdbfadb83b9587fa1bf97'] /* #id */,
+         hidden : (function() {
+             return typeof(Pman.Tab.AdminLogEvents.hide_cols) == 'undefined' ? 
+             false : 
+             ((Pman.Tab.AdminLogEvents.hide_cols.indexOf('id') > -1) ? true : false);
+         })(),
+         width : 100,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid'
+        },
+        {
+         xtype : 'ColumnModel',
+         dataIndex : 'person_id_name',
+         header : _this._strings['40bed7cf9b3d4bb3a3d7a7e3eb18c5eb'] /* Person */,
+         renderer : function(v,x,r) { 
+             
+             var ptable = _this.tableSel.getValue();
+             
+             var efield = 'person_id_email';
+             var nfield = 'person_id_name';    
+             
+             if(
+                 ptable.length &&
+                 ptable != 'Person' &&
+                 typeof(r.data[ptable + '_id_email']) != 'undefined' &&
+                 typeof(r.data[ptable + '_id_name']) != 'undefined'
+             ){
+                 efield = ptable + '_id_email';
+                 nfield = ptable + '_id_name';    
+             }
+             
+             var email = r.data[efield]; // ? r.data.person_id_email : r.data.person_id_email;
+             var name  = r.data[nfield]; // ? r.data.person_id_name : r.data.person_id_name;    
+             return String.format('{0} &lt;<a href="mailto:{1}">{1}</a>&gt;', 
+                 name, email); 
+         
+         
+         },
+         width : 150,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid'
+        },
+        {
+         xtype : 'ColumnModel',
+         dataIndex : 'action',
+         header : _this._strings['004bf6c9a40003140292e97330236c53'] /* Action */,
+         renderer : function(v) { return String.format('{0}', v); },
+         width : 100,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid'
+        },
+        {
+         xtype : 'ColumnModel',
+         dataIndex : 'ipaddr',
+         header : _this._strings['a12a3079e14ced46e69ba52b8a90b21a'] /* IP */,
+         renderer : function(v) { return String.format('{0}', v); },
+         width : 100,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid'
+        },
+        {
+         xtype : 'ColumnModel',
+         dataIndex : 'on_table',
+         header : _this._strings['2c92a9a6a5dbf570825e62eabcdecd8d'] /* Affected */,
+         hidden : (function() {
+             return typeof(Pman.Tab.AdminLogEvents.hide_cols) == 'undefined' ? 
+             false : 
+             ((Pman.Tab.AdminLogEvents.hide_cols.indexOf('on_table') > -1) ? true : false);
+         })(),
+         renderer : function(v, x, r) {                     
+                     return v ? String.format('{0}({1})', v,  r.data.on_id)  : '';  
+            },
+         width : 100,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid'
+        },
+        {
+         xtype : 'ColumnModel',
+         dataIndex : 'remarks',
+         header : _this._strings['231bc72756b5e6de492aaaa1577f61b1'] /* Remarks */,
+         renderer : function(v) { return String.format('<span qtip="{1}">{0}</span>', v, Roo.util.Format.htmlEncode(v)); },
+         width : 300,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid'
         }
-      },
-      items : [
-
-      ]
-
+       ]
+      }
      }
     ]
-
-   },
-   '|xns' : 'Roo',
-   region : 'center',
-   title : _this._strings['87f9f735a1d36793ceaecd4e47124b63'],
-   xns : Roo,
-   xtype : 'NestedLayoutPanel',
-   items : [
-
-   ]
-
+   }
   };  }
 });