From 34fb63817bdd49754eb4616f0f188e736ce40c7b Mon Sep 17 00:00:00 2001 From: Zac Spitzer Date: Thu, 25 Mar 2021 02:53:22 +0100 Subject: [PATCH] 2.0.0.2 Template Usage/Covergae - add alt row colouring - use a darker font --- box.json | 2 +- build.number | 4 +- .../extension-PerformanceAnalyzer-2.0.0.1.lex | Bin 24916 -> 0 bytes .../extension-PerformanceAnalyzer-2.0.0.2.lex | Bin 0 -> 25644 bytes source/cfml/plugins/css/style.css | 17 +++++ source/cfml/plugins/logs.cfm | 2 +- source/cfml/plugins/queries.cfm | 2 +- source/cfml/plugins/scopes.cfm | 2 +- source/cfml/plugins/templates.cfm | 58 +++++++++++++++++- source/cfml/plugins/threads.cfm | 2 +- source/cfml/plugins/timers.cfm | 2 +- source/cfml/plugins/toolbar.cfm | 6 ++ 12 files changed, 87 insertions(+), 10 deletions(-) delete mode 100644 dist/modern/extension-PerformanceAnalyzer-2.0.0.1.lex create mode 100644 dist/modern/extension-PerformanceAnalyzer-2.0.0.2.lex diff --git a/box.json b/box.json index cfc9342..823a59b 100644 --- a/box.json +++ b/box.json @@ -1,7 +1,7 @@ { "name":"Lucee Performance Analyzer", "author":"Zac Spitzer", - "version":"2.0.0.1", + "version":"2.0.0.2", "bugs":"https://github.com/zspitzer/lucee-performance-analyzer/issues", "thumbnail": "https://raw.githubusercontent.com/zspitzer/lucee-performance-analyzer/master/build/images/logo.png", "changelog":"", diff --git a/build.number b/build.number index dbcd698..c289b32 100644 --- a/build.number +++ b/build.number @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Tue Mar 23 23:14:36 CET 2021 -build.number=2 +#Thu Mar 25 02:52:53 CET 2021 +build.number=3 diff --git a/dist/modern/extension-PerformanceAnalyzer-2.0.0.1.lex b/dist/modern/extension-PerformanceAnalyzer-2.0.0.1.lex deleted file mode 100644 index 15fbab14cd1206ea364454c29a51770efd270599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24916 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 RB7!4=3xf{yl^U0z{{Y=#X2Spg diff --git a/dist/modern/extension-PerformanceAnalyzer-2.0.0.2.lex b/dist/modern/extension-PerformanceAnalyzer-2.0.0.2.lex new file mode 100644 index 0000000000000000000000000000000000000000..ab50f4dd1c82bde889825c7e6f00e23c7cc5ff95 GIT binary patch literal 25644 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 YgilEp^*>fGAOa8}>|&q~)42rwKLwPZ{Qv*} literal 0 HcmV?d00001 diff --git a/source/cfml/plugins/css/style.css b/source/cfml/plugins/css/style.css index 21fd849..a00c242 100644 --- a/source/cfml/plugins/css/style.css +++ b/source/cfml/plugins/css/style.css @@ -23,4 +23,21 @@ table pre { #innercontent { margin-top: 10px; margin-left: 3px; +} + +.unused-template, .unused-template TD { + background-color:rgb(223 186 186); + color:black; +} + +a { + color:black; +} + +.no-wrap { + white-space: nowrap; +} + +.alt-row { + background-color: #DFDFDF; } \ No newline at end of file diff --git a/source/cfml/plugins/logs.cfm b/source/cfml/plugins/logs.cfm index 3826f6a..034da48 100644 --- a/source/cfml/plugins/logs.cfm +++ b/source/cfml/plugins/logs.cfm @@ -130,7 +130,7 @@ console.log("#local.log.scope.cgi.request_url#", #serializeJson(local.log.scope.cgi)#); - + #path# diff --git a/source/cfml/plugins/queries.cfm b/source/cfml/plugins/queries.cfm index 15979b2..c431eaf 100644 --- a/source/cfml/plugins/queries.cfm +++ b/source/cfml/plugins/queries.cfm @@ -66,7 +66,7 @@ - + #renderTemplateLink(arguments.req, local.q.template)# #NumberFormat(local.q.line)# #local.q.name# diff --git a/source/cfml/plugins/scopes.cfm b/source/cfml/plugins/scopes.cfm index 42fce2f..a37ae37 100644 --- a/source/cfml/plugins/scopes.cfm +++ b/source/cfml/plugins/scopes.cfm @@ -61,7 +61,7 @@ - + #renderTemplateLink(arguments.req, local.q.template)# #NumberFormat(local.q.line)# #local.q.name# diff --git a/source/cfml/plugins/templates.cfm b/source/cfml/plugins/templates.cfm index 8e87f5f..5d682ca 100644 --- a/source/cfml/plugins/templates.cfm +++ b/source/cfml/plugins/templates.cfm @@ -48,7 +48,6 @@ } QuerySetCell(q, "template", local.tmp[1], q.currentrow) } - @@ -62,6 +61,26 @@ group by template, _function order by totalTime desc + + + local.templates = [=]; // ordered struct + if ( len( arguments.req.template ) && ! variables.exactTemplatePath ){ + local.files = DirectoryList( path=arguments.req.template, recurse=true, listInfo="query", + filter = function(path){ + local.e = listLast( arguments.path, "\/." ); + return ( Find("cf",local.e) eq 1 ); + } + ); + //dump(var=local.files, top=10); + loop query = local.files { + templates[ local.files.directory & server.separator.file & local.files.name ] = { + uses: 0 // count usage + , file: QueryRowData( local.files, local.files.currentrow ) + }; + } + //dump(var=local.templates, top=10); + } + @@ -82,7 +101,7 @@ - + #renderTemplateLink(arguments.req, local.q.template)# @@ -115,6 +134,41 @@
#local.q._function#() #NumberFormat(local.q.totalTime/(1000*1000))#
+ + + loop query="local.q" { + if ( StructKeyExists( local.templates, local.q.template ) ){ + local.templates[local.q.template].uses ++; + } + } + + + + +

Template Usage (via current debug logs)

+ + + + + + + + + + + + + "unused-template"> + #renderTemplateLink(arguments.req, local.t)# + + + + + + + +
TemplateUsesSizeLast Modified
#NumberFormat(local.c.uses)##NumberFormat(local.c.file.size)##LSDateTimeFormat(local.c.file.dateLastModified)#
+
#variables.renderUtils.includeLang()# #variables.renderUtils.includeJavascript("perf")# diff --git a/source/cfml/plugins/threads.cfm b/source/cfml/plugins/threads.cfm index 2e5cefc..70bde07 100644 --- a/source/cfml/plugins/threads.cfm +++ b/source/cfml/plugins/threads.cfm @@ -79,7 +79,7 @@ - + #q_threads.name# #q_threads.threadState#
#q_threads.stack#
diff --git a/source/cfml/plugins/timers.cfm b/source/cfml/plugins/timers.cfm index dfdca67..679ba31 100644 --- a/source/cfml/plugins/timers.cfm +++ b/source/cfml/plugins/timers.cfm @@ -68,7 +68,7 @@ - + #local.q.label# #renderTemplateLink(arguments.req, local.q.template)# #prettyTime(local.q.totalTime*1000*1000)# diff --git a/source/cfml/plugins/toolbar.cfm b/source/cfml/plugins/toolbar.cfm index 1e4b0b9..5ce4505 100644 --- a/source/cfml/plugins/toolbar.cfm +++ b/source/cfml/plugins/toolbar.cfm @@ -47,6 +47,12 @@ request.subtitle = arguments.title; } + function altRow(currentrow){ + if ( arguments.currentRow mod 2 eq 0 ) + return "alt-row"; + return "zzz"; + } +