@@ -13,6 +13,7 @@ import EventIcon from "@/assets/event.svg";
13
13
import TimeoutIcon from " @/assets/TimeoutIcon.svg" ;
14
14
import SagaIcon from " @/assets/SagaIcon.svg" ;
15
15
import SagaInitiatedIcon from " @/assets/SagaInitiatedIcon.svg" ;
16
+ import SagaUpdatedIcon from " @/assets/SagaUpdatedIcon.svg" ;
16
17
import SagaCompletedIcon from " @/assets/SagaCompletedIcon.svg" ;
17
18
import SagaTimeoutIcon from " @/assets/SagaTimeoutIcon.svg" ;
18
19
import ToolbarEndpointIcon from " @/assets/Shell_ToolbarEndpoint.svg" ;
@@ -179,7 +180,7 @@ const vm = computed<SagaViewModel>(() => {
179
180
<div class =" saga-container" >
180
181
<div class =" header" >
181
182
<div class =" saga-top-logo" ><img class =" saga-top-logo-image" :src =" SagaIcon" alt =" " />Saga</div >
182
- <button class =" saga-button" ><img class =" saga-button-icon" :src =" ToolbarEndpointIcon" alt =" " />Show Message Data</button >
183
+ <button class =" saga-button" aria-label = " message-not-involved-in-saga " ><img class =" saga-button-icon" :src =" ToolbarEndpointIcon" alt =" " />Show Message Data</button >
183
184
</div >
184
185
185
186
<!-- No saga Data Available container -->
@@ -213,7 +214,7 @@ const vm = computed<SagaViewModel>(() => {
213
214
<div class =" block" >
214
215
<div class =" row row--center" >
215
216
<div class =" cell cell--center" >
216
- <div class =" cell-inner" >
217
+ <div class =" cell-inner cell-inner-center " >
217
218
<RouterLink :to =" vm.MessageIdUrl" >← Back to Messages</RouterLink >
218
219
<h1 aria-label =" saga name" class =" main-title" >{{ vm.SagaTitle }}</h1 >
219
220
<div >
@@ -224,6 +225,7 @@ const vm = computed<SagaViewModel>(() => {
224
225
</div >
225
226
</div >
226
227
228
+ <!-- Iterate through each saga update -->
227
229
<div v-for =" (update, index) in vm.SagaUpdates" :key =" index" class =" block" role =" row" >
228
230
<!-- Initiating message and saga status header -->
229
231
<div class =" row" >
@@ -235,8 +237,8 @@ const vm = computed<SagaViewModel>(() => {
235
237
</div >
236
238
</div >
237
239
<div class =" cell cell--center cell-flex" >
238
- <div class =" cell-inner cell-inner--align-bottom" >
239
- <img class =" saga-icon saga-icon--center-cell" :src =" SagaInitiatedIcon" alt =" " />
240
+ <div class =" cell-inner cell-inner-center cell-inner- -align-bottom" >
241
+ <img class =" saga-icon saga-icon--center-cell" :src =" update.IsFirstNode ? SagaInitiatedIcon : SagaUpdatedIcon " alt =" " />
240
242
<h2 class =" saga-status-title saga-status-title--inline" >{{ update.StatusDisplay }}</h2 >
241
243
<div class =" timestamp timestamp--inline" aria-label =" time stamp" >{{ update.FormattedStartTime }}</div >
242
244
</div >
@@ -247,81 +249,96 @@ const vm = computed<SagaViewModel>(() => {
247
249
<div class =" row" >
248
250
<!-- Left side - Message Data box -->
249
251
<div class =" cell cell--side cell--left-border cell--aling-top" >
250
- <div class =" message-data-box" >
251
- <span class =" message-data-box-text" ><b >Property Y</b > = Sample value</span >
252
+ <div class =" message-data message-data--active" >
253
+ <!-- Generic message data boxes since we don't have specific data -->
254
+ <div class =" message-data-box" v-if =" update.InitiatingMessageType" >
255
+ <b class =" message-data-box-text" >OrderId</b >
256
+ <span class =" message-data-box-text" >=</span >
257
+ <span class =" message-data-box-text--ellipsis" title =" Sample ID" >Sample ID</span >
258
+ </div >
252
259
</div >
253
260
</div >
254
261
255
- <!-- Center - Saga properties and timeout requests -->
262
+ <!-- Center - Saga properties -->
256
263
<div class =" cell cell--center cell--center--border" >
257
- <div class =" cell-inner cell-inner-center " >
264
+ <div class =" cell-inner cell-inner-line " >
258
265
<div class =" saga-properties" >
259
266
<a class =" saga-properties-link" href =" " >All Properties</a > /
260
267
<a class =" saga-properties-link saga-properties-link--active" href =" " >Updated Properties</a >
261
268
</div >
262
269
263
- <!-- Display detailed saga properties if available -->
270
+ <!-- Display saga properties if available -->
264
271
<ul v-if =" update.Status !== 'completed'" class =" saga-properties-list" >
265
272
<li class =" saga-properties-list-item" >
266
- <span class =" saga-properties-list-text" title =" Prop 1 (new)" >Prop 1 (new)</span >
273
+ <span class =" saga-properties-list-text" title =" Property (new)" >Property (new)</span >
267
274
<span class =" saga-properties-list-text" >=</span >
268
- <span class =" saga-properties-list-text" title =" " > sample property value </span >
275
+ <span class =" saga-properties-list-text" title =" Sample Value " > Sample Value </span >
269
276
</li >
270
277
</ul >
271
-
272
- <!-- Timeout request indicators -->
273
- <template v-if =" update .HasTimeout " >
274
- <div v-for =" (msg, msgIndex) in update.TimeoutMessages" :key =" msgIndex" >
275
- <img class =" saga-icon saga-icon--center-cell saga-icon--overlap" :src =" SagaTimeoutIcon" alt =" " />
276
- <a class =" timeout-status" href =" " aria-label =" timeout requested" > Timeout Requested = {{ msg.TimeoutFriendly }} </a >
277
- </div >
278
- </template >
279
278
</div >
280
279
</div >
281
280
282
281
<!-- Right side - outgoing messages (non-timeout) -->
283
282
<div class =" cell cell--side cell--aling-top" v-if =" update.HasNonTimeoutMessages" >
284
283
<div class =" cell-inner cell-inner-right" ></div >
285
- <div v-for =" (msg, msgIndex) in update.NonTimeoutMessages" :key =" msgIndex" >
284
+ <template v-for =" (msg , msgIndex ) in update .NonTimeoutMessages " :key =" msgIndex " >
286
285
<div class =" cell-inner cell-inner-side" >
287
286
<img class =" saga-icon saga-icon--side-cell" :src =" msg.IsEventMessage ? EventIcon : CommandIcon" :alt =" msg.IsEventMessage ? 'Event' : 'Command'" />
288
287
<h2 class =" message-title" >{{ msg.MessageFriendlyTypeName }}</h2 >
289
288
<div class =" timestamp" >{{ msg.FormattedTimeSent }}</div >
290
289
</div >
291
- <div class =" message-data-box" >
292
- <span class =" message-data-box-text" ><b >Property 1</b > = Sample value</span >
290
+ <div class =" message-data message-data--active" >
291
+ <div class =" message-data-box" >
292
+ <b class =" message-data-box-text" >OrderId</b >
293
+ <span class =" message-data-box-text" >=</span >
294
+ <span class =" message-data-box-text--ellipsis" title =" Sample ID" >Sample ID</span >
295
+ </div >
293
296
</div >
294
- </div >
297
+ </template >
295
298
</div >
296
299
</div >
297
300
298
- <!-- Display each outgoing timeout message -->
299
- <div v-for =" (msg, msgIndex) in update.TimeoutMessages" :key =" 'timeout-' + msgIndex" class =" row row--right" >
300
- <div class =" cell cell--center cell--top-border" >
301
- <div class =" cell-inner cell-inner-top" ></div >
302
- </div >
303
- <div class =" cell cell--side" >
304
- <div class =" cell-inner cell-inner-right" ></div >
305
- <div class =" cell-inner cell-inner-side cell-inner-side--active" >
306
- <img class =" saga-icon saga-icon--side-cell" :src =" TimeoutIcon" alt =" " />
307
- <h2 class =" message-title" aria-label =" timeout message type" >{{ msg.MessageFriendlyTypeName }}</h2 >
308
- <div class =" timestamp" aria-label =" timeout message timestamp" >{{ msg.FormattedTimeSent }}</div >
301
+ <!-- Display each outgoing timeout message in separate rows -->
302
+ <template v-for =" (msg , msgIndex ) in update .TimeoutMessages " :key =" ' timeout-' + msgIndex " >
303
+ <div class =" row row--right" >
304
+ <div class =" cell cell--center" >
305
+ <div class =" cell-inner cell-inner-line" >
306
+ <img class =" saga-icon saga-icon--center-cell saga-icon--overlap" :src =" SagaTimeoutIcon" alt =" " />
307
+ <a class =" timeout-status" href =" " aria-label =" timeout requested" >Timeout Requested = {{ msg.TimeoutFriendly }}</a >
308
+ </div >
309
+ </div >
310
+ <div class =" cell cell--side" ></div >
311
+ <div class =" cell cell--center cell--top-border" >
312
+ <div class =" cell-inner cell-inner-top" ></div >
313
+ <div class =" cell-inner cell-inner-line" ></div >
309
314
</div >
310
- <div class =" message-data-box" >
311
- <span class =" message-data-box-text" ><b >Property X</b > =Sample value</span >
315
+ <div class =" cell cell--side" >
316
+ <div class =" cell-inner cell-inner-right" ></div >
317
+ <div class =" cell-inner cell-inner-side cell-inner-side--active" >
318
+ <img class =" saga-icon saga-icon--side-cell" :src =" TimeoutIcon" alt =" " />
319
+ <h2 class =" message-title" aria-label =" timeout message type" >{{ msg.MessageFriendlyTypeName }}</h2 >
320
+ <div class =" timestamp" aria-label =" timeout message timestamp" >{{ msg.FormattedTimeSent }}</div >
321
+ </div >
322
+ <div class =" message-data message-data--active" >
323
+ <div class =" message-data-box" >
324
+ <b class =" message-data-box-text" >OrderId</b >
325
+ <span class =" message-data-box-text" >=</span >
326
+ <span class =" message-data-box-text--ellipsis" title =" Sample ID" >Sample ID</span >
327
+ </div >
328
+ </div >
312
329
</div >
313
330
</div >
314
- </div >
331
+ </template >
315
332
</div >
316
333
317
334
<!-- Saga Completed section -->
318
335
<div v-if =" vm.SagaCompleted" class =" block" >
319
336
<div class =" row row--center" >
320
337
<div class =" cell cell--center cell--inverted" >
321
- <div class =" cell-inner" >
338
+ <div class =" cell-inner cell-inner-center " >
322
339
<img class =" saga-icon saga-icon--center-cell" :src =" SagaCompletedIcon" alt =" " />
323
340
<h2 class =" saga-status-title saga-status-title--inline" >Saga Completed</h2 >
324
- <div class =" timestamp" aria-label = " saga completion time " >{{ vm.FormattedCompletionTime }}</div >
341
+ <div class =" timestamp" >{{ vm.FormattedCompletionTime }}</div >
325
342
</div >
326
343
</div >
327
344
</div >
@@ -394,7 +411,8 @@ const vm = computed<SagaViewModel>(() => {
394
411
width : 1.5rem ;
395
412
}
396
413
.container {
397
- /* width: 66.6667%; */
414
+ width : 66.6667% ;
415
+ min-width : 50rem ;
398
416
}
399
417
.block {
400
418
/* border: solid 1px lightgreen; */
@@ -443,28 +461,40 @@ const vm = computed<SagaViewModel>(() => {
443
461
}
444
462
445
463
.cell--top-border {
446
- /* align-self: flex-start; */
464
+ display : flex ;
465
+ flex-direction : column ;
447
466
}
448
467
.cell-inner {
449
- padding : 0.5rem ;
468
+ /* padding: 0.5rem; */
450
469
}
451
470
.cell-inner-top {
452
471
border-top : solid 2px #000000 ;
453
472
margin-left : 1rem ;
454
473
}
455
474
.cell-inner-center {
456
475
padding : 0.5rem ;
476
+ }
477
+ .cell-inner-line {
478
+ flex-grow : 1 ;
479
+ padding : 0.25rem 0.5rem ;
457
480
border-left : solid 2px #000000 ;
458
481
margin-left : 1rem ;
459
482
}
483
+ .cell-inner-line :first-child {
484
+ flex-grow : 1 ;
485
+ }
460
486
.cell-inner-center :first-child {
461
487
flex-grow : 1 ;
462
488
}
463
489
.cell-inner-side {
490
+ margin-top : 1rem ;
464
491
padding : 0.25rem 0.25rem 0 ;
465
492
border : solid 2px #cccccc ;
466
493
background-color : #cccccc ;
467
494
}
495
+ .cell-inner-side :nth-child (-n + 2 ) {
496
+ margin-top : 0 ;
497
+ }
468
498
.cell-inner-side--active {
469
499
border : solid 2px #000000 ;
470
500
}
@@ -495,6 +525,10 @@ const vm = computed<SagaViewModel>(() => {
495
525
496
526
/* Content styles */
497
527
528
+ * {
529
+ /* font-family: Verdana, Geneva, Tahoma, sans-serif; */
530
+ }
531
+
498
532
.saga-top-logo {
499
533
margin-bottom : 0.5rem ;
500
534
color : #00a3c4 ;
@@ -605,23 +639,35 @@ const vm = computed<SagaViewModel>(() => {
605
639
display : inline-block ;
606
640
text-overflow : ellipsis ;
607
641
}
642
+ .saga-properties-list-text :last-child {
643
+ padding-right : 0 ;
644
+ text-overflow : ellipsis ;
645
+ }
608
646
609
647
.timeout-status {
610
648
display : inline-block ;
611
- margin-top : 0.7rem ;
612
649
font-size : 1rem ;
613
650
font-weight : 900 ;
614
651
}
615
652
616
- .message-data-box {
617
- display : flex ;
618
- margin-bottom : 1rem ;
653
+ .message-data {
654
+ display : none ;
619
655
padding : 0.2rem ;
620
656
background-color : #ffffff ;
621
657
border : solid 1px #cccccc ;
622
658
font-size : 0.75rem ;
623
659
}
660
+ .message-data--active {
661
+ display : block ;
662
+ }
663
+ .message-data-box {
664
+ display : flex ;
665
+ }
624
666
.message-data-box-text {
667
+ display : inline-block ;
668
+ margin-right : 0.25rem ;
669
+ }
670
+ .message-data-box-text--ellipsis {
625
671
display : inline-block ;
626
672
overflow : hidden ;
627
673
max-width : 100% ;
0 commit comments