@provoly/dashboard 1.2.9 → 1.2.10
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/admin/admin.module.d.ts +2 -3
- package/dataset/components/dataset.component.d.ts +3 -11
- package/dataset/dataset.module.d.ts +7 -9
- package/dataset/public-api.d.ts +0 -1
- package/dataset/style/_o-pry-dataset.scss +3 -72
- package/esm2022/admin/admin.module.mjs +1 -5
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -4
- package/esm2022/dataset/components/dataset.component.mjs +8 -33
- package/esm2022/dataset/dataset.module.mjs +9 -13
- package/esm2022/dataset/public-api.mjs +1 -2
- package/esm2022/dataset/style/css.component.mjs +3 -3
- package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +7 -27
- package/esm2022/lib/core/components/chips-selector/chips-selector.module.mjs +21 -0
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +1 -1
- package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +3 -3
- package/esm2022/lib/core/components/share/share.module.mjs +8 -12
- package/esm2022/lib/core/core.module.mjs +4 -8
- package/esm2022/lib/core/i18n/en.translations.mjs +8 -8
- package/esm2022/lib/core/i18n/fr.translations.mjs +9 -9
- package/esm2022/lib/core/pipes/get-secured-image/get-secured-image.pipe.mjs +21 -0
- package/esm2022/lib/core/pipes/since-date/since-date.module.mjs +18 -0
- package/esm2022/lib/core/pipes/since-date/since-date.pipe.mjs +55 -0
- package/esm2022/lib/core/pipes/translate-id/translate-id.pipe.mjs +108 -0
- package/esm2022/lib/core/pipes/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +23 -0
- package/esm2022/lib/core/public-api.mjs +7 -4
- package/esm2022/lib/core/store/data-source/datasource-utils.mjs +22 -1
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +2 -2
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +60 -0
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +95 -0
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +53 -48
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +6 -7
- package/esm2022/lib/dashboard/components/widgets/public-api.mjs +3 -1
- package/esm2022/lib/dashboard/dashboard.module.mjs +19 -7
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +2 -2
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +2 -3
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +2 -3
- package/esm2022/pipeline/pipeline.module.mjs +8 -9
- package/esm2022/presentation/components/presentation.component.mjs +2 -3
- package/esm2022/presentation/presentation.module.mjs +8 -9
- package/esm2022/restitution/components/restitution/restitution.component.mjs +4 -4
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +2 -3
- package/esm2022/restitution/restitution.module.mjs +2 -3
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +0 -4
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-dataset.mjs +30 -87
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline.mjs +17 -19
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +8 -10
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +7 -9
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +3475 -3265
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/chips-selector/chips-selector.component.d.ts +1 -6
- package/lib/core/components/chips-selector/chips-selector.module.d.ts +11 -0
- package/lib/core/components/share/share.module.d.ts +3 -4
- package/lib/core/core.module.d.ts +26 -27
- package/lib/core/i18n/en.translations.d.ts +7 -7
- package/lib/core/i18n/fr.translations.d.ts +7 -7
- package/{components/sinceDate/sinceDate.module.d.ts → lib/core/pipes/since-date/since-date.module.d.ts} +3 -2
- package/{components/sinceDate/sinceDate.pipe.d.ts → lib/core/pipes/since-date/since-date.pipe.d.ts} +4 -4
- package/lib/core/{components → pipes}/translate-id/translate-id.pipe.d.ts +0 -2
- package/lib/core/public-api.d.ts +6 -3
- package/lib/core/store/data-source/datasource-utils.d.ts +4 -1
- package/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.d.ts +24 -0
- package/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.d.ts +35 -0
- package/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.d.ts +19 -11
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +1 -1
- package/lib/dashboard/components/widgets/public-api.d.ts +2 -0
- package/lib/dashboard/dashboard.module.d.ts +18 -15
- package/package.json +43 -49
- package/pipeline/pipeline.module.d.ts +3 -4
- package/presentation/presentation.module.d.ts +7 -8
- package/restitution/components/restitution/restitution.component.d.ts +1 -1
- package/restitution/restitution.module.d.ts +1 -2
- package/restitution/style/_o-restitution.scss +4 -0
- package/styles/components/_a-chip.scss +44 -0
- package/styles/components/_o-datasource-selector.scss +192 -0
- package/styles/components/_o-widget.scss +1 -1
- package/styles/main.scss +1 -0
- package/styles-theme/main-theme.scss +0 -3
- package/components/sinceDate/index.d.ts +0 -5
- package/components/sinceDate/public-api.d.ts +0 -2
- package/dataset/components/dataset-card/dataset-card.component.d.ts +0 -18
- package/dataset/style/_o-pry-dataset-card.scss +0 -93
- package/esm2022/components/sinceDate/provoly-dashboard-components-sinceDate.mjs +0 -5
- package/esm2022/components/sinceDate/public-api.mjs +0 -3
- package/esm2022/components/sinceDate/sinceDate.module.mjs +0 -16
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +0 -55
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +0 -41
- package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +0 -21
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +0 -114
- package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +0 -23
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +0 -75
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +0 -1
- package/styles-theme/components-theme/_a-chip.theme.scss +0 -32
- package/styles-theme/components-theme/_o-pry-dataset-card.theme.scss +0 -26
- package/styles-theme/components-theme/_o-pry-dataset.theme.scss +0 -4
- /package/lib/core/{components → pipes}/get-secured-image/get-secured-image.pipe.d.ts +0 -0
- /package/lib/core/{components → pipes}/translate-item-to-symbol/translate-item-to-symbol.pipe.d.ts +0 -0
|
@@ -6,17 +6,16 @@ import * as i3 from "./components/title-presentation/title-presentation.componen
|
|
|
6
6
|
import * as i4 from "./style/css.component";
|
|
7
7
|
import * as i5 from "@provoly/dashboard";
|
|
8
8
|
import * as i6 from "@angular/forms";
|
|
9
|
-
import * as i7 from "@provoly/dashboard/
|
|
10
|
-
import * as i8 from "@provoly/dashboard/
|
|
11
|
-
import * as i9 from "@
|
|
12
|
-
import * as i10 from "@angular/
|
|
13
|
-
import * as i11 from "@
|
|
14
|
-
import * as i12 from "@provoly/dashboard/components/
|
|
15
|
-
import * as i13 from "@provoly/dashboard/components/text-editor";
|
|
9
|
+
import * as i7 from "@provoly/dashboard/toolbox";
|
|
10
|
+
import * as i8 from "@provoly/dashboard/components/checkbox";
|
|
11
|
+
import * as i9 from "@angular/common";
|
|
12
|
+
import * as i10 from "@angular/cdk/a11y";
|
|
13
|
+
import * as i11 from "@provoly/dashboard/components/metadata-editor";
|
|
14
|
+
import * as i12 from "@provoly/dashboard/components/text-editor";
|
|
16
15
|
export declare class PryPresentationModule {
|
|
17
16
|
private pryTranslateService;
|
|
18
17
|
constructor(pryTranslateService: PryI18nService);
|
|
19
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<PryPresentationModule, never>;
|
|
20
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<PryPresentationModule, [typeof i1.PryPresentationComponent, typeof i2.PryAddEditPresentationComponent, typeof i3.PryTitlePresentationComponent, typeof i4.PryPresentationCssComponent], [typeof i5.PryIconModule, typeof i5.PryCoreModule, typeof i5.PryDashboardModule, typeof i6.ReactiveFormsModule, typeof i5.PrySelectModule, typeof
|
|
19
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<PryPresentationModule, [typeof i1.PryPresentationComponent, typeof i2.PryAddEditPresentationComponent, typeof i3.PryTitlePresentationComponent, typeof i4.PryPresentationCssComponent], [typeof i5.PryIconModule, typeof i5.PryCoreModule, typeof i5.PryDashboardModule, typeof i6.ReactiveFormsModule, typeof i5.PrySelectModule, typeof i5.PryShareModule, typeof i6.FormsModule, typeof i5.PryOverlayModule, typeof i5.PryI18nModule, typeof i7.PryToolboxModule, typeof i8.PryCheckboxModule, typeof i9.CommonModule, typeof i10.A11yModule, typeof i11.PryExpandPanelModule, typeof i12.PryTextEditorModule, typeof i5.PrySinceDateModule], [typeof i1.PryPresentationComponent, typeof i2.PryAddEditPresentationComponent, typeof i3.PryTitlePresentationComponent, typeof i4.PryPresentationCssComponent]>;
|
|
21
20
|
static ɵinj: i0.ɵɵInjectorDeclaration<PryPresentationModule>;
|
|
22
21
|
}
|
|
@@ -40,7 +40,7 @@ export declare class PryRestitutionComponent extends SubscriptionnerDirective im
|
|
|
40
40
|
constructor(toolboxManifestService: ToolboxManifestService, store: Store, toolboxMenuService: ToolboxMenuService);
|
|
41
41
|
ngOnInit(): void;
|
|
42
42
|
cancel(stepper: PryStepperComponent): void;
|
|
43
|
-
datasourcesChanged($event:
|
|
43
|
+
datasourcesChanged($event: string[]): void;
|
|
44
44
|
submit(stepper: PryStepperComponent): void;
|
|
45
45
|
goNext(stepper: PryStepperComponent, submit?: boolean): void;
|
|
46
46
|
prev(stepper: PryStepperComponent): void;
|
|
@@ -12,11 +12,10 @@ import * as i9 from "@provoly/dashboard/components/stepper";
|
|
|
12
12
|
import * as i10 from "@provoly/dashboard/search";
|
|
13
13
|
import * as i11 from "@provoly/dashboard/components/card";
|
|
14
14
|
import * as i12 from "@provoly/dashboard/components/checkbox";
|
|
15
|
-
import * as i13 from "@provoly/dashboard/components/sinceDate";
|
|
16
15
|
export declare class PryRestitutionModule {
|
|
17
16
|
private pryTranslateService;
|
|
18
17
|
constructor(pryTranslateService: PryI18nService);
|
|
19
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<PryRestitutionModule, never>;
|
|
20
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<PryRestitutionModule, [typeof i1.PryRestitutionListComponent, typeof i2.PryRestitutionComponent, typeof i3.PryCatalogCssComponent, typeof i4.PryRestitutionCatalogComponent, typeof i5.PryRestitutionListItemComponent], [typeof i6.CommonModule, typeof i7.PryCoreModule, typeof i7.PryIconModule, typeof i8.FormsModule, typeof i9.PryStepperModule, typeof i7.PrySelectModule, typeof i7.PryDashboardModule, typeof i7.PryShareModule, typeof i10.PrySearchModule, typeof i7.PryI18nModule, typeof i11.PryCardModule, typeof i12.PryCheckboxModule, typeof i7.PryOverlayModule, typeof
|
|
19
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<PryRestitutionModule, [typeof i1.PryRestitutionListComponent, typeof i2.PryRestitutionComponent, typeof i3.PryCatalogCssComponent, typeof i4.PryRestitutionCatalogComponent, typeof i5.PryRestitutionListItemComponent], [typeof i6.CommonModule, typeof i7.PryCoreModule, typeof i7.PryIconModule, typeof i8.FormsModule, typeof i9.PryStepperModule, typeof i7.PrySelectModule, typeof i7.PryDashboardModule, typeof i7.PryShareModule, typeof i10.PrySearchModule, typeof i7.PryI18nModule, typeof i11.PryCardModule, typeof i12.PryCheckboxModule, typeof i7.PryOverlayModule, typeof i7.PrySinceDateModule], [typeof i1.PryRestitutionListComponent, typeof i2.PryRestitutionComponent, typeof i4.PryRestitutionCatalogComponent, typeof i5.PryRestitutionListItemComponent]>;
|
|
21
20
|
static ɵinj: i0.ɵɵInjectorDeclaration<PryRestitutionModule>;
|
|
22
21
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@use '../abstracts' as *;
|
|
2
|
+
@use '../../styles-theme/abstracts-theme/variables.theme' as *;
|
|
2
3
|
|
|
3
4
|
.a-chip {
|
|
4
5
|
display: flex;
|
|
@@ -8,13 +9,56 @@
|
|
|
8
9
|
font-size: toRem(10);
|
|
9
10
|
padding: toRem(2) toRem(7);
|
|
10
11
|
|
|
12
|
+
color: themed($theme-map, 'color', 'primary', 'contrast', 50);
|
|
13
|
+
background-color: themed($theme-map, 'color', 'primary', 600);
|
|
14
|
+
|
|
15
|
+
&:hover {
|
|
16
|
+
@include changeBgColor(
|
|
17
|
+
$targetBgColor: themed($theme-map, 'color', 'primary', 300),
|
|
18
|
+
$targetTextColor: themed($theme-map, 'color', 'primary', 600)
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&--light {
|
|
23
|
+
background-color: themed($theme-map, 'color', 'primary', 50);
|
|
24
|
+
color: themed($theme-map, 'color', 'primary', 600);
|
|
25
|
+
border: solid 1px themed($theme-map, 'color', 'primary', 300);
|
|
26
|
+
|
|
27
|
+
&:hover {
|
|
28
|
+
@include changeBgColor(
|
|
29
|
+
$targetBgColor: themed($theme-map, 'color', 'primary', 300)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&--ghost {
|
|
35
|
+
background-color: transparent;
|
|
36
|
+
color: themed($theme-map, 'color', 'primary', 750);
|
|
37
|
+
|
|
38
|
+
&:hover {
|
|
39
|
+
@include changeBgColor(
|
|
40
|
+
$targetBgColor: themed($theme-map, 'color', 'primary', 300)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
11
45
|
&.-md {
|
|
12
46
|
height: toRem(20);
|
|
13
47
|
font-size: toRem(12);
|
|
14
48
|
padding: toRem(3) toRem(10);
|
|
15
49
|
}
|
|
16
50
|
|
|
51
|
+
&.-lg {
|
|
52
|
+
height: toRem(30);
|
|
53
|
+
font-size: toRem(16);
|
|
54
|
+
gap: toRem(5);
|
|
55
|
+
}
|
|
56
|
+
|
|
17
57
|
&.-no-wrap {
|
|
18
58
|
white-space: nowrap;
|
|
19
59
|
}
|
|
60
|
+
|
|
61
|
+
&.-not-found {
|
|
62
|
+
opacity: 0.4;
|
|
63
|
+
}
|
|
20
64
|
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
@use '../../styles/abstracts/index' as *;
|
|
2
|
+
@use '../../styles-theme/abstracts-theme/variables.theme' as *;
|
|
3
|
+
|
|
4
|
+
/* Organism - datasource-selector */
|
|
5
|
+
|
|
6
|
+
.o-datasource-selector {
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
height: 100%;
|
|
9
|
+
|
|
10
|
+
pry-datasource-list {
|
|
11
|
+
overflow: hidden;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&__chips {
|
|
15
|
+
max-height: toRem(80);
|
|
16
|
+
margin-bottom: toRem(40);
|
|
17
|
+
overflow: scroll;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.o-datasource-list {
|
|
22
|
+
&__header {
|
|
23
|
+
width: 100%;
|
|
24
|
+
|
|
25
|
+
.a-label {
|
|
26
|
+
font-size: toRem(16);
|
|
27
|
+
font-weight: 700;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
input.a-form-field {
|
|
31
|
+
padding-left: toRem(60);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
div.a-pry-select {
|
|
35
|
+
padding: toRem(7.5) toRem(10);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
input.a-form-field, div.a-pry-select {
|
|
39
|
+
border-color: themed($theme-map, 'color', 'primary', 600);
|
|
40
|
+
font-size: toRem(12);
|
|
41
|
+
border-radius: toRem(5);
|
|
42
|
+
height: toRem(40);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
input.a-form-field::placeholder, span.a-pry-select__placeholder {
|
|
46
|
+
color: themed($theme-map, 'color', 'primary', 500);
|
|
47
|
+
font-style: italic;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&__search {
|
|
52
|
+
flex-basis: 50%;
|
|
53
|
+
position: relative;
|
|
54
|
+
|
|
55
|
+
.search-icon {
|
|
56
|
+
position: absolute;
|
|
57
|
+
left: toRem(20);
|
|
58
|
+
bottom: toRem(10);
|
|
59
|
+
pointer-events: none;
|
|
60
|
+
color: themed($theme-map, 'color', 'primary', 600);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
&__categories {
|
|
65
|
+
flex-basis: 50%;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&__content {
|
|
69
|
+
@extend %list-unstyled;
|
|
70
|
+
display: grid;
|
|
71
|
+
grid-template-columns: repeat(auto-fill, minmax(toRem(330), 0fr));
|
|
72
|
+
grid-gap: toRem(10);
|
|
73
|
+
column-gap: 1.5rem;
|
|
74
|
+
row-gap: 2rem;
|
|
75
|
+
padding-bottom: toRem(20);
|
|
76
|
+
|
|
77
|
+
overflow: auto;
|
|
78
|
+
height: calc(100% - 100px);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.o-datasource-card {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-direction: column;
|
|
85
|
+
margin: 0 auto;
|
|
86
|
+
font-size: toRem(14);
|
|
87
|
+
min-width: toRem(310);
|
|
88
|
+
height: toRem(180);
|
|
89
|
+
|
|
90
|
+
background-color: themed($theme-map, 'color', 'primary', 50);
|
|
91
|
+
filter: drop-shadow(0px 4px 4px rgba(17, 59, 110, 0.12));
|
|
92
|
+
|
|
93
|
+
&:hover {
|
|
94
|
+
background-color: themed($theme-map, 'color', 'primary', 300);
|
|
95
|
+
cursor: pointer;
|
|
96
|
+
|
|
97
|
+
.o-pry-datasource-card__footer {
|
|
98
|
+
border-top: 1px themed($theme-map, 'color', 'primary', 400) solid;
|
|
99
|
+
|
|
100
|
+
pry-icon {
|
|
101
|
+
visibility: visible;
|
|
102
|
+
opacity: 1;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&.-no-footer {
|
|
108
|
+
height: toRem(150);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&__title {
|
|
112
|
+
width: toRem(270);
|
|
113
|
+
|
|
114
|
+
&.a-tooltip[data-tooltip]:after {
|
|
115
|
+
top: calc(100% - 15px);
|
|
116
|
+
max-width: toRem(300);
|
|
117
|
+
word-break: break-word;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
&.-is-selectable .o-datasource-card__title {
|
|
122
|
+
width: toRem(240);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.a-h4 {
|
|
126
|
+
color: themed($theme-map, 'color', 'primary', 600);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
&__header {
|
|
130
|
+
display: flex;
|
|
131
|
+
gap: toRem(15);
|
|
132
|
+
padding: toRem(10);
|
|
133
|
+
max-width: toRem(330);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
&__checkbox {
|
|
137
|
+
margin-left: auto;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
&__date {
|
|
141
|
+
font-size: toRem(11);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
&__description {
|
|
145
|
+
position: relative;
|
|
146
|
+
width: 100%;
|
|
147
|
+
|
|
148
|
+
&.a-tooltip[data-tooltip]:after {
|
|
149
|
+
width: 100%;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
&__content {
|
|
154
|
+
flex-grow: 1;
|
|
155
|
+
padding: 0 toRem(15);
|
|
156
|
+
font-size: toRem(13);
|
|
157
|
+
margin-bottom: toRem(10);
|
|
158
|
+
|
|
159
|
+
.a-h3 {
|
|
160
|
+
font-size: toRem(14);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
&.-date {
|
|
164
|
+
margin-bottom: 0;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
&__categories {
|
|
169
|
+
max-height: toRem(20);
|
|
170
|
+
overflow: hidden;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
&__footer {
|
|
174
|
+
display: flex;
|
|
175
|
+
align-items: center;
|
|
176
|
+
justify-content: center;
|
|
177
|
+
|
|
178
|
+
border-top: 1px themed($theme-map, 'color', 'primary', 300) solid;
|
|
179
|
+
border-bottom: 1px themed($theme-map, 'color', 'primary', 300) solid;
|
|
180
|
+
|
|
181
|
+
.a-btn {
|
|
182
|
+
margin-left: toRem(20); // needed for centering the footer text
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
pry-icon {
|
|
186
|
+
visibility: hidden;
|
|
187
|
+
opacity: 0;
|
|
188
|
+
transition: visibility 100ms linear , opacity 100ms linear;
|
|
189
|
+
margin-left: toRem(3);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
package/styles/main.scss
CHANGED
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
@use 'components/o-cards-list' as *;
|
|
57
57
|
@use 'components/o-dashboard' as *;
|
|
58
58
|
@use 'components/o-date-picker' as *;
|
|
59
|
+
@use 'components/o-datasource-selector' as *;
|
|
59
60
|
@use 'components/o-chips-selector' as *;
|
|
60
61
|
@use 'components/o-draggable-menu' as *;
|
|
61
62
|
@use 'components/o-form' as *;
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
@use 'components-theme/a-badge.theme' as *;
|
|
5
5
|
@use 'components-theme/a-btn.theme' as *;
|
|
6
6
|
@use 'components-theme/a-checkbox.theme' as *;
|
|
7
|
-
@use 'components-theme/a-chip.theme' as *;
|
|
8
7
|
@use 'components-theme/a-expandable-value.theme' as *;
|
|
9
8
|
@use 'components-theme/a-form-field.theme' as *;
|
|
10
9
|
@use 'components-theme/a-icon.theme' as *;
|
|
@@ -72,8 +71,6 @@
|
|
|
72
71
|
@use 'components-theme/o-pry-composed-condition.theme' as *;
|
|
73
72
|
@use 'components-theme/o-pry-card.theme' as *;
|
|
74
73
|
@use 'components-theme/o-pry-card-menu.theme' as *;
|
|
75
|
-
@use 'components-theme/o-pry-dataset-card.theme' as *;
|
|
76
|
-
@use 'components-theme/o-pry-dataset.theme' as *;
|
|
77
74
|
@use 'components-theme/o-pry-expand-panel.theme' as *;
|
|
78
75
|
@use 'components-theme/o-pry-new-presentation.theme' as *;
|
|
79
76
|
@use 'components-theme/o-pry-presentation.theme' as *;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { AfterContentInit, EventEmitter } from '@angular/core';
|
|
2
|
-
import { Dataset, DatasetVersion } from '@provoly/dashboard';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import { Store } from '@ngrx/store';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class PryDatasetCardComponent implements AfterContentInit {
|
|
7
|
-
private store;
|
|
8
|
-
dataset: Dataset;
|
|
9
|
-
consult: EventEmitter<Dataset>;
|
|
10
|
-
datasetVersions$: Observable<DatasetVersion[]>;
|
|
11
|
-
activeVersion$: Observable<string | undefined>;
|
|
12
|
-
constructor(store: Store);
|
|
13
|
-
ngAfterContentInit(): void;
|
|
14
|
-
truncateDescription(description: string | undefined, maxLength: number): string;
|
|
15
|
-
goToDetailView(): void;
|
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PryDatasetCardComponent, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PryDatasetCardComponent, "pry-dataset-card", never, { "dataset": { "alias": "dataset"; "required": false; }; }, { "consult": "consult"; }, never, never, false, never>;
|
|
18
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
@use '../../styles/abstracts/index' as *;
|
|
2
|
-
|
|
3
|
-
/* Organism - pry-dataset-card */
|
|
4
|
-
|
|
5
|
-
.o-pry-dataset-card {
|
|
6
|
-
display: flex;
|
|
7
|
-
flex-direction: column;
|
|
8
|
-
align-items: stretch;
|
|
9
|
-
position: relative;
|
|
10
|
-
margin: 0 auto;
|
|
11
|
-
border-collapse: collapse;
|
|
12
|
-
font-size: toRem(14);
|
|
13
|
-
min-width: toRem(310);
|
|
14
|
-
height: toRem(180);
|
|
15
|
-
|
|
16
|
-
&:hover {
|
|
17
|
-
cursor: pointer;
|
|
18
|
-
|
|
19
|
-
.o-pry-dataset-card__footer {
|
|
20
|
-
pry-icon {
|
|
21
|
-
visibility: visible;
|
|
22
|
-
opacity: 1;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
&__header {
|
|
28
|
-
display: flex;
|
|
29
|
-
gap: toRem(15);
|
|
30
|
-
padding: toRem(10);
|
|
31
|
-
max-width: toRem(330);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
&__date {
|
|
35
|
-
font-size: toRem(11);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
&__description {
|
|
39
|
-
position: relative;
|
|
40
|
-
width: 100%;
|
|
41
|
-
|
|
42
|
-
&.a-tooltip[data-tooltip]:after {
|
|
43
|
-
width: 100%;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
&__content {
|
|
48
|
-
flex-grow: 1;
|
|
49
|
-
padding: 0 toRem(15);
|
|
50
|
-
font-size: toRem(13);
|
|
51
|
-
margin-bottom: toRem(10);
|
|
52
|
-
|
|
53
|
-
.a-h3 {
|
|
54
|
-
font-size: toRem(14);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
&.-date {
|
|
58
|
-
margin-bottom: 0;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
&__categories {
|
|
63
|
-
max-height: toRem(20);
|
|
64
|
-
overflow: hidden;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
&__footer {
|
|
68
|
-
display: flex;
|
|
69
|
-
align-items: center;
|
|
70
|
-
justify-content: center;
|
|
71
|
-
|
|
72
|
-
.a-btn {
|
|
73
|
-
margin-left: toRem(20); // needed for centering the footer text
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
pry-icon {
|
|
77
|
-
visibility: hidden;
|
|
78
|
-
opacity: 0;
|
|
79
|
-
transition: visibility 100ms linear , opacity 100ms linear;
|
|
80
|
-
margin-left: toRem(3);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.dataset-name {
|
|
85
|
-
width: toRem(270);
|
|
86
|
-
|
|
87
|
-
&.a-tooltip[data-tooltip]:after {
|
|
88
|
-
top: calc(100% - 15px);
|
|
89
|
-
max-width: toRem(300);
|
|
90
|
-
word-break: break-word;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdm9seS1kYXNoYm9hcmQtY29tcG9uZW50cy1zaW5jZURhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NpbmNlRGF0ZS9wcm92b2x5LWRhc2hib2FyZC1jb21wb25lbnRzLXNpbmNlRGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './sinceDate.module';
|
|
2
|
-
export * from './sinceDate.pipe';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvc2luY2VEYXRlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zaW5jZURhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc2luY2VEYXRlLnBpcGUnO1xuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { PrySinceDatePipe } from './sinceDate.pipe';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class PrySinceDateModule {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PrySinceDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PrySinceDateModule, declarations: [PrySinceDatePipe], exports: [PrySinceDatePipe] }); }
|
|
7
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PrySinceDateModule }); }
|
|
8
|
-
}
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PrySinceDateModule, decorators: [{
|
|
10
|
-
type: NgModule,
|
|
11
|
-
args: [{
|
|
12
|
-
declarations: [PrySinceDatePipe],
|
|
13
|
-
exports: [PrySinceDatePipe]
|
|
14
|
-
}]
|
|
15
|
-
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luY2VEYXRlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvc2luY2VEYXRlL3NpbmNlRGF0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCOytHQUFsQixrQkFBa0IsaUJBSGQsZ0JBQWdCLGFBQ3JCLGdCQUFnQjsrR0FFZixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2hDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcnlTaW5jZURhdGVQaXBlIH0gZnJvbSAnLi9zaW5jZURhdGUucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1ByeVNpbmNlRGF0ZVBpcGVdLFxuICBleHBvcnRzOiBbUHJ5U2luY2VEYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgUHJ5U2luY2VEYXRlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@provoly/dashboard";
|
|
4
|
-
export class PrySinceDatePipe {
|
|
5
|
-
constructor(translateService) {
|
|
6
|
-
this.translateService = translateService;
|
|
7
|
-
}
|
|
8
|
-
transform(value, ...args) {
|
|
9
|
-
const date = new Date(value);
|
|
10
|
-
if (!!args[0] && args[0].onlyLocale) {
|
|
11
|
-
return date.toLocaleString();
|
|
12
|
-
}
|
|
13
|
-
if (isNaN(date.getTime())) {
|
|
14
|
-
return '';
|
|
15
|
-
}
|
|
16
|
-
const dateNow = this._now ?? new Date();
|
|
17
|
-
if (date.getFullYear() === dateNow.getFullYear() &&
|
|
18
|
-
date.getMonth() === dateNow.getMonth() &&
|
|
19
|
-
date.getDate() === dateNow.getDate()) {
|
|
20
|
-
return this.translateService.instant('@pry.toolbox.today', {
|
|
21
|
-
hour: `${date.getHours()}`.padStart(2, '0'),
|
|
22
|
-
min: `${date.getMinutes()}`.padStart(2, '0')
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
const dayDiff = this.getDayDiff(date, dateNow);
|
|
26
|
-
const dayDiffAbs = Math.ceil(Math.abs(dayDiff));
|
|
27
|
-
const dayDiffPast = dayDiff > 0;
|
|
28
|
-
if (dayDiffAbs > 30) {
|
|
29
|
-
return date.toLocaleString();
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
return this.translateService.instant(dayDiffPast ? '@pry.toolbox.since_day' : '@pry.toolbox.from_day', {
|
|
33
|
-
day: dayDiffAbs,
|
|
34
|
-
plural: dayDiffAbs >= 2 ? 's' : ''
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
getDayDiff(startDate, endDate) {
|
|
39
|
-
const msInDay = 24 * 60 * 60 * 1000;
|
|
40
|
-
return (endDate.getTime() - startDate.getTime()) / msInDay;
|
|
41
|
-
}
|
|
42
|
-
useNow(date) {
|
|
43
|
-
this._now = date;
|
|
44
|
-
return this;
|
|
45
|
-
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PrySinceDatePipe, deps: [{ token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
47
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: PrySinceDatePipe, name: "sinceDate" }); }
|
|
48
|
-
}
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PrySinceDatePipe, decorators: [{
|
|
50
|
-
type: Pipe,
|
|
51
|
-
args: [{
|
|
52
|
-
name: 'sinceDate'
|
|
53
|
-
}]
|
|
54
|
-
}], ctorParameters: () => [{ type: i1.PryI18nService }] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luY2VEYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NpbmNlRGF0ZS9zaW5jZURhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBTXBELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsZ0JBQWdDO1FBQWhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBZ0I7SUFBRyxDQUFDO0lBRXhELFNBQVMsQ0FBQyxLQUFhLEVBQUUsR0FBRyxJQUFXO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXhDLElBQ0UsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFDcEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtnQkFDekQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7Z0JBQzNDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO2FBQzdDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixFQUFFO2dCQUNyRyxHQUFHLEVBQUUsVUFBVTtnQkFDZixNQUFNLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQ25DLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWUsRUFBRSxPQUFhO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNwQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQWxEVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFINUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcnlJMThuU2VydmljZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NpbmNlRGF0ZSdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5U2luY2VEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcml2YXRlIF9ub3c/OiBEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogUHJ5STE4blNlcnZpY2UpIHt9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuXG4gICAgaWYgKCEhYXJnc1swXSAmJiBhcmdzWzBdLm9ubHlMb2NhbGUpIHtcbiAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVOb3cgPSB0aGlzLl9ub3cgPz8gbmV3IERhdGUoKTtcblxuICAgIGlmIChcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZU5vdy5nZXRGdWxsWWVhcigpICYmXG4gICAgICBkYXRlLmdldE1vbnRoKCkgPT09IGRhdGVOb3cuZ2V0TW9udGgoKSAmJlxuICAgICAgZGF0ZS5nZXREYXRlKCkgPT09IGRhdGVOb3cuZ2V0RGF0ZSgpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC50b2RheScsIHtcbiAgICAgICAgaG91cjogYCR7ZGF0ZS5nZXRIb3VycygpfWAucGFkU3RhcnQoMiwgJzAnKSxcbiAgICAgICAgbWluOiBgJHtkYXRlLmdldE1pbnV0ZXMoKX1gLnBhZFN0YXJ0KDIsICcwJylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGRheURpZmYgPSB0aGlzLmdldERheURpZmYoZGF0ZSwgZGF0ZU5vdyk7XG4gICAgY29uc3QgZGF5RGlmZkFicyA9IE1hdGguY2VpbChNYXRoLmFicyhkYXlEaWZmKSk7XG4gICAgY29uc3QgZGF5RGlmZlBhc3QgPSBkYXlEaWZmID4gMDtcbiAgICBpZiAoZGF5RGlmZkFicyA+IDMwKSB7XG4gICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZGF5RGlmZlBhc3QgPyAnQHByeS50b29sYm94LnNpbmNlX2RheScgOiAnQHByeS50b29sYm94LmZyb21fZGF5Jywge1xuICAgICAgICBkYXk6IGRheURpZmZBYnMsXG4gICAgICAgIHBsdXJhbDogZGF5RGlmZkFicyA+PSAyID8gJ3MnIDogJydcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldERheURpZmYoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBtc0luRGF5ID0gMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICByZXR1cm4gKGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKSkgLyBtc0luRGF5O1xuICB9XG5cbiAgdXNlTm93KGRhdGU/OiBEYXRlKSB7XG4gICAgdGhpcy5fbm93ID0gZGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { DataSourceSelectors } from '@provoly/dashboard';
|
|
3
|
-
import { map } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@ngrx/store";
|
|
6
|
-
import * as i2 from "@provoly/dashboard";
|
|
7
|
-
import * as i3 from "../../style/css.component";
|
|
8
|
-
import * as i4 from "@angular/common";
|
|
9
|
-
import * as i5 from "@provoly/dashboard/components/sinceDate";
|
|
10
|
-
export class PryDatasetCardComponent {
|
|
11
|
-
constructor(store) {
|
|
12
|
-
this.store = store;
|
|
13
|
-
this.consult = new EventEmitter();
|
|
14
|
-
}
|
|
15
|
-
ngAfterContentInit() {
|
|
16
|
-
this.datasetVersions$ = this.store
|
|
17
|
-
.select(DataSourceSelectors.matchingDatasetVersions(this.dataset.id))
|
|
18
|
-
.pipe(map((res) => [...res].sort((a, b) => b.version - a.version)));
|
|
19
|
-
this.activeVersion$ = this.datasetVersions$.pipe(map((versions) => versions.sort((v1, v2) => v2.version - v1.version).find((version) => version.state === 'ACTIVE')?.lastModified));
|
|
20
|
-
}
|
|
21
|
-
truncateDescription(description, maxLength) {
|
|
22
|
-
if (description && description.length > maxLength) {
|
|
23
|
-
return description.slice(0, maxLength) + '...';
|
|
24
|
-
}
|
|
25
|
-
return description;
|
|
26
|
-
}
|
|
27
|
-
goToDetailView() {
|
|
28
|
-
this.consult.emit(this.dataset);
|
|
29
|
-
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDatasetCardComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryDatasetCardComponent, selector: "pry-dataset-card", inputs: { dataset: "dataset" }, outputs: { consult: "consult" }, ngImport: i0, template: "<pry-dataset-css></pry-dataset-css>\n<div class=\"o-pry-dataset-card\" (click)=\"goToDetailView()\">\n <div class=\"o-pry-dataset-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"dataset.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"dataset-name\" ellipsis textElementSelector=\".a-h4\">\n <h4 class=\"a-h4\">{{ dataset.name }}</h4>\n </div>\n </div>\n <div class=\"o-pry-dataset-card__content u-display-flex -column -gap-10\">\n @if (dataset.description) {\n <div class=\"o-pry-dataset-card__description\" ellipsis textElementSelector=\".description\">\n <div class=\"description\">{{ truncateDescription(dataset.description, 100) }}</div>\n </div>\n } @else {\n <div class=\"o-pry-dataset-card__description -italic\">{{ '@pry.dataset.noDescription' | i18n }}</div>\n }\n\n <span class=\"o-pry-dataset-card__date\">\n @if (activeVersion$ | async) {\n {{ '@pry.dataset.since_day' | i18n }} {{ (activeVersion$ | async)! | sinceDate }}\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noActiveVersion' | i18n }}</span>\n }\n </span>\n @if (dataset.categories && dataset.categories.length > 0) {\n <div class=\"o-pry-dataset-card__categories u-display-flex -wrap\">\n @for (category of dataset.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n }\n </div>\n\n <div class=\"o-pry-dataset-card__footer\">\n <button class=\"a-btn\">\n {{ '@pry.dataset.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "component", type: i3.PryDatasetCssComponent, selector: "pry-dataset-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslateIdPipe, name: "translateId" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i5.PrySinceDatePipe, name: "sinceDate" }] }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDatasetCardComponent, decorators: [{
|
|
34
|
-
type: Component,
|
|
35
|
-
args: [{ selector: 'pry-dataset-card', template: "<pry-dataset-css></pry-dataset-css>\n<div class=\"o-pry-dataset-card\" (click)=\"goToDetailView()\">\n <div class=\"o-pry-dataset-card__header\">\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"dataset.id | translateId: { type: 'datasource', output: 'icon' } | async\"\n />\n <div class=\"dataset-name\" ellipsis textElementSelector=\".a-h4\">\n <h4 class=\"a-h4\">{{ dataset.name }}</h4>\n </div>\n </div>\n <div class=\"o-pry-dataset-card__content u-display-flex -column -gap-10\">\n @if (dataset.description) {\n <div class=\"o-pry-dataset-card__description\" ellipsis textElementSelector=\".description\">\n <div class=\"description\">{{ truncateDescription(dataset.description, 100) }}</div>\n </div>\n } @else {\n <div class=\"o-pry-dataset-card__description -italic\">{{ '@pry.dataset.noDescription' | i18n }}</div>\n }\n\n <span class=\"o-pry-dataset-card__date\">\n @if (activeVersion$ | async) {\n {{ '@pry.dataset.since_day' | i18n }} {{ (activeVersion$ | async)! | sinceDate }}\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noActiveVersion' | i18n }}</span>\n }\n </span>\n @if (dataset.categories && dataset.categories.length > 0) {\n <div class=\"o-pry-dataset-card__categories u-display-flex -wrap\">\n @for (category of dataset.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n }\n </div>\n\n <div class=\"o-pry-dataset-card__footer\">\n <button class=\"a-btn\">\n {{ '@pry.dataset.consult' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n</div>\n" }]
|
|
36
|
-
}], ctorParameters: () => [{ type: i1.Store }], propDecorators: { dataset: [{
|
|
37
|
-
type: Input
|
|
38
|
-
}], consult: [{
|
|
39
|
-
type: Output
|
|
40
|
-
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2RhdGFzZXQvY29tcG9uZW50cy9kYXRhc2V0LWNhcmQvZGF0YXNldC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2RhdGFzZXQvY29tcG9uZW50cy9kYXRhc2V0LWNhcmQvZGF0YXNldC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBMkIsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBT3ZDLE1BQU0sT0FBTyx1QkFBdUI7SUFNbEMsWUFBb0IsS0FBWTtRQUFaLFVBQUssR0FBTCxLQUFLLENBQU87UUFKdEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFJYixDQUFDO0lBRXBDLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUs7YUFDL0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDcEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQzlDLEdBQUcsQ0FDRCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQ1gsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsRUFBRSxZQUFZLENBQ2pILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxXQUErQixFQUFFLFNBQWlCO1FBQ3BFLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDbEQsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQWUsV0FBVyxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBN0JVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHlIQ1RwQywwdURBNkNBOzsyRkRwQ2EsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLGtCQUFrQjswRUFJbkIsT0FBTztzQkFBZixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YXNldCwgRGF0YXNldFZlcnNpb24sIERhdGFTb3VyY2VTZWxlY3RvcnMgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWRhdGFzZXQtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhc2V0LWNhcmQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeURhdGFzZXRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBJbnB1dCgpIGRhdGFzZXQhOiBEYXRhc2V0O1xuICBAT3V0cHV0KCkgY29uc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YXNldD4oKTtcbiAgZGF0YXNldFZlcnNpb25zJCE6IE9ic2VydmFibGU8RGF0YXNldFZlcnNpb25bXT47XG4gIGFjdGl2ZVZlcnNpb24kITogT2JzZXJ2YWJsZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmRhdGFzZXRWZXJzaW9ucyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMubWF0Y2hpbmdEYXRhc2V0VmVyc2lvbnModGhpcy5kYXRhc2V0LmlkKSlcbiAgICAgIC5waXBlKG1hcCgocmVzKSA9PiBbLi4ucmVzXS5zb3J0KChhLCBiKSA9PiBiLnZlcnNpb24gLSBhLnZlcnNpb24pKSk7XG4gICAgdGhpcy5hY3RpdmVWZXJzaW9uJCA9IHRoaXMuZGF0YXNldFZlcnNpb25zJC5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAodmVyc2lvbnMpID0+XG4gICAgICAgICAgdmVyc2lvbnMuc29ydCgodjEsIHYyKSA9PiB2Mi52ZXJzaW9uIC0gdjEudmVyc2lvbikuZmluZCgodmVyc2lvbikgPT4gdmVyc2lvbi5zdGF0ZSA9PT0gJ0FDVElWRScpPy5sYXN0TW9kaWZpZWRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgdHJ1bmNhdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkLCBtYXhMZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGRlc2NyaXB0aW9uICYmIGRlc2NyaXB0aW9uLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uLnNsaWNlKDAsIG1heExlbmd0aCkgKyAnLi4uJztcbiAgICB9XG4gICAgcmV0dXJuIDxzdHJpbmc+ZGVzY3JpcHRpb247XG4gIH1cblxuICBnb1RvRGV0YWlsVmlldygpIHtcbiAgICB0aGlzLmNvbnN1bHQuZW1pdCh0aGlzLmRhdGFzZXQpO1xuICB9XG59XG4iLCI8cHJ5LWRhdGFzZXQtY3NzPjwvcHJ5LWRhdGFzZXQtY3NzPlxuPGRpdiBjbGFzcz1cIm8tcHJ5LWRhdGFzZXQtY2FyZFwiIChjbGljayk9XCJnb1RvRGV0YWlsVmlldygpXCI+XG4gIDxkaXYgY2xhc3M9XCJvLXByeS1kYXRhc2V0LWNhcmRfX2hlYWRlclwiPlxuICAgIDxpbWdcbiAgICAgIGFsdD1cIlwiXG4gICAgICBbaGVpZ2h0XT1cIjI1XCJcbiAgICAgIFt3aWR0aF09XCIyNVwiXG4gICAgICBbc3JjXT1cImRhdGFzZXQuaWQgfCB0cmFuc2xhdGVJZDogeyB0eXBlOiAnZGF0YXNvdXJjZScsIG91dHB1dDogJ2ljb24nIH0gfCBhc3luY1wiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0YXNldC1uYW1lXCIgZWxsaXBzaXMgdGV4dEVsZW1lbnRTZWxlY3Rvcj1cIi5hLWg0XCI+XG4gICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgZGF0YXNldC5uYW1lIH19PC9oND5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLXByeS1kYXRhc2V0LWNhcmRfX2NvbnRlbnQgdS1kaXNwbGF5LWZsZXggLWNvbHVtbiAtZ2FwLTEwXCI+XG4gICAgQGlmIChkYXRhc2V0LmRlc2NyaXB0aW9uKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiby1wcnktZGF0YXNldC1jYXJkX19kZXNjcmlwdGlvblwiIGVsbGlwc2lzIHRleHRFbGVtZW50U2VsZWN0b3I9XCIuZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3sgdHJ1bmNhdGVEZXNjcmlwdGlvbihkYXRhc2V0LmRlc2NyaXB0aW9uLCAxMDApIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByeS1kYXRhc2V0LWNhcmRfX2Rlc2NyaXB0aW9uIC1pdGFsaWNcIj57eyAnQHByeS5kYXRhc2V0Lm5vRGVzY3JpcHRpb24nIHwgaTE4biB9fTwvZGl2PlxuICAgIH1cblxuICAgIDxzcGFuIGNsYXNzPVwiby1wcnktZGF0YXNldC1jYXJkX19kYXRlXCI+XG4gICAgICBAaWYgKGFjdGl2ZVZlcnNpb24kIHwgYXN5bmMpIHtcbiAgICAgICAge3sgJ0BwcnkuZGF0YXNldC5zaW5jZV9kYXknIHwgaTE4biB9fSB7eyAoYWN0aXZlVmVyc2lvbiQgfCBhc3luYykhIHwgc2luY2VEYXRlIH19XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCItaXRhbGljXCI+e3sgJ0BwcnkuZGF0YXNldC5ub0FjdGl2ZVZlcnNpb24nIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gICAgQGlmIChkYXRhc2V0LmNhdGVnb3JpZXMgJiYgZGF0YXNldC5jYXRlZ29yaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByeS1kYXRhc2V0LWNhcmRfX2NhdGVnb3JpZXMgdS1kaXNwbGF5LWZsZXggLXdyYXBcIj5cbiAgICAgICAgQGZvciAoY2F0ZWdvcnkgb2YgZGF0YXNldC5jYXRlZ29yaWVzOyB0cmFjayBjYXRlZ29yeS5pZCkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYS1jaGlwIC1tZFwiPnt7IGNhdGVnb3J5Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm8tcHJ5LWRhdGFzZXQtY2FyZF9fZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuXCI+XG4gICAgICB7eyAnQHByeS5kYXRhc2V0LmNvbnN1bHQnIHwgaTE4biB9fVxuICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBpY29uU3ZnPVwiYXJyb3dfcmlnaHRcIj48L3ByeS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|