Newer
Older
function showAdminUserLogsWindow(id) {
// Calculate dates we going to need
var today = new Date();
var firstOfMonth = today.getFirstDateOfMonth();
var firstOfNext = today.getLastDateOfMonth().add(Date.DAY, 1);
var adminUserLogsWindow = new Ext.ux.GenericGridWindow(
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// Window config
{
title: 'User Logs',
layout:'border',
height: 480,
width: 700,
minHeight: 480,
minWidth: 700,
closable: true,
plain: true,
uxItems: [
{
xtype: 'form',
id: 'search-form',
title: 'Search',
region: 'west',
border: true,
frame: true,
defaultType: 'datefield',
height: 180,
width: 300,
labelWidth: 100,
items: [
{
id: 'after',
name: 'after',
width: 180,
fieldLabel: 'From',
vtype: 'daterange',
format: 'Y-m-d',
value: firstOfMonth,
endDateField: 'before',
},
{
id: 'before',
name: 'before',
width: 180,
fieldLabel: 'To',
vtype: 'daterange',
format: 'Y-m-d',
value: firstOfNext,
startDateField: 'after'
}
],
buttons: [
{
text: 'Search',
id: 'formbtn',
handler: function() {
// Pull in window, grid & form
var mainWindow = this.ownerCt.ownerCt;
var grid = mainWindow.getComponent('gridpanel');
var form = mainWindow.getComponent('search-form');
// Grab store
var store = grid.getStore();
// Grab timestamp filter
var gridFilters = grid.filters;
var timestampFilter = gridFilters.getFilter('Timestamp');
// Grab form fields
var afterField = form.getForm().findField('after');
var beforeField = form.getForm().findField('before');
// Set filter values from form
timestampFilter.setValue({
after: afterField.getValue(),
before: beforeField.getValue()
});
// Trigger store reload
store.reload();
}
}
],
buttonAlign: 'center'
},
{
xtype: 'form',
id: 'summary-form',
region: 'center',
split: true,
border: true,
autoScroll: true,
defaultType: 'textarea',
height: 180,
width: 400,
labelWidth: 80,
items: [
{
id: 'summaryTotal',
name: 'summaryTotal',
readOnly: true,
height: 135,
width: 200,
fieldLabel: 'Summary',
fieldClass: 'font-family: monospace; font-size: 10px;',
value: ''
}
]
}
]
},
// Grid config
{
region: 'south',
width: 700,
border: true,
tbar: [
{
text: 'Add Port Lock',
tooltip: 'Add port lock',
iconCls: 'add'
}
],
// Column model
colModel: new Ext.grid.ColumnModel([
{
header: "Timestamp",
sortable: true,
dataIndex: 'EventTimestamp'
},
{
header: "Status",
sortable: true,
header: "Framed Protocol",
sortable: true,
dataIndex: 'FramedProtocol'
header: "NAS Port",
sortable: true,
dataIndex: 'NASPort'
header: "NAS Port Type",
sortable: true,
dataIndex: 'NASPortType'
},
{
header: "NAS Port ID",
sortable: true,
dataIndex: 'NASPortID'
},
{
header: "Calling Station",
sortable: true,
dataIndex: 'CallingStationID'
},
{
header: "Called Station",
sortable: true,
dataIndex: 'CalledStationID'
header: "Session ID",
sortable: true,
dataIndex: 'AcctSessionID'
header: "Framed IP",
sortable: true,
{
header: "Input Mbyte",
dataIndex: 'AcctInputMbyte'
},
{
header: "Output Mbyte",
dataIndex: 'AcctOutputMbyte'
},
{
header: "Term. Reason",
dataIndex: 'ConnectTermReason'
])
},
// Store config
{
baseParams: {
SOAPUsername: globalConfig.soap.username,
SOAPPassword: globalConfig.soap.password,
SOAPAuthType: globalConfig.soap.authtype,
SOAPModule: 'AdminUserLogs',
SOAPFunction: 'getAdminUserLogs',
SOAPParams: 'ID,__search'
}
},
// Filter config
{
filters: [
{
type: 'date',
dataIndex: 'Timestamp',
value: {
after: firstOfMonth,
before: firstOfNext
}
},
{type: 'numeric', dataIndex: 'AcctStatusType'},
{type: 'numeric', dataIndex: 'ServiceType'},
{type: 'numeric', dataIndex: 'FramedProtocol'},
{type: 'string', dataIndex: 'NASPort'},
{type: 'numeric', dataIndex: 'NASPortType'},
{type: 'string', dataIndex: 'NASPortID'},
{type: 'string', dataIndex: 'CallingStationID'},
{type: 'string', dataIndex: 'CalledStationID'},
{type: 'string', dataIndex: 'AcctSessionID'},
{type: 'string', dataIndex: 'FramedIPAddress'}
var store = adminUserLogsWindow.getComponent('gridpanel').getStore();
store.on('load',function() {
var inputTotal = store.sum('AcctInputMbyte');
var outputTotal = store.sum('AcctOutputMbyte');
var userCap = 3000;
var userTopups = 1000;
// Total up into this ...
var userTotalAllowed = userCap + userTopups;
var userUsage = inputTotal + outputTotal;
var userLeft = userTotalAllowed - userUsage;
var form = adminUserLogsWindow.getComponent('summary-form');
var summaryTotal = form.getForm().findField('summaryTotal');
summaryTotal.setValue(
sprintf('Cap Total: %6d\nTopups : %6d\n-----------------\n %6d\n-----------------\nUsage : %6d\n=================\nAvailable: %6d',userCap,userTopups,userTotalAllowed,userUsage,userLeft)
);
});