@@ -332,63 +332,86 @@ export class EPNPlusSpansListViewItemsCreator
332332 public async createListViewItem (
333333 codeObjectsInsight : EPNPlusSpansInsight
334334 ) : Promise < IListViewItem > {
335- const spans = codeObjectsInsight . spans . filter ( ( x ) => x . internalSpan ) ;
336-
337- const hints : CodeObjectLocationHints [ ] =
338- this . _spanLinkResolver . codeHintsFromSpans (
339- spans . map ( ( x ) => x . internalSpan )
340- ) ;
341-
342- const spansLocations =
343- await this . _spanLinkResolver . searchForSpansByHints ( hints ) ;
335+ const items = [ ] ;
336+ for ( const span of codeObjectsInsight . spans ) {
337+ let result ;
338+ if ( span . internalSpan ) {
339+ const hints : CodeObjectLocationHints [ ] =
340+ this . _spanLinkResolver . codeHintsFromSpans ( [
341+ span . internalSpan
342+ ] ) ;
343+
344+ const spansLocations =
345+ await this . _spanLinkResolver . searchForSpansByHints ( hints ) ;
346+
347+ result = spansLocations [ 0 ] ;
348+ }
344349
345- const items : string [ ] = [ ] ;
350+ let fractionSt = "" ;
351+ const fraction =
352+ codeObjectsInsight . spans . firstOrDefault ( ) ?. fraction ;
353+ if ( fraction < 0.01 ) {
354+ fractionSt = "minimal" ;
355+ } else {
356+ fractionSt = `${ fraction . toPrecision ( 1 ) } of request` ;
357+ }
346358
347- for ( let i = 0 ; i < spansLocations . length ; i ++ ) {
348- const result = spansLocations [ i ] ;
349- const slowSpan = spans [ i ] ;
359+ const traceHtml = renderTraceLink (
360+ span . traceId ,
361+ codeObjectsInsight . spanInfo ?. name ||
362+ codeObjectsInsight . endpointSpan
363+ ) ;
350364
351365 items . push ( `
352- <div class="endpoint-bottleneck-insight" >
353- <div class="span-name flex-row ${
354- result ? "link" : ""
355- } " data-code-uri="${ result ?. documentUri } " data-code-line="${
356- result ?. range . end . line ! + 1
357- } ">
358- <span class="left-ellipsis">${
359- slowSpan . internalSpan . displayName
360- } </span>
366+ <div class="item vertical-spacer">
367+ <div class="endpoint-bottleneck-insight">
368+ <div class="span-name flex-row ${
369+ result ? "link" : ""
370+ } " data-code-uri="${
371+ result ?. documentUri
372+ } " data-code-line="${ result ?. range . end . line ! + 1 } ">
373+ <span class="left-ellipsis">${
374+ span . internalSpan
375+ ? span . internalSpan . displayName
376+ : span . clientSpan . displayName
377+ } </span>
378+ </div>
361379 </div>
362- </div>` ) ;
380+ <div style="margin-top:0.5em" class="flex-row">
381+ ${
382+ span . internalSpan
383+ ? `
384+ <span class="error-property flex-stretch">
385+ <span class="label">Impact</span>
386+ <span>${ fractionSt } </span>
387+ </span>`
388+ : `
389+ <span class="error-property flex-stretch">
390+ <span class="label">Repeats</span>
391+ <span>${ span . occurrences } </span>
392+ </span>
393+ `
394+ }
395+ <span class="error-property flex-stretch">
396+ <span class="label">Duration</span>
397+ <span>${ span . duration . value } ${
398+ span . duration . unit
399+ } </span>
400+ </span>
401+ ${ traceHtml }
402+ </div>
403+ </div>
404+ ` ) ;
363405 }
364406
365- const traceHtml = renderTraceLink (
366- codeObjectsInsight . spans . firstOrDefault ( ) ?. traceId ,
367- codeObjectsInsight . spanInfo ?. name || codeObjectsInsight . endpointSpan
368- ) ;
369-
370- let fractionSt = "" ;
371- const fraction = codeObjectsInsight . spans . firstOrDefault ( ) ?. fraction ;
372- if ( fraction < 0.01 ) {
373- fractionSt = "minimal" ;
374- } else {
375- fractionSt = `${ fraction . toPrecision ( 1 ) } of request` ;
376- }
377- const statsHtml = `
378- <div style="margin-top:0.5em" class="flex-row">
379-
380- <span class="error-property flex-stretch">
381- <span class="label">Impact</span>
382- <span>${ fractionSt } </span>
383- </span>
384- <span class="error-property flex-stretch">
385- <span class="label">Duration</span>
386- <span>${
387- codeObjectsInsight . spans . firstOrDefault ( ) . duration . value
388- } ${
389- codeObjectsInsight . spans . firstOrDefault ( ) . duration . unit
390- } </span>
391- </span>
407+ const bodyHtml = /*html*/ `
408+ <div class="pagination-list" data-current-page="1" data-records-per-page="1">
409+ ${ items . join ( "" ) }
410+ <div class="pagination-nav">
411+ <a class="prev">Prev</a>
412+ <a class="next">Next</a>
413+ <span class="page"></span>
414+ </div>
392415 </div>
393416 ` ;
394417
@@ -401,11 +424,10 @@ export class EPNPlusSpansListViewItemsCreator
401424 } ,
402425 description : "Check the following locations:" ,
403426 icon : this . _viewUris . image ( "sql.png" ) ,
404- body : ` <div>
405- ${ items . join ( "" ) }
427+ body : `<div>
428+ ${ bodyHtml }
406429 </div>
407- ${ statsHtml } ` ,
408- buttons : [ traceHtml ] ,
430+ ` ,
409431 insight : codeObjectsInsight
410432 } ,
411433 this . _viewUris
0 commit comments