diff --git a/webgui/include/ajax/functions/AdminUserLogs.php b/webgui/include/ajax/functions/AdminUserLogs.php index 251a4a6f95b9ea367033fec0c54d7d7fc50688d4..16b2f0fc285080e8066109d92b70a3d7ef5ecdb4 100644 --- a/webgui/include/ajax/functions/AdminUserLogs.php +++ b/webgui/include/ajax/functions/AdminUserLogs.php @@ -42,8 +42,12 @@ function getAdminUserLogsSummary($params) { $resultArray['uptimeCap'] = $uptimeCap; # Dates we want to use to search search - $dateFrom = new DateTime($params[0]['From']); - $dateTo = new DateTime($params[0]['To']); + $periodKey = new DateTime($params[0]['PeriodKey']); + + # Return if error + if (!is_object($periodKey)) { + return $periodKey; + } # Fetch user uptime and traffic summary $res = DBSelect(" @@ -61,7 +65,7 @@ function getAdminUserLogsSummary($params) { AND topups.Depleted = 0 ORDER BY topups.Timestamp", - array($params[0]['ID'],$dateFrom->format('Y-m')) + array($params[0]['ID'],$periodKey->format('Y-m')) ); # Return if error @@ -93,7 +97,7 @@ function getAdminUserLogsSummary($params) { AND topups.Depleted = 0 ORDER BY topups.Timestamp", - array($params[0]['ID'],$dateFrom->format('Y-m-d'),$dateTo->format('Y-m-d')) + array($params[0]['ID'],$periodKey->format('Y-m-d'),$periodKey->format('Y-m-d')) ); # Return if error @@ -120,9 +124,9 @@ function getAdminUserLogsSummary($params) { accounting, users WHERE users.ID = ? - AND EventTimestamp >= ? + AND PeriodKey = ? AND accounting.Username = users.Username", - array($params[0]['ID'],$dateFrom->format('Y-m-d')) + array($params[0]['ID'],$periodKey->format('Y-m')) ); if (!is_object($res)) { @@ -363,7 +367,6 @@ function getAdminUserLogs($params) { $acctInputMbyte += ($row->acctinputgigawords * 4096); } - # Output $acctOutputMbyte = 0; @@ -385,7 +388,7 @@ function getAdminUserLogs($params) { $item = array(); $item['ID'] = $row->id; - # Convert to ISO format + # Convert to ISO format $date = new DateTime($row->eventtimestamp); $value = $date->format("Y-m-d H:i:s"); $item['EventTimestamp'] = $value; diff --git a/webgui/include/ajax/functions/WiSPUserLogs.php b/webgui/include/ajax/functions/WiSPUserLogs.php index d2d6b5f16d3cc54fbe9e91a250eb9edde8d8bdaf..1e21b91cda72b905c91208da9094e1e706d81334 100644 --- a/webgui/include/ajax/functions/WiSPUserLogs.php +++ b/webgui/include/ajax/functions/WiSPUserLogs.php @@ -42,8 +42,12 @@ function getWiSPUserLogsSummary($params) { $resultArray['uptimeCap'] = $uptimeCap; # Dates we want to use to search search - $dateFrom = new DateTime($params[0]['From']); - $dateTo = new DateTime($params[0]['To']); + $periodKey = new DateTime($params[0]['PeriodKey']); + + # Return if error + if (!is_object($periodKey)) { + return $periodKey; + } # Fetch user uptime and traffic summary $res = DBSelect(" @@ -61,7 +65,7 @@ function getWiSPUserLogsSummary($params) { AND topups.Depleted = 0 ORDER BY topups.Timestamp", - array($params[0]['ID'],$dateFrom->format('Y-m')) + array($params[0]['ID'],$periodKey->format('Y-m')) ); # Return if error @@ -93,7 +97,7 @@ function getWiSPUserLogsSummary($params) { AND topups.Depleted = 0 ORDER BY topups.Timestamp", - array($params[0]['ID'],$dateFrom->format('Y-m-d'),$dateTo->format('Y-m-d')) + array($params[0]['ID'],$periodKey->format('Y-m-d'),$periodKey->format('Y-m-d')) ); # Return if error @@ -120,9 +124,9 @@ function getWiSPUserLogsSummary($params) { accounting, users WHERE users.ID = ? - AND EventTimestamp >= ? + AND PeriodKey = ? AND accounting.Username = users.Username", - array($params[0]['ID'],$dateFrom->format('Y-m-d')) + array($params[0]['ID'],$periodKey->format('Y-m')) ); if (!is_object($res)) { diff --git a/webgui/js/app/windows/AdminUserLogs.js b/webgui/js/app/windows/AdminUserLogs.js index 5924400c06e3d80d1176126ad4fc8efcb99e7147..e5aa790b77faf580abf91ab55cfce12ddcfefbaa 100644 --- a/webgui/js/app/windows/AdminUserLogs.js +++ b/webgui/js/app/windows/AdminUserLogs.js @@ -25,12 +25,13 @@ function showAdminUserLogsWindow(id) { var firstOfNext = today.getLastDateOfMonth().add(Date.DAY, 1); var formID = Ext.id(); - var formAfterID = Ext.id(); - var formBeforeID = Ext.id(); + var formPeriodKeyID = Ext.id(); var formSearchButtonID = Ext.id(); + var summaryFormID = Ext.id(); var summaryTotalID = Ext.id(); + var currentPeriod = today.format('Y-m'); var adminUserLogsWindow = new Ext.ux.GenericGridWindow( // Window config @@ -52,30 +53,20 @@ function showAdminUserLogsWindow(id) { region: 'west', border: true, frame: true, - defaultType: 'datefield', height: 180, width: 320, labelWidth: 100, items: [ { - id: formAfterID, - name: 'after', - width: 180, - fieldLabel: 'From', - vtype: 'daterange', - format: 'Y-m-d', - value: firstOfMonth, - endDateField: formBeforeID - }, - { - id: formBeforeID, - name: 'before', - width: 180, - fieldLabel: 'To', - vtype: 'daterange', - format: 'Y-m-d', - value: firstOfNext, - startDateField: formAfterID + id: formPeriodKeyID, + xtype: 'textfield', + name: 'periodkey', + regex: /^\d{4}\-(0[1-9]|1(0|1|2))$/, + regexText: 'Please enter month in the format: YYYY-MM', + height: 25, + width: 100, + fieldLabel: 'Period', + value: currentPeriod } ], buttons: [ @@ -85,7 +76,6 @@ function showAdminUserLogsWindow(id) { handler: function() { // Pull in window, grid & form var grid = Ext.getCmp(adminUserLogsWindow.gridPanelID); - var form = Ext.getCmp(formID); // Grab store var store = grid.getStore(); @@ -94,18 +84,24 @@ function showAdminUserLogsWindow(id) { var gridFilters = grid.filters; var timestampFilter = gridFilters.getFilter('EventTimestamp'); - // Grab form fields - var afterField = Ext.getCmp(formAfterID); - var beforeField = Ext.getCmp(formBeforeID); + // Grab form field + var periodKeyField = Ext.getCmp(formPeriodKeyID); + if (periodKeyField.isValid()) { + var periodKeyValue = periodKeyField.getValue(); + + // Convert our periodKey into DateTime values + var dtSearchStart = Date.parseDate(periodKeyValue+'-01','Y-m-d'); + var dtSearchEnd = dtSearchStart.add(Date.MONTH,1); - // Set filter values from form - timestampFilter.setValue({ - after: afterField.getValue(), - before: beforeField.getValue() - }); + // Set filter values from form + timestampFilter.setValue({ + after: dtSearchStart, + before: dtSearchEnd + }); - // Trigger store reload - store.reload(); + // Trigger store reload + store.reload(); + } } } ], @@ -262,8 +258,7 @@ function showAdminUserLogsWindow(id) { var outputTotal = store.sum('AcctOutputMbyte'); var uptimeTotal = store.sum('AcctSessionTime'); - var afterField = (Ext.getCmp(formAfterID)).getValue(); - var beforeField = (Ext.getCmp(formBeforeID)).getValue(); + var periodKeyField = (Ext.getCmp(formPeriodKeyID)).getValue(); // Mask parent window adminUserLogsWindow.getEl().mask(); @@ -272,15 +267,14 @@ function showAdminUserLogsWindow(id) { adminUserLogsWindow, { params: { - From: afterField, - To: beforeField, + From: periodKeyField, ID: id, SOAPUsername: globalConfig.soap.username, SOAPPassword: globalConfig.soap.password, SOAPAuthType: globalConfig.soap.authtype, SOAPModule: 'AdminUserLogs', SOAPFunction: 'getAdminUserLogsSummary', - SOAPParams: '0:ID,0:From,0:To' + SOAPParams: '0:ID,0:PeriodKey' }, customSuccess: function (result) { diff --git a/webgui/js/app/windows/WiSPUserLogs.js b/webgui/js/app/windows/WiSPUserLogs.js index 2485144eb603e7d7c621a9c408d359f997ccb894..766388f23054ce6237fe49951cc4c7e6e5d01951 100644 --- a/webgui/js/app/windows/WiSPUserLogs.js +++ b/webgui/js/app/windows/WiSPUserLogs.js @@ -25,12 +25,13 @@ function showWiSPUserLogsWindow(id) { var firstOfNext = today.getLastDateOfMonth().add(Date.DAY, 1); var formID = Ext.id(); - var formAfterID = Ext.id(); - var formBeforeID = Ext.id(); + var formPeriodKeyID = Ext.id(); var formSearchButtonID = Ext.id(); + var summaryFormID = Ext.id(); var summaryTotalID = Ext.id(); + var currentPeriod = today.format('Y-m'); var wispUserLogsWindow = new Ext.ux.GenericGridWindow( // Window config @@ -52,30 +53,20 @@ function showWiSPUserLogsWindow(id) { region: 'west', border: true, frame: true, - defaultType: 'datefield', height: 180, width: 320, labelWidth: 100, items: [ { - id: formAfterID, - name: 'after', - width: 180, - fieldLabel: 'From', - vtype: 'daterange', - format: 'Y-m-d', - value: firstOfMonth, - endDateField: formBeforeID - }, - { - id: formBeforeID, - name: 'before', - width: 180, - fieldLabel: 'To', - vtype: 'daterange', - format: 'Y-m-d', - value: firstOfNext, - startDateField: formAfterID + id: formPeriodKeyID, + xtype: 'textfield', + name: 'periodkey', + regex: /^\d{4}\-(0[1-9]|1(0|1|2))$/, + regexText: 'Please enter month in the format: YYYY-MM', + height: 25, + width: 100, + fieldLabel: 'Period', + value: currentPeriod } ], buttons: [ @@ -85,7 +76,6 @@ function showWiSPUserLogsWindow(id) { handler: function() { // Pull in window, grid & form var grid = Ext.getCmp(wispUserLogsWindow.gridPanelID); - var form = Ext.getCmp(formID); // Grab store var store = grid.getStore(); @@ -94,18 +84,24 @@ function showWiSPUserLogsWindow(id) { var gridFilters = grid.filters; var timestampFilter = gridFilters.getFilter('EventTimestamp'); - // Grab form fields - var afterField = Ext.getCmp(formAfterID); - var beforeField = Ext.getCmp(formBeforeID); + // Grab form field + var periodKeyField = Ext.getCmp(formPeriodKeyID); + if (periodKeyField.isValid()) { + var periodKeyValue = periodKeyField.getValue(); + + // Convert our periodKey into DateTime values + var dtSearchStart = Date.parseDate(periodKeyValue+'-01','Y-m-d'); + var dtSearchEnd = dtSearchStart.add(Date.MONTH,1); - // Set filter values from form - timestampFilter.setValue({ - after: afterField.getValue(), - before: beforeField.getValue() - }); + // Set filter values from form + timestampFilter.setValue({ + after: dtSearchStart, + before: dtSearchEnd + }); - // Trigger store reload - store.reload(); + // Trigger store reload + store.reload(); + } } } ], @@ -262,8 +258,7 @@ function showWiSPUserLogsWindow(id) { var outputTotal = store.sum('AcctOutputMbyte'); var uptimeTotal = store.sum('AcctSessionTime'); - var afterField = (Ext.getCmp(formAfterID)).getValue(); - var beforeField = (Ext.getCmp(formBeforeID)).getValue(); + var periodKeyField = (Ext.getCmp(formPeriodKeyID)).getValue(); // Mask parent window wispUserLogsWindow.getEl().mask(); @@ -272,15 +267,14 @@ function showWiSPUserLogsWindow(id) { wispUserLogsWindow, { params: { - From: afterField, - To: beforeField, + PeriodKey: periodKeyField, ID: id, SOAPUsername: globalConfig.soap.username, SOAPPassword: globalConfig.soap.password, SOAPAuthType: globalConfig.soap.authtype, SOAPModule: 'WiSPUserLogs', SOAPFunction: 'getWiSPUserLogsSummary', - SOAPParams: '0:ID,0:From,0:To' + SOAPParams: '0:ID,0:PeriodKey' }, customSuccess: function (result) { @@ -385,7 +379,7 @@ function showWiSPUserLogsWindow(id) { } ); }); - wispUserLogsWindow.show(); + wispUserLogsWindow.show(); } // vim: ts=4