| 
<?php$tableParams = array(
 'tableId'             => 'codeigniter-coding-table',
 'tableWidth'        => '3',
 'summaryTableId'    => 'codeigniter-coding-summary-table',
 'summaryTableWidth' => '1',
 );
 ?>
 
 <?php echo $this->zrayTable($tableParams) ?>
 
 <script type="text/javascript">
 (function() {
 var storage = zray.getStorage('CodeIgniterCodingStandard');
 
 // create main table
 var maintable = zray.createTable(storage, jQuery('#<?php echo $tableParams['tableId']; ?>'));
 maintable.setColumns([
 {
 "label": "Filename",
 "propertyName": "filename",
 "sortable": true,
 "width": '35%',
 getHtml: function(val, rec) {
 var titleText = rec.filepath + ':' + rec.line;
 var url = (window.location != window.parent.location)
 ? document.referrer
 : document.location;
 var showInIDEParams = rec.filepath ?  { filePath: rec.filepath, line: rec.line, fullUrl: url } : false;
 
 return zendDevBar.getFileActions(val, val, titleText, showInIDEParams);
 }
 },
 {
 "label": "Severity",
 "propertyName": "severity",
 "sortable": true,
 "width": '10%'
 },
 {
 "label": "Line number",
 "propertyName": "line",
 "sortable": true,
 "width": '10%'
 },
 {
 "label": "Message",
 "propertyName": "message",
 "sortable": false
 }
 ]);
 // create main table - end
 
 // create the summary table
 var summaryTable = zray.createSummaryTable(storage, jQuery('#<?php echo $tableParams['summaryTableId']; ?>'));
 
 // set the columns structure
 summaryTable.setColumns([
 {
 label: 'Files',
 propertyName: 'filename',
 getHtml: function(val, rec) {
 return summaryTable.createCheckboxColumn(val, rec, summaryTable);
 }
 },
 {
 label: 'Filename',
 propertyName: 'filename',
 width: '80%'
 },
 {
 label: 'Errors',
 propertyName: 'error',
 width: '10%',
 attributes: {'class': 'zdb-numerical'},
 getHtml: function(val) {
 return '(' + val + ')';
 }
 },
 {
 label: 'Warnings',
 propertyName: 'warning',
 width: '10%',
 attributes: {'class': 'zdb-numerical'},
 getHtml: function(val) {
 return '(' + val + ')';
 }
 }
 
 ]);
 
 // set by which column the user choice will filter
 summaryTable.setFilterColumn('filename');
 
 // set callback function to create the table rows from all the data
 // return an array of rows, with columns that match to setColumns
 summaryTable.setUpdateCallback(function (data) {
 if (! data) return [];
 
 var aggregated = {};
 $zendDevBar.each(data, function(key, observer){
 var key = (observer.severity).toLowerCase();
 if (aggregated[observer.filename]) {
 aggregated[observer.filename][key]++;
 } else {
 aggregated[observer.filename] = {'error' : 0, 'warning' : 0, 'filepath' : observer.filepath };
 aggregated[observer.filename][key] = 1;
 }
 });
 
 if (Object.keys(aggregated).length == 0) {
 return [];
 }
 
 var normalized = [];
 normalized.push({
 'filename': 'All',
 'error': jQuery.map(aggregated, function(v, k){return v.error}).reduce(function(acc, item){ return acc += item}),
 'warning': jQuery.map(aggregated, function(v, k){return v.warning}).reduce(function(acc, item){ return acc += item}),
 });
 
 return normalized.concat($zendDevBar.map(aggregated, function(item, filename){
 return {'filename': filename, 'error': item.error, 'warning': item.warning, 'filepath': item.filepath};
 }));
 });
 // create summary table - end
 
 // create pager and search
 zray.createPager(storage, jQuery('#<?php echo $params['pagerId']; ?>'));
 zray.createSearch(storage, jQuery('#<?php echo $params['searchId']; ?>'), maintable);
 
 zray.registerDataHandler('CodeIgniter', 'codingstandard', function(extensionData, requestData) {
 storage.setData(extensionData);
 });
 })();
 </script>
 |