diff --git a/www/dev.php b/www/dev.php index c50af9811a..7cc20f86f3 100644 --- a/www/dev.php +++ b/www/dev.php @@ -88,6 +88,7 @@ let autoRefreshTimer = 0; let autoRefreshInterval = 10000; const $table = $('#table'); const metricsLevelNames = ['', 'BLOCK', 'WARN', 'PASS']; +const metricsStats = {warning: 0, danger: 0}; function getQueryUrl() { @@ -173,56 +174,12 @@ function initTable(data) colResize: true, rowKey: 'requestId', footer: [function(result, layout) { - const metricsStats = this.metricsStats || {}; return [ {html: `Total ${layout.allRows.length}`, className: 'text-gray mr-4'}, metricsStats.danger ? {html: `
BLOCK ${metricsStats.danger}
`, className: 'text-danger mr-4'} : null, metricsStats.warning ? {html: `
WARN ${metricsStats.warning}
`, className: 'text-warning mr-4'} : null, ]; }], - rowConverter: function(row) - { - row.path = `${row.request.module}-${row.request.method}`; - row['metrics.backend.totalTime'] = row.metrics.backend.totalTime; - row['metrics.backend.sqlCount'] = row.metrics.backend.sqlCount; - row['metrics.backend.sqlTime'] = row.metrics.backend.sqlTime * ((!row.dataVer || row.dataVer < 2) ? 1000 : 1); - row['metrics.backend.requestMemory'] = row.metrics.backend.requestMemory; - row['metrics.backend.phpFileLoaded'] = row.metrics.backend.phpFileLoaded; - row['metrics.frontend.renderTime'] = row.metrics.frontend.renderTime; - row['metrics.frontend.downloadSize'] = row.metrics.frontend.downloadSize; - row['userEnv.browser'] = row.userEnv.browser; - row['userEnv.system'] = row.userEnv.system; - row['request.xhprof'] = row.request.xhprof; - row['request.php'] = row.request.php; - - const totalTimeClass = getTimeClass(row.metrics.backend.totalTime || 0, 500, 300); - const sqlTimeClass = getTimeClass(row.metrics.backend.sqlTime || 0, 300, 200); - const renderTimeClass = getTimeClass(row.metrics.frontend.renderTime || 0, 100, 60); - const classList = [totalTimeClass, sqlTimeClass, renderTimeClass]; - row['metrics.backend.totalTimeClass'] = totalTimeClass; - row['metrics.backend.sqlTimeClass'] = sqlTimeClass; - row['metrics.frontend.renderTimeClass'] = renderTimeClass; - row.metricsClass = classList.includes('danger') ? 'danger' : (classList.includes('warning') ? 'warning' : ''); - row.metricsLevel = classList.includes('danger') ? 1 : (classList.includes('warning') ? 2 : 3); - - if(window.userMap) - { - const user = window.userMap[row.identifier.toLowerCase()]; - if(user) - { - row.identifier_avatar = user.avatar; - row.identifier_avatar_code = user.id; - row.identifier_name = user.realname || user.account; - } - } - - if(row.metricsClass) - { - if(!this.metricsStats) this.metricsStats = {warning: 0, danger: 0}; - this.metricsStats[row.metricsClass]++; - } - return row; - }, cols: cols, data: data, onRenderCell: function(result, info) @@ -277,6 +234,52 @@ function initTable(data) console.log('> table', table); } +function initData(data) +{ + metricsStats.danger = 0; + metricsStats.warning = 0; + data.forEach(row => + { + row.path = `${row.request.module}-${row.request.method}`; + row['metrics.backend.totalTime'] = row.metrics.backend.totalTime; + row['metrics.backend.sqlCount'] = row.metrics.backend.sqlCount; + row['metrics.backend.sqlTime'] = row.metrics.backend.sqlTime * ((!row.dataVer || row.dataVer < 2) ? 1000 : 1); + row['metrics.backend.requestMemory'] = row.metrics.backend.requestMemory; + row['metrics.backend.phpFileLoaded'] = row.metrics.backend.phpFileLoaded; + row['metrics.frontend.renderTime'] = row.metrics.frontend.renderTime; + row['metrics.frontend.downloadSize'] = row.metrics.frontend.downloadSize; + row['userEnv.browser'] = row.userEnv.browser; + row['userEnv.system'] = row.userEnv.system; + row['request.xhprof'] = row.request.xhprof; + row['request.php'] = row.request.php; + + const totalTimeClass = getTimeClass(row.metrics.backend.totalTime || 0, 500, 300); + const sqlTimeClass = getTimeClass(row.metrics.backend.sqlTime || 0, 300, 200); + const renderTimeClass = getTimeClass(row.metrics.frontend.renderTime || 0, 100, 60); + const classList = [totalTimeClass, sqlTimeClass, renderTimeClass]; + row['metrics.backend.totalTimeClass'] = totalTimeClass; + row['metrics.backend.sqlTimeClass'] = sqlTimeClass; + row['metrics.frontend.renderTimeClass'] = renderTimeClass; + row.metricsClass = classList.includes('danger') ? 'danger' : (classList.includes('warning') ? 'warning' : ''); + row.metricsLevel = classList.includes('danger') ? 1 : (classList.includes('warning') ? 2 : 3); + + if(window.userMap) + { + const user = window.userMap[row.identifier.toLowerCase()]; + if(user) + { + row.identifier_avatar = user.avatar; + row.identifier_avatar_code = user.id; + row.identifier_name = user.realname || user.account; + } + } + + if(row.metricsClass) metricsStats[row.metricsClass]++; + return row; + }); + return data; +} + function queryData(options) { options = options || {}; @@ -284,11 +287,8 @@ function queryData(options) loadData().then(data => { $table.removeClass('loading'); - if(table) - { - table.$.metricsStats = {warning: 0, danger: 0}; - return table.render({data}); - } + data = initData(data); + if(table) return table.render({data}); initTable(data); }).catch(error => { $table.removeClass('loading');