1colkat_frame_userlog = { 2 id: 'colkat_frame_userlog', 3 title: gettext('Literatur'), 4 isInit:false, 5 UI: null, 6 init: function() { 7 if (this.isInit) return; 8 this.isInit = true; 9 10 anz_text = 'User-Log' ; 11 Ext.define('UserLogModel', { 12 extend: 'Ext.data.Model', 13 fields: [ 14 {name: 'id'}, 15 {name: 'ctime'}, 16 {name: 'user__name'}, 17 {name: 'country_name'}, 18 {name: 'prg_version'}, 19 {name: 'user__id'}, 20 {name: 'func'}, 21 {name: 'sitecls'}, 22 {name: 'site'}, 23 {name: 'req'}, 24 {name: 'ret'}, 25 {name: 'f_id'}, 26 {name: 'ip'} 27 ] 28 }); 29 this.title = anz_text; 30 var mode = 0; 31 /* 32 * Das eigentliche Store-Object 33 * Mit Hilfe des Readers und einer URL, über die die Daten empfangen werden 34 * kann sich so ein Store komplett eigenständig um die Daten kümmern 35 * Ein vollständig konfigurierter Store entscheidet selber wann daten aktualisiert werden 36 * und/oder wann Neue Daten angelegt werden. 37 */ 38 this.userlogStore = Ext.create('Ext.data.Store', { 39 storeId: 'userlogStore', 40 model: 'UserLogModel', 41 proxy: { 42 type: 'ajax', 43 url: '/store/userlogreader/', 44 reader: { 45 type: 'json', 46 rootProperty: 'rows', 47 idProperty: 'id', 48 totalProperty: 'results' 49 }, 50 extraParams: { 51 region: g_region 52 } 53 }, 54 remoteSort:true, 55 remoteFilter:true, 56 pageSize:500 57 }); 58 /* 59 * Einmal Laden des Stores 60 */ 61 this.userlogStore.load(); 62 63 Ext.define('Colkat.view.userlogDataView', { 64 extend:'Ext.grid.Panel', 65 requires:['Ext.saki.grid.MultiSearch'], 66 plugins:[{ 67 ptype:'saki-gms', 68 filterOnEnter:false, 69 }], 70 selModel: 'cellmodel', 71 autoLoad: false, 72 store: this.userlogStore, 73 columns:[ 74 {header: 'ID', filterField:true,width: 100, sortable: true, dataIndex: 'id'}, 75 {header: 'Time', filterField:true,width: 170, sortable: true, dataIndex: 'ctime'}, 76 {header: 'IP', filterField:true,width: 120, sortable: true, dataIndex: 'ip'}, 77 {header: 'User', filterField:true,width: 150, sortable: true, dataIndex: 'user__name'}, 78 {header: 'ID', filterField:true,width: 100,sortable: true,dataIndex: 'user__id'}, 79 {header: 'Version', filterField:true,width: 100,sortable: true,dataIndex: 'prg_version'}, 80 {header: 'Country', filterField:true,width: 100,sortable: true,dataIndex: 'country_name'}, 81 {header: 'Aktion',filterField:true,width: 100, sortable: true,dataIndex: 'sitecls'}, 82 {header: 'Value', filterField:true,width: 300,sortable: true,dataIndex: 'func'}, 83 {header: 'Ret', filterField:true,width: 200,sortable: true,dataIndex: 'ret'} 84 ], 85 dockedItems: [{ 86 xtype: 'pagingtoolbar', 87 store: this.userlogStore, 88 dock: 'bottom', 89 displayInfo: true, 90 items: [{ 91 xtype: 'combo', 92 width: 100, 93 store: Ext.create('Ext.data.Store', { 94 fields: ['size'], 95 data: [{'size': 25},{'size': 50},{'size': 100},{'size': 500},{'size': 1000}, {'size': 5000}] 96 }),
97 queryMode: 'local', 98 displayField: 'size', 99 valueField: 'size', 100 value: this.userlogStore.pageSize, 101 listeners: { 102 'change': function(t,nv,ov) { 103 console.log(nv); 104 this.userlogStore.pageSize = nv; 105 }, 106 scope: this 107 } 108 }] 109 }] 110 }); 111 }, 112 /* 113 * Manueller Datenrefresh 114 * 115 * Beispiel: 116 * colkat_frame_userlog.refresh() 117 * oder g_frame1.conti.refresh() 118 * 119 */ 120 refresh: function() { 121 if (this.UI) { 122 this.UI.down('#grid').getStore().load(); 123 } 124 }, 125 126 update: function(frame,w,h) { 127 console.log(w,h,this.UI); 128 this.UI.down('#grid').setHeight(getFrameHeight()-100); 129 }, 130 131 132 /* 133 * Window oder Panel zum bearbeiten von Daten, kann ggf. eigenes Frame werden, müssen wir mal sehen 134 * 135 * Beispiel: 136 * colkat_frame_userlog.edit() <- öffnet ein leeres Fenster 137 * colkat_frame_userlog.edit(g_frame2) <- öffnet ein leeres Panel 138 * g_frame2.conti.edit(undefined,rec.data) <- öffnet passed zum frame in g_frame2 ein Eingabefenster mit daten aus rec 139 */ 140 edit: function(_colkat_frame, _data) { 141 var me = this; 142 var isWindow = false; 143 var element = 'Ext.panel.Panel'; 144 if (_colkat_frame===undefined) { 145 element = 'Ext.window.Window'; 146 isWindow = true; 147 } 148 149 var w = Ext.create(element,{ 150 fbar: [{ 151 xtype: 'button', 152 hidden: !isWindow, 153 text: gettext('Abbrechen'), 154 handler: function(t) {w.destroy()} 155 },'->',{ 156 xtype: 'button', 157 text: gettext('Speichern') 158 },'->',{ 159 xtype: 'button', 160 text: gettext('Löschen'), 161 handler: function(t) { 162 Ext.Ajax.request({ 163 url: '/ajax/write/', 164 method: 'POST', 165 params: { 166 start: 'UserLogDel', 167 id: Ext.getCmp('ul_id').getValue() 168 }, 169 success: function(r) { 170 var data = Ext.decode(r.responseText); 171 } 172 }); 173 } 174 }], 175 items: [{ 176 xtype: 'form', 177 itemId: 'form', 178 layout: 'form', 179 items: [{ 180 xtype: 'textfield', 181 readOnly: true, 182 fieldLabel: gettext('ID'), 183 id: 'ul_id', 184 name: 'id' 185 },{ 186 xtype: 'textfield', 187 fieldLabel: gettext('Aktion'), 188 name: 'sitecls' 189 },{ 190 xtype: 'textfield', 191 fieldLabel: gettext('Value'), 192 name: 'func' 193 },{ 194 xtype: 'textfield', 195 fieldLabel: gettext('Req'), 196 name: 'req', 197 width: 200, 198 height:70 199// xtype: 'htmleditor', 200// id: 'merkm_vbr_de', 201// x: 10,y: 175, 202 203 },{ 204 xtype: 'textfield', 205 fieldLabel: gettext('Ret'), 206 name: 'ret' 207 },{ 208 xtype: 'textfield', 209 fieldLabel: gettext('f_id'), 210 name: 'f_id' 211 }] 212 }] 213 });
214 if (_data!==undefined) { 215 w.down('#form').getForm().setValues(_data); 216 console.log(_data); 217 } 218 219 if (isWindow) { 220 w.width = 600; 221 w.height = 480; 222 w.modal = true; 223 w.title = this.title; 224 w.show(); 225 } 226 else { 227 clearFrame(_colkat_frame); 228 console.log("heee",_colkat_frame); 229 if (typeof(_colkat_frame)==='object') { 230 _colkat_frame.insert(w); 231 _colkat_frame.setTitle(this.title); 232 } 233 else { 234 Ext.getCmp(_colkat_frame).insert(w); 235 Ext.getCmp(_colkat_frame).setTitle(this.title); 236 } 237 } 238 return w; 239 }, 240 241 /* 242 * Erstellt einmal ein Frame, beim folgenden Aufruf wird Frame aus thsi.UI genommen 243 * Wenn man den Frame neu erstellen will muss this.UI auf null gesetzt werden 244 */ 245 ui: function(_frame) { 246 this.init(); 247 if (this.UI) return this.UI; 248 this.UI = Ext.create('Ext.panel.Panel',{ 249 autoWidth: true, 250 items: [{ 251 html: 'Top', 252 height: 50, 253 border: false, 254 layout: 'auto', 255 items: [{ 256 xtype: 'label', 257 text: 'ID:' 258 },{ 259 height: 100, 260 text: '' 261 }] 262 },{ 263 border: false, 264 items: [ 265 Ext.create('Colkat.view.userlogDataView',{ 266 itemId:'grid', 267 autoScroll:true, 268 width: '100%', 269 height: 600, 270 listeners: { 271 itemclick: function(t,rec,item,index,e,eOpts) { 272 console.log(rec.data,t.selModel.selection.colIdx,t.selModel.selection.rowIdx); 273// colkat_frame_userlog.edit(g_frame2,rec.data); 274 editUsLog(rec.data.id) 275 } 276 } 277 }) 278 ] 279 }] 280 }); 281 return this.UI; 282 } 283}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.