@teipublisher/pb-components 2.26.1-next.3 → 3.0.0-next-4.1
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/.github/workflows/docker-cypress.yml +54 -0
- package/.github/workflows/main.yml +6 -4
- package/.github/workflows/node.js.yml +56 -21
- package/.github/workflows/release.js.yml +19 -17
- package/.releaserc.json +1 -1
- package/CHANGELOG.md +346 -11
- package/Dockerfile +78 -70
- package/README.md +112 -4
- package/css/components.css +5 -5
- package/css/gridjs/mermaid.min.css +1 -1
- package/css/leaflet/Control.Geocoder.css +1 -126
- package/css/leaflet/images/layers.png +0 -0
- package/css/tify/tify.css +6 -5
- package/css/tom-select/tom-select.bootstrap4.min.css +1 -1
- package/css/tom-select/tom-select.bootstrap5.min.css +1 -1
- package/css/tom-select/tom-select.default.min.css +1 -1
- package/css/tom-select/tom-select.default.min.css.map +1 -0
- package/css/tom-select/tom-select.min.css +1 -1
- package/cypress.config.js +84 -0
- package/dist/api.html +1 -1
- package/dist/css/design-system.css +607 -0
- package/dist/demo/bundle-test.html +4 -3
- package/dist/demo/components.css +46 -1
- package/dist/demo/design-system.html +710 -0
- package/dist/demo/dts-client.html +2 -2
- package/dist/demo/pb-autocomplete.html +23 -11
- package/dist/demo/pb-autocomplete2.html +66 -55
- package/dist/demo/pb-autocomplete3.html +17 -8
- package/dist/demo/pb-blacklab-highlight.html +28 -11
- package/dist/demo/pb-blacklab-results.html +3 -2
- package/dist/demo/pb-browse-docs.html +24 -24
- package/dist/demo/pb-browse-docs2.html +3 -3
- package/dist/demo/pb-clipboard.html +32 -28
- package/dist/demo/pb-code-editor.html +6 -6
- package/dist/demo/pb-code-highlight.html +63 -63
- package/dist/demo/pb-codepen.html +1 -1
- package/dist/demo/pb-collapse.html +1 -1
- package/dist/demo/pb-collapse2.html +2 -2
- package/dist/demo/pb-combo-box.html +135 -130
- package/dist/demo/pb-custom-form.html +64 -55
- package/dist/demo/pb-dialog.html +12 -6
- package/dist/demo/pb-document.html +1 -1
- package/dist/demo/pb-download.html +68 -59
- package/dist/demo/pb-drawer.html +67 -46
- package/dist/demo/pb-drawer2.html +65 -58
- package/dist/demo/pb-edit-app.html +2 -2
- package/dist/demo/pb-edit-xml.html +1 -1
- package/dist/demo/pb-facsimile-2.html +26 -11
- package/dist/demo/pb-facsimile-3.html +25 -10
- package/dist/demo/pb-facsimile-dedup-test-2.html +48 -0
- package/dist/demo/pb-facsimile-dedup-test.html +48 -0
- package/dist/demo/pb-facsimile.html +4 -4
- package/dist/demo/pb-formula.html +1 -1
- package/dist/demo/pb-grid.html +22 -8
- package/dist/demo/pb-highlight.html +2 -2
- package/dist/demo/pb-i18n-simple.html +1 -0
- package/dist/demo/pb-i18n.html +15 -5
- package/dist/demo/pb-image-strip-standalone.html +2 -2
- package/dist/demo/pb-image-strip-view.html +2 -2
- package/dist/demo/pb-leaflet-map.html +3 -3
- package/dist/demo/pb-leaflet-map2.html +2 -2
- package/dist/demo/pb-leaflet-map3.html +3 -3
- package/dist/demo/pb-link.html +1 -1
- package/dist/demo/pb-load.html +2 -6
- package/dist/demo/pb-login.html +1 -3
- package/dist/demo/pb-manage-odds.html +9 -4
- package/dist/demo/pb-markdown.html +1 -1
- package/dist/demo/pb-media-query.html +2 -2
- package/dist/demo/pb-mei.html +2 -2
- package/dist/demo/pb-mei2.html +2 -2
- package/dist/demo/pb-message.html +2 -3
- package/dist/demo/pb-odd-editor.html +54 -52
- package/dist/demo/pb-page-header.html +27 -0
- package/dist/demo/pb-popover.html +1 -1
- package/dist/demo/pb-print-preview.html +2 -2
- package/dist/demo/pb-progress.html +4 -4
- package/dist/demo/pb-repeat.html +32 -36
- package/dist/demo/pb-search.html +16 -5
- package/dist/demo/pb-search2.html +4 -4
- package/dist/demo/pb-search3.html +3 -3
- package/dist/demo/pb-search4.html +3 -3
- package/dist/demo/pb-select-feature.html +4 -4
- package/dist/demo/pb-select-feature2.html +4 -4
- package/dist/demo/pb-select-feature3.html +2 -2
- package/dist/demo/pb-select-i18n.html +58 -53
- package/dist/demo/pb-select-odd.html +1 -1
- package/dist/demo/pb-select.html +190 -75
- package/dist/demo/pb-select2.html +91 -37
- package/dist/demo/pb-select3.html +109 -41
- package/dist/demo/pb-svg.html +1 -1
- package/dist/demo/pb-table-grid.html +26 -15
- package/dist/demo/pb-tabs.html +15 -7
- package/dist/demo/pb-tify.html +7 -7
- package/dist/demo/pb-timeline.html +1 -1
- package/dist/demo/pb-timeline2.html +1 -1
- package/dist/demo/pb-toggle-feature.html +26 -23
- package/dist/demo/pb-toggle-feature2.html +4 -4
- package/dist/demo/pb-toggle-feature3.html +2 -2
- package/dist/demo/pb-toggle-feature4.html +56 -54
- package/dist/demo/pb-version.html +2 -2
- package/dist/demo/pb-view.html +78 -40
- package/dist/demo/pb-view2.html +69 -46
- package/dist/demo/pb-view3.html +53 -48
- package/dist/demo/pb-view4.html +70 -49
- package/dist/demo/pb-zoom.html +2 -2
- package/dist/{es-global-bridge-d8ce175d.js → es-global-bridge-D8ZcUcx_.js} +0 -4
- package/dist/focus-mixin-VCsFap6b.js +768 -0
- package/dist/images/icons.svg +217 -0
- package/dist/jinn-codemirror-DETLdm08.js +1 -0
- package/dist/lib/openseadragon.min.js +80 -0
- package/dist/lib/openseadragon.min.js.map +1 -0
- package/dist/pb-code-editor.js +25 -20
- package/dist/pb-component-docs.js +414 -3225
- package/dist/pb-components-bundle.js +3046 -4402
- package/dist/pb-dialog-tklYGWfc.js +121 -0
- package/dist/pb-edit-app.js +208 -107
- package/dist/pb-elements.json +716 -249
- package/dist/pb-facsimile.js +46 -0
- package/dist/pb-i18n-C0NDma4h.js +1 -0
- package/dist/pb-leaflet-map.js +23 -23
- package/dist/pb-mei.js +152 -134
- package/dist/pb-mixin-DHoWQheB.js +1 -0
- package/dist/pb-odd-editor.js +1671 -1231
- package/dist/pb-tify.js +1 -27
- package/dist/unsafe-html-D5VGo9Oq.js +1 -0
- package/dist/urls-BEONu_g4.js +1 -0
- package/eslint.config.mjs +92 -0
- package/gh-pages.js +5 -3
- package/i18n/common/en.json +6 -0
- package/i18n/common/pl.json +2 -2
- package/images/icons.svg +217 -0
- package/index.html +0 -5
- package/lib/leaflet-src.js.map +1 -0
- package/lib/leaflet.markercluster-src.js.map +1 -0
- package/lib/openseadragon.min.js +6 -6
- package/package.json +56 -81
- package/pb-elements.json +716 -249
- package/rollup.config.mjs +312 -0
- package/src/assets/components.css +5 -5
- package/src/assets/design-system.css +607 -0
- package/src/authority/airtable.js +20 -21
- package/src/authority/anton.js +129 -129
- package/src/authority/custom.js +70 -27
- package/src/authority/geonames.js +38 -32
- package/src/authority/gnd.js +50 -42
- package/src/authority/kbga.js +136 -134
- package/src/authority/metagrid.js +44 -46
- package/src/authority/reconciliation.js +66 -68
- package/src/authority/registry.js +4 -4
- package/src/docs/demo-utils.js +91 -0
- package/src/docs/pb-component-docs.js +287 -147
- package/src/docs/pb-component-view.js +380 -273
- package/src/docs/pb-components-list.js +115 -51
- package/src/docs/pb-demo-snippet.js +199 -174
- package/src/dts-client.js +306 -303
- package/src/dts-select-endpoint.js +125 -85
- package/src/parse-date-service.js +184 -135
- package/src/pb-ajax.js +175 -173
- package/src/pb-authority-lookup.js +198 -158
- package/src/pb-autocomplete.js +731 -313
- package/src/pb-blacklab-highlight.js +266 -260
- package/src/pb-blacklab-results.js +230 -225
- package/src/pb-browse-docs.js +601 -484
- package/src/pb-browse.js +68 -65
- package/src/pb-clipboard.js +97 -76
- package/src/pb-code-editor.js +111 -103
- package/src/pb-code-highlight.js +234 -204
- package/src/pb-codepen.js +81 -73
- package/src/pb-collapse.js +265 -152
- package/src/pb-combo-box.js +191 -191
- package/src/pb-components-bundle.js +1 -7
- package/src/pb-components.js +2 -6
- package/src/pb-custom-form.js +230 -141
- package/src/pb-dialog.js +99 -63
- package/src/pb-document.js +118 -91
- package/src/pb-download.js +214 -198
- package/src/pb-drawer.js +146 -149
- package/src/pb-edit-app.js +471 -240
- package/src/pb-edit-xml.js +101 -98
- package/src/pb-events.js +126 -107
- package/src/pb-facs-link.js +130 -101
- package/src/pb-facsimile.js +494 -410
- package/src/pb-fetch.js +389 -0
- package/src/pb-formula.js +152 -154
- package/src/pb-geolocation.js +130 -132
- package/src/pb-grid-action.js +59 -56
- package/src/pb-grid.js +388 -228
- package/src/pb-highlight.js +142 -142
- package/src/pb-hotkeys.js +40 -42
- package/src/pb-i18n.js +115 -127
- package/src/pb-icon-button.js +108 -0
- package/src/pb-icon.js +283 -0
- package/src/pb-image-strip.js +85 -79
- package/src/pb-lang.js +142 -57
- package/src/pb-leaflet-map.js +551 -483
- package/src/pb-link.js +132 -126
- package/src/pb-load.js +495 -428
- package/src/pb-login.js +303 -248
- package/src/pb-manage-odds.js +384 -338
- package/src/pb-map-icon.js +90 -90
- package/src/pb-map-layer.js +86 -86
- package/src/pb-markdown.js +107 -110
- package/src/pb-media-query.js +75 -73
- package/src/pb-mei.js +523 -303
- package/src/pb-message.js +144 -98
- package/src/pb-mixin.js +268 -265
- package/src/pb-navigation.js +83 -96
- package/src/pb-observable.js +39 -39
- package/src/pb-odd-editor.js +1209 -948
- package/src/pb-odd-elementspec-editor.js +375 -310
- package/src/pb-odd-model-editor.js +1189 -941
- package/src/pb-odd-parameter-editor.js +269 -170
- package/src/pb-odd-rendition-editor.js +184 -131
- package/src/pb-page.js +451 -422
- package/src/pb-paginate.js +260 -178
- package/src/pb-panel.js +217 -183
- package/src/pb-popover-themes.js +16 -9
- package/src/pb-popover.js +297 -288
- package/src/pb-print-preview.js +128 -128
- package/src/pb-progress.js +52 -52
- package/src/pb-repeat.js +141 -108
- package/src/pb-restricted.js +85 -78
- package/src/pb-search.js +258 -230
- package/src/pb-select-feature.js +210 -126
- package/src/pb-select-odd.js +184 -118
- package/src/pb-select-template.js +113 -78
- package/src/pb-select.js +330 -229
- package/src/pb-split-list.js +181 -176
- package/src/pb-svg.js +81 -80
- package/src/pb-table-column.js +55 -55
- package/src/pb-table-grid.js +334 -205
- package/src/pb-tabs.js +238 -61
- package/src/pb-tify.js +3331 -126
- package/src/pb-timeline.js +394 -255
- package/src/pb-toggle-feature.js +196 -188
- package/src/pb-upload.js +201 -176
- package/src/pb-version.js +22 -34
- package/src/pb-view-annotate.js +138 -102
- package/src/pb-view.js +1722 -1272
- package/src/pb-zoom.js +144 -46
- package/src/search-result-service.js +256 -223
- package/src/seed-element.js +14 -22
- package/src/settings.js +4 -4
- package/src/theming.js +98 -91
- package/src/urls.js +403 -289
- package/src/utils.js +53 -51
- package/vite.config.js +86 -0
- package/css/pb-styles.css +0 -51
- package/dist/iron-form-3b8dcaa7.js +0 -210
- package/dist/jinn-codemirror-da0e2d1f.js +0 -1
- package/dist/paper-checkbox-515a5284.js +0 -1597
- package/dist/paper-icon-button-b1d31571.js +0 -398
- package/dist/paper-listbox-a3b7175c.js +0 -1265
- package/dist/pb-i18n-0611135a.js +0 -1
- package/dist/pb-mixin-b1caa22e.js +0 -158
- package/dist/polymer-hack.js +0 -1
- package/dist/vaadin-element-mixin-fe4a4883.js +0 -527
- package/lib/Control.Geocoder.min.js +0 -2
- package/lib/Control.Geocoder.min.js.map +0 -1
- package/src/assets/pb-styles.css +0 -51
- package/src/pb-light-dom.js +0 -41
- package/src/polymer-hack.js +0 -6
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
export class ParseDateService {
|
|
2
2
|
/*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
constructor() {
|
|
20
|
-
}
|
|
3
|
+
* PARSE DATE SERVICE
|
|
4
|
+
* whenever the user types a date, it should be allowed
|
|
5
|
+
* to type in a lot of dirrerent date formats. This service
|
|
6
|
+
* should detect all of the supported formats. Some supported formats:
|
|
7
|
+
* - 1. April 1970 => 1970-04-01
|
|
8
|
+
* - 1970 => 1970-01-01
|
|
9
|
+
* - 1970-12-23 => 1970-12-23
|
|
10
|
+
* - 1900 12 23 => 1900-12-23
|
|
11
|
+
* - 1 jan 1970 => 1970-01-01
|
|
12
|
+
* - 2020-W12 => 2020-03-16
|
|
13
|
+
* - 2020-01 => 2020-01-01
|
|
14
|
+
* For all formats check the tests written in AVA `test/parse-date-service-test.js`
|
|
15
|
+
*
|
|
16
|
+
* public methods
|
|
17
|
+
* run()
|
|
18
|
+
*/
|
|
19
|
+
constructor() {}
|
|
21
20
|
|
|
22
|
-
run
|
|
21
|
+
run(input) {
|
|
23
22
|
this.input = input;
|
|
24
|
-
this.day =
|
|
25
|
-
this.month =
|
|
26
|
-
this.year =
|
|
23
|
+
this.day = '??';
|
|
24
|
+
this.month = '??';
|
|
25
|
+
this.year = '????';
|
|
27
26
|
|
|
28
27
|
const resultIsoMatch = this.input.match(this._isoMatchRegex());
|
|
29
28
|
const resultCustomMatch = this.input.match(this._customRegex());
|
|
@@ -31,14 +30,14 @@ export class ParseDateService {
|
|
|
31
30
|
const resultYearAndMonthMatch = this.input.match(this._yearAndMonthRegex());
|
|
32
31
|
if (resultIsoMatch) {
|
|
33
32
|
const split = resultIsoMatch[1].split(/-|\/|\s/);
|
|
34
|
-
this.year
|
|
33
|
+
this.year = split[0];
|
|
35
34
|
this.month = this._setWithLeadingZero(split[1]);
|
|
36
|
-
this.day
|
|
35
|
+
this.day = this._setWithLeadingZero(split[2]);
|
|
37
36
|
} else if (resultYearAndMonthMatch) {
|
|
38
|
-
const split = resultYearAndMonthMatch[1].split(
|
|
37
|
+
const split = resultYearAndMonthMatch[1].split('-');
|
|
39
38
|
this.year = split[0];
|
|
40
39
|
this.month = this._setWithLeadingZero(split[1]);
|
|
41
|
-
this.day =
|
|
40
|
+
this.day = '01';
|
|
42
41
|
} else if (resultCustomMatch) {
|
|
43
42
|
const split = resultCustomMatch[0].split(/\.|\s|\/|-/);
|
|
44
43
|
this.day = this._setWithLeadingZero(split[0]);
|
|
@@ -47,7 +46,7 @@ export class ParseDateService {
|
|
|
47
46
|
} else if (resultWeekMatch) {
|
|
48
47
|
const split = resultWeekMatch[0].split(/\.|\s|\/|-/);
|
|
49
48
|
const year = Number(split[0]);
|
|
50
|
-
const week = Number(split[1].replace(
|
|
49
|
+
const week = Number(split[1].replace('W0', '').replace('W', ''));
|
|
51
50
|
return this._getDateStrOfISOWeek(year, week);
|
|
52
51
|
} else {
|
|
53
52
|
this._findYear();
|
|
@@ -58,65 +57,65 @@ export class ParseDateService {
|
|
|
58
57
|
}
|
|
59
58
|
|
|
60
59
|
_buildResult() {
|
|
61
|
-
if (this.year !=
|
|
62
|
-
this.month =
|
|
60
|
+
if (this.year != '????' && this.month === '??') {
|
|
61
|
+
this.month = '01';
|
|
63
62
|
}
|
|
64
|
-
if (this.month !=
|
|
65
|
-
this.day =
|
|
63
|
+
if (this.month != '??' && this.day === '??') {
|
|
64
|
+
this.day = '01';
|
|
66
65
|
}
|
|
67
66
|
return `${this.year}-${this.month}-${this.day}`;
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
/*
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
* matches ISO string format (with some extensions)
|
|
71
|
+
* | 2012-01-31 | 2012-1-31 | 2012/01/31 |
|
|
72
|
+
* | 2012/1/31 | 2012 1 31 | 2012 01 31 |
|
|
73
|
+
*/
|
|
75
74
|
_isoMatchRegex() {
|
|
76
75
|
return /(?:\s|^)(\d{4}(-|\s|\/)([0][1-9]|[1-9]|10|11|12)(-|\s|\/)([0][1-9]|[1-2][0-9]|3[01]|[1-9]))(?=\s|$|\.)/;
|
|
77
76
|
/* | | year | 01-09 | 1-9 | 10-12 | |01-09 |10-29 |30,31| 1-9 |
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
* | | dash or slash | dash or slash |
|
|
78
|
+
* |preceding with space or start of string end with space endofstr or dot <-| */
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
/*
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
* matches a custom date string format (reversed order, day-month-year)
|
|
83
|
+
* | 12.3.2000 | 1.2.2012 | 1-2-2012 |
|
|
84
|
+
* | 12/3/2000 | 1 2 2012 | 1/2/2012 |
|
|
85
|
+
*/
|
|
87
86
|
_customRegex() {
|
|
88
87
|
return /\d{1,2}(\.|\s|\/|-)\d{1,2}(\.|\s|\/|-)\d{4}/;
|
|
89
88
|
/* | day | | month | | year
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
* |___________________|
|
|
90
|
+
* |
|
|
91
|
+
* seperated by dot, space, slash or dash */
|
|
93
92
|
}
|
|
94
93
|
|
|
95
94
|
/*
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
* matches a date format that specifies the week
|
|
96
|
+
* | 2012-W1 | 2012 W1 | 2012 W01 |
|
|
97
|
+
* | 2020.W2 | 2020-W53 | 2012/W1 |
|
|
98
|
+
*/
|
|
100
99
|
_weekMatchRegex() {
|
|
101
100
|
return /\d{4}(\.|\s|\/|-)W\d{1,2}(?=\s|$|\.)/;
|
|
102
101
|
/* |year | |W1-W53 |
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
* |___________________|
|
|
103
|
+
* |
|
|
104
|
+
* seperated by dot, space, slash or dash */
|
|
106
105
|
}
|
|
107
106
|
|
|
108
107
|
/*
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
* matches a date format with only year and month
|
|
109
|
+
* YYYY-MM (1-12)
|
|
110
|
+
* | 2020-01 | 2020-12 | 2012-1 |
|
|
111
|
+
*/
|
|
113
112
|
_yearAndMonthRegex() {
|
|
114
113
|
return /(?:\s|^)(\d{4}-([0][1-9]|[1-9]|10|11|12))(?=\s|$)/;
|
|
115
114
|
}
|
|
116
115
|
|
|
117
116
|
_findYear() {
|
|
118
|
-
|
|
119
|
-
const result = this.input.match(regex)
|
|
117
|
+
const regex = /[1-9]{1}[0-9]{3}/;
|
|
118
|
+
const result = this.input.match(regex);
|
|
120
119
|
if (result) {
|
|
121
120
|
this.year = result[0];
|
|
122
121
|
this._removeMatchFromInput(result);
|
|
@@ -126,9 +125,10 @@ export class ParseDateService {
|
|
|
126
125
|
_findMonth() {
|
|
127
126
|
const months = this._monthDictionaryValues();
|
|
128
127
|
months.forEach(month => {
|
|
129
|
-
const re = new RegExp(`(?:\\s|^)(${month})(?=\\s|$|\\.)`,
|
|
128
|
+
const re = new RegExp(`(?:\\s|^)(${month})(?=\\s|$|\\.)`, 'i');
|
|
130
129
|
const result = this.input.match(re);
|
|
131
|
-
if (result) {
|
|
130
|
+
if (result) {
|
|
131
|
+
// yes => get dict and value + return
|
|
132
132
|
this.month = this._monthDictionary()[result[1].toLowerCase()];
|
|
133
133
|
this._removeMatchFromInput(result);
|
|
134
134
|
return this.month;
|
|
@@ -138,107 +138,155 @@ export class ParseDateService {
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
/*
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
* find single numbers from 1-31
|
|
142
|
+
*/
|
|
143
143
|
_findDay() {
|
|
144
144
|
const regex = /(?:\s|^)([0][1-9]|[1-2][0-9]|3[01]|[1-9])(?=\s|$|\.|st|nd|rd|th)/;
|
|
145
145
|
/* | | 01-09 | 10-29 |30,31|1-9 | ends with whitespace, endofstr or dot.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const result = this.input.match(regex)
|
|
146
|
+
* | starts with whitepace or startoftr | won't be included in match (lookbehind operator)
|
|
147
|
+
* | look behind operator (not included)
|
|
148
|
+
* | https://stackoverflow.com/a/6713378/6272061 */
|
|
149
|
+
const result = this.input.match(regex);
|
|
150
150
|
if (result) {
|
|
151
151
|
this.day = this._setWithLeadingZero(result[1]);
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
/*
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
* if a string or number has only 1 digit or char
|
|
157
|
+
* a leading zro is added
|
|
158
|
+
* returns a string
|
|
159
|
+
*/
|
|
160
160
|
_setWithLeadingZero(input) {
|
|
161
161
|
input = input.toString();
|
|
162
162
|
if (input.length == 1) {
|
|
163
|
-
return
|
|
164
|
-
} else {
|
|
165
|
-
return input;
|
|
163
|
+
return `0${input}`;
|
|
166
164
|
}
|
|
165
|
+
return input;
|
|
167
166
|
}
|
|
168
167
|
|
|
169
168
|
_removeMatchFromInput(matchObj) {
|
|
170
169
|
if (matchObj && matchObj[0] && matchObj.index) {
|
|
171
|
-
|
|
172
|
-
|
|
170
|
+
const len = matchObj[0].length;
|
|
171
|
+
const charArr = this.input.split('');
|
|
173
172
|
charArr.splice(matchObj.index, len);
|
|
174
|
-
this.input = charArr.join(
|
|
173
|
+
this.input = charArr.join('');
|
|
175
174
|
}
|
|
176
175
|
}
|
|
177
176
|
|
|
178
177
|
_monthDictionaryValues() {
|
|
179
178
|
return Object.keys(this._monthDictionary());
|
|
180
179
|
}
|
|
180
|
+
|
|
181
181
|
_monthDictionary() {
|
|
182
182
|
return {
|
|
183
183
|
// german
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
184
|
+
jan: '01',
|
|
185
|
+
januar: '01',
|
|
186
|
+
feb: '02',
|
|
187
|
+
februar: '02',
|
|
188
|
+
mär: '03',
|
|
189
|
+
märz: '03',
|
|
190
|
+
apr: '04',
|
|
191
|
+
april: '04',
|
|
192
|
+
mai: '05',
|
|
193
|
+
mai: '05',
|
|
194
|
+
jun: '06',
|
|
195
|
+
juni: '06',
|
|
196
|
+
jul: '07',
|
|
197
|
+
juli: '07',
|
|
198
|
+
aug: '08',
|
|
199
|
+
august: '08',
|
|
200
|
+
sep: '09',
|
|
201
|
+
september: '09',
|
|
202
|
+
okt: '10',
|
|
203
|
+
oktober: '10',
|
|
204
|
+
nov: '11',
|
|
205
|
+
november: '11',
|
|
206
|
+
dez: '12',
|
|
207
|
+
dezember: '12',
|
|
196
208
|
// english
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
+
jan: '01',
|
|
210
|
+
january: '01',
|
|
211
|
+
feb: '02',
|
|
212
|
+
february: '02',
|
|
213
|
+
mar: '03',
|
|
214
|
+
march: '03',
|
|
215
|
+
apr: '04',
|
|
216
|
+
april: '04',
|
|
217
|
+
may: '05',
|
|
218
|
+
may: '05',
|
|
219
|
+
jun: '06',
|
|
220
|
+
june: '06',
|
|
221
|
+
jul: '07',
|
|
222
|
+
july: '07',
|
|
223
|
+
aug: '08',
|
|
224
|
+
august: '08',
|
|
225
|
+
sep: '09',
|
|
226
|
+
september: '09',
|
|
227
|
+
oct: '10',
|
|
228
|
+
october: '10',
|
|
229
|
+
nov: '11',
|
|
230
|
+
november: '11',
|
|
231
|
+
dec: '12',
|
|
232
|
+
december: '12',
|
|
209
233
|
// french
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
"
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
234
|
+
janv: '01',
|
|
235
|
+
janvier: '01',
|
|
236
|
+
févr: '02',
|
|
237
|
+
"février'": '02',
|
|
238
|
+
mars: '03',
|
|
239
|
+
mars: '03',
|
|
240
|
+
avr: '04',
|
|
241
|
+
avril: '04',
|
|
242
|
+
mai: '05',
|
|
243
|
+
mai: '05',
|
|
244
|
+
juin: '06',
|
|
245
|
+
juin: '06',
|
|
246
|
+
juil: '07',
|
|
247
|
+
juillet: '07',
|
|
248
|
+
août: '08',
|
|
249
|
+
août: '08',
|
|
250
|
+
sept: '09',
|
|
251
|
+
septembre: '09',
|
|
252
|
+
oct: '10',
|
|
253
|
+
octobre: '10',
|
|
254
|
+
nov: '11',
|
|
255
|
+
novembre: '11',
|
|
256
|
+
déc: '12',
|
|
257
|
+
décembre: '12',
|
|
258
|
+
// italian
|
|
259
|
+
gen: '01',
|
|
260
|
+
gennaio: '01',
|
|
261
|
+
feb: '02',
|
|
262
|
+
febbraio: '02',
|
|
263
|
+
mar: '03',
|
|
264
|
+
marzo: '03',
|
|
265
|
+
apr: '04',
|
|
266
|
+
aprile: '04',
|
|
267
|
+
mag: '05',
|
|
268
|
+
maggio: '05',
|
|
269
|
+
giu: '06',
|
|
270
|
+
giugno: '06',
|
|
271
|
+
lug: '07',
|
|
272
|
+
luglio: '07',
|
|
273
|
+
ago: '08',
|
|
274
|
+
agosto: '08',
|
|
275
|
+
set: '09',
|
|
276
|
+
settembre: '09',
|
|
277
|
+
ott: '10',
|
|
278
|
+
ottobre: '10',
|
|
279
|
+
nov: '11',
|
|
280
|
+
novembre: '11',
|
|
281
|
+
dic: '12',
|
|
282
|
+
dicembre: '12',
|
|
283
|
+
};
|
|
236
284
|
}
|
|
237
285
|
|
|
238
286
|
_getDateStrOfISOWeek(y, w) {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
287
|
+
const simple = new Date(y, 0, 1 + (w - 1) * 7);
|
|
288
|
+
const dow = simple.getDay();
|
|
289
|
+
const ISOweekStart = simple;
|
|
242
290
|
if (dow <= 4) {
|
|
243
291
|
ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
|
|
244
292
|
} else {
|
|
@@ -247,20 +295,21 @@ export class ParseDateService {
|
|
|
247
295
|
// do not rollover to next or previous year
|
|
248
296
|
if (ISOweekStart.getFullYear() > y) {
|
|
249
297
|
return `${y}-12-31`;
|
|
250
|
-
}
|
|
298
|
+
}
|
|
299
|
+
if (ISOweekStart.getFullYear() < y) {
|
|
251
300
|
return `${y}-01-01`;
|
|
252
301
|
}
|
|
253
302
|
return this._dateToDateStr(ISOweekStart);
|
|
254
303
|
}
|
|
255
304
|
|
|
256
305
|
/*
|
|
257
|
-
|
|
258
|
-
|
|
306
|
+
* formats date object to dateStr YYYY-MM-DD
|
|
307
|
+
*/
|
|
259
308
|
_dateToDateStr(date) {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
309
|
+
const d = new Date(date);
|
|
310
|
+
const month = this._setWithLeadingZero(d.getMonth() + 1);
|
|
311
|
+
const day = this._setWithLeadingZero(d.getDate());
|
|
312
|
+
const year = d.getFullYear();
|
|
264
313
|
return `${year}-${month}-${day}`;
|
|
265
314
|
}
|
|
266
315
|
}
|