sf-i-events 1.0.741 → 1.0.743

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sf-i-events",
3
3
  "private": false,
4
- "version": "1.0.741",
4
+ "version": "1.0.743",
5
5
  "description": "Superflows Navigation Component",
6
6
  "main": "sf-i-events.js",
7
7
  "module": "sf-i-events.js",
package/sf-i-events.d.ts CHANGED
@@ -565,7 +565,7 @@ export declare class SfIEvents extends LitElement {
565
565
  renderCompletenessCsvForGraph: (dataBar: any, parameter: string) => void;
566
566
  renderTimelinessCsvForGraph: (dataBar: any, parameter: string) => void;
567
567
  renderComplianceCsvForGraph: (dataBar: any, parameter: string) => void;
568
- renderCompletenessGraph: (divContainer: HTMLDivElement, selectedTab?: number, selectedSummary?: number) => void;
568
+ renderCompletenessGraph: (divContainer: HTMLDivElement, selectedTab?: number, selectedSummary?: number, title?: string) => void;
569
569
  renderComplianceGraph: (divContainer: HTMLDivElement) => void;
570
570
  renderTimelinessGraph: (divContainer: HTMLDivElement) => void;
571
571
  renderRiskSeverityGraph: (divContainer: HTMLDivElement) => void;
package/sf-i-events.js CHANGED
@@ -339,6 +339,9 @@ let SfIEvents = class SfIEvents extends LitElement {
339
339
  .align-center {
340
340
  align-items: center;
341
341
  }
342
+ .flex-wrap {
343
+ flex-wrap: wrap;
344
+ }
342
345
  .mt-10 {
343
346
  margin-top: 10px;
344
347
  }
@@ -382,6 +385,14 @@ let SfIEvents = class SfIEvents extends LitElement {
382
385
  .td-wide {
383
386
  min-width: 300px;
384
387
  }
388
+ .td-head {
389
+ font-weight: 400;
390
+ padding-left: 5px;
391
+ vertical-align: middle;
392
+ font-size: 80%;
393
+ text-transform: capitalize;
394
+ text-align: left;
395
+ }
385
396
  td {
386
397
  padding: 5px;
387
398
  font-size: 70%;
@@ -393,7 +404,6 @@ let SfIEvents = class SfIEvents extends LitElement {
393
404
  }
394
405
  .td-odd {
395
406
  background-color: #efefef;
396
-
397
407
  }
398
408
  .td-even {
399
409
  background-color: #dedede;
@@ -2104,8 +2114,8 @@ let SfIEvents = class SfIEvents extends LitElement {
2104
2114
  //console.log('flowGraph', this.flowGraph);
2105
2115
  var html = '';
2106
2116
  html += '<div class="mb-20 stream-event-list" part="stream-event-list-charts">';
2107
- html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="duration-title-container"><h4 part="duration-title">' + parametersTitle + '</h4><button id="button-refresh" part="button-duration-title" class="align-center d-flex justify-center"><h4 part="duration-title">' + parametersTitle + '</h4><span part="duration-title-icon" class="material-icons ml-10">refresh</span></button></div>';
2108
- html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title">Last Updated on ' + this.lastupdated + '</h6></div>';
2117
+ html += '<div class="align-center d-flex flex-wrap align-center mb-10 w-100-m-0" part="duration-title-container"><h4 part="duration-title">' + parametersTitle + '</h4><button id="button-refresh" part="button-duration-title" class="align-center d-flex justify-center"><h4 part="duration-title">' + parametersTitle + '</h4><span part="duration-title-icon" class="material-icons ml-10">refresh</span></button></div>';
2118
+ html += '<div class="align-center d-flex flex-wrap align-center mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title" class="align-center d-flex"><span class="material-symbols-outlined">update</span>&nbsp;&nbsp;Last Updated on ' + this.lastupdated + '</h6></div>';
2109
2119
  if (showGraph) {
2110
2120
  html += '<div part="stream-event-chart-selection" class="mb-20">';
2111
2121
  html += '<div part="td-head" class="mb-5">Select Chart</div>';
@@ -2150,7 +2160,7 @@ let SfIEvents = class SfIEvents extends LitElement {
2150
2160
  var html = '';
2151
2161
  html += '<div class="mb-20 stream-event-list" part="stream-event-list-charts">';
2152
2162
  html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="duration-title-container"><h4 part="duration-title">' + parametersTitle + '</h4><button id="button-refresh" part="button-duration-title" class="align-center d-flex justify-center"><h4 part="duration-title">' + parametersTitle + '</h4><span part="duration-title-icon" class="material-icons ml-10">refresh</span></button></div>';
2153
- html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title">Last Updated on ' + this.lastupdated + '</h6></div>';
2163
+ html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title" class="align-center d-flex"><span class="material-symbols-outlined">update</span>&nbsp;&nbsp;Last Updated on ' + this.lastupdated + '</h6></div>';
2154
2164
  if (showGraph) {
2155
2165
  html += '<div class="chart-container d-flex scroll-x align-center"><div part="chart-item" class="chart-item"><canvas id="myChart"></canvas></div><div part="chart-item" class="chart-item"><canvas id="myChart4" class="gone"></canvas></div><div part="chart-item chart-item-middle" class="chart-item"><canvas id="myChart2" class="gone"></canvas></div><div part="chart-item" class="chart-item"><canvas id="myChart3" class="gone"></canvas></div></div>';
2156
2166
  html += '<div id="chart-settings-controls" class="mt-20"></div>';
@@ -2195,26 +2205,25 @@ let SfIEvents = class SfIEvents extends LitElement {
2195
2205
  };
2196
2206
  this.renderStatisticsFiltersTableStart = () => {
2197
2207
  var html = '';
2208
+ html += '<div class="w-100 scroll-x">';
2198
2209
  html += '<table id="statistics-table" part="statistics-table" class="statistics-table w-100"><tbody>';
2199
- // html += '<table id="stream-filters-table" part="stream-filters-table" class="stream-filters-table"><thead><tr><td><div class="d-flex align-center justify-center"> </div></td><td><div class="d-flex align-center justify-center">Total</div></td><td><div class="d-flex align-center justify-center"><span class="material-icons color-not-started">schedule</span>&nbsp;&nbsp;Not Started</div></td><td><div class="d-flex align-center justify-center"><span class="material-symbols-outlined color-pending">pending</span>&nbsp;&nbsp;Pending Approval</div></td><td><div class="d-flex align-center justify-center"><span class="material-symbols-outlined color-rejected">block</span>&nbsp;&nbsp;Rejected</div></td><td><div class="d-flex align-center justify-center"><span class="material-symbols-outlined color-done">check_circle</span>&nbsp;&nbsp;Approved</div></td></tr></thead><tbody>';
2200
2210
  return html;
2201
2211
  };
2202
2212
  this.renderStatisticsFiltersTableRow = () => {
2203
2213
  var html = '';
2204
2214
  html += '<tr class="tablerow">';
2205
- html += '<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">FILTER_CRITERIA_NAME</div><div>DASHBOARD_FILTER_NAME</div></div></td>';
2206
- html += '<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-icons color-not-started">schedule</span>&nbsp;&nbsp;Not Started</div><div>DASHBOARD_NOT_STARTED</div></div></td>';
2207
- html += '<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-pending">pending</span>&nbsp;&nbsp;Pending Approval</div><div>DASHBOARD_PENDING_APPROVAL</div></div></td>';
2208
- html += '<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-rejected">block</span>&nbsp;&nbsp;Rejected</div><div>DASHBOARD_REJECTED</div></div></td>';
2209
- html += '<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-done">check_circle</span>&nbsp;&nbsp;Approved</div><div>DASHBOARD_APPROVED</div></div></td>';
2210
- html += '<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">Total</div><div>DASHBOARD_TOTAL</div></div></td>';
2215
+ html += '<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">FILTER_CRITERIA_NAME</div><div>DASHBOARD_FILTER_NAME</div></div></td>';
2216
+ html += '<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-icons color-not-started">schedule</span>&nbsp;&nbsp;Not Started</div><div>DASHBOARD_NOT_STARTED</div></div></td>';
2217
+ html += '<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-pending">pending</span>&nbsp;&nbsp;Pending Approval</div><div>DASHBOARD_PENDING_APPROVAL</div></div></td>';
2218
+ html += '<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-rejected">block</span>&nbsp;&nbsp;Rejected</div><div>DASHBOARD_REJECTED</div></div></td>';
2219
+ html += '<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-done">check_circle</span>&nbsp;&nbsp;Approved</div><div>DASHBOARD_APPROVED</div></div></td>';
2220
+ html += '<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">Total</div><div>DASHBOARD_TOTAL</div></div></td>';
2211
2221
  html += '</tr>';
2212
- // html += '<tr class="tablerow"><td part="td-body" class="td-body"><span>DASHBOARD_FILTER_NAME</span></td><td><span>DASHBOARD_TOTAL</span></td><td><span>DASHBOARD_NOT_STARTED</span></td><td><span>DASHBOARD_PENDING_APPROVAL</span></td><td><span>DASHBOARD_REJECTED</span></td><td><span>DASHBOARD_APPROVED</span></td></tr>';
2213
2222
  return html;
2214
2223
  };
2215
2224
  this.renderStatisticsFiltersTableEnd = () => {
2216
2225
  var html = '';
2217
- html += '</tbody></table>';
2226
+ html += '</tbody></table><div>';
2218
2227
  return html;
2219
2228
  };
2220
2229
  this.getCalendarRowHide = (events, i, lastDay, month, firstDate = null, currDate = null) => {
@@ -2795,15 +2804,12 @@ let SfIEvents = class SfIEvents extends LitElement {
2795
2804
  approved += (_f = this.statistics[mmdd]["approved"]) !== null && _f !== void 0 ? _f : 0;
2796
2805
  }
2797
2806
  }
2798
- for (let filtercriteria of Object.keys(this.statisticsFiltersData)) {
2799
- for (let filterid of Object.keys(this.statisticsFiltersData[filtercriteria])) {
2800
- let filtername = "";
2801
- for (let filterval of this.statisticsMeta[filtercriteria]) {
2802
- if (filterval.indexOf(filterid) >= 0) {
2803
- filtername = filterval.split(';')[0];
2804
- break;
2805
- }
2806
- }
2807
+ if (Object.keys(this.statisticsFiltersData).length > 0) {
2808
+ let filtercriteria = Object.keys(this.statisticsFiltersData)[0];
2809
+ let sortedFilters = Util.alphabeticalSort(this.statisticsMeta[filtercriteria]);
2810
+ for (let [filterindex, filterval] of sortedFilters.entries()) {
2811
+ let filtername = filterval.split(';')[0];
2812
+ let filterid = filterval.split(';')[1];
2807
2813
  let filterTotal = 0, filterNotStarted = 0, filterPendingApproval = 0, filterRejected = 0, filterApproved = 0;
2808
2814
  for (var i = iInit; i <= iLast; i++) {
2809
2815
  let mmdd = "";
@@ -2826,16 +2832,20 @@ let SfIEvents = class SfIEvents extends LitElement {
2826
2832
  }
2827
2833
  }
2828
2834
  filtersTableHtml += this.renderStatisticsFiltersTableRow();
2835
+ if (filterindex % 2 == 0) {
2836
+ filtersTableHtml = filtersTableHtml.replace(/TD_BODY_CLASS/g, "td-light");
2837
+ }
2838
+ else {
2839
+ filtersTableHtml = filtersTableHtml.replace(/TD_BODY_CLASS/g, "td-dark");
2840
+ }
2829
2841
  filtersTableHtml = filtersTableHtml.replace("FILTER_CRITERIA_NAME", filtercriteria + "");
2830
2842
  filtersTableHtml = filtersTableHtml.replace("DASHBOARD_FILTER_NAME", (filtername + "").replace(/\([^)]*\)/g, ""));
2831
2843
  filtersTableHtml = filtersTableHtml.replace("DASHBOARD_TOTAL", filterTotal + "");
2832
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_NOT_STARTED", filterNotStarted + " (" + Util.percentageString(filterNotStarted, filterTotal) + ")");
2833
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_APPROVED", filterApproved + " (" + Util.percentageString(filterApproved, filterTotal) + ")");
2834
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_PENDING_APPROVAL", filterPendingApproval + " (" + Util.percentageString(filterPendingApproval, filterTotal) + ")");
2835
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_REJECTED", filterRejected + " (" + Util.percentageString(filterRejected, filterTotal) + ")");
2844
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_NOT_STARTED", filterNotStarted + Util.percentageString(filterNotStarted, filterTotal));
2845
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_APPROVED", filterApproved + Util.percentageString(filterApproved, filterTotal));
2846
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_PENDING_APPROVAL", filterPendingApproval + Util.percentageString(filterPendingApproval, filterTotal));
2847
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_REJECTED", filterRejected + Util.percentageString(filterRejected, filterTotal));
2836
2848
  }
2837
- }
2838
- if (Object.keys(this.statisticsFiltersData).length > 0) {
2839
2849
  filtersTableHtml += this.renderStatisticsFiltersTableEnd();
2840
2850
  }
2841
2851
  html += filtersTableHtml;
@@ -2852,6 +2862,10 @@ let SfIEvents = class SfIEvents extends LitElement {
2852
2862
  html = html.replace("DASHBOARD_REJECTED", rejected + "");
2853
2863
  this.htmlDataStats = 'Completeness<br /><br /><table class="w-100"><tr><th class="w-14">Total</th><th class="w-14">Not Started</th><th class="w-14">Approved</th><th class="w-14">Pending Approval</th><th class="w-14">Rejected</th><tr>';
2854
2864
  this.htmlDataStats += '<tr><td class="w-14 text-center td-odd">' + total + '</td><td class="w-14 text-center td-odd">' + notStarted + '</td><td class="w-14 text-center td-odd">' + approved + '</td><td class="w-14 text-center td-odd">' + pendingApproval + '</td><td class="w-14 text-center td-odd">' + rejected + '</td></table>';
2865
+ if (Object.keys(this.statisticsFiltersData).length > 0) {
2866
+ this.htmlDataStats += '<br /><br />Report<br /><br />';
2867
+ this.htmlDataStats += filtersTableHtml;
2868
+ }
2855
2869
  return html;
2856
2870
  };
2857
2871
  this.renderReporting = (event, mmddyyyy) => {
@@ -4223,10 +4237,8 @@ let SfIEvents = class SfIEvents extends LitElement {
4223
4237
  let target = ev.target;
4224
4238
  let inputLabelCriteria = eventsContainer.querySelector('#input-label-criteria');
4225
4239
  let selectFilterValues = eventsContainer.querySelector('#select-filter-values');
4226
- // if(target.value == ""){
4227
4240
  selectFilterValues.value = "";
4228
4241
  this.processDateSelectionViewer(eventsContainer);
4229
- // }
4230
4242
  selectFilterValues.innerHTML = "";
4231
4243
  let option = new Option();
4232
4244
  option.value = "";
@@ -4259,10 +4271,8 @@ let SfIEvents = class SfIEvents extends LitElement {
4259
4271
  let target = ev.target;
4260
4272
  let inputLabelCriteriaMobile = eventsContainer.querySelector('#input-label-criteria-mobile');
4261
4273
  let selectFilterValuesMobile = eventsContainer.querySelector('#select-filter-values-mobile');
4262
- if (target.value == "") {
4263
- selectFilterValuesMobile.value = "";
4264
- this.processDateSelectionViewer(eventsContainer);
4265
- }
4274
+ selectFilterValuesMobile.value = "";
4275
+ this.processDateSelectionViewer(eventsContainer);
4266
4276
  selectFilterValuesMobile.innerHTML = "";
4267
4277
  let option = new Option();
4268
4278
  option.value = "";
@@ -4729,7 +4739,7 @@ let SfIEvents = class SfIEvents extends LitElement {
4729
4739
  }
4730
4740
  this.attachHandlers(eventContainer, valueStart, valueEnd);
4731
4741
  if (eventContainer.innerHTML.indexOf('myChart') >= 0) {
4732
- this.renderCompletenessGraph(eventContainer, -1, 2);
4742
+ this.renderCompletenessGraph(eventContainer, -1, 2, "Completeness - " + "From " + new Date(valueStart).toLocaleDateString('en-IN') + " To " + new Date(valueEnd).toLocaleDateString('en-IN') + " " + this.htmlStatsFilter.replace(/Filters Selected /g, ""));
4733
4743
  }
4734
4744
  };
4735
4745
  this.initFindRightCol = () => {
@@ -6397,11 +6407,11 @@ let SfIEvents = class SfIEvents extends LitElement {
6397
6407
  html += '</div>';
6398
6408
  html += '<div class="d-flex w-100">';
6399
6409
  html += '<div class="calendar-left-col desktop-only flex-col justify-start align-end">';
6400
- html += '<div class="title-item-date d-flex flex-col align-end">';
6410
+ html += '<div class="title-item-date d-flex flex-col align-start">';
6401
6411
  html += '<label part="input-label">Start Date</label>';
6402
6412
  html += '<input id="stream-start-date" part="date-range-preselected" type="date" />';
6403
6413
  html += '</div>';
6404
- html += '<div class="title-item-date d-flex flex-col align-end">';
6414
+ html += '<div class="title-item-date d-flex flex-col align-start">';
6405
6415
  html += '<label part="input-label">End Date</label>';
6406
6416
  html += '<input id="stream-end-date" part="date-range-preselected" type="date" />';
6407
6417
  html += '</div>';
@@ -6414,11 +6424,11 @@ let SfIEvents = class SfIEvents extends LitElement {
6414
6424
  html += '<div class="title-item-date">';
6415
6425
  html += '<button id="button-this-year" part="button-range-preselected">This Year</button>';
6416
6426
  html += '</div>';
6417
- html += '<div class="title-item-date d-flex flex-col align-end">';
6427
+ html += '<div class="title-item-date d-flex flex-col align-start">';
6418
6428
  html += '<label part="input-label-filter-criteria" id="input-label-filter">Filter Criteria</label>';
6419
6429
  html += '<select part="input-select-calendar-filter" id="select-filter-criteria"></select>';
6420
6430
  html += '</div>';
6421
- html += '<div class="title-item-date d-flex flex-col align-end">';
6431
+ html += '<div class="title-item-date d-flex flex-col align-start">';
6422
6432
  html += '<label part="input-label-filter-value" id="input-label-criteria"></label>';
6423
6433
  html += '<select part="input-select-calendar-filter" id="select-filter-values"></select>';
6424
6434
  html += '</div>';
@@ -7356,7 +7366,7 @@ let SfIEvents = class SfIEvents extends LitElement {
7356
7366
  }
7357
7367
  //console.log('rendering csv csvComplianceStats', this.csvComplianceStats);
7358
7368
  };
7359
- this.renderCompletenessGraph = (divContainer, selectedTab = -1, selectedSummary = -1) => {
7369
+ this.renderCompletenessGraph = (divContainer, selectedTab = -1, selectedSummary = -1, title = "Completeness") => {
7360
7370
  this.clearSelectedGraphParam();
7361
7371
  // this.clearSelectedLegend();
7362
7372
  this.csvGraphStats = "";
@@ -7390,7 +7400,7 @@ let SfIEvents = class SfIEvents extends LitElement {
7390
7400
  }]
7391
7401
  };
7392
7402
  this.renderChartSettings(divContainer, selectedTab, selectedSummary, ctx);
7393
- this.renderChart(ctx, 'doughnut', data, "Completeness");
7403
+ this.renderChart(ctx, 'doughnut', data, title);
7394
7404
  }
7395
7405
  const data = {
7396
7406
  labels: ['Approved', 'Not Started', 'Pending Approval', 'Rejected'],
@@ -7421,7 +7431,7 @@ let SfIEvents = class SfIEvents extends LitElement {
7421
7431
  itemsCompliance[i].style.display = 'none';
7422
7432
  }
7423
7433
  this.renderChartSettings(divContainer, selectedTab, selectedSummary, ctx);
7424
- this.renderChart(ctx, 'doughnut', data, "Completeness");
7434
+ this.renderChart(ctx, 'doughnut', data, title);
7425
7435
  };
7426
7436
  this.renderComplianceGraph = (divContainer) => {
7427
7437
  //console.log('Rendering compliance graph...');
@@ -19403,7 +19413,7 @@ SfIEvents.styles = css `
19403
19413
  display: none;
19404
19414
  position: fixed;
19405
19415
  bottom: 10px;
19406
- left: 10px
19416
+ right: 10px
19407
19417
  }
19408
19418
 
19409
19419
  .small-icon {
@@ -343,6 +343,9 @@ export class SfIEvents extends LitElement {
343
343
  .align-center {
344
344
  align-items: center;
345
345
  }
346
+ .flex-wrap {
347
+ flex-wrap: wrap;
348
+ }
346
349
  .mt-10 {
347
350
  margin-top: 10px;
348
351
  }
@@ -386,6 +389,14 @@ export class SfIEvents extends LitElement {
386
389
  .td-wide {
387
390
  min-width: 300px;
388
391
  }
392
+ .td-head {
393
+ font-weight: 400;
394
+ padding-left: 5px;
395
+ vertical-align: middle;
396
+ font-size: 80%;
397
+ text-transform: capitalize;
398
+ text-align: left;
399
+ }
389
400
  td {
390
401
  padding: 5px;
391
402
  font-size: 70%;
@@ -397,7 +408,6 @@ export class SfIEvents extends LitElement {
397
408
  }
398
409
  .td-odd {
399
410
  background-color: #efefef;
400
-
401
411
  }
402
412
  .td-even {
403
413
  background-color: #dedede;
@@ -2639,7 +2649,7 @@ export class SfIEvents extends LitElement {
2639
2649
  display: none;
2640
2650
  position: fixed;
2641
2651
  bottom: 10px;
2642
- left: 10px
2652
+ right: 10px
2643
2653
  }
2644
2654
 
2645
2655
  .small-icon {
@@ -4177,8 +4187,8 @@ export class SfIEvents extends LitElement {
4177
4187
  var html = '';
4178
4188
 
4179
4189
  html += '<div class="mb-20 stream-event-list" part="stream-event-list-charts">';
4180
- html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="duration-title-container"><h4 part="duration-title">' + parametersTitle + '</h4><button id="button-refresh" part="button-duration-title" class="align-center d-flex justify-center"><h4 part="duration-title">' + parametersTitle + '</h4><span part="duration-title-icon" class="material-icons ml-10">refresh</span></button></div>';
4181
- html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title">Last Updated on ' + this.lastupdated + '</h6></div>';
4190
+ html += '<div class="align-center d-flex flex-wrap align-center mb-10 w-100-m-0" part="duration-title-container"><h4 part="duration-title">' + parametersTitle + '</h4><button id="button-refresh" part="button-duration-title" class="align-center d-flex justify-center"><h4 part="duration-title">' + parametersTitle + '</h4><span part="duration-title-icon" class="material-icons ml-10">refresh</span></button></div>';
4191
+ html += '<div class="align-center d-flex flex-wrap align-center mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title" class="align-center d-flex"><span class="material-symbols-outlined">update</span>&nbsp;&nbsp;Last Updated on ' + this.lastupdated + '</h6></div>';
4182
4192
  if(showGraph) {
4183
4193
  html += '<div part="stream-event-chart-selection" class="mb-20">';
4184
4194
  html += '<div part="td-head" class="mb-5">Select Chart</div>';
@@ -4230,7 +4240,7 @@ export class SfIEvents extends LitElement {
4230
4240
 
4231
4241
  html += '<div class="mb-20 stream-event-list" part="stream-event-list-charts">';
4232
4242
  html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="duration-title-container"><h4 part="duration-title">' + parametersTitle + '</h4><button id="button-refresh" part="button-duration-title" class="align-center d-flex justify-center"><h4 part="duration-title">' + parametersTitle + '</h4><span part="duration-title-icon" class="material-icons ml-10">refresh</span></button></div>';
4233
- html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title">Last Updated on ' + this.lastupdated + '</h6></div>';
4243
+ html += '<div class="align-center d-flex flex-wrap mb-10 w-100-m-0" part="last-update-title-container"><h6 part="last-update-title" class="align-center d-flex"><span class="material-symbols-outlined">update</span>&nbsp;&nbsp;Last Updated on ' + this.lastupdated + '</h6></div>';
4234
4244
  if(showGraph) {
4235
4245
  html += '<div class="chart-container d-flex scroll-x align-center"><div part="chart-item" class="chart-item"><canvas id="myChart"></canvas></div><div part="chart-item" class="chart-item"><canvas id="myChart4" class="gone"></canvas></div><div part="chart-item chart-item-middle" class="chart-item"><canvas id="myChart2" class="gone"></canvas></div><div part="chart-item" class="chart-item"><canvas id="myChart3" class="gone"></canvas></div></div>';
4236
4246
  html += '<div id="chart-settings-controls" class="mt-20"></div>'
@@ -4294,9 +4304,8 @@ export class SfIEvents extends LitElement {
4294
4304
  renderStatisticsFiltersTableStart = () => {
4295
4305
 
4296
4306
  var html = '';
4297
-
4307
+ html += '<div class="w-100 scroll-x">'
4298
4308
  html += '<table id="statistics-table" part="statistics-table" class="statistics-table w-100"><tbody>';
4299
- // html += '<table id="stream-filters-table" part="stream-filters-table" class="stream-filters-table"><thead><tr><td><div class="d-flex align-center justify-center"> </div></td><td><div class="d-flex align-center justify-center">Total</div></td><td><div class="d-flex align-center justify-center"><span class="material-icons color-not-started">schedule</span>&nbsp;&nbsp;Not Started</div></td><td><div class="d-flex align-center justify-center"><span class="material-symbols-outlined color-pending">pending</span>&nbsp;&nbsp;Pending Approval</div></td><td><div class="d-flex align-center justify-center"><span class="material-symbols-outlined color-rejected">block</span>&nbsp;&nbsp;Rejected</div></td><td><div class="d-flex align-center justify-center"><span class="material-symbols-outlined color-done">check_circle</span>&nbsp;&nbsp;Approved</div></td></tr></thead><tbody>';
4300
4309
 
4301
4310
  return html;
4302
4311
 
@@ -4306,14 +4315,13 @@ export class SfIEvents extends LitElement {
4306
4315
 
4307
4316
  var html = '';
4308
4317
  html += '<tr class="tablerow">'
4309
- html +='<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">FILTER_CRITERIA_NAME</div><div>DASHBOARD_FILTER_NAME</div></div></td>'
4310
- html +='<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-icons color-not-started">schedule</span>&nbsp;&nbsp;Not Started</div><div>DASHBOARD_NOT_STARTED</div></div></td>'
4311
- html +='<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-pending">pending</span>&nbsp;&nbsp;Pending Approval</div><div>DASHBOARD_PENDING_APPROVAL</div></div></td>'
4312
- html +='<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-rejected">block</span>&nbsp;&nbsp;Rejected</div><div>DASHBOARD_REJECTED</div></div></td>'
4313
- html +='<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-done">check_circle</span>&nbsp;&nbsp;Approved</div><div>DASHBOARD_APPROVED</div></div></td>'
4314
- html +='<td part="td-body" class="td-body"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">Total</div><div>DASHBOARD_TOTAL</div></div></td>'
4318
+ html +='<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">FILTER_CRITERIA_NAME</div><div>DASHBOARD_FILTER_NAME</div></div></td>'
4319
+ html +='<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-icons color-not-started">schedule</span>&nbsp;&nbsp;Not Started</div><div>DASHBOARD_NOT_STARTED</div></div></td>'
4320
+ html +='<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-pending">pending</span>&nbsp;&nbsp;Pending Approval</div><div>DASHBOARD_PENDING_APPROVAL</div></div></td>'
4321
+ html +='<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-rejected">block</span>&nbsp;&nbsp;Rejected</div><div>DASHBOARD_REJECTED</div></div></td>'
4322
+ html +='<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center"><span class="small-icon material-symbols-outlined color-done">check_circle</span>&nbsp;&nbsp;Approved</div><div>DASHBOARD_APPROVED</div></div></td>'
4323
+ html +='<td part="td-body" class="td-body TD_BODY_CLASS"><div class="d-flex align-center flex-wrap"><div part="td-head" class="pl-0-imp w-100 d-flex align-center">Total</div><div>DASHBOARD_TOTAL</div></div></td>'
4315
4324
  html += '</tr>';
4316
- // html += '<tr class="tablerow"><td part="td-body" class="td-body"><span>DASHBOARD_FILTER_NAME</span></td><td><span>DASHBOARD_TOTAL</span></td><td><span>DASHBOARD_NOT_STARTED</span></td><td><span>DASHBOARD_PENDING_APPROVAL</span></td><td><span>DASHBOARD_REJECTED</span></td><td><span>DASHBOARD_APPROVED</span></td></tr>';
4317
4325
 
4318
4326
  return html;
4319
4327
 
@@ -4322,7 +4330,7 @@ export class SfIEvents extends LitElement {
4322
4330
  renderStatisticsFiltersTableEnd = () => {
4323
4331
 
4324
4332
  var html = '';
4325
- html += '</tbody></table>';
4333
+ html += '</tbody></table><div>';
4326
4334
 
4327
4335
  return html;
4328
4336
 
@@ -5041,15 +5049,12 @@ export class SfIEvents extends LitElement {
5041
5049
 
5042
5050
  }
5043
5051
 
5044
- for(let filtercriteria of Object.keys(this.statisticsFiltersData)){
5045
- for(let filterid of Object.keys(this.statisticsFiltersData[filtercriteria])){
5046
- let filtername = ""
5047
- for(let filterval of this.statisticsMeta[filtercriteria]){
5048
- if(filterval.indexOf(filterid) >= 0){
5049
- filtername = filterval.split(';')[0]
5050
- break;
5051
- }
5052
- }
5052
+ if(Object.keys(this.statisticsFiltersData).length > 0){
5053
+ let filtercriteria = Object.keys(this.statisticsFiltersData)[0]
5054
+ let sortedFilters = Util.alphabeticalSort(this.statisticsMeta[filtercriteria])
5055
+ for(let [filterindex, filterval] of sortedFilters.entries()){
5056
+ let filtername = filterval.split(';')[0]
5057
+ let filterid = filterval.split(';')[1]
5053
5058
  let filterTotal = 0, filterNotStarted = 0, filterPendingApproval = 0, filterRejected = 0, filterApproved = 0;
5054
5059
  for(var i = iInit; i <= iLast; i++) {
5055
5060
 
@@ -5072,19 +5077,20 @@ export class SfIEvents extends LitElement {
5072
5077
  }
5073
5078
  }
5074
5079
  }
5075
-
5076
5080
  filtersTableHtml += this.renderStatisticsFiltersTableRow()
5081
+ if(filterindex % 2 == 0){
5082
+ filtersTableHtml = filtersTableHtml.replace(/TD_BODY_CLASS/g, "td-light");
5083
+ }else{
5084
+ filtersTableHtml = filtersTableHtml.replace(/TD_BODY_CLASS/g, "td-dark");
5085
+ }
5077
5086
  filtersTableHtml = filtersTableHtml.replace("FILTER_CRITERIA_NAME", filtercriteria+"");
5078
5087
  filtersTableHtml = filtersTableHtml.replace("DASHBOARD_FILTER_NAME", (filtername+"").replace(/\([^)]*\)/g,""));
5079
5088
  filtersTableHtml = filtersTableHtml.replace("DASHBOARD_TOTAL", filterTotal+"");
5080
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_NOT_STARTED", filterNotStarted+" (" + Util.percentageString(filterNotStarted, filterTotal) + ")");
5081
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_APPROVED", filterApproved+" (" + Util.percentageString(filterApproved, filterTotal) + ")");
5082
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_PENDING_APPROVAL", filterPendingApproval+" (" + Util.percentageString(filterPendingApproval, filterTotal) + ")");
5083
- filtersTableHtml = filtersTableHtml.replace("DASHBOARD_REJECTED", filterRejected+" (" + Util.percentageString(filterRejected, filterTotal) + ")");
5089
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_NOT_STARTED", filterNotStarted+ Util.percentageString(filterNotStarted, filterTotal));
5090
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_APPROVED", filterApproved + Util.percentageString(filterApproved, filterTotal));
5091
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_PENDING_APPROVAL", filterPendingApproval + Util.percentageString(filterPendingApproval, filterTotal));
5092
+ filtersTableHtml = filtersTableHtml.replace("DASHBOARD_REJECTED", filterRejected + Util.percentageString(filterRejected, filterTotal));
5084
5093
  }
5085
- }
5086
-
5087
- if(Object.keys(this.statisticsFiltersData).length > 0){
5088
5094
  filtersTableHtml += this.renderStatisticsFiltersTableEnd()
5089
5095
  }
5090
5096
 
@@ -5107,6 +5113,10 @@ export class SfIEvents extends LitElement {
5107
5113
 
5108
5114
  this.htmlDataStats = 'Completeness<br /><br /><table class="w-100"><tr><th class="w-14">Total</th><th class="w-14">Not Started</th><th class="w-14">Approved</th><th class="w-14">Pending Approval</th><th class="w-14">Rejected</th><tr>';
5109
5115
  this.htmlDataStats += '<tr><td class="w-14 text-center td-odd">'+total+'</td><td class="w-14 text-center td-odd">'+notStarted+'</td><td class="w-14 text-center td-odd">'+approved+'</td><td class="w-14 text-center td-odd">'+pendingApproval+'</td><td class="w-14 text-center td-odd">'+rejected+'</td></table>'
5116
+ if(Object.keys(this.statisticsFiltersData).length > 0){
5117
+ this.htmlDataStats += '<br /><br />Report<br /><br />'
5118
+ this.htmlDataStats += filtersTableHtml
5119
+ }
5110
5120
 
5111
5121
  return html;
5112
5122
  }
@@ -6716,10 +6726,8 @@ export class SfIEvents extends LitElement {
6716
6726
  let target = ev.target as HTMLSelectElement
6717
6727
  let inputLabelCriteria = eventsContainer.querySelector('#input-label-criteria') as HTMLLabelElement
6718
6728
  let selectFilterValues = eventsContainer.querySelector('#select-filter-values') as HTMLSelectElement
6719
- // if(target.value == ""){
6720
- selectFilterValues.value = ""
6721
- this.processDateSelectionViewer(eventsContainer)
6722
- // }
6729
+ selectFilterValues.value = ""
6730
+ this.processDateSelectionViewer(eventsContainer)
6723
6731
 
6724
6732
  selectFilterValues.innerHTML = ""
6725
6733
  let option = new Option()
@@ -6752,10 +6760,8 @@ export class SfIEvents extends LitElement {
6752
6760
  let target = ev.target as HTMLSelectElement
6753
6761
  let inputLabelCriteriaMobile = eventsContainer.querySelector('#input-label-criteria-mobile') as HTMLLabelElement
6754
6762
  let selectFilterValuesMobile = eventsContainer.querySelector('#select-filter-values-mobile') as HTMLSelectElement
6755
- if(target.value == ""){
6756
- selectFilterValuesMobile.value = ""
6757
- this.processDateSelectionViewer(eventsContainer)
6758
- }
6763
+ selectFilterValuesMobile.value = ""
6764
+ this.processDateSelectionViewer(eventsContainer)
6759
6765
 
6760
6766
  selectFilterValuesMobile.innerHTML = ""
6761
6767
  let option = new Option()
@@ -7323,7 +7329,7 @@ export class SfIEvents extends LitElement {
7323
7329
 
7324
7330
  if(eventContainer.innerHTML.indexOf('myChart') >= 0) {
7325
7331
 
7326
- this.renderCompletenessGraph(eventContainer, -1, 2);
7332
+ this.renderCompletenessGraph(eventContainer, -1, 2, "Completeness - " + "From " + new Date(valueStart).toLocaleDateString('en-IN') + " To " + new Date(valueEnd).toLocaleDateString('en-IN') + " " + this.htmlStatsFilter.replace(/Filters Selected /g,""));
7327
7333
 
7328
7334
  }
7329
7335
 
@@ -9394,11 +9400,11 @@ export class SfIEvents extends LitElement {
9394
9400
  html += '<div class="d-flex w-100">';
9395
9401
  html += '<div class="calendar-left-col desktop-only flex-col justify-start align-end">';
9396
9402
 
9397
- html += '<div class="title-item-date d-flex flex-col align-end">';
9403
+ html += '<div class="title-item-date d-flex flex-col align-start">';
9398
9404
  html += '<label part="input-label">Start Date</label>'
9399
9405
  html += '<input id="stream-start-date" part="date-range-preselected" type="date" />'
9400
9406
  html += '</div>';
9401
- html += '<div class="title-item-date d-flex flex-col align-end">';
9407
+ html += '<div class="title-item-date d-flex flex-col align-start">';
9402
9408
  html += '<label part="input-label">End Date</label>'
9403
9409
  html += '<input id="stream-end-date" part="date-range-preselected" type="date" />'
9404
9410
  html += '</div>';
@@ -9411,11 +9417,11 @@ export class SfIEvents extends LitElement {
9411
9417
  html += '<div class="title-item-date">';
9412
9418
  html += '<button id="button-this-year" part="button-range-preselected">This Year</button>'
9413
9419
  html += '</div>';
9414
- html += '<div class="title-item-date d-flex flex-col align-end">';
9420
+ html += '<div class="title-item-date d-flex flex-col align-start">';
9415
9421
  html += '<label part="input-label-filter-criteria" id="input-label-filter">Filter Criteria</label>'
9416
9422
  html += '<select part="input-select-calendar-filter" id="select-filter-criteria"></select>'
9417
9423
  html += '</div>';
9418
- html += '<div class="title-item-date d-flex flex-col align-end">';
9424
+ html += '<div class="title-item-date d-flex flex-col align-start">';
9419
9425
  html += '<label part="input-label-filter-value" id="input-label-criteria"></label>'
9420
9426
  html += '<select part="input-select-calendar-filter" id="select-filter-values"></select>'
9421
9427
  html += '</div>';
@@ -10642,7 +10648,7 @@ export class SfIEvents extends LitElement {
10642
10648
 
10643
10649
  }
10644
10650
 
10645
- renderCompletenessGraph = (divContainer: HTMLDivElement, selectedTab: number = -1, selectedSummary: number = -1) => {
10651
+ renderCompletenessGraph = (divContainer: HTMLDivElement, selectedTab: number = -1, selectedSummary: number = -1, title: string = "Completeness") => {
10646
10652
 
10647
10653
  this.clearSelectedGraphParam();
10648
10654
  // this.clearSelectedLegend();
@@ -10683,7 +10689,7 @@ export class SfIEvents extends LitElement {
10683
10689
  }
10684
10690
 
10685
10691
  this.renderChartSettings(divContainer, selectedTab, selectedSummary, ctx);
10686
- this.renderChart(ctx, 'doughnut', data, "Completeness")
10692
+ this.renderChart(ctx, 'doughnut', data, title)
10687
10693
 
10688
10694
  }
10689
10695
  const data = {
@@ -10700,10 +10706,10 @@ export class SfIEvents extends LitElement {
10700
10706
  ]
10701
10707
  }]
10702
10708
  }
10703
-
10709
+
10704
10710
  this.csvGraphStats += 'Completeness,Approved,Not Started,Pending Approval,Rejected,Total\n';
10705
10711
  this.csvGraphStats += 'Total,'+dataApproved+','+dataNotStarted+','+dataPendingApproval+','+dataRejected+','+(parseInt(dataApproved)+parseInt(dataNotStarted)+parseInt(dataPendingApproval)+parseInt(dataRejected))+'\n';
10706
-
10712
+
10707
10713
  const itemsTimeliness = divContainer.querySelectorAll('.stat-timeliness') as NodeListOf<HTMLElement>;
10708
10714
  for(var i = 0; i < itemsTimeliness.length; i++) {
10709
10715
  itemsTimeliness[i].style.display = 'none';
@@ -10717,7 +10723,7 @@ export class SfIEvents extends LitElement {
10717
10723
  itemsCompliance[i].style.display = 'none';
10718
10724
  }
10719
10725
  this.renderChartSettings(divContainer, selectedTab, selectedSummary, ctx);
10720
- this.renderChart(ctx, 'doughnut', data, "Completeness")
10726
+ this.renderChart(ctx, 'doughnut', data, title)
10721
10727
 
10722
10728
  }
10723
10729
 
package/src/util.ts CHANGED
@@ -446,8 +446,11 @@ function alphabeticalSort(arr:string[]){
446
446
  }
447
447
 
448
448
  function percentageString(val: number, valTotal: number){
449
+ if(valTotal == 0){
450
+ return ""
451
+ }
449
452
  let num = (100 * val) / valTotal
450
- return (Math.round((num + Number.EPSILON) * 100) / 100) + "%"
453
+ return " (" + (Math.round((num + Number.EPSILON) * 100) / 100) + "%)"
451
454
  }
452
455
 
453
456
  const exportFunctions = {
package/util.js CHANGED
@@ -373,8 +373,11 @@ function alphabeticalSort(arr) {
373
373
  return arrSorted;
374
374
  }
375
375
  function percentageString(val, valTotal) {
376
+ if (valTotal == 0) {
377
+ return "";
378
+ }
376
379
  let num = (100 * val) / valTotal;
377
- return (Math.round((num + Number.EPSILON) * 100) / 100) + "%";
380
+ return " (" + (Math.round((num + Number.EPSILON) * 100) / 100) + "%)";
378
381
  }
379
382
  const exportFunctions = {
380
383
  callApiPresignedDelete, callApiPresignedGet, callApiPresigned, jsonObjectToHtml, clearListeners, isInteger, callApi, validateName, readCookie, timeSince, createDiagonalPattern1, createDiagonalPattern2, createDiagonalPattern3, getRandomColor, convertToCSV, parseCsv, titleCase, alphabeticalSort, percentageString