@record-evolution/widget-linechart 1.5.1 → 1.5.3

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.
@@ -32,8 +32,8 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
32
32
  * Copyright 2019 Google LLC
33
33
  * SPDX-License-Identifier: BSD-3-Clause
34
34
  */
35
- const t$1 = globalThis,
36
- e$2 = t$1.ShadowRoot && (void 0 === t$1.ShadyCSS || t$1.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype,
35
+ const t = globalThis,
36
+ e$1 = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype,
37
37
  s = Symbol(),
38
38
  o$2 = new WeakMap();
39
39
  let n$3 = class n {
@@ -44,7 +44,7 @@ let n$3 = class n {
44
44
  get styleSheet() {
45
45
  let t = this.o;
46
46
  const s = this.t;
47
- if (e$2 && void 0 === t) {
47
+ if (e$1 && void 0 === t) {
48
48
  const e = void 0 !== s && 1 === s.length;
49
49
  e && (t = o$2.get(s)), void 0 === t && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), e && o$2.set(s, t));
50
50
  }
@@ -55,7 +55,7 @@ let n$3 = class n {
55
55
  }
56
56
  };
57
57
  const r$3 = t => new n$3("string" == typeof t ? t : t + "", void 0, s),
58
- i$2 = (t, ...e) => {
58
+ i$1 = (t, ...e) => {
59
59
  const o = 1 === t.length ? t[0] : e.reduce((e, s, o) => e + (t => {
60
60
  if (!0 === t._$cssResult$) return t.cssText;
61
61
  if ("number" == typeof t) return t;
@@ -64,13 +64,13 @@ const r$3 = t => new n$3("string" == typeof t ? t : t + "", void 0, s),
64
64
  return new n$3(o, t, s);
65
65
  },
66
66
  S$1 = (s, o) => {
67
- if (e$2) s.adoptedStyleSheets = o.map(t => t instanceof CSSStyleSheet ? t : t.styleSheet);else for (const e of o) {
67
+ if (e$1) s.adoptedStyleSheets = o.map(t => t instanceof CSSStyleSheet ? t : t.styleSheet);else for (const e of o) {
68
68
  const o = document.createElement("style"),
69
- n = t$1.litNonce;
69
+ n = t.litNonce;
70
70
  void 0 !== n && o.setAttribute("nonce", n), o.textContent = e.cssText, s.appendChild(o);
71
71
  }
72
72
  },
73
- c$2 = e$2 ? t => t : t => t instanceof CSSStyleSheet ? (t => {
73
+ c$2 = e$1 ? t => t : t => t instanceof CSSStyleSheet ? (t => {
74
74
  let e = "";
75
75
  for (const s of t.cssRules) e += s.cssText;
76
76
  return r$3(e);
@@ -82,8 +82,8 @@ const r$3 = t => new n$3("string" == typeof t ? t : t + "", void 0, s),
82
82
  * SPDX-License-Identifier: BSD-3-Clause
83
83
  */
84
84
  const {
85
- is: i$1,
86
- defineProperty: e$1,
85
+ is: i,
86
+ defineProperty: e,
87
87
  getOwnPropertyDescriptor: r$2,
88
88
  getOwnPropertyNames: h$2,
89
89
  getOwnPropertySymbols: o$1,
@@ -126,7 +126,7 @@ const {
126
126
  return i;
127
127
  }
128
128
  },
129
- f$2 = (t, s) => !i$1(t, s),
129
+ f$2 = (t, s) => !i(t, s),
130
130
  y = {
131
131
  attribute: !0,
132
132
  type: String,
@@ -146,7 +146,7 @@ class b extends HTMLElement {
146
146
  if (s.state && (s.attribute = !1), this._$Ei(), this.elementProperties.set(t, s), !s.noAccessor) {
147
147
  const i = Symbol(),
148
148
  r = this.getPropertyDescriptor(t, i, s);
149
- void 0 !== r && e$1(this.prototype, t, r);
149
+ void 0 !== r && e(this.prototype, t, r);
150
150
  }
151
151
  }
152
152
  static getPropertyDescriptor(t, s, i) {
@@ -348,7 +348,7 @@ const n$1 = globalThis,
348
348
  m = "?" + v,
349
349
  _ = `<${m}>`,
350
350
  w = document,
351
- lt$1 = () => w.createComment(""),
351
+ lt = () => w.createComment(""),
352
352
  st = t => null === t || "object" != typeof t && "function" != typeof t,
353
353
  g = Array.isArray,
354
354
  $ = t => g(t) || "function" == typeof t?.[Symbol.iterator],
@@ -430,11 +430,11 @@ class B {
430
430
  i = t.length - 1;
431
431
  if (i > 0) {
432
432
  e.textContent = c ? c.emptyScript : "";
433
- for (let s = 0; s < i; s++) e.append(t[s], lt$1()), I.nextNode(), r.push({
433
+ for (let s = 0; s < i; s++) e.append(t[s], lt()), I.nextNode(), r.push({
434
434
  type: 2,
435
435
  index: ++h
436
436
  });
437
- e.append(t[i], lt$1());
437
+ e.append(t[i], lt());
438
438
  }
439
439
  }
440
440
  } else if (8 === e.nodeType) if (e.data === m) r.push({
@@ -487,7 +487,7 @@ class F {
487
487
  for (; void 0 !== r;) {
488
488
  if (o === r.index) {
489
489
  let i;
490
- 2 === r.type ? i = new et$1(h, h.nextSibling, this, t) : 1 === r.type ? i = new r.ctor(h, r.name, r.strings, this, t) : 6 === r.type && (i = new K(h, this, t)), this._$AV.push(i), r = s[++n];
490
+ 2 === r.type ? i = new et(h, h.nextSibling, this, t) : 1 === r.type ? i = new r.ctor(h, r.name, r.strings, this, t) : 6 === r.type && (i = new K(h, this, t)), this._$AV.push(i), r = s[++n];
491
491
  }
492
492
  o !== r?.index && (h = I.nextNode(), o++);
493
493
  }
@@ -498,7 +498,7 @@ class F {
498
498
  for (const s of this._$AV) void 0 !== s && (void 0 !== s.strings ? (s._$AI(t, s, i), i += s.strings.length - 2) : s._$AI(t[i])), i++;
499
499
  }
500
500
  }
501
- let et$1 = class et {
501
+ class et {
502
502
  get _$AU() {
503
503
  return this._$AM?._$AU ?? this.v;
504
504
  }
@@ -549,7 +549,7 @@ let et$1 = class et {
549
549
  const i = this._$AH;
550
550
  let s,
551
551
  e = 0;
552
- for (const h of t) e === i.length ? i.push(s = new et(this.O(lt$1()), this.O(lt$1()), this, this.options)) : s = i[e], s._$AI(h), e++;
552
+ for (const h of t) e === i.length ? i.push(s = new et(this.O(lt()), this.O(lt()), this, this.options)) : s = i[e], s._$AI(h), e++;
553
553
  e < i.length && (this._$AR(s && s._$AB.nextSibling, e), i.length = e);
554
554
  }
555
555
  _$AR(t = this._$AA.nextSibling, i) {
@@ -561,7 +561,7 @@ let et$1 = class et {
561
561
  setConnected(t) {
562
562
  void 0 === this._$AM && (this.v = t, this._$AP?.(t));
563
563
  }
564
- };
564
+ }
565
565
  class G {
566
566
  get tagName() {
567
567
  return this.element.tagName;
@@ -628,30 +628,14 @@ class K {
628
628
  z(this, t);
629
629
  }
630
630
  }
631
- const si = {
632
- M: f$1,
633
- P: v,
634
- A: m,
635
- C: 1,
636
- L: U,
637
- R: F,
638
- D: $,
639
- V: z,
640
- I: et$1,
641
- H: G,
642
- N: Z,
643
- U: q,
644
- B: Y,
645
- F: K
646
- },
647
- Re = n$1.litHtmlPolyfillSupport;
648
- Re?.(B, et$1), (n$1.litHtmlVersions ??= []).push("3.2.0");
631
+ const Re = n$1.litHtmlPolyfillSupport;
632
+ Re?.(B, et), (n$1.litHtmlVersions ??= []).push("3.2.0");
649
633
  const Q = (t, i, s) => {
650
634
  const e = s?.renderBefore ?? i;
651
635
  let h = e._$litPart$;
652
636
  if (void 0 === h) {
653
637
  const t = s?.renderBefore ?? null;
654
- e._$litPart$ = h = new et$1(i.insertBefore(lt$1(), t), t, void 0, s ?? {});
638
+ e._$litPart$ = h = new et(i.insertBefore(lt(), t), t, void 0, s ?? {});
655
639
  }
656
640
  return h._$AI(t), h;
657
641
  };
@@ -694,154 +678,6 @@ f?.({
694
678
  });
695
679
  (globalThis.litElementVersions ??= []).push("4.1.0");
696
680
 
697
- /**
698
- * @license
699
- * Copyright 2017 Google LLC
700
- * SPDX-License-Identifier: BSD-3-Clause
701
- */
702
- const t = {
703
- ATTRIBUTE: 1,
704
- CHILD: 2,
705
- PROPERTY: 3,
706
- BOOLEAN_ATTRIBUTE: 4,
707
- EVENT: 5,
708
- ELEMENT: 6
709
- },
710
- e = t => (...e) => ({
711
- _$litDirective$: t,
712
- values: e
713
- });
714
- class i {
715
- constructor(t) {}
716
- get _$AU() {
717
- return this._$AM._$AU;
718
- }
719
- _$AT(t, e, i) {
720
- this.t = t, this._$AM = e, this.i = i;
721
- }
722
- _$AS(t, e) {
723
- return this.update(t, e);
724
- }
725
- update(t, e) {
726
- return this.render(...e);
727
- }
728
- }
729
-
730
- /**
731
- * @license
732
- * Copyright 2020 Google LLC
733
- * SPDX-License-Identifier: BSD-3-Clause
734
- */
735
- const {
736
- I: et
737
- } = si,
738
- lt = () => document.createComment(""),
739
- at = (o, t, i) => {
740
- const n = o._$AA.parentNode,
741
- e = void 0 === t ? o._$AB : t._$AA;
742
- if (void 0 === i) {
743
- const t = n.insertBefore(lt(), e),
744
- l = n.insertBefore(lt(), e);
745
- i = new et(t, l, o, o.options);
746
- } else {
747
- const t = i._$AB.nextSibling,
748
- l = i._$AM,
749
- c = l !== o;
750
- if (c) {
751
- let t;
752
- i._$AQ?.(o), i._$AM = o, void 0 !== i._$AP && (t = o._$AU) !== l._$AU && i._$AP(t);
753
- }
754
- if (t !== e || c) {
755
- let o = i._$AA;
756
- for (; o !== t;) {
757
- const t = o.nextSibling;
758
- n.insertBefore(o, e), o = t;
759
- }
760
- }
761
- }
762
- return i;
763
- },
764
- ct = (o, t, i = o) => (o._$AI(t, i), o),
765
- ht = {},
766
- dt = (o, t = ht) => o._$AH = t,
767
- ut = o => o._$AH,
768
- pt = o => {
769
- o._$AP?.(!1, !0);
770
- let t = o._$AA;
771
- const i = o._$AB.nextSibling;
772
- for (; t !== i;) {
773
- const o = t.nextSibling;
774
- t.remove(), t = o;
775
- }
776
- };
777
-
778
- /**
779
- * @license
780
- * Copyright 2017 Google LLC
781
- * SPDX-License-Identifier: BSD-3-Clause
782
- */
783
- const Jt = (e, s, t) => {
784
- const r = new Map();
785
- for (let l = s; l <= t; l++) r.set(e[l], l);
786
- return r;
787
- },
788
- Qt = e(class extends i {
789
- constructor(e) {
790
- if (super(e), e.type !== t.CHILD) throw Error("repeat() can only be used in text expressions");
791
- }
792
- dt(e, s, t) {
793
- let r;
794
- void 0 === t ? t = s : void 0 !== s && (r = s);
795
- const l = [],
796
- o = [];
797
- let i = 0;
798
- for (const s of e) l[i] = r ? r(s, i) : i, o[i] = t(s, i), i++;
799
- return {
800
- values: o,
801
- keys: l
802
- };
803
- }
804
- render(e, s, t) {
805
- return this.dt(e, s, t).values;
806
- }
807
- update(e, [s, t, r]) {
808
- const l = ut(e),
809
- {
810
- values: o,
811
- keys: i
812
- } = this.dt(s, t, r);
813
- if (!Array.isArray(l)) return this.ut = i, o;
814
- const n = this.ut ??= [],
815
- f = [];
816
- let u,
817
- c,
818
- d = 0,
819
- p = l.length - 1,
820
- a = 0,
821
- h = o.length - 1;
822
- for (; d <= p && a <= h;) if (null === l[d]) d++;else if (null === l[p]) p--;else if (n[d] === i[a]) f[a] = ct(l[d], o[a]), d++, a++;else if (n[p] === i[h]) f[h] = ct(l[p], o[h]), p--, h--;else if (n[d] === i[h]) f[h] = ct(l[d], o[h]), at(e, f[h + 1], l[d]), d++, h--;else if (n[p] === i[a]) f[a] = ct(l[p], o[a]), at(e, l[d], l[p]), p--, a++;else if (void 0 === u && (u = Jt(i, a, h), c = Jt(n, d, p)), u.has(n[d])) {
823
- if (u.has(n[p])) {
824
- const s = c.get(i[a]),
825
- t = void 0 !== s ? l[s] : null;
826
- if (null === t) {
827
- const s = at(e, l[d]);
828
- ct(s, o[a]), f[a] = s;
829
- } else f[a] = ct(t, o[a]), at(e, l[d], t), l[s] = null;
830
- a++;
831
- } else pt(l[p]), p--;
832
- } else pt(l[d]), d++;
833
- for (; a <= h;) {
834
- const s = at(e, f[h + 1]);
835
- ct(s, o[a]), f[a++] = s;
836
- }
837
- for (; d <= p;) {
838
- const e = l[d++];
839
- null !== e && pt(e);
840
- }
841
- return this.ut = i, dt(e, f), R;
842
- }
843
- });
844
-
845
681
  /**
846
682
  * @license
847
683
  * Copyright 2017 Google LLC
@@ -23664,16 +23500,19 @@ class WidgetLinechart extends h {
23664
23500
  constructor() {
23665
23501
  super(...arguments);
23666
23502
  this.canvasList = new Map();
23667
- this.version = '1.5.1';
23503
+ this.version = '1.5.3';
23668
23504
  }
23669
23505
  update(changedProperties) {
23670
- if (changedProperties.has('inputData')) {
23506
+ if (changedProperties.has('inputData') && this.chartContainer) {
23671
23507
  this.transformInputData();
23672
23508
  this.applyInputData();
23673
23509
  }
23674
23510
  super.update(changedProperties);
23675
23511
  }
23676
23512
  firstUpdated() {
23513
+ var _a;
23514
+ this.chartContainer = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.chart-container');
23515
+ this.transformInputData();
23677
23516
  this.applyInputData();
23678
23517
  }
23679
23518
  transformInputData() {
@@ -23694,9 +23533,10 @@ class WidgetLinechart extends h {
23694
23533
  else {
23695
23534
  ds.borderDash = undefined;
23696
23535
  }
23536
+ (_c = ds.data) !== null && _c !== void 0 ? _c : (ds.data = []);
23697
23537
  // pivot data
23698
- const distincts = [...new Set((_c = ds.data) === null || _c === void 0 ? void 0 : _c.map((d) => d.pivot))].sort();
23699
- tinycolor(ds.backgroundColor)
23538
+ const distincts = [...new Set(ds.data.map((d) => d.pivot))].sort();
23539
+ const derivedBgColors = tinycolor(ds.backgroundColor)
23700
23540
  .monochromatic(distincts.length)
23701
23541
  .map((c) => c.toHexString());
23702
23542
  const derivedBdColors = tinycolor(ds.borderColor)
@@ -23715,7 +23555,7 @@ class WidgetLinechart extends h {
23715
23555
  : derivedBdColors[i],
23716
23556
  backgroundColor: ((_d = (_c = ds.advanced) === null || _c === void 0 ? void 0 : _c.chartName) === null || _d === void 0 ? void 0 : _d.includes('#split#'))
23717
23557
  ? ds.backgroundColor
23718
- : derivedBdColors[i],
23558
+ : derivedBgColors[i],
23719
23559
  styling: ds.styling,
23720
23560
  pointStyle: (_e = ds.styling) === null || _e === void 0 ? void 0 : _e.pointStyle,
23721
23561
  radius: (_f = ds.styling) === null || _f === void 0 ? void 0 : _f.radius,
@@ -23727,7 +23567,7 @@ class WidgetLinechart extends h {
23727
23567
  };
23728
23568
  let chartName = (_l = (_k = ds.advanced) === null || _k === void 0 ? void 0 : _k.chartName) !== null && _l !== void 0 ? _l : '';
23729
23569
  if (chartName.includes('#split#')) {
23730
- chartName = chartName + '-' + piv;
23570
+ chartName = prefix + chartName;
23731
23571
  }
23732
23572
  // If the chartName ends with :pivot: then create a seperate chart for each pivoted dataseries
23733
23573
  if (!this.canvasList.has(chartName)) {
@@ -23738,7 +23578,7 @@ class WidgetLinechart extends h {
23738
23578
  });
23739
23579
  });
23740
23580
  // prevent duplicate transformation
23741
- this.inputData.dataseries = [];
23581
+ // this.inputData.dataseries = []
23742
23582
  // console.log('new linechart datasets', this.canvasList)
23743
23583
  }
23744
23584
  applyInputData() {
@@ -23758,24 +23598,35 @@ class WidgetLinechart extends h {
23758
23598
  });
23759
23599
  }
23760
23600
  xAxisType() {
23761
- var _a, _b, _c, _d, _e;
23601
+ var _a, _b, _c, _d, _e, _f;
23762
23602
  if ((_b = (_a = this.inputData) === null || _a === void 0 ? void 0 : _a.axis) === null || _b === void 0 ? void 0 : _b.timeseries)
23763
23603
  return 'time';
23764
- const onePoint = (_e = (_d = (_c = this.inputData) === null || _c === void 0 ? void 0 : _c.dataseries) === null || _d === void 0 ? void 0 : _d[0].data) === null || _e === void 0 ? void 0 : _e[0];
23604
+ const onePoint = (_f = (_e = (_d = (_c = this.inputData) === null || _c === void 0 ? void 0 : _c.dataseries) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f[0];
23765
23605
  if (!isNaN(Number(onePoint === null || onePoint === void 0 ? void 0 : onePoint.x)))
23766
23606
  return 'linear';
23767
23607
  return 'category';
23768
23608
  }
23769
23609
  setupCharts() {
23770
23610
  this.canvasList.forEach((chartM, chartName) => {
23771
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
23772
- if (!chartM.dataSets.length)
23611
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
23612
+ if (!chartM.dataSets.length) {
23613
+ (_b = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`div[name="${chartName}"]`)) === null || _b === void 0 ? void 0 : _b.remove();
23773
23614
  this.canvasList.delete(chartName);
23615
+ return;
23616
+ }
23774
23617
  if (chartM.chart)
23775
23618
  return;
23776
- const canvas = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`[name="${chartName}"]`);
23619
+ if (!this.chartContainer)
23620
+ throw new Error('chartContainer not found');
23621
+ const newContainer = document.createElement('div');
23622
+ newContainer.setAttribute('name', chartName);
23623
+ newContainer.setAttribute('class', 'sizer');
23624
+ const canvas = document.createElement('canvas');
23625
+ canvas.setAttribute('name', chartName);
23626
+ newContainer.appendChild(canvas);
23627
+ this.chartContainer.appendChild(newContainer);
23777
23628
  if (!canvas)
23778
- return;
23629
+ throw new Error('canvas not found');
23779
23630
  // console.log('chartM', canvas, chartM.chart)
23780
23631
  chartM.chart = new Chart(canvas, {
23781
23632
  type: 'line',
@@ -23801,14 +23652,14 @@ class WidgetLinechart extends h {
23801
23652
  x: {
23802
23653
  type: this.xAxisType(),
23803
23654
  title: {
23804
- display: !!((_c = (_b = this.inputData) === null || _b === void 0 ? void 0 : _b.axis) === null || _c === void 0 ? void 0 : _c.xAxisLabel),
23805
- text: (_e = (_d = this.inputData) === null || _d === void 0 ? void 0 : _d.axis) === null || _e === void 0 ? void 0 : _e.xAxisLabel
23655
+ display: !!((_d = (_c = this.inputData) === null || _c === void 0 ? void 0 : _c.axis) === null || _d === void 0 ? void 0 : _d.xAxisLabel),
23656
+ text: (_f = (_e = this.inputData) === null || _e === void 0 ? void 0 : _e.axis) === null || _f === void 0 ? void 0 : _f.xAxisLabel
23806
23657
  }
23807
23658
  },
23808
23659
  y: {
23809
23660
  title: {
23810
- display: !!((_g = (_f = this.inputData) === null || _f === void 0 ? void 0 : _f.axis) === null || _g === void 0 ? void 0 : _g.yAxisLabel),
23811
- text: (_j = (_h = this.inputData) === null || _h === void 0 ? void 0 : _h.axis) === null || _j === void 0 ? void 0 : _j.yAxisLabel
23661
+ display: !!((_h = (_g = this.inputData) === null || _g === void 0 ? void 0 : _g.axis) === null || _h === void 0 ? void 0 : _h.yAxisLabel),
23662
+ text: (_k = (_j = this.inputData) === null || _j === void 0 ? void 0 : _j.axis) === null || _k === void 0 ? void 0 : _k.yAxisLabel
23812
23663
  }
23813
23664
  }
23814
23665
  }
@@ -23825,18 +23676,14 @@ class WidgetLinechart extends h {
23825
23676
  <p class="paging" ?active=${(_c = this.inputData) === null || _c === void 0 ? void 0 : _c.subTitle}>${(_d = this.inputData) === null || _d === void 0 ? void 0 : _d.subTitle}</p>
23826
23677
  </header>
23827
23678
 
23828
- <div class="chart-container ${((_f = (_e = this === null || this === void 0 ? void 0 : this.inputData) === null || _e === void 0 ? void 0 : _e.axis) === null || _f === void 0 ? void 0 : _f.columnLayout) ? 'columnLayout' : ''}">
23829
- ${Qt([...this.canvasList.entries()].sort(), ([chartName, chartM]) => chartName, ([chartName]) => ke `
23830
- <div class="sizer">
23831
- <canvas name="${chartName}"></canvas>
23832
- </div>
23833
- `)}
23834
- </div>
23679
+ <div
23680
+ class="chart-container ${((_f = (_e = this === null || this === void 0 ? void 0 : this.inputData) === null || _e === void 0 ? void 0 : _e.axis) === null || _f === void 0 ? void 0 : _f.columnLayout) ? 'columnLayout' : ''}"
23681
+ ></div>
23835
23682
  </div>
23836
23683
  `;
23837
23684
  }
23838
23685
  }
23839
- WidgetLinechart.styles = i$2 `
23686
+ WidgetLinechart.styles = i$1 `
23840
23687
  :host {
23841
23688
  display: block;
23842
23689
  color: var(--re-text-color, #000);
@@ -23900,7 +23747,7 @@ __decorate([
23900
23747
  __decorate([
23901
23748
  r()
23902
23749
  ], WidgetLinechart.prototype, "canvasList", void 0);
23903
- window.customElements.define('widget-linechart-1.5.1', WidgetLinechart);
23750
+ window.customElements.define('widget-linechart-1.5.3', WidgetLinechart);
23904
23751
  const FORMATS = {
23905
23752
  datetime: 'MMM d, yyyy, h:mm:ss aaaa',
23906
23753
  millisecond: 'h:mm:ss.SSS aaaa',