Skip to content

Commit 7fab1a8

Browse files
committed
feat(sequence): add first KPIs support
Sequences can now define "kpis". Docs/usage see fishbone docs.
1 parent 42538d7 commit 7fab1a8

File tree

5 files changed

+39
-61
lines changed

5 files changed

+39
-61
lines changed

.vscode/tasks.json

+19-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,25 @@
4646
"type": "npm",
4747
"script": "watch:webview:search",
4848
"group": "build",
49-
"problemMatcher": "$esbuild-watch",
49+
"problemMatcher": {
50+
"owner": "custom",
51+
"fileLocation": [
52+
"relative",
53+
"${workspaceFolder}"
54+
],
55+
"pattern": {
56+
"regexp": "^(.+):(\\d+):(\\d+):\\s+(.*)$",
57+
"file": 1,
58+
"line": 2,
59+
"column": 3,
60+
"message": 4
61+
},
62+
"background": {
63+
"activeOnStart": true,
64+
"beginsPattern": "build started",
65+
"endsPattern": "built in \\d+ms"
66+
}
67+
},
5068
"isBackground": true,
5169
"label": "npm: watch:webview:search",
5270
"presentation": {

package-lock.json

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1110,7 +1110,7 @@
11101110
"chartjs-adapter-moment": "^1.0.1",
11111111
"chartjs-plugin-annotation": "^2.2.1",
11121112
"chartjs-plugin-zoom": "^2.0.1",
1113-
"dlt-logs-utils": "0.11.0",
1113+
"dlt-logs-utils": "0.13.1",
11141114
"fast-xml-parser": "^3.19.0",
11151115
"hammerjs": "^2.0.8",
11161116
"hw-chartjs-plugin-colorschemes": "0.5.4",

src/adltDocumentProvider.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -3555,8 +3555,18 @@ export class AdltDocument implements vscode.Disposable {
35553555
return step.map((e) => resAsEmoji(summaryForStepRes(e))).join('')
35563556
})
35573557
.join(',')
3558+
let tooltipText = ''
35583559
if (occ.context.length > 0) {
3559-
occNode.tooltip = occ.context.map(([key, value]) => `${key}: ${value}`).join('\n')
3560+
tooltipText = occ.context.map(([key, value]) => `${key}: ${value}`).join('\n')
3561+
}
3562+
if (occ.kpis.length > 0) {
3563+
if (tooltipText.length > 0) {
3564+
tooltipText += '\n'
3565+
}
3566+
tooltipText += `KPIs:\n` + occ.kpis.map((kpi) => `${kpi.name}: ${kpi.values.join(', ')}`).join('\n')
3567+
}
3568+
if (tooltipText.length > 0) {
3569+
occNode.tooltip = tooltipText
35603570
}
35613571
// add step details as children:
35623572
// occ.stepsResult: StepResult[] <- step result for each step

src/eventReport.ts

+1-51
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { DataSet, SingleReportIF } from './dltReport'
33
import { DltFilter } from './dltFilter'
44
import * as uv0 from 'dlt-logs-utils'
55
import { DltLifecycleInfoMinIF } from './dltLifecycle'
6-
import { FbEvent, FbSeqOccurrence, FbSequenceResult, FbStepRes } from 'dlt-logs-utils/sequence'
6+
import { FbSequenceResult, lastEventForOccurrence } from 'dlt-logs-utils/sequence'
77

88
interface ReportEventIF {
99
lifecycle: DltLifecycleInfoMinIF
@@ -160,53 +160,3 @@ function resAsColor(res: string): string {
160160
}
161161
return 'gray'
162162
}
163-
164-
function lastEventForFbStepRes(stepRes: FbStepRes): FbEvent | undefined {
165-
switch (stepRes.stepType) {
166-
case 'filter':
167-
return stepRes.res
168-
break
169-
case 'alt':
170-
return lastEventForFbStepRes(stepRes.res)
171-
break
172-
case 'sequence':
173-
return lastEventForOccurrence(stepRes.res)
174-
break
175-
case 'par':
176-
{
177-
let lastEvent = undefined
178-
let lastTimeInMs = 0
179-
for (const resArray of stepRes.res) {
180-
for (const res of resArray) {
181-
const event = lastEventForFbStepRes(res)
182-
if (event) {
183-
const timeInMs = event.timeInMs || 0
184-
if (timeInMs > lastTimeInMs) {
185-
lastTimeInMs = timeInMs
186-
lastEvent = event
187-
}
188-
}
189-
}
190-
}
191-
}
192-
break
193-
}
194-
}
195-
196-
function lastEventForOccurrence(occ: FbSeqOccurrence): FbEvent {
197-
let lastEvent = occ.startEvent
198-
let lastTimeInMs = lastEvent.timeInMs || 0
199-
for (const stepsRes of occ.stepsResult) {
200-
for (const stepRes of stepsRes) {
201-
const event = lastEventForFbStepRes(stepRes)
202-
if (event) {
203-
const timeInMs = event.timeInMs || 0
204-
if (timeInMs > lastTimeInMs) {
205-
lastTimeInMs = timeInMs
206-
lastEvent = event
207-
}
208-
}
209-
}
210-
}
211-
return lastEvent
212-
}

0 commit comments

Comments
 (0)