@provoly/dashboard 1.3.9 → 1.3.11
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/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +2 -2
- package/admin/i18n/en.translations.d.ts +1 -1
- package/admin/i18n/fr.translations.d.ts +1 -1
- package/components/data-format/data-format.pipe.d.ts +1 -1
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +9 -9
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +3 -3
- package/esm2022/admin/i18n/en.translations.mjs +2 -2
- package/esm2022/admin/i18n/fr.translations.mjs +2 -2
- package/esm2022/components/data-format/data-format.pipe.mjs +4 -4
- package/esm2022/components/paginator/paginator.component.mjs +4 -4
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +11 -8
- package/esm2022/import/components/list/import-list.component.mjs +13 -5
- package/esm2022/import/style/css.component.mjs +2 -2
- package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/store/field/field.interface.mjs +1 -1
- package/esm2022/lib/core/store/field/field.service.mjs +2 -2
- package/esm2022/lib/dashboard/dashboard.module.mjs +8 -5
- package/esm2022/lib/dashboard/filter/base-filter.component.mjs +7 -3
- package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +5 -5
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +11 -7
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
- package/esm2022/widgets/widget-table/widget-table.module.mjs +3 -3
- package/fesm2022/provoly-dashboard-admin.mjs +12 -12
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-data-format.mjs +3 -3
- package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-paginator.mjs +3 -3
- package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +9 -6
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +14 -6
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +10 -6
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +2 -2
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +13 -6
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/filters/autocomplete/autocomplete.component.d.ts +2 -1
- package/import/components/list/import-list.component.d.ts +14 -4
- package/import/style/_o-import.scss +6 -0
- package/lib/core/store/field/field.interface.d.ts +1 -1
- package/lib/dashboard/dashboard.module.d.ts +1 -1
- package/lib/dashboard/filter/base-filter.component.d.ts +3 -2
- package/lib/dashboard/filter/components/filter-group/filter-group.component.d.ts +4 -4
- package/package.json +1 -1
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +1 -1
- package/widgets/widget-table/widget-table.module.d.ts +1 -1
|
@@ -6,7 +6,7 @@ const LOCALE = {
|
|
|
6
6
|
};
|
|
7
7
|
class DataFormatPipe {
|
|
8
8
|
constructor() { }
|
|
9
|
-
transform(value, {
|
|
9
|
+
transform(value, { localeFormat, unit, decimalPrecision, format } = {}) {
|
|
10
10
|
let result = value;
|
|
11
11
|
if (value === null || value === undefined) {
|
|
12
12
|
return value;
|
|
@@ -22,11 +22,11 @@ class DataFormatPipe {
|
|
|
22
22
|
maximumFractionDigits: decimalPrecision
|
|
23
23
|
}).format(value);
|
|
24
24
|
}
|
|
25
|
-
if (
|
|
25
|
+
if (localeFormat) {
|
|
26
26
|
result = toLocaleString(result);
|
|
27
27
|
}
|
|
28
28
|
if (unit) {
|
|
29
|
-
result = result +
|
|
29
|
+
result = result + unit;
|
|
30
30
|
}
|
|
31
31
|
if (format) {
|
|
32
32
|
result = new Intl.DateTimeFormat(LOCALE.value, dateFormatOptions.value[format]).format(getDate(value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-components-data-format.mjs","sources":["../../../../projects/provoly/dashboard/components/data-format/data-format.pipe.ts","../../../../projects/provoly/dashboard/components/data-format/data-format.module.ts","../../../../projects/provoly/dashboard/components/data-format/provoly-dashboard-components-data-format.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { FormatOptions } from '@provoly/dashboard';\n\nexport const LOCALE = {\n value: navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language\n};\n\n@Pipe({ name: 'dataFormat' })\nexport class DataFormatPipe implements PipeTransform {\n constructor() {}\n\n transform(\n value: any,\n {
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-components-data-format.mjs","sources":["../../../../projects/provoly/dashboard/components/data-format/data-format.pipe.ts","../../../../projects/provoly/dashboard/components/data-format/data-format.module.ts","../../../../projects/provoly/dashboard/components/data-format/provoly-dashboard-components-data-format.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { FormatOptions } from '@provoly/dashboard';\n\nexport const LOCALE = {\n value: navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language\n};\n\n@Pipe({ name: 'dataFormat' })\nexport class DataFormatPipe implements PipeTransform {\n constructor() {}\n\n transform(\n value: any,\n { localeFormat, unit, decimalPrecision, format }: Partial<FormatOptions> | undefined = {}\n ): any {\n let result = value;\n\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n if (decimalPrecision) {\n result = new Intl.NumberFormat(undefined, {\n // @ts-ignore\n roundingMode: 'floor',\n minimumFractionDigits: decimalPrecision,\n maximumFractionDigits: decimalPrecision\n }).format(value);\n }\n\n if (localeFormat) {\n result = toLocaleString(result);\n }\n if (unit) {\n result = result + unit;\n }\n\n if (format) {\n result = new Intl.DateTimeFormat(LOCALE.value, dateFormatOptions.value[format]).format(getDate(value));\n }\n\n return result;\n }\n}\n\n// number formatting methods\nconst toLocaleString = (value?: string | number) => {\n switch (typeof value) {\n case 'number':\n return new Intl.NumberFormat(LOCALE.value, { maximumFractionDigits: 20 }).format(value);\n case 'string':\n return value;\n default:\n return value;\n }\n};\n\n// date formatting methods\nexport const dateFormatOptions: { value: { [key: string]: Intl.DateTimeFormatOptions } } = {\n value: {\n DATETIME: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n DATE: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n },\n MONTH_YEAR: {\n month: '2-digit',\n year: 'numeric'\n },\n DAY_MONTH: {\n month: '2-digit',\n day: '2-digit'\n },\n YEAR: {\n year: 'numeric'\n },\n MONTH: {\n month: '2-digit'\n },\n DAY: {\n day: '2-digit'\n }\n }\n};\n\nconst getDate = (value: string | number | Date): Date => {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Date(value);\n }\n return value;\n};\n\nexport const toD3Format = (format?: string) => {\n switch (format) {\n case 'DATETIME':\n return '%Y-%m-%dT%H:%M:%S';\n case 'DATE':\n return '%Y-%m-%d';\n case 'MONTH_YEAR':\n return '%m-%Y';\n case 'DAY_MONTH':\n return '%d-%m';\n case 'YEAR':\n return '%Y';\n case 'MONTH':\n return '%m';\n case 'DAY':\n return '%d';\n default:\n return '%Y-%B-%dT%H:%M:%S';\n }\n};\n","import { NgModule } from '@angular/core';\nimport { DataFormatPipe } from './data-format.pipe';\n\n@NgModule({\n declarations: [DataFormatPipe],\n exports: [DataFormatPipe]\n})\nexport class PryDataFormatModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, ViewEncapsulation, inject, input, computed, signal, EventEmitter, effect, Output, NgModule } from '@angular/core';
|
|
2
|
+
import { Component, ViewEncapsulation, inject, input, computed, signal, EventEmitter, effect, untracked, Output, NgModule } from '@angular/core';
|
|
3
3
|
import { Store } from '@ngrx/store';
|
|
4
4
|
import * as i1 from '@provoly/dashboard';
|
|
5
5
|
import { PryIconModule } from '@provoly/dashboard';
|
|
@@ -37,9 +37,9 @@ class PryPaginatorComponent {
|
|
|
37
37
|
}, { allowSignalWrites: true });
|
|
38
38
|
}
|
|
39
39
|
dispatchPageChangeAction() {
|
|
40
|
-
if (this.action
|
|
40
|
+
if (untracked(this.action)) {
|
|
41
41
|
this.store.dispatch({
|
|
42
|
-
...this.action
|
|
42
|
+
...untracked(this.action),
|
|
43
43
|
// @ts-ignore
|
|
44
44
|
offset: (this.currentPage() - 1) * this.nbPerPage(),
|
|
45
45
|
limit: this.nbPerPage()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-components-paginator.mjs","sources":["../../../../projects/provoly/dashboard/components/paginator/style/css.component.ts","../../../../projects/provoly/dashboard/components/paginator/paginator.component.ts","../../../../projects/provoly/dashboard/components/paginator/paginator.component.html","../../../../projects/provoly/dashboard/components/paginator/paginator.module.ts","../../../../projects/provoly/dashboard/components/paginator/provoly-dashboard-components-paginator.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-paginator-css',\n template: '',\n styleUrls: ['./_o-pry-paginator.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryPaginatorCssComponent {}\n","import { Component, computed, effect, EventEmitter, inject, input, Output, signal } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\n\n@Component({\n selector: 'pry-paginator',\n templateUrl: './paginator.component.html'\n})\nexport class PryPaginatorComponent {\n store = inject(Store);\n\n action = input<Action>();\n nbPerPage = input<number>(10);\n totalItemNb = input<number>(100);\n mode = input<'long' | 'short'>('long');\n\n nbOfPages = computed(() => {\n return Math.floor(this.totalItemNb() / this.nbPerPage());\n });\n pages = computed(() => {\n return Array.from({ length: this.nbOfPages() }, (_, i) => i + 1);\n });\n currentPage = signal(1);\n\n @Output() pageChange = new EventEmitter<number>();\n\n constructor() {\n effect(\n () => {\n if (this.currentPage()) {\n this.dispatchPageChangeAction();\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n dispatchPageChangeAction() {\n if (this.action()) {\n this.store.dispatch({\n ...this.action(),\n // @ts-ignore\n offset: (this.currentPage() - 1) * this.nbPerPage(),\n limit: this.nbPerPage()\n });\n }\n }\n\n changePage(page: number) {\n this.currentPage.set(page);\n this.pageChange.emit(page);\n }\n}\n","<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(nbOfPages())\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { PryPaginatorComponent } from './paginator.component';\nimport { PryIconModule } from '@provoly/dashboard';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { PryPaginatorCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [PryPaginatorComponent, PryPaginatorCssComponent],\n imports: [PryIconModule, NgTemplateOutlet],\n exports: [PryPaginatorComponent, PryPaginatorCssComponent]\n})\nexport class PryPaginatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.PryPaginatorCssComponent"],"mappings":";;;;;;;;MAQa,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,yDAJzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA,CAAA;;;MCC1B,qBAAqB,CAAA;AAkBhC,IAAA,WAAA,GAAA;AAjBA,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAEtB,IAAM,CAAA,MAAA,GAAG,KAAK,EAAU,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAmB,MAAM,CAAC,CAAC;AAEvC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEd,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;QAGhD,MAAM,CACJ,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;AACH,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B,CAAC;KACH;IAED,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClB,GAAG,IAAI,CAAC,MAAM,EAAE;;AAEhB,gBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AACnD,gBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;AACxB,aAAA,CAAC,CAAC;SACJ;KACF;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;8GA3CU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,smBCPlC,47HAgHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzGa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,47HAAA,EAAA,CAAA;wDAmBf,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEZI,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJd,qBAAqB,EAAE,wBAAwB,CAAA,EAAA,OAAA,EAAA,CACpD,aAAa,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAC/B,qBAAqB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAE9C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;AAC/D,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;AAC3D,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-components-paginator.mjs","sources":["../../../../projects/provoly/dashboard/components/paginator/style/css.component.ts","../../../../projects/provoly/dashboard/components/paginator/paginator.component.ts","../../../../projects/provoly/dashboard/components/paginator/paginator.component.html","../../../../projects/provoly/dashboard/components/paginator/paginator.module.ts","../../../../projects/provoly/dashboard/components/paginator/provoly-dashboard-components-paginator.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-paginator-css',\n template: '',\n styleUrls: ['./_o-pry-paginator.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryPaginatorCssComponent {}\n","import { Component, computed, effect, EventEmitter, inject, input, Output, signal, untracked } from '@angular/core';\nimport { Action, Store } from '@ngrx/store';\n\n@Component({\n selector: 'pry-paginator',\n templateUrl: './paginator.component.html'\n})\nexport class PryPaginatorComponent {\n store = inject(Store);\n\n action = input<Action>();\n nbPerPage = input<number>(10);\n totalItemNb = input<number>(100);\n mode = input<'long' | 'short'>('long');\n\n nbOfPages = computed(() => {\n return Math.floor(this.totalItemNb() / this.nbPerPage());\n });\n pages = computed(() => {\n return Array.from({ length: this.nbOfPages() }, (_, i) => i + 1);\n });\n currentPage = signal(1);\n\n @Output() pageChange = new EventEmitter<number>();\n\n constructor() {\n effect(\n () => {\n if (this.currentPage()) {\n this.dispatchPageChangeAction();\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n dispatchPageChangeAction() {\n if (untracked(this.action)) {\n this.store.dispatch({\n ...untracked(this.action),\n // @ts-ignore\n offset: (this.currentPage() - 1) * this.nbPerPage(),\n limit: this.nbPerPage()\n });\n }\n }\n\n changePage(page: number) {\n this.currentPage.set(page);\n this.pageChange.emit(page);\n }\n}\n","<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(nbOfPages())\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { PryPaginatorComponent } from './paginator.component';\nimport { PryIconModule } from '@provoly/dashboard';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { PryPaginatorCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [PryPaginatorComponent, PryPaginatorCssComponent],\n imports: [PryIconModule, NgTemplateOutlet],\n exports: [PryPaginatorComponent, PryPaginatorCssComponent]\n})\nexport class PryPaginatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.PryPaginatorCssComponent"],"mappings":";;;;;;;;MAQa,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,yDAJzB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA,CAAA;;;MCC1B,qBAAqB,CAAA;AAkBhC,IAAA,WAAA,GAAA;AAjBA,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAEtB,IAAM,CAAA,MAAA,GAAG,KAAK,EAAU,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAmB,MAAM,CAAC,CAAC;AAEvC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACpB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,SAAC,CAAC,CAAC;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEd,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;QAGhD,MAAM,CACJ,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;AACH,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B,CAAC;KACH;IAED,wBAAwB,GAAA;AACtB,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,gBAAA,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;;AAEzB,gBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AACnD,gBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE;AACxB,aAAA,CAAC,CAAC;SACJ;KACF;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;8GA3CU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,smBCPlC,47HAgHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzGa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,47HAAA,EAAA,CAAA;wDAmBf,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEZI,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJd,qBAAqB,EAAE,wBAAwB,CAAA,EAAA,OAAA,EAAA,CACpD,aAAa,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAC/B,qBAAqB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAE9C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;AAC/D,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;AAC3D,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as i5 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Component, ViewEncapsulation, NgModule } from '@angular/core';
|
|
5
|
-
import * as
|
|
4
|
+
import { Component, ViewEncapsulation, ViewChild, NgModule } from '@angular/core';
|
|
5
|
+
import * as i3 from '@angular/forms';
|
|
6
6
|
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
7
7
|
import * as i2 from '@provoly/dashboard';
|
|
8
8
|
import { BaseFilterComponent, SearchSelectors, SearchActions, BaseFilterModule, PrySelectModule, PryIconModule, PryI18nModule } from '@provoly/dashboard';
|
|
@@ -79,12 +79,15 @@ class AutocompleteComponent extends BaseFilterComponent {
|
|
|
79
79
|
this.search$.next('');
|
|
80
80
|
}
|
|
81
81
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i1.Store }, { token: i2.SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
82
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: AutocompleteComponent, selector: "pry-autocomplete", viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-autocomplete-css></pry-autocomplete-css>\n@if (filter) {\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\" (keyup)=\"updateSearch($event)\" #ref>\n @if (filter.name) {\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n }\n <pry-select\n [id]=\"filter.name\"\n [items]=\"items$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n (cleared)=\"clear()\"\n [loading]=\"loader\"\n (clicked)=\"resetAutocompleteValues()\"\n #select\n ></pry-select>\n </div>\n}\n", dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: PryAutocompleteCssComponent, selector: "pry-autocomplete-css" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
|
|
83
83
|
}
|
|
84
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
85
85
|
type: Component,
|
|
86
|
-
args: [{ selector: 'pry-autocomplete', template: "<pry-autocomplete-css></pry-autocomplete-css>\n
|
|
87
|
-
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.SearchService }]
|
|
86
|
+
args: [{ selector: 'pry-autocomplete', template: "<pry-autocomplete-css></pry-autocomplete-css>\n@if (filter) {\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\" (keyup)=\"updateSearch($event)\" #ref>\n @if (filter.name) {\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n }\n <pry-select\n [id]=\"filter.name\"\n [items]=\"items$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n (cleared)=\"clear()\"\n [loading]=\"loader\"\n (clicked)=\"resetAutocompleteValues()\"\n #select\n ></pry-select>\n </div>\n}\n" }]
|
|
87
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.SearchService }], propDecorators: { select: [{
|
|
88
|
+
type: ViewChild,
|
|
89
|
+
args: ['select']
|
|
90
|
+
}] } });
|
|
88
91
|
|
|
89
92
|
class PryAutocompleteModule extends BaseFilterModule {
|
|
90
93
|
getComponent() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-filters-autocomplete.mjs","sources":["../../../../projects/provoly/dashboard/filters/autocomplete/style/css.component.ts","../../../../projects/provoly/dashboard/filters/autocomplete/autocomplete.component.ts","../../../../projects/provoly/dashboard/filters/autocomplete/autocomplete.component.html","../../../../projects/provoly/dashboard/filters/autocomplete/autocomplete.module.ts","../../../../projects/provoly/dashboard/filters/autocomplete/provoly-dashboard-filters-autocomplete.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-autocomplete-css',\n template: '',\n styleUrls: ['./_m-autocomplete.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryAutocompleteCssComponent {}\n","import { Component, EventEmitter, OnDestroy, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { BaseFilterComponent, SearchActions, SearchSelectors, SearchService } from '@provoly/dashboard';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n Observable,\n of,\n skipUntil,\n startWith,\n Subject,\n switchMap\n} from 'rxjs';\nimport equal from 'fast-deep-equal/es6';\nimport { tap } from 'rxjs/operators';\nimport { Attribute } from '@provoly/dashboard/toolbox';\n\n@Component({\n selector: 'pry-autocomplete',\n templateUrl: './autocomplete.component.html'\n})\nexport class AutocompleteComponent extends BaseFilterComponent implements OnInit, OnDestroy {\n search$ = new BehaviorSubject<string>('');\n autocomplete$?: Observable<string[]>;\n loader: boolean = false;\n preventInitCall$ = new Subject<void>();\n possibleFilterValues$!: Observable<string[]>;\n possibleFilterValues: string[] = [];\n items$ = new BehaviorSubject<string[]>([]);\n\n constructor(\n store: Store,\n private searchService: SearchService\n ) {\n super(store);\n this.type = 'autocomplete';\n }\n\n override ngOnInit() {\n this.possibleFilterValues$ = this.store.select(SearchSelectors.possibleFilterValues(this.filter?.id));\n this.subscriptions.add(this.possibleFilterValues$.subscribe((values) => (this.possibleFilterValues = values)));\n\n super.ngOnInit();\n if (this.filter?.attributes) {\n this.store.dispatch(\n SearchActions.getPossibleFilterValues({\n filterId: this.filter?.id ?? '',\n attributes: (this.filter?.attributes as Omit<Attribute, 'customId'>[]).filter(\n (a) => !!a.datasource && !!a.id\n ),\n limit: this.filter?.limit ?? 10\n })\n );\n }\n\n this.search$.next(`${this._value}`);\n this.autocomplete$ = this.search$.pipe(\n distinctUntilChanged((p, v) => equal(p, v)),\n skipUntil(this.preventInitCall$),\n debounceTime(500),\n switchMap((search) => {\n if (!!search && search.length > 1) {\n this.loader = true;\n this.items$.next([]);\n return this.searchService.autocomplete(this.filter?.attributes, search, this.filter?.limit).pipe(\n tap(() => (this.loader = false)),\n catchError((err) => {\n this.loader = false;\n console.error('Autocomplete failed', err);\n return [];\n })\n );\n }\n return of([] as string[]);\n })\n );\n setTimeout(() => this.preventInitCall$.next(), 200);\n\n this.subscriptions.add(\n combineLatest([this.possibleFilterValues$, this.autocomplete$.pipe(startWith([] as string[]))])\n .pipe(map(([possibleValues, autocomplete]) => (autocomplete.length > 0 ? autocomplete : possibleValues)))\n .subscribe((values) => this.items$.next(values))\n );\n }\n\n resetAutocompleteValues() {\n if (this.items$.getValue()?.length !== this.possibleFilterValues?.length) {\n this.items$.next(this.possibleFilterValues);\n }\n }\n\n setFilter(value: string) {\n if (value !== this.filter?.value) {\n super.updateFilter(value);\n }\n }\n\n updateSearch($event?: Event) {\n // @ts-ignore\n const value = $event ? $event.target!.value : '';\n this.search$.next(value);\n }\n\n clear() {\n this.search$.next('');\n }\n}\n","<pry-autocomplete-css></pry-autocomplete-css>\n<div\n class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\"\n *ngIf=\"filter\"\n (keyup)=\"updateSearch($event)\"\n #ref\n>\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n <pry-select\n [id]=\"filter.name\"\n [items]=\"items$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n (cleared)=\"clear()\"\n [loading]=\"loader\"\n (clicked)=\"resetAutocompleteValues()\"\n ></pry-select>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n BaseFilterComponent,\n BaseFilterModule,\n PryI18nModule,\n PryIconModule,\n PrySelectModule\n} from '@provoly/dashboard';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { PryAutocompleteCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [AutocompleteComponent, PryAutocompleteCssComponent],\n exports: [AutocompleteComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule, PrySelectModule, PryIconModule, PryI18nModule]\n})\nexport class PryAutocompleteModule extends BaseFilterModule {\n override getComponent(): Type<BaseFilterComponent> {\n return AutocompleteComponent as Type<AutocompleteComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5.PryAutocompleteCssComponent"],"mappings":";;;;;;;;;;;;;MAQa,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,4DAJ5B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAID,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EACtB,QAAA,EAAA,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,CAAA;;;ACmBjC,MAAO,qBAAsB,SAAQ,mBAAmB,CAAA;IAS5D,WACE,CAAA,KAAY,EACJ,aAA4B,EAAA;QAEpC,KAAK,CAAC,KAAK,CAAC,CAAC;QAFL,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAVtC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QAE1C,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AACxB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ,CAAC;QAEvC,IAAoB,CAAA,oBAAA,GAAa,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;AAOzC,QAAA,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;KAC5B;IAEQ,QAAQ,GAAA;QACf,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,MAAM,MAAM,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/G,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,uBAAuB,CAAC;AACpC,gBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE;gBAC/B,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,UAA4C,EAAC,MAAM,CAC3E,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAChC;AACD,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;AAChC,aAAA,CAAC,CACH,CAAC;SACH;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACpC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAChC,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,CAAC,MAAM,KAAI;YACnB,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAC9F,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,EAChC,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,oBAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAAC;iBACX,CAAC,CACH,CAAC;aACH;AACD,YAAA,OAAO,EAAE,CAAC,EAAc,CAAC,CAAC;SAC3B,CAAC,CACH,CAAC;AACF,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,aAAa,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAc,CAAC,CAAC,CAAC,CAAC;AAC5F,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,MAAM,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC;AACxG,aAAA,SAAS,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CACnD,CAAC;KACH;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC,oBAAoB,EAAE,MAAM,EAAE;YACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SAC7C;KACF;AAED,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AAChC,YAAA,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC3B;KACF;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;;AAEzB,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,MAAO,CAAC,KAAK,GAAG,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvB;8GApFU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+ECzBlC,owBAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDCa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,owBAAA,EAAA,CAAA;;;AEJxB,MAAO,qBAAsB,SAAQ,gBAAgB,CAAA;IAChD,YAAY,GAAA;AACnB,QAAA,OAAO,qBAAoD,CAAC;KAC7D;8GAHU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAJjB,qBAAqB,EAAE,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAEvD,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,aAD7F,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAGpB,qBAAqB,EAAA,OAAA,EAAA,CAFtB,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAE5F,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;oBAClE,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAChC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,CAAC;AACzG,iBAAA,CAAA;;;ACjBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-filters-autocomplete.mjs","sources":["../../../../projects/provoly/dashboard/filters/autocomplete/style/css.component.ts","../../../../projects/provoly/dashboard/filters/autocomplete/autocomplete.component.ts","../../../../projects/provoly/dashboard/filters/autocomplete/autocomplete.component.html","../../../../projects/provoly/dashboard/filters/autocomplete/autocomplete.module.ts","../../../../projects/provoly/dashboard/filters/autocomplete/provoly-dashboard-filters-autocomplete.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-autocomplete-css',\n template: '',\n styleUrls: ['./_m-autocomplete.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryAutocompleteCssComponent {}\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n BaseFilterComponent,\n PrySelectComponent,\n SearchActions,\n SearchSelectors,\n SearchService\n} from '@provoly/dashboard';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n map,\n Observable,\n of,\n skipUntil,\n startWith,\n Subject,\n switchMap\n} from 'rxjs';\nimport equal from 'fast-deep-equal/es6';\nimport { tap } from 'rxjs/operators';\nimport { Attribute } from '@provoly/dashboard/toolbox';\n\n@Component({\n selector: 'pry-autocomplete',\n templateUrl: './autocomplete.component.html'\n})\nexport class AutocompleteComponent extends BaseFilterComponent implements OnInit, OnDestroy {\n search$ = new BehaviorSubject<string>('');\n autocomplete$?: Observable<string[]>;\n loader: boolean = false;\n preventInitCall$ = new Subject<void>();\n possibleFilterValues$!: Observable<string[]>;\n possibleFilterValues: string[] = [];\n items$ = new BehaviorSubject<string[]>([]);\n @ViewChild('select') select!: PrySelectComponent;\n\n constructor(\n store: Store,\n private searchService: SearchService\n ) {\n super(store);\n this.type = 'autocomplete';\n }\n\n override ngOnInit() {\n this.possibleFilterValues$ = this.store.select(SearchSelectors.possibleFilterValues(this.filter?.id));\n this.subscriptions.add(this.possibleFilterValues$.subscribe((values) => (this.possibleFilterValues = values)));\n\n super.ngOnInit();\n if (this.filter?.attributes) {\n this.store.dispatch(\n SearchActions.getPossibleFilterValues({\n filterId: this.filter?.id ?? '',\n attributes: (this.filter?.attributes as Omit<Attribute, 'customId'>[]).filter(\n (a) => !!a.datasource && !!a.id\n ),\n limit: this.filter?.limit ?? 10\n })\n );\n }\n\n this.search$.next(`${this._value}`);\n this.autocomplete$ = this.search$.pipe(\n distinctUntilChanged((p, v) => equal(p, v)),\n skipUntil(this.preventInitCall$),\n debounceTime(500),\n switchMap((search) => {\n if (!!search && search.length > 1) {\n this.loader = true;\n this.items$.next([]);\n return this.searchService.autocomplete(this.filter?.attributes, search, this.filter?.limit).pipe(\n tap(() => (this.loader = false)),\n catchError((err) => {\n this.loader = false;\n console.error('Autocomplete failed', err);\n return [];\n })\n );\n }\n return of([] as string[]);\n })\n );\n setTimeout(() => this.preventInitCall$.next(), 200);\n\n this.subscriptions.add(\n combineLatest([this.possibleFilterValues$, this.autocomplete$.pipe(startWith([] as string[]))])\n .pipe(map(([possibleValues, autocomplete]) => (autocomplete.length > 0 ? autocomplete : possibleValues)))\n .subscribe((values) => this.items$.next(values))\n );\n }\n\n resetAutocompleteValues() {\n if (this.items$.getValue()?.length !== this.possibleFilterValues?.length) {\n this.items$.next(this.possibleFilterValues);\n }\n }\n\n setFilter(value: string) {\n if (value !== this.filter?.value) {\n super.updateFilter(value);\n }\n }\n\n updateSearch($event?: Event) {\n // @ts-ignore\n const value = $event ? $event.target!.value : '';\n this.search$.next(value);\n }\n\n clear() {\n this.search$.next('');\n }\n}\n","<pry-autocomplete-css></pry-autocomplete-css>\n@if (filter) {\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\" (keyup)=\"updateSearch($event)\" #ref>\n @if (filter.name) {\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }} : </label>\n }\n <pry-select\n [id]=\"filter.name\"\n [items]=\"items$ | async\"\n [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n [externalAutocompleteService]=\"true\"\n aria-labelledby=\"item-label\"\n (blur)=\"updateSearch($event)\"\n [elementRef]=\"ref\"\n (cleared)=\"clear()\"\n [loading]=\"loader\"\n (clicked)=\"resetAutocompleteValues()\"\n #select\n ></pry-select>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n BaseFilterComponent,\n BaseFilterModule,\n PryI18nModule,\n PryIconModule,\n PrySelectModule\n} from '@provoly/dashboard';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { PryAutocompleteCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [AutocompleteComponent, PryAutocompleteCssComponent],\n exports: [AutocompleteComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule, PrySelectModule, PryIconModule, PryI18nModule]\n})\nexport class PryAutocompleteModule extends BaseFilterModule {\n override getComponent(): Type<BaseFilterComponent> {\n return AutocompleteComponent as Type<AutocompleteComponent>;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4.PryAutocompleteCssComponent"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i6 from '@angular/common';
|
|
2
2
|
import { CommonModule, DatePipe } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Component, ViewEncapsulation, EventEmitter, ViewChild, Output, NgModule, Injectable, Inject, input } from '@angular/core';
|
|
4
|
+
import { Component, ViewEncapsulation, EventEmitter, ViewChild, Output, NgModule, Injectable, Inject, signal, input } from '@angular/core';
|
|
5
5
|
import * as i3 from '@angular/forms';
|
|
6
6
|
import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
7
7
|
import * as i1$3 from '@ngrx/effects';
|
|
@@ -156,11 +156,11 @@ const ImportSelectors = {
|
|
|
156
156
|
|
|
157
157
|
class PryImportCssComponent {
|
|
158
158
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryImportCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryImportCssComponent, selector: "pry-import-css", ngImport: i0, template: '', isInline: true, styles: [".m-version-modal__list{margin:0;padding:0}.m-version-modal__list li{list-style:none}.o-import{overflow:scroll;height:100%;padding:.9375rem 1.5625rem}.o-import__header,.o-import__form-container{width:50%}.o-import .u-display-flex{gap:4.6875rem}.o-import .o-file-input{min-height:4.6875rem}.o-import__file{text-align:center}.o-import__actions{margin-top:3.125rem}.o-import__message{padding:.9375rem;background-color:#ecedf4;border-radius:.625rem;overflow-y:auto;height:fit-content}.o-import .a-pry-select__content{flex:1}.o-import-list{height:100%}.o-import-list .a-h1{padding:0}.o-import-list .warning{color:#fc5640}.o-import-list .m-filter__input-wrapper{height:2.5rem}.o-import-list .m-filter__date-input-separator{line-height:0}.o-import-list .a-table tbody td.-cell-with-icon{margin:0;padding:1.25rem;height:100%}.o-import-list__content{overflow:auto}.m-version-modal{background-color:#fff;max-width:23.75rem;max-height:37.5rem;padding:0 1.25rem 1.25rem .625rem;box-shadow:0 4px 4px #00000040}.m-version-modal__list{overflow:auto}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
159
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryImportCssComponent, selector: "pry-import-css", ngImport: i0, template: '', isInline: true, styles: [".m-version-modal__list{margin:0;padding:0}.m-version-modal__list li{list-style:none}.o-import{overflow:scroll;height:100%;padding:.9375rem 1.5625rem}.o-import__header,.o-import__form-container{width:50%}.o-import .u-display-flex{gap:4.6875rem}.o-import .o-file-input{min-height:4.6875rem}.o-import__file{text-align:center}.o-import__actions{margin-top:3.125rem}.o-import__message{padding:.9375rem;background-color:#ecedf4;border-radius:.625rem;overflow-y:auto;height:fit-content}.o-import .a-pry-select__content{flex:1}.o-import-list{height:100%}.o-import-list .a-h1{padding:0}.o-import-list .warning{color:#fc5640}.o-import-list .m-filter__input-wrapper{height:2.5rem}.o-import-list .m-filter__date-input-separator{line-height:0}.o-import-list .a-table tbody td.-cell-with-icon{margin:0;padding:1.25rem;height:100%}.o-import-list__content{overflow:auto}.o-import-list__state-filter pry-select{min-width:9.375rem}.m-version-modal{background-color:#fff;max-width:23.75rem;max-height:37.5rem;padding:0 1.25rem 1.25rem .625rem;box-shadow:0 4px 4px #00000040}.m-version-modal__list{overflow:auto}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
160
160
|
}
|
|
161
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryImportCssComponent, decorators: [{
|
|
162
162
|
type: Component,
|
|
163
|
-
args: [{ selector: 'pry-import-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".m-version-modal__list{margin:0;padding:0}.m-version-modal__list li{list-style:none}.o-import{overflow:scroll;height:100%;padding:.9375rem 1.5625rem}.o-import__header,.o-import__form-container{width:50%}.o-import .u-display-flex{gap:4.6875rem}.o-import .o-file-input{min-height:4.6875rem}.o-import__file{text-align:center}.o-import__actions{margin-top:3.125rem}.o-import__message{padding:.9375rem;background-color:#ecedf4;border-radius:.625rem;overflow-y:auto;height:fit-content}.o-import .a-pry-select__content{flex:1}.o-import-list{height:100%}.o-import-list .a-h1{padding:0}.o-import-list .warning{color:#fc5640}.o-import-list .m-filter__input-wrapper{height:2.5rem}.o-import-list .m-filter__date-input-separator{line-height:0}.o-import-list .a-table tbody td.-cell-with-icon{margin:0;padding:1.25rem;height:100%}.o-import-list__content{overflow:auto}.m-version-modal{background-color:#fff;max-width:23.75rem;max-height:37.5rem;padding:0 1.25rem 1.25rem .625rem;box-shadow:0 4px 4px #00000040}.m-version-modal__list{overflow:auto}\n"] }]
|
|
163
|
+
args: [{ selector: 'pry-import-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".m-version-modal__list{margin:0;padding:0}.m-version-modal__list li{list-style:none}.o-import{overflow:scroll;height:100%;padding:.9375rem 1.5625rem}.o-import__header,.o-import__form-container{width:50%}.o-import .u-display-flex{gap:4.6875rem}.o-import .o-file-input{min-height:4.6875rem}.o-import__file{text-align:center}.o-import__actions{margin-top:3.125rem}.o-import__message{padding:.9375rem;background-color:#ecedf4;border-radius:.625rem;overflow-y:auto;height:fit-content}.o-import .a-pry-select__content{flex:1}.o-import-list{height:100%}.o-import-list .a-h1{padding:0}.o-import-list .warning{color:#fc5640}.o-import-list .m-filter__input-wrapper{height:2.5rem}.o-import-list .m-filter__date-input-separator{line-height:0}.o-import-list .a-table tbody td.-cell-with-icon{margin:0;padding:1.25rem;height:100%}.o-import-list__content{overflow:auto}.o-import-list__state-filter pry-select{min-width:9.375rem}.m-version-modal{background-color:#fff;max-width:23.75rem;max-height:37.5rem;padding:0 1.25rem 1.25rem .625rem;box-shadow:0 4px 4px #00000040}.m-version-modal__list{overflow:auto}\n"] }]
|
|
164
164
|
}] });
|
|
165
165
|
|
|
166
166
|
class PryImportFormComponent extends SubscriptionnerDirective {
|
|
@@ -440,7 +440,7 @@ class PryImportListComponent extends SubscriptionnerDirective {
|
|
|
440
440
|
super();
|
|
441
441
|
this.store = store;
|
|
442
442
|
this.dialog = dialog;
|
|
443
|
-
this.loadDataAction =
|
|
443
|
+
this.loadDataAction = signal(DataSourceActions.dataset.listVersions({}));
|
|
444
444
|
this.refreshClick = input();
|
|
445
445
|
this.possibleStatus = ['LOADING', 'INDEXING', 'INACTIVE', 'ERROR', 'ACTIVE', 'DELETING', 'DELETE_ERROR'];
|
|
446
446
|
this.filters = {
|
|
@@ -460,6 +460,11 @@ class PryImportListComponent extends SubscriptionnerDirective {
|
|
|
460
460
|
}
|
|
461
461
|
clearFilters() {
|
|
462
462
|
this.filters = { dataset: undefined, status: undefined, dateMin: undefined, dateMax: undefined };
|
|
463
|
+
this.store.dispatch({
|
|
464
|
+
...this.loadDataAction(),
|
|
465
|
+
limit: 10,
|
|
466
|
+
...this.sort
|
|
467
|
+
});
|
|
463
468
|
}
|
|
464
469
|
loadData() {
|
|
465
470
|
this.store.dispatch({
|
|
@@ -489,12 +494,15 @@ class PryImportListComponent extends SubscriptionnerDirective {
|
|
|
489
494
|
this.sort.orderBy = $event.active;
|
|
490
495
|
this.loadData();
|
|
491
496
|
}
|
|
497
|
+
updateFilters() {
|
|
498
|
+
this.loadDataAction.update((loadDataAction) => ({ ...loadDataAction, ...this.filters }));
|
|
499
|
+
}
|
|
492
500
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryImportListComponent, deps: [{ token: i1.Store }, { token: i2.PryDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
493
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryImportListComponent, selector: "pry-import-list", inputs: {
|
|
501
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryImportListComponent, selector: "pry-import-list", inputs: { refreshClick: { classPropertyName: "refreshClick", publicName: "refreshClick", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<pry-import-css></pry-import-css>\n<div class=\"o-import-list u-display-flex -column -gap-20\">\n <h1 class=\"a-h1\">{{ '@pry.importList.title' | i18n }}</h1>\n <div class=\"o-import-list__filters u-display-flex -gap-20\">\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown o-import-list__dataset-filter\" #dsRef>\n <label class=\"a-label m-filter__label\" for=\"dataset_name_filter\">\n {{ '@pry.importList.filter.dsName' | i18n }} : \n </label>\n <pry-select\n id=\"dataset_name_filter\"\n [items]=\"datasets$ | async\"\n [(ngModel)]=\"filters.dataset\"\n (ngModelChange)=\"updateFilters()\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [elementRef]=\"dsRef\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown o-import-list__state-filter\" #statusRef>\n <label class=\"a-label m-filter__label\" for=\"import_status\">\n {{ '@pry.importList.filter.status' | i18n }} : \n </label>\n <pry-select\n id=\"import_status\"\n [items]=\"possibleStatus\"\n [(ngModel)]=\"filters.status\"\n (ngModelChange)=\"updateFilters()\"\n [clearable]=\"true\"\n aria-labelledby=\"item-label\"\n [elementRef]=\"statusRef\"\n i18nPrefix=\"@pry.dataset.version.stateFilter.\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown o-import-list__date-filter\">\n <fieldset class=\"u-display-flex -align-center\">\n <legend class=\"a-label m-filter__label\">{{ '@pry.importList.filter.date' | i18n }} : </legend>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMin\" (ngModelChange)=\"updateFilters()\" />\n <span class=\"m-filter__date-input-separator\"> - </span>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMax\" (ngModelChange)=\"updateFilters()\" />\n </fieldset>\n </div>\n <button type=\"button\" class=\"a-btn a-btn--icon-only u-self-center\" (click)=\"clearFilters()\">\n <pry-icon iconSvg=\"clear_filter\" [width]=\"30\" [height]=\"30\"></pry-icon>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"loadData()\">\n {{ '@pry.toolbox.apply' | i18n }}\n <pry-icon iconSvg=\"refresh_filter\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n </div>\n <div class=\"o-import-list__content\">\n <table class=\"a-table\" prySortTable (prySortChange)=\"sortChange($event)\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th id=\"import_list_header_dataset\" prySortHeader=\"DATASET_NAME\">\n {{ '@pry.importList.dsName' | i18n }}\n </th>\n <th>{{ '@pry.importList.number' | i18n }}</th>\n <th id=\"import_list_header_date\" prySortHeader=\"DATE\" (sortChange)=\"sortChange($event)\">\n {{ '@pry.importList.date' | i18n }}\n </th>\n <th>{{ '@pry.importList.status' | i18n }}</th>\n <th>{{ '@pry.importList.actions' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (version of datasetVersions$ | async; track version.id) {\n <tr>\n <td>{{ version.dataset.name }}</td>\n <td>\n {{ version.version }}\n </td>\n <td>\n {{ version.productionDate | date: 'dd/MM/yyyy HH:mm' }}\n </td>\n <td class=\"u-display-flex -align-center -cell-with-icon\">\n @if (version.state === 'ACTIVE') {\n <pry-icon iconSvg=\"check\" class=\"check\" [height]=\"20\" [width]=\"20\"></pry-icon>\n } @else if (version.state === 'WARNING' || version.state === 'ERROR') {\n <pry-icon iconSvg=\"warning-triangle\" class=\"warning\" [height]=\"20\" [width]=\"20\"></pry-icon>\n }\n {{\n version.id === version.dataset.activeVersion?.id\n ? '@pry.dataset.version.state.currentlyActive'\n : ('@pry.dataset.version.state.' + version.state | i18n)\n }}\n </td>\n @if (version.state === 'ACTIVE' || version.state === 'INACTIVE') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openInfoModal(version)\">Consulter</button>\n </td>\n } @else if (version.state === 'ERROR' || version.state === 'WARNING') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openErrorModal(version)\">\n {{ version.state === 'ERROR' ? 'Consulter erreurs' : 'Consulter warnings' }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <pry-paginator\n [action]=\"loadDataAction()\"\n [nbPerPage]=\"10\"\n [totalItemNb]=\"(totalVersionCount$ | async)!\"\n class=\"u-self-center\"\n ></pry-paginator>\n</div>\n", dependencies: [{ kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.PryPaginatorComponent, selector: "pry-paginator", inputs: ["action", "nbPerPage", "totalItemNb", "mode"], outputs: ["pageChange"] }, { kind: "component", type: i2.PrySortHeaderComponent, selector: "th[prySortHeader]", inputs: ["prySortHeader"], outputs: ["sortChange"] }, { kind: "directive", type: i2.PrySortHeaderDirective, selector: "[prySortHeader]" }, { kind: "directive", type: i2.PrySortTableDirective, selector: "[prySortTable]", inputs: ["prySortActive", "prySortDirection"], outputs: ["prySortChange"] }, { kind: "component", type: PryImportCssComponent, selector: "pry-import-css" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.DatePipe, name: "date" }] }); }
|
|
494
502
|
}
|
|
495
503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryImportListComponent, decorators: [{
|
|
496
504
|
type: Component,
|
|
497
|
-
args: [{ selector: 'pry-import-list', template: "<pry-import-css></pry-import-css>\n<div class=\"o-import-list u-display-flex -column -gap-20\">\n <h1 class=\"a-h1\">{{ '@pry.importList.title' | i18n }}</h1>\n <div class=\"o-import-list__filters u-display-flex -gap-20\">\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\" #dsRef>\n <label class=\"a-label m-filter__label\" for=\"dataset_name_filter\">\n {{ '@pry.importList.filter.dsName' | i18n }} : \n </label>\n <pry-select\n id=\"dataset_name_filter\"\n [items]=\"datasets$ | async\"\n [(ngModel)]=\"filters.dataset\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [elementRef]=\"dsRef\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\" #statusRef>\n <label class=\"a-label m-filter__label\" for=\"import_status\">\n {{ '@pry.importList.filter.status' | i18n }} : \n </label>\n <pry-select\n id=\"import_status\"\n [items]=\"possibleStatus\"\n [(ngModel)]=\"filters.status\"\n [clearable]=\"true\"\n aria-labelledby=\"item-label\"\n [elementRef]=\"statusRef\"\n i18nPrefix=\"@pry.dataset.version.stateFilter.\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown\">\n <fieldset class=\"u-display-flex -align-center\">\n <legend class=\"a-label m-filter__label\">{{ '@pry.importList.filter.date' | i18n }} : </legend>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMin\" />\n <span class=\"m-filter__date-input-separator\"> - </span>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMax\" />\n </fieldset>\n </div>\n <button type=\"button\" class=\"a-btn a-btn--icon-only u-self-center\" (click)=\"clearFilters()\">\n <pry-icon iconSvg=\"clear_filter\" [width]=\"30\" [height]=\"30\"></pry-icon>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"loadData()\">\n {{ '@pry.toolbox.apply' | i18n }}\n <pry-icon iconSvg=\"refresh_filter\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n </div>\n <div class=\"o-import-list__content\">\n <table class=\"a-table\" prySortTable (prySortChange)=\"sortChange($event)\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th id=\"import_list_header_dataset\" prySortHeader=\"DATASET_NAME\">\n {{ '@pry.importList.dsName' | i18n }}\n </th>\n <th>{{ '@pry.importList.number' | i18n }}</th>\n <th id=\"import_list_header_date\" prySortHeader=\"DATE\" (sortChange)=\"sortChange($event)\">\n {{ '@pry.importList.date' | i18n }}\n </th>\n <th>{{ '@pry.importList.status' | i18n }}</th>\n <th>{{ '@pry.importList.actions' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (version of datasetVersions$ | async; track version.id) {\n <tr>\n <td>{{ version.dataset.name }}</td>\n <td>\n {{ version.version }}\n </td>\n <td>\n {{ version.productionDate | date: 'dd/MM/yyyy HH:mm' }}\n </td>\n <td class=\"u-display-flex -align-center -cell-with-icon\">\n @if (version.state === 'ACTIVE') {\n <pry-icon iconSvg=\"check\" class=\"check\" [height]=\"20\" [width]=\"20\"></pry-icon>\n } @else if (version.state === 'WARNING' || version.state === 'ERROR') {\n <pry-icon iconSvg=\"warning-triangle\" class=\"warning\" [height]=\"20\" [width]=\"20\"></pry-icon>\n }\n {{\n version.id === version.dataset.activeVersion?.id\n ? '@pry.dataset.version.state.currentlyActive'\n : ('@pry.dataset.version.state.' + version.state | i18n)\n }}\n </td>\n @if (version.state === 'ACTIVE' || version.state === 'INACTIVE') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openInfoModal(version)\">Consulter</button>\n </td>\n } @else if (version.state === 'ERROR' || version.state === 'WARNING') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openErrorModal(version)\">\n {{ version.state === 'ERROR' ? 'Consulter erreurs' : 'Consulter warnings' }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <pry-paginator\n [action]=\"loadDataAction()\"\n [nbPerPage]=\"10\"\n [totalItemNb]=\"(totalVersionCount$ | async)!\"\n class=\"u-self-center\"\n ></pry-paginator>\n</div>\n" }]
|
|
505
|
+
args: [{ selector: 'pry-import-list', template: "<pry-import-css></pry-import-css>\n<div class=\"o-import-list u-display-flex -column -gap-20\">\n <h1 class=\"a-h1\">{{ '@pry.importList.title' | i18n }}</h1>\n <div class=\"o-import-list__filters u-display-flex -gap-20\">\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown o-import-list__dataset-filter\" #dsRef>\n <label class=\"a-label m-filter__label\" for=\"dataset_name_filter\">\n {{ '@pry.importList.filter.dsName' | i18n }} : \n </label>\n <pry-select\n id=\"dataset_name_filter\"\n [items]=\"datasets$ | async\"\n [(ngModel)]=\"filters.dataset\"\n (ngModelChange)=\"updateFilters()\"\n [clearable]=\"true\"\n [autocomplete]=\"true\"\n aria-labelledby=\"item-label\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [elementRef]=\"dsRef\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown o-import-list__state-filter\" #statusRef>\n <label class=\"a-label m-filter__label\" for=\"import_status\">\n {{ '@pry.importList.filter.status' | i18n }} : \n </label>\n <pry-select\n id=\"import_status\"\n [items]=\"possibleStatus\"\n [(ngModel)]=\"filters.status\"\n (ngModelChange)=\"updateFilters()\"\n [clearable]=\"true\"\n aria-labelledby=\"item-label\"\n [elementRef]=\"statusRef\"\n i18nPrefix=\"@pry.dataset.version.stateFilter.\"\n ></pry-select>\n </div>\n <div class=\"m-filter__input-wrapper m-filter__input-wrapper--dropdown o-import-list__date-filter\">\n <fieldset class=\"u-display-flex -align-center\">\n <legend class=\"a-label m-filter__label\">{{ '@pry.importList.filter.date' | i18n }} : </legend>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMin\" (ngModelChange)=\"updateFilters()\" />\n <span class=\"m-filter__date-input-separator\"> - </span>\n <input class=\"m-filter__input\" type=\"date\" [(ngModel)]=\"filters.dateMax\" (ngModelChange)=\"updateFilters()\" />\n </fieldset>\n </div>\n <button type=\"button\" class=\"a-btn a-btn--icon-only u-self-center\" (click)=\"clearFilters()\">\n <pry-icon iconSvg=\"clear_filter\" [width]=\"30\" [height]=\"30\"></pry-icon>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"loadData()\">\n {{ '@pry.toolbox.apply' | i18n }}\n <pry-icon iconSvg=\"refresh_filter\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n </div>\n <div class=\"o-import-list__content\">\n <table class=\"a-table\" prySortTable (prySortChange)=\"sortChange($event)\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th id=\"import_list_header_dataset\" prySortHeader=\"DATASET_NAME\">\n {{ '@pry.importList.dsName' | i18n }}\n </th>\n <th>{{ '@pry.importList.number' | i18n }}</th>\n <th id=\"import_list_header_date\" prySortHeader=\"DATE\" (sortChange)=\"sortChange($event)\">\n {{ '@pry.importList.date' | i18n }}\n </th>\n <th>{{ '@pry.importList.status' | i18n }}</th>\n <th>{{ '@pry.importList.actions' | i18n }}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (version of datasetVersions$ | async; track version.id) {\n <tr>\n <td>{{ version.dataset.name }}</td>\n <td>\n {{ version.version }}\n </td>\n <td>\n {{ version.productionDate | date: 'dd/MM/yyyy HH:mm' }}\n </td>\n <td class=\"u-display-flex -align-center -cell-with-icon\">\n @if (version.state === 'ACTIVE') {\n <pry-icon iconSvg=\"check\" class=\"check\" [height]=\"20\" [width]=\"20\"></pry-icon>\n } @else if (version.state === 'WARNING' || version.state === 'ERROR') {\n <pry-icon iconSvg=\"warning-triangle\" class=\"warning\" [height]=\"20\" [width]=\"20\"></pry-icon>\n }\n {{\n version.id === version.dataset.activeVersion?.id\n ? '@pry.dataset.version.state.currentlyActive'\n : ('@pry.dataset.version.state.' + version.state | i18n)\n }}\n </td>\n @if (version.state === 'ACTIVE' || version.state === 'INACTIVE') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openInfoModal(version)\">Consulter</button>\n </td>\n } @else if (version.state === 'ERROR' || version.state === 'WARNING') {\n <td>\n <button class=\"a-btn a-btn--secondary\" (click)=\"openErrorModal(version)\">\n {{ version.state === 'ERROR' ? 'Consulter erreurs' : 'Consulter warnings' }}\n </button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <pry-paginator\n [action]=\"loadDataAction()\"\n [nbPerPage]=\"10\"\n [totalItemNb]=\"(totalVersionCount$ | async)!\"\n class=\"u-self-center\"\n ></pry-paginator>\n</div>\n" }]
|
|
498
506
|
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.PryDialogService }] });
|
|
499
507
|
|
|
500
508
|
class PryImportModule {
|