1
1
class PhaseMetrics extends HTMLElement {
2
2
connectedCallback ( ) {
3
- const hardwareCards = [
4
- { key : 'cpu' , name : 'CPU' , icon : 'microchip' , colour : 'orange' , variable :true } ,
5
- { key : 'gpu' , name : 'GPU' , icon : 'camera retro' , colour : 'orange' , variable :true } ,
6
- { key : 'dram' , name : 'DRAM' , icon : 'memory' , colour : 'orange' , variable :true } ,
7
- { key : 'disk' , name : 'Disk' , icon : 'hdd' , colour : 'orange' , variable :true } ,
8
- { key : 'machine' , name : 'Machine' , icon : 'server' , colour : 'orange' , variable :true } ,
9
- ] ;
10
-
11
- const extraCards = [
12
- { key : 'runtime' , name : 'Phase Duration' , icon : 'hourglass half' , colour : 'green' , variable :false } ,
13
- { key : 'network-data' , name : 'Data Transferred' , icon : 'exchange' , colour : 'green' , variable :false } ,
14
- { key : 'network' , name : 'Network' , icon : 'sitemap' , colour : 'green' , variable :true } ,
15
- { key : 'embodied-carbon' , name : 'Embodied Carbon' , icon : 'industry' , colour : 'green' , variable :false } ,
16
- { key : 'operational-carbon' , name : 'Operational Carbon' , icon : 'fire' , colour : 'green' , variable :false } ,
17
- { key : 'sci' , name : 'SCI' , icon : 'leaf' , colour : 'green' , variable :false } ,
18
- ] ;
19
-
20
- const createCard = ( { key, name, icon, colour, variable } , suffix = '' ) => {
3
+
4
+ const createCard = ( { key, name, icon, variable } , suffix = '' , colour ) => {
21
5
const cardClass = variable ? `${ key } -${ suffix } ` : key ;
6
+ const colourClass = variable ? colour : 'green' ;
22
7
return `
23
- <div class="ui ${ colour } card ${ cardClass } ">
8
+ <div class="ui ${ colourClass } card ${ cardClass } ">
24
9
<div class="content">
25
- <i class="${ icon } icon"></i><b class="metric-name">${ name } </b >
10
+ <i class="${ icon } icon"></i><span class="metric-name">${ name } </span >
26
11
<div class="right floated meta si-unit"></div>
27
12
</div>
28
13
<div class="extra content">
29
14
<div class="description">
30
- <span class="value">N/A</span>
15
+ <span class="value bold ">N/A</span>
31
16
<div class="right floated meta help" data-tooltip="No data available" data-position="bottom right" data-inverted>
32
17
<i class="question circle outline icon"></i>
33
18
</div>
@@ -36,36 +21,19 @@ class PhaseMetrics extends HTMLElement {
36
21
</div>` ;
37
22
} ;
38
23
39
- const buildTab = ( tab , active = false ) => `
24
+ const buildTab = ( tab , active = false , colour = 'green' ) => `
40
25
<div class="ui tab ${ active ? 'active' : '' } " data-tab="${ tab } ">
41
- <div class="ui six cards stackable">
42
- ${ hardwareCards . map ( card => createCard ( card , tab ) ) . join ( '' ) }
26
+ <div class="ui five cards stackable">
27
+ ${ HARDWARECARDS . map ( card => createCard ( card , tab , colour ) ) . join ( '' ) }
43
28
</div>
44
29
<h4 class="ui horizontal left aligned divider header">Impact</h4>
45
- <div class="ui six cards stackable">
46
- ${ extraCards . map ( card => createCard ( card , tab ) ) . join ( '' ) }
30
+ <div class="ui five cards stackable">
31
+ ${ EXTRACARDS . map ( card => createCard ( card , tab , colour ) ) . join ( '' ) }
47
32
</div>
48
33
49
34
</div>` ;
50
35
51
36
52
- // <div class="ui stackable grid">
53
- // <div class="two wide left attached column">
54
- // <div class="ui vertical fluid tabular menu">
55
- // <a class="item active" data-tab="power">Power</a>
56
- // <a class="item" data-tab="energy">Energy</a>
57
- // <a class="item" data-tab="co2">CO<sub>2</sub></a>
58
- // </div>
59
- // </div>
60
- // <div class="fourteen wide right attached column">
61
- // <div class="ui seamless right attached segment">
62
- // ${buildTab('power', true)}
63
- // ${buildTab('energy')}
64
- // ${buildTab('co2')}
65
- // </div>
66
- // </div>
67
- // </div>
68
-
69
37
this . innerHTML = `
70
38
<div class="ui segments">
71
39
<div class="ui segment">
@@ -75,9 +43,9 @@ class PhaseMetrics extends HTMLElement {
75
43
<a class="item" data-tab="co2">CO<sub>2</sub></a>
76
44
</div>
77
45
<h4 class="ui horizontal left aligned divider header">Hardware</h4>
78
- ${ buildTab ( 'power' , true ) }
79
- ${ buildTab ( 'energy' , false ) }
80
- ${ buildTab ( 'co2' , false ) }
46
+ ${ buildTab ( 'power' , true , 'orange' ) }
47
+ ${ buildTab ( 'energy' , false , 'blue' ) }
48
+ ${ buildTab ( 'co2' , false , 'black' ) }
81
49
</div>
82
50
</div>
83
51
<br>
@@ -293,14 +261,6 @@ const updateKeyMetric = (
293
261
294
262
let selector = null ;
295
263
296
- //console.log(`Updating key metric for ${metric_name} in phase ${phase} with value ${value} ${unit}`);
297
-
298
- // { key: 'runtime', name: 'Phase Duration', icon: 'hourglass half', colour: 'green' },
299
- // { key: 'network-data', name: 'Data Transferred', icon: 'exchange', colour: 'green' },
300
- // { key: 'network', name: 'Network', icon: 'sitemap', colour: 'green' },
301
- // { key: 'embodied-carbon', name: 'Embodied Carbon', icon: 'industry', colour: 'green' },
302
- // { key: 'operational-carbon', name: 'Operational Carbon', icon: 'fire', colour: 'green' },
303
- // { key: 'sci', name: 'SCI', icon: 'leaf', colour: 'green' },
304
264
305
265
306
266
if ( phase_time_metric_condition ( metric_name ) ) {
@@ -310,7 +270,7 @@ const updateKeyMetric = (
310
270
} else if ( embodied_carbon_share_metric_condition ( metric_name ) ) {
311
271
selector = '.embodied-carbon' ;
312
272
} else if ( psu_machine_carbon_metric_condition ( metric_name ) ) {
313
- selector = '.operational-carbon ' ;
273
+ selector = '.machine-co2 ' ;
314
274
} else if ( sci_metric_condition ( metric_name ) ) {
315
275
selector = '.sci' ;
316
276
} else {
@@ -323,7 +283,7 @@ const updateKeyMetric = (
323
283
else if ( metric_name . includes ( 'memory' ) || metric_name . includes ( 'dram' ) ) component = 'dram' ;
324
284
else if ( metric_name . includes ( 'gpu' ) ) component = 'gpu' ;
325
285
else if ( metric_name . includes ( 'disk' ) ) component = 'disk' ;
326
- else if ( metric_name . includes ( 'psu' ) || metric_name . includes ( 'machine' ) ) component = 'machine' ;
286
+ else if ( metric_name . includes ( 'psu' ) && metric_name . includes ( 'machine' ) ) component = 'machine' ;
327
287
else if ( metric_name . includes ( 'network' ) ) component = 'network' ;
328
288
329
289
if ( component !== null ) {
@@ -337,7 +297,7 @@ const updateKeyMetric = (
337
297
return ;
338
298
}
339
299
340
- const cards = document . querySelectorAll ( selector ) ;
300
+ const cards = document . querySelectorAll ( `div.tab[data-tab=' ${ phase } '] ${ selector } ` ) ;
341
301
342
302
if ( cards . length === 0 ) {
343
303
console . warn ( `No card found for selector "${ selector } " in phase "${ phase } "` ) ;
0 commit comments