ngx-techlify-core 11.4.5 → 11.4.8
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/README.md +24 -24
- package/bundles/ngx-techlify-core.umd.js +8023 -7787
- package/bundles/ngx-techlify-core.umd.js.map +1 -1
- package/bundles/ngx-techlify-core.umd.min.js +1 -16
- package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
- package/esm2015/lib/action-popup/action-popup.component.js +32 -32
- package/esm2015/lib/action-popup/action-popup.model.js +3 -3
- package/esm2015/lib/action-popup/action-popup.module.js +26 -26
- package/esm2015/lib/action-popup/index.js +3 -3
- package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.component.js +49 -49
- package/esm2015/lib/audit-log/audit-log-for-model/audit-log-for-model.module.js +25 -25
- package/esm2015/lib/audit-log/audit-log-list/audit-log-list-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-list/audit-log-list.component.js +132 -132
- package/esm2015/lib/audit-log/audit-log-list/audit-log-list.module.js +29 -29
- package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.js +67 -67
- package/esm2015/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.js +25 -25
- package/esm2015/lib/audit-log/audit-log-routing.module.js +19 -19
- package/esm2015/lib/audit-log/audit-log-view/audit-log-view-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-view/audit-log-view.component.js +60 -60
- package/esm2015/lib/audit-log/audit-log-view/audit-log-view.module.js +21 -21
- package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.component.js +57 -57
- package/esm2015/lib/audit-log/audit-log-view-model/audit-log-view-model.module.js +21 -21
- package/esm2015/lib/audit-log/audit-log.module.js +20 -20
- package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.js +12 -12
- package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.js +35 -35
- package/esm2015/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.js +21 -21
- package/esm2015/lib/base-model/index.js +4 -0
- package/esm2015/lib/base-model/techlify-form-component.class.js +51 -0
- package/esm2015/lib/base-model/techlify-listing-component.class.js +41 -0
- package/esm2015/lib/base-model/techlify-service.class.js +64 -0
- package/esm2015/lib/core/alert.service.js +39 -39
- package/esm2015/lib/core/api-prefix.interceptor.js +28 -28
- package/esm2015/lib/core/authentication.guard.js +39 -39
- package/esm2015/lib/core/authentication.service.js +59 -59
- package/esm2015/lib/core/cache.interceptor.js +60 -60
- package/esm2015/lib/core/config.service.js +47 -47
- package/esm2015/lib/core/core.module.js +42 -42
- package/esm2015/lib/core/credentials.service.js +84 -84
- package/esm2015/lib/core/dataManager.service.js +120 -120
- package/esm2015/lib/core/error-handler.interceptor.js +53 -53
- package/esm2015/lib/core/error-handler.service.js +60 -51
- package/esm2015/lib/core/form-validator.service.js +23 -23
- package/esm2015/lib/core/header.interceptor.js +22 -22
- package/esm2015/lib/core/http-cache.service.js +110 -110
- package/esm2015/lib/core/http.service.js +82 -82
- package/esm2015/lib/core/index.js +21 -21
- package/esm2015/lib/core/logger.service.js +100 -100
- package/esm2015/lib/core/route-reusable-strategy.js +35 -35
- package/esm2015/lib/core/snack/snack.component.js +33 -33
- package/esm2015/lib/core/snack/snack.module.js +25 -25
- package/esm2015/lib/core/storage.service.js +36 -36
- package/esm2015/lib/core/techlify-config.model.js +28 -26
- package/esm2015/lib/core/token.interceptor.js +30 -30
- package/esm2015/lib/data-table/data-table.component.js +190 -190
- package/esm2015/lib/data-table/data-table.model.js +11 -11
- package/esm2015/lib/data-table/data-table.module.js +25 -25
- package/esm2015/lib/data-table/index.js +3 -3
- package/esm2015/lib/date-validator.js +10 -10
- package/esm2015/lib/document-viewer/document-viewer.component.js +58 -58
- package/esm2015/lib/document-viewer/document-viewer.module.js +25 -25
- package/esm2015/lib/document-viewer/index.js +3 -3
- package/esm2015/lib/document-viewer/viewer-config.model.js +3 -3
- package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +26 -26
- package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.js +72 -72
- package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.js +23 -23
- package/esm2015/lib/email-subscription/email-subscription-for-user/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.js +102 -102
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.js +28 -28
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +28 -28
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.js +153 -153
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.js +27 -27
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.js +1 -1
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type.module.js +15 -15
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.js +99 -99
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.js +27 -27
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +28 -28
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.js +155 -155
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.js +29 -29
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.js +50 -50
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.js +25 -25
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.js +2 -2
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.js +12 -12
- package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user.module.js +15 -15
- package/esm2015/lib/email-subscription/email-subscription.module.js +15 -15
- package/esm2015/lib/entity-files/entity-file-form/entity-file-form.component.js +138 -141
- package/esm2015/lib/entity-files/entity-file.service.js +42 -38
- package/esm2015/lib/entity-files/entity-files-view-all.component.js +208 -161
- package/esm2015/lib/entity-files/entity-files-view-all.module.js +34 -34
- package/esm2015/lib/entity-files/index.js +3 -3
- package/esm2015/lib/export-excel/export-excel-button/export-excel-button.component.js +32 -32
- package/esm2015/lib/export-excel/export-excel.module.js +17 -17
- package/esm2015/lib/file-dropper/file-dropper.component.js +122 -122
- package/esm2015/lib/file-dropper/file-dropper.model.js +3 -3
- package/esm2015/lib/file-dropper/file-dropper.module.js +21 -21
- package/esm2015/lib/file-dropper/index.js +3 -3
- package/esm2015/lib/import-csv/data-import/data-import.component.js +18 -18
- package/esm2015/lib/import-csv/failed-items-list/failed-items-list.component.js +33 -33
- package/esm2015/lib/import-csv/field-mapping/field-mapping.component.js +148 -148
- package/esm2015/lib/import-csv/import-csv-config.js +2 -2
- package/esm2015/lib/import-csv/import-csv.component.js +196 -196
- package/esm2015/lib/import-csv/import-csv.module.js +46 -46
- package/esm2015/lib/import-csv/import-history-list/import-history-list.component.js +71 -71
- package/esm2015/lib/import-csv/import-success/import-success.component.js +19 -19
- package/esm2015/lib/loader/index.js +2 -2
- package/esm2015/lib/loader/loader.component.js +22 -22
- package/esm2015/lib/loader/loader.module.js +21 -21
- package/esm2015/lib/login-history-for-user/login-history-for-user-routing.module.js +20 -20
- package/esm2015/lib/login-history-for-user/login-history-for-user.component.js +88 -88
- package/esm2015/lib/login-history-for-user/login-history-for-user.module.js +27 -27
- package/esm2015/lib/material.module.js +60 -60
- package/esm2015/lib/note/comment-form/comment-form.component.js +73 -73
- package/esm2015/lib/note/index.js +4 -4
- package/esm2015/lib/note/note-form/note-form.component.js +81 -81
- package/esm2015/lib/note/note-list/note-list.component.js +151 -151
- package/esm2015/lib/note/note.module.js +36 -36
- package/esm2015/lib/note/note.service.js +31 -31
- package/esm2015/lib/read-more/read-more.component.js +43 -43
- package/esm2015/lib/read-more/read-more.module.js +21 -21
- package/esm2015/lib/searchable-selector/index.js +3 -3
- package/esm2015/lib/searchable-selector/mat-select-infinite-scroll.directive.js +81 -81
- package/esm2015/lib/searchable-selector/searchable-selector.component.js +307 -307
- package/esm2015/lib/searchable-selector/searchable-selector.module.js +28 -28
- package/esm2015/lib/techlify-feature/on-off-switch/on-off-switch.component.js +27 -27
- package/esm2015/lib/techlify-feature/techlify-feature-enabled.directive.js +78 -78
- package/esm2015/lib/techlify-feature/techlify-feature-listing.component.js +177 -177
- package/esm2015/lib/techlify-feature/techlify-feature.module.js +30 -30
- package/esm2015/lib/techlify-feature/techlify-feature.routing.js +12 -12
- package/esm2015/lib/techlify-feature/techlify-feature.service.js +28 -28
- package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.js +15 -15
- package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.js +269 -269
- package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.js +25 -25
- package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.js +168 -168
- package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.js +29 -29
- package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.component.js +114 -114
- package/esm2015/lib/techlify-update/techlify-update-form/techlify-update-form.module.js +28 -28
- package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.js +22 -22
- package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.component.js +143 -143
- package/esm2015/lib/techlify-update/techlify-update-history/techlify-update-history.module.js +28 -28
- package/esm2015/lib/techlify-update/techlify-update-routing.module.js +22 -22
- package/esm2015/lib/techlify-update/techlify-update.module.js +30 -30
- package/esm2015/lib/techlify-update/techlify-update.service.js +43 -43
- package/esm2015/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.js +161 -161
- package/esm2015/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.js +82 -82
- package/esm2015/lib/techlify-update/update-notifier/update-notifier.component.js +62 -62
- package/esm2015/lib/techlify-update/update-notifier/update-notifier.module.js +29 -29
- package/esm2015/lib/techlify-update/update-view/update-view.component.js +36 -36
- package/esm2015/lib/techlify-update/update-view/update-view.module.js +24 -24
- package/esm2015/lib/timeline-filter/calculate-timeline.js +102 -102
- package/esm2015/lib/timeline-filter/index.js +4 -4
- package/esm2015/lib/timeline-filter/timeline-filter-routing.module.js +12 -12
- package/esm2015/lib/timeline-filter/timeline-filter.component.js +213 -213
- package/esm2015/lib/timeline-filter/timeline-filter.module.js +23 -23
- package/esm2015/lib/timeline-filter/timeline.model.js +18 -18
- package/esm2015/lib/utility/date-utils.service.js +48 -48
- package/esm2015/lib/utility/index.js +4 -4
- package/esm2015/lib/utility/num-items-selector.component.js +29 -29
- package/esm2015/lib/utility/number-selector.component.js +38 -38
- package/esm2015/lib/utility/utility.module.js +20 -20
- package/esm2015/ngx-techlify-core.js +59 -59
- package/esm2015/public-api.js +96 -95
- package/fesm2015/ngx-techlify-core.js +6880 -6667
- package/fesm2015/ngx-techlify-core.js.map +1 -1
- package/lib/action-popup/action-popup.component.d.ts +14 -14
- package/lib/action-popup/action-popup.model.d.ts +5 -5
- package/lib/action-popup/action-popup.module.d.ts +2 -2
- package/lib/action-popup/index.d.ts +2 -2
- package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +12 -12
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +32 -32
- package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +19 -19
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +2 -2
- package/lib/audit-log/audit-log-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +17 -17
- package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +15 -15
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +2 -2
- package/lib/audit-log/audit-log.module.d.ts +2 -2
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +2 -2
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +11 -11
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +2 -2
- package/lib/base-model/index.d.ts +3 -0
- package/lib/base-model/techlify-form-component.class.d.ts +43 -0
- package/lib/base-model/techlify-listing-component.class.d.ts +47 -0
- package/lib/base-model/techlify-service.class.d.ts +52 -0
- package/lib/core/alert.service.d.ts +12 -12
- package/lib/core/api-prefix.interceptor.d.ts +11 -11
- package/lib/core/authentication.guard.d.ts +10 -10
- package/lib/core/authentication.service.d.ts +23 -23
- package/lib/core/cache.interceptor.d.ts +21 -21
- package/lib/core/config.service.d.ts +19 -19
- package/lib/core/core.module.d.ts +3 -3
- package/lib/core/credentials.service.d.ts +36 -36
- package/lib/core/dataManager.service.d.ts +70 -70
- package/lib/core/error-handler.interceptor.d.ts +14 -14
- package/lib/core/error-handler.service.d.ts +14 -12
- package/lib/core/form-validator.service.d.ts +8 -8
- package/lib/core/header.interceptor.d.ts +8 -8
- package/lib/core/http-cache.service.d.ts +54 -54
- package/lib/core/http.service.d.ts +56 -56
- package/lib/core/index.d.ts +20 -20
- package/lib/core/logger.service.d.ts +85 -85
- package/lib/core/route-reusable-strategy.d.ts +13 -13
- package/lib/core/snack/snack.component.d.ts +8 -8
- package/lib/core/snack/snack.module.d.ts +2 -2
- package/lib/core/storage.service.d.ts +15 -15
- package/lib/core/techlify-config.model.d.ts +18 -17
- package/lib/core/token.interceptor.d.ts +11 -11
- package/lib/data-table/data-table.component.d.ts +60 -60
- package/lib/data-table/data-table.model.d.ts +46 -46
- package/lib/data-table/data-table.module.d.ts +2 -2
- package/lib/data-table/index.d.ts +2 -2
- package/lib/date-validator.d.ts +1 -1
- package/lib/document-viewer/document-viewer.component.d.ts +16 -16
- package/lib/document-viewer/document-viewer.module.d.ts +2 -2
- package/lib/document-viewer/index.d.ts +2 -2
- package/lib/document-viewer/viewer-config.model.d.ts +5 -5
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +7 -7
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +17 -17
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-for-user/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +32 -32
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +9 -9
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +30 -30
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +32 -32
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +9 -9
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +32 -32
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +13 -13
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts +1 -1
- package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +2 -2
- package/lib/email-subscription/email-subscription.module.d.ts +2 -2
- package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +34 -34
- package/lib/entity-files/entity-file.service.d.ts +10 -10
- package/lib/entity-files/entity-files-view-all.component.d.ts +45 -38
- package/lib/entity-files/entity-files-view-all.module.d.ts +2 -2
- package/lib/entity-files/index.d.ts +2 -2
- package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +8 -8
- package/lib/export-excel/export-excel.module.d.ts +2 -2
- package/lib/file-dropper/file-dropper.component.d.ts +33 -33
- package/lib/file-dropper/file-dropper.model.d.ts +10 -10
- package/lib/file-dropper/file-dropper.module.d.ts +2 -2
- package/lib/file-dropper/index.d.ts +2 -2
- package/lib/import-csv/data-import/data-import.component.d.ts +6 -6
- package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts +12 -12
- package/lib/import-csv/field-mapping/field-mapping.component.d.ts +34 -34
- package/lib/import-csv/import-csv-config.d.ts +17 -17
- package/lib/import-csv/import-csv.component.d.ts +33 -33
- package/lib/import-csv/import-csv.module.d.ts +2 -2
- package/lib/import-csv/import-history-list/import-history-list.component.d.ts +21 -21
- package/lib/import-csv/import-success/import-success.component.d.ts +8 -8
- package/lib/loader/index.d.ts +1 -1
- package/lib/loader/loader.component.d.ts +8 -8
- package/lib/loader/loader.module.d.ts +2 -2
- package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +2 -2
- package/lib/login-history-for-user/login-history-for-user.component.d.ts +23 -23
- package/lib/login-history-for-user/login-history-for-user.module.d.ts +2 -2
- package/lib/material.module.d.ts +2 -2
- package/lib/note/comment-form/comment-form.component.d.ts +22 -22
- package/lib/note/index.d.ts +3 -3
- package/lib/note/note-form/note-form.component.d.ts +27 -27
- package/lib/note/note-list/note-list.component.d.ts +28 -28
- package/lib/note/note.module.d.ts +2 -2
- package/lib/note/note.service.d.ts +9 -9
- package/lib/read-more/read-more.component.d.ts +12 -12
- package/lib/read-more/read-more.module.d.ts +2 -2
- package/lib/searchable-selector/index.d.ts +2 -2
- package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +23 -23
- package/lib/searchable-selector/searchable-selector.component.d.ts +81 -81
- package/lib/searchable-selector/searchable-selector.module.d.ts +2 -2
- package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +9 -9
- package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +17 -17
- package/lib/techlify-feature/techlify-feature-listing.component.d.ts +37 -37
- package/lib/techlify-feature/techlify-feature.module.d.ts +2 -2
- package/lib/techlify-feature/techlify-feature.routing.d.ts +2 -2
- package/lib/techlify-feature/techlify-feature.service.d.ts +8 -8
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +12 -12
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +76 -76
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +2 -2
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +58 -58
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +30 -30
- package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +31 -31
- package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update-routing.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update.module.d.ts +2 -2
- package/lib/techlify-update/techlify-update.service.d.ts +13 -13
- package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +31 -31
- package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +25 -25
- package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +16 -16
- package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +2 -2
- package/lib/techlify-update/update-view/update-view.component.d.ts +14 -14
- package/lib/techlify-update/update-view/update-view.module.d.ts +2 -2
- package/lib/timeline-filter/calculate-timeline.d.ts +6 -6
- package/lib/timeline-filter/index.d.ts +3 -3
- package/lib/timeline-filter/timeline-filter-routing.module.d.ts +2 -2
- package/lib/timeline-filter/timeline-filter.component.d.ts +61 -61
- package/lib/timeline-filter/timeline-filter.module.d.ts +2 -2
- package/lib/timeline-filter/timeline.model.d.ts +17 -17
- package/lib/utility/date-utils.service.d.ts +21 -21
- package/lib/utility/index.d.ts +3 -3
- package/lib/utility/num-items-selector.component.d.ts +16 -16
- package/lib/utility/number-selector.component.d.ts +20 -20
- package/lib/utility/utility.module.d.ts +2 -2
- package/ngx-techlify-core.d.ts +59 -59
- package/ngx-techlify-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +92 -91
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
3
|
-
import { Router } from '@angular/router';
|
|
4
|
-
import { MatSort } from '@angular/material/sort';
|
|
5
|
-
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
-
import { DataManager } from '../../core/dataManager.service';
|
|
7
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
8
|
-
let AuditLogListComponent = class AuditLogListComponent {
|
|
9
|
-
constructor(dataManager, router, sanitizer) {
|
|
10
|
-
this.dataManager = dataManager;
|
|
11
|
-
this.router = router;
|
|
12
|
-
this.sanitizer = sanitizer;
|
|
13
|
-
this.auditLogList = [];
|
|
14
|
-
this.showFilter = true;
|
|
15
|
-
this.showExportButtons = true;
|
|
16
|
-
this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };
|
|
17
|
-
this.filters = { sort_by: 'created_at|desc' };
|
|
18
|
-
this.displayedColumns = ['index', 'id', 'object_type', 'object_id', 'action', 'changes', 'created_at', 'user.email'];
|
|
19
|
-
}
|
|
20
|
-
ngOnInit() {
|
|
21
|
-
this.initializeData();
|
|
22
|
-
if (this.sort) {
|
|
23
|
-
this.sort.sortChange.pipe(untilDestroyed(this))
|
|
24
|
-
.subscribe((value) => {
|
|
25
|
-
this.changeSort(value);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
get excelData() {
|
|
30
|
-
if (this.auditLogList.length > 0) {
|
|
31
|
-
return this.auditLogList.map(item => {
|
|
32
|
-
var _a;
|
|
33
|
-
return {
|
|
34
|
-
'Type': item === null || item === void 0 ? void 0 : item.object_type,
|
|
35
|
-
'Action': item === null || item === void 0 ? void 0 : item.action,
|
|
36
|
-
'Data': JSON.stringify((item === null || item === void 0 ? void 0 : item.data) || {}),
|
|
37
|
-
'Object': JSON.stringify((item === null || item === void 0 ? void 0 : item.object) || {}),
|
|
38
|
-
'Pre-Object': JSON.stringify((item === null || item === void 0 ? void 0 : item.pre_object) || {}),
|
|
39
|
-
'Created At': new Date(item === null || item === void 0 ? void 0 : item.created_at).toDateString(),
|
|
40
|
-
'Created By': (_a = item === null || item === void 0 ? void 0 : item.user) === null || _a === void 0 ? void 0 : _a.email
|
|
41
|
-
};
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
46
|
-
changeSort(event) {
|
|
47
|
-
if (event.direction) {
|
|
48
|
-
this.filters.sort_by = `${event.active}|${event.direction}`;
|
|
49
|
-
this.reload();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
logClicked(log) {
|
|
53
|
-
this.router.navigate(['/system/audit-logs/log-view', log.id]);
|
|
54
|
-
}
|
|
55
|
-
initializeData() {
|
|
56
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
if (this.objectType) {
|
|
58
|
-
this.filters = Object.assign(Object.assign({}, this.filters), { object_type: this.objectType });
|
|
59
|
-
}
|
|
60
|
-
if (this.objectId) {
|
|
61
|
-
this.filters = Object.assign(Object.assign({}, this.filters), { object_id: this.objectId });
|
|
62
|
-
}
|
|
63
|
-
if (this.userId) {
|
|
64
|
-
this.filters = Object.assign(Object.assign({}, this.filters), { user_id: this.userId });
|
|
65
|
-
}
|
|
66
|
-
const result = yield this.dataManager.GET(`api/audit-logs`, Object.assign(Object.assign({}, this.filters), this.pageEvent));
|
|
67
|
-
this.auditLogList = this.auditLogList.concat(result.data);
|
|
68
|
-
this.pageEvent.page = result.current_page;
|
|
69
|
-
this.pageEvent.lastPage = result.last_page;
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
filterChange(event) {
|
|
73
|
-
if (this.showFilter) {
|
|
74
|
-
this.filters = Object.assign(Object.assign(Object.assign({}, this.filters), event), { object_type: this.objectType || (event === null || event === void 0 ? void 0 : event.object_type) || '', object_id: this.objectId || '' });
|
|
75
|
-
this.reload();
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
onScroll() {
|
|
79
|
-
if (this.pageEvent.lastPage > this.pageEvent.page) {
|
|
80
|
-
this.pageEvent.page += 1;
|
|
81
|
-
this.initializeData();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
reload() {
|
|
85
|
-
this.auditLogList = [];
|
|
86
|
-
this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };
|
|
87
|
-
this.initializeData();
|
|
88
|
-
}
|
|
89
|
-
getTransformedChanges(log) {
|
|
90
|
-
var _a, _b;
|
|
91
|
-
if ((_a = log === null || log === void 0 ? void 0 : log.data) === null || _a === void 0 ? void 0 : _a.changes) {
|
|
92
|
-
const changes = Object.keys((_b = log === null || log === void 0 ? void 0 : log.data) === null || _b === void 0 ? void 0 : _b.changes) || [];
|
|
93
|
-
let value = '<div>';
|
|
94
|
-
changes.forEach((key) => {
|
|
95
|
-
var _a, _b;
|
|
96
|
-
const displayAttribute = key.split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');
|
|
97
|
-
value = `${value} <div><b>${displayAttribute}:</b> <span id="old-value">${(_a = log === null || log === void 0 ? void 0 : log.pre_object[key]) !== null && _a !== void 0 ? _a : ''}</span><span id="new-value">${(_b = log === null || log === void 0 ? void 0 : log.object[key]) !== null && _b !== void 0 ? _b : ''}</span></div>`;
|
|
98
|
-
});
|
|
99
|
-
value = `${value} </div>`;
|
|
100
|
-
return value;
|
|
101
|
-
}
|
|
102
|
-
return '';
|
|
103
|
-
}
|
|
104
|
-
ngOnDestroy() {
|
|
105
|
-
// Needed for automatic unsubscribe with untilDestroyed
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
AuditLogListComponent.decorators = [
|
|
109
|
-
{ type: Component, args: [{
|
|
110
|
-
selector: 'app-audit-log-list',
|
|
111
|
-
template: "<div fxLayout=\"column\" fxLayoutAlign=\"start\" class=\"mat-typography\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"1.5rem\" class=\"p-3\">\n <h2 class=\"font-weight-bold\">\n Audit Logs\n </h2>\n\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <app-audit-log-list-filter *ngIf=\"showFilter\" (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\n [objectId]=\"objectId\"></app-audit-log-list-filter>\n <span fxFlex></span>\n\n <ng-container *ngIf=\"showExportButtons\">\n <div class=\"ml-4\">\n <app-export-excel-button elementId=\"audit-logs-table\" name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n </ng-container>\n </div>\n </div>\n\n <section class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"auditLogList\" matSort class=\"w-100\" multiTemplateDataRows id=\"audit-logs-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let auditLog; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Log # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_id\">\n <th mat-header-cell *matHeaderCellDef> Model # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.object_id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.created_at | date:'medium'}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"user.email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.user?.email}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"changes\">\n <th mat-header-cell *matHeaderCellDef> Changes</th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\n\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n (click)=\"logClicked(row);$event.stopPropagation();\" class=\"hoverable row-hover\"></tr>\n </table>\n </section>\n\n\n</div>",
|
|
112
|
-
styles: ["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{background-color:#f08080;margin-right:5px}:host ::ng-deep #new-value{background-color:#98fb98}"]
|
|
113
|
-
},] }
|
|
114
|
-
];
|
|
115
|
-
AuditLogListComponent.ctorParameters = () => [
|
|
116
|
-
{ type: DataManager },
|
|
117
|
-
{ type: Router },
|
|
118
|
-
{ type: DomSanitizer }
|
|
119
|
-
];
|
|
120
|
-
AuditLogListComponent.propDecorators = {
|
|
121
|
-
objectId: [{ type: Input }],
|
|
122
|
-
objectType: [{ type: Input }],
|
|
123
|
-
showFilter: [{ type: Input }],
|
|
124
|
-
showExportButtons: [{ type: Input }],
|
|
125
|
-
userId: [{ type: Input }],
|
|
126
|
-
sort: [{ type: ViewChild, args: [MatSort, { static: true },] }]
|
|
127
|
-
};
|
|
128
|
-
AuditLogListComponent = __decorate([
|
|
129
|
-
UntilDestroy()
|
|
130
|
-
], AuditLogListComponent);
|
|
131
|
-
export { AuditLogListComponent };
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QvYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0lBUTVDLHFCQUFxQixTQUFyQixxQkFBcUI7SUFlaEMsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2YsU0FBdUI7UUFGdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFoQmhDLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBR2hCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0Isc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBRzNDLGNBQVMsR0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0QsWUFBTyxHQUFRLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7UUFDOUMscUJBQWdCLEdBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGFB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S04sWUFBWTs7O3VCQVdsQixLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSztnQ0FDTCxLQUFLO3FCQUNMLEtBQUs7bUJBTUwsU0FBUyxTQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O0FBYnpCLHFCQUFxQjtJQU5qQyxZQUFZLEVBQUU7R0FNRixxQkFBcUIsQ0F5SGpDO1NBekhZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICcuLi8uLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgRGF0YU1hbmFnZXIgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFNYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGl0LWxvZy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LWxvZy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXVkaXRMb2dMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIGF1ZGl0TG9nTGlzdDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgb2JqZWN0SWQ6IGFueTtcbiAgQElucHV0KCkgb2JqZWN0VHlwZTogYW55O1xuICBASW5wdXQoKSBzaG93RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSB1c2VySWQ6IGFueTtcblxuICBwYWdlRXZlbnQ6IFBhZ2VFdmVudCA9IHsgcGFnZTogMSwgcGVyUGFnZTogMjUsIGxhc3RQYWdlOiAxIH07XG4gIGZpbHRlcnM6IGFueSA9IHsgc29ydF9ieTogJ2NyZWF0ZWRfYXR8ZGVzYycgfTtcbiAgZGlzcGxheWVkQ29sdW1uczogYW55W10gPSBbJ2luZGV4JywgJ2lkJywgJ29iamVjdF90eXBlJywgJ29iamVjdF9pZCcsICdhY3Rpb24nLCAnY2hhbmdlcycsICdjcmVhdGVkX2F0JywgJ3VzZXIuZW1haWwnXTtcblxuICBAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pIHNvcnQ6IE1hdFNvcnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlcjogRGF0YU1hbmFnZXIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcblxuICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5nZVNvcnQodmFsdWUpO1xuICAgICAgICB9KVxuICAgIH1cblxuICB9XG5cbiAgZ2V0IGV4Y2VsRGF0YSgpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuYXVkaXRMb2dMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmF1ZGl0TG9nTGlzdC5tYXAoaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgJ1R5cGUnOiBpdGVtPy5vYmplY3RfdHlwZSxcbiAgICAgICAgICAnQWN0aW9uJzogaXRlbT8uYWN0aW9uLFxuICAgICAgICAgICdEYXRhJzogSlNPTi5zdHJpbmdpZnkoaXRlbT8uZGF0YSB8fCB7fSksXG4gICAgICAgICAgJ09iamVjdCc6IEpTT04uc3RyaW5naWZ5KGl0ZW0/Lm9iamVjdCB8fCB7fSksXG4gICAgICAgICAgJ1ByZS1PYmplY3QnOiBKU09OLnN0cmluZ2lmeShpdGVtPy5wcmVfb2JqZWN0IHx8IHt9KSxcbiAgICAgICAgICAnQ3JlYXRlZCBBdCc6IG5ldyBEYXRlKGl0ZW0/LmNyZWF0ZWRfYXQpLnRvRGF0ZVN0cmluZygpLFxuICAgICAgICAgICdDcmVhdGVkIEJ5JzogaXRlbT8udXNlcj8uZW1haWxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjaGFuZ2VTb3J0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQuZGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc29ydF9ieSA9IGAke2V2ZW50LmFjdGl2ZX18JHtldmVudC5kaXJlY3Rpb259YDtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgbG9nQ2xpY2tlZChsb2c6IGFueSkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N5c3RlbS9hdWRpdC1sb2dzL2xvZy12aWV3JywgbG9nLmlkXSk7XG4gIH1cblxuXG4gIGFzeW5jIGluaXRpYWxpemVEYXRhKCkge1xuICAgIGlmICh0aGlzLm9iamVjdFR5cGUpIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCBvYmplY3RfdHlwZTogdGhpcy5vYmplY3RUeXBlIH1cbiAgICB9XG4gICAgaWYgKHRoaXMub2JqZWN0SWQpIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCBvYmplY3RfaWQ6IHRoaXMub2JqZWN0SWQgfVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VySWQpIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCB1c2VyX2lkOiB0aGlzLnVzZXJJZCB9XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZGF0YU1hbmFnZXIuR0VUKGBhcGkvYXVkaXQtbG9nc2AsIHsgLi4udGhpcy5maWx0ZXJzLCAuLi50aGlzLnBhZ2VFdmVudCB9KTtcbiAgICB0aGlzLmF1ZGl0TG9nTGlzdCA9IHRoaXMuYXVkaXRMb2dMaXN0LmNvbmNhdChyZXN1bHQuZGF0YSk7XG4gICAgdGhpcy5wYWdlRXZlbnQucGFnZSA9IHJlc3VsdC5jdXJyZW50X3BhZ2U7XG4gICAgdGhpcy5wYWdlRXZlbnQubGFzdFBhZ2UgPSByZXN1bHQubGFzdF9wYWdlO1xuICB9XG5cbiAgZmlsdGVyQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zaG93RmlsdGVyKSB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSB7XG4gICAgICAgIC4uLnRoaXMuZmlsdGVycyxcbiAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgIG9iamVjdF90eXBlOiB0aGlzLm9iamVjdFR5cGUgfHwgZXZlbnQ/Lm9iamVjdF90eXBlIHx8ICcnLFxuICAgICAgICBvYmplY3RfaWQ6IHRoaXMub2JqZWN0SWQgfHwgJycsXG4gICAgICB9O1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBvblNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5wYWdlRXZlbnQubGFzdFBhZ2UgPiB0aGlzLnBhZ2VFdmVudC5wYWdlKSB7XG4gICAgICB0aGlzLnBhZ2VFdmVudC5wYWdlICs9IDE7XG4gICAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMuYXVkaXRMb2dMaXN0ID0gW107XG4gICAgdGhpcy5wYWdlRXZlbnQgPSB7IHBhZ2U6IDEsIHBlclBhZ2U6IDI1LCBsYXN0UGFnZTogMSB9O1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybWVkQ2hhbmdlcyhsb2c6IGFueSkge1xuICAgIGlmIChsb2c/LmRhdGE/LmNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSBPYmplY3Qua2V5cyhsb2c/LmRhdGE/LmNoYW5nZXMpIHx8IFtdO1xuICAgICAgbGV0IHZhbHVlID0gJzxkaXY+JztcbiAgICAgIGNoYW5nZXMuZm9yRWFjaCgoa2V5OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheUF0dHJpYnV0ZSA9IChrZXkgYXMgc3RyaW5nKS5zcGxpdCgnXycpLm1hcCh4ID0+IHguY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB4LnNsaWNlKDEpKS5qb2luKCcgJyk7XG4gICAgICAgIHZhbHVlID0gYCR7dmFsdWV9IDxkaXY+PGI+JHtkaXNwbGF5QXR0cmlidXRlfTo8L2I+IDxzcGFuIGlkPVwib2xkLXZhbHVlXCI+JHtsb2c/LnByZV9vYmplY3Rba2V5XSA/PyAnJ308L3NwYW4+PHNwYW4gaWQ9XCJuZXctdmFsdWVcIj4ke2xvZz8ub2JqZWN0W2tleV0gPz8gJyd9PC9zcGFuPjwvZGl2PmA7XG4gICAgICB9KTtcbiAgICAgIHZhbHVlID0gYCR7dmFsdWV9IDwvZGl2PmA7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIE5lZWRlZCBmb3IgYXV0b21hdGljIHVuc3Vic2NyaWJlIHdpdGggdW50aWxEZXN0cm95ZWRcbiAgfVxufVxuIl19
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { MatSort } from '@angular/material/sort';
|
|
5
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
+
import { DataManager } from '../../core/dataManager.service';
|
|
7
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
8
|
+
let AuditLogListComponent = class AuditLogListComponent {
|
|
9
|
+
constructor(dataManager, router, sanitizer) {
|
|
10
|
+
this.dataManager = dataManager;
|
|
11
|
+
this.router = router;
|
|
12
|
+
this.sanitizer = sanitizer;
|
|
13
|
+
this.auditLogList = [];
|
|
14
|
+
this.showFilter = true;
|
|
15
|
+
this.showExportButtons = true;
|
|
16
|
+
this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };
|
|
17
|
+
this.filters = { sort_by: 'created_at|desc' };
|
|
18
|
+
this.displayedColumns = ['index', 'id', 'object_type', 'object_id', 'action', 'changes', 'created_at', 'user.email'];
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.initializeData();
|
|
22
|
+
if (this.sort) {
|
|
23
|
+
this.sort.sortChange.pipe(untilDestroyed(this))
|
|
24
|
+
.subscribe((value) => {
|
|
25
|
+
this.changeSort(value);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
get excelData() {
|
|
30
|
+
if (this.auditLogList.length > 0) {
|
|
31
|
+
return this.auditLogList.map(item => {
|
|
32
|
+
var _a;
|
|
33
|
+
return {
|
|
34
|
+
'Type': item === null || item === void 0 ? void 0 : item.object_type,
|
|
35
|
+
'Action': item === null || item === void 0 ? void 0 : item.action,
|
|
36
|
+
'Data': JSON.stringify((item === null || item === void 0 ? void 0 : item.data) || {}),
|
|
37
|
+
'Object': JSON.stringify((item === null || item === void 0 ? void 0 : item.object) || {}),
|
|
38
|
+
'Pre-Object': JSON.stringify((item === null || item === void 0 ? void 0 : item.pre_object) || {}),
|
|
39
|
+
'Created At': new Date(item === null || item === void 0 ? void 0 : item.created_at).toDateString(),
|
|
40
|
+
'Created By': (_a = item === null || item === void 0 ? void 0 : item.user) === null || _a === void 0 ? void 0 : _a.email
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
changeSort(event) {
|
|
47
|
+
if (event.direction) {
|
|
48
|
+
this.filters.sort_by = `${event.active}|${event.direction}`;
|
|
49
|
+
this.reload();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
logClicked(log) {
|
|
53
|
+
this.router.navigate(['/system/audit-logs/log-view', log.id]);
|
|
54
|
+
}
|
|
55
|
+
initializeData() {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
if (this.objectType) {
|
|
58
|
+
this.filters = Object.assign(Object.assign({}, this.filters), { object_type: this.objectType });
|
|
59
|
+
}
|
|
60
|
+
if (this.objectId) {
|
|
61
|
+
this.filters = Object.assign(Object.assign({}, this.filters), { object_id: this.objectId });
|
|
62
|
+
}
|
|
63
|
+
if (this.userId) {
|
|
64
|
+
this.filters = Object.assign(Object.assign({}, this.filters), { user_id: this.userId });
|
|
65
|
+
}
|
|
66
|
+
const result = yield this.dataManager.GET(`api/audit-logs`, Object.assign(Object.assign({}, this.filters), this.pageEvent));
|
|
67
|
+
this.auditLogList = this.auditLogList.concat(result.data);
|
|
68
|
+
this.pageEvent.page = result.current_page;
|
|
69
|
+
this.pageEvent.lastPage = result.last_page;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
filterChange(event) {
|
|
73
|
+
if (this.showFilter) {
|
|
74
|
+
this.filters = Object.assign(Object.assign(Object.assign({}, this.filters), event), { object_type: this.objectType || (event === null || event === void 0 ? void 0 : event.object_type) || '', object_id: this.objectId || '' });
|
|
75
|
+
this.reload();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
onScroll() {
|
|
79
|
+
if (this.pageEvent.lastPage > this.pageEvent.page) {
|
|
80
|
+
this.pageEvent.page += 1;
|
|
81
|
+
this.initializeData();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
reload() {
|
|
85
|
+
this.auditLogList = [];
|
|
86
|
+
this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };
|
|
87
|
+
this.initializeData();
|
|
88
|
+
}
|
|
89
|
+
getTransformedChanges(log) {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
if ((_a = log === null || log === void 0 ? void 0 : log.data) === null || _a === void 0 ? void 0 : _a.changes) {
|
|
92
|
+
const changes = Object.keys((_b = log === null || log === void 0 ? void 0 : log.data) === null || _b === void 0 ? void 0 : _b.changes) || [];
|
|
93
|
+
let value = '<div>';
|
|
94
|
+
changes.forEach((key) => {
|
|
95
|
+
var _a, _b;
|
|
96
|
+
const displayAttribute = key.split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');
|
|
97
|
+
value = `${value} <div><b>${displayAttribute}:</b> <span id="old-value">${(_a = log === null || log === void 0 ? void 0 : log.pre_object[key]) !== null && _a !== void 0 ? _a : ''}</span><span id="new-value">${(_b = log === null || log === void 0 ? void 0 : log.object[key]) !== null && _b !== void 0 ? _b : ''}</span></div>`;
|
|
98
|
+
});
|
|
99
|
+
value = `${value} </div>`;
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
return '';
|
|
103
|
+
}
|
|
104
|
+
ngOnDestroy() {
|
|
105
|
+
// Needed for automatic unsubscribe with untilDestroyed
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
AuditLogListComponent.decorators = [
|
|
109
|
+
{ type: Component, args: [{
|
|
110
|
+
selector: 'app-audit-log-list',
|
|
111
|
+
template: "<div fxLayout=\"column\" fxLayoutAlign=\"start\" class=\"mat-typography\">\r\n\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"1.5rem\" class=\"p-3\">\r\n <h2 class=\"font-weight-bold\">\r\n Audit Logs\r\n </h2>\r\n\r\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\r\n <app-audit-log-list-filter *ngIf=\"showFilter\" (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\r\n [objectId]=\"objectId\"></app-audit-log-list-filter>\r\n <span fxFlex></span>\r\n\r\n <ng-container *ngIf=\"showExportButtons\">\r\n <div class=\"ml-4\">\r\n <app-export-excel-button elementId=\"audit-logs-table\" name=\"AuditLogs\" [data]=\"excelData\">\r\n </app-export-excel-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <section class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\r\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\r\n <table mat-table [dataSource]=\"auditLogList\" matSort class=\"w-100\" multiTemplateDataRows id=\"audit-logs-table\">\r\n\r\n <!-- Index Column -->\r\n <ng-container matColumnDef=\"index\">\r\n <th mat-header-cell *matHeaderCellDef> # </th>\r\n <td mat-cell *matCellDef=\"let auditLog; let i = dataIndex\"> {{ i+1 }} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"id\">\r\n <th mat-header-cell *matHeaderCellDef> Log # </th>\r\n <td mat-cell *matCellDef=\"let auditLog\">\r\n {{auditLog?.id}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"object_type\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model </th>\r\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"object_id\">\r\n <th mat-header-cell *matHeaderCellDef> Model # </th>\r\n <td mat-cell *matCellDef=\"let auditLog\">\r\n {{auditLog?.object_id}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\r\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"created_at\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\r\n <td mat-cell *matCellDef=\"let auditLog\">\r\n {{auditLog?.created_at | date:'medium'}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"user.email\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\r\n <td mat-cell *matCellDef=\"let auditLog\">\r\n {{auditLog?.user?.email}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"changes\">\r\n <th mat-header-cell *matHeaderCellDef> Changes</th>\r\n <td mat-cell *matCellDef=\"let auditLog\">\r\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\r\n\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Actions Column -->\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef> Actions </th>\r\n <td mat-cell *matCellDef=\"let auditLog\">\r\n </td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\r\n (click)=\"logClicked(row);$event.stopPropagation();\" class=\"hoverable row-hover\"></tr>\r\n </table>\r\n </section>\r\n\r\n\r\n</div>",
|
|
112
|
+
styles: ["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{background-color:#f08080;margin-right:5px}:host ::ng-deep #new-value{background-color:#98fb98}"]
|
|
113
|
+
},] }
|
|
114
|
+
];
|
|
115
|
+
AuditLogListComponent.ctorParameters = () => [
|
|
116
|
+
{ type: DataManager },
|
|
117
|
+
{ type: Router },
|
|
118
|
+
{ type: DomSanitizer }
|
|
119
|
+
];
|
|
120
|
+
AuditLogListComponent.propDecorators = {
|
|
121
|
+
objectId: [{ type: Input }],
|
|
122
|
+
objectType: [{ type: Input }],
|
|
123
|
+
showFilter: [{ type: Input }],
|
|
124
|
+
showExportButtons: [{ type: Input }],
|
|
125
|
+
userId: [{ type: Input }],
|
|
126
|
+
sort: [{ type: ViewChild, args: [MatSort, { static: true },] }]
|
|
127
|
+
};
|
|
128
|
+
AuditLogListComponent = __decorate([
|
|
129
|
+
UntilDestroy()
|
|
130
|
+
], AuditLogListComponent);
|
|
131
|
+
export { AuditLogListComponent };
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QvYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0lBUTVDLHFCQUFxQixTQUFyQixxQkFBcUI7SUFlaEMsWUFDVSxXQUF3QixFQUN4QixNQUFjLEVBQ2YsU0FBdUI7UUFGdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFoQmhDLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBR2hCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0Isc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBRzNDLGNBQVMsR0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0QsWUFBTyxHQUFRLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7UUFDOUMscUJBQWdCLEdBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGFB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S04sWUFBWTs7O3VCQVdsQixLQUFLO3lCQUNMLEtBQUs7eUJBQ0wsS0FBSztnQ0FDTCxLQUFLO3FCQUNMLEtBQUs7bUJBTUwsU0FBUyxTQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O0FBYnpCLHFCQUFxQjtJQU5qQyxZQUFZLEVBQUU7R0FNRixxQkFBcUIsQ0F5SGpDO1NBekhZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXRTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICcuLi8uLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRhTWFuYWdlciB9IGZyb20gJy4uLy4uL2NvcmUvZGF0YU1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQFVudGlsRGVzdHJveSgpXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGl0LWxvZy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2F1ZGl0LWxvZy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdExvZ0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIGF1ZGl0TG9nTGlzdDogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBvYmplY3RJZDogYW55O1xyXG4gIEBJbnB1dCgpIG9iamVjdFR5cGU6IGFueTtcclxuICBASW5wdXQoKSBzaG93RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93RXhwb3J0QnV0dG9uczogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdXNlcklkOiBhbnk7XHJcblxyXG4gIHBhZ2VFdmVudDogUGFnZUV2ZW50ID0geyBwYWdlOiAxLCBwZXJQYWdlOiAyNSwgbGFzdFBhZ2U6IDEgfTtcclxuICBmaWx0ZXJzOiBhbnkgPSB7IHNvcnRfYnk6ICdjcmVhdGVkX2F0fGRlc2MnIH07XHJcbiAgZGlzcGxheWVkQ29sdW1uczogYW55W10gPSBbJ2luZGV4JywgJ2lkJywgJ29iamVjdF90eXBlJywgJ29iamVjdF9pZCcsICdhY3Rpb24nLCAnY2hhbmdlcycsICdjcmVhdGVkX2F0JywgJ3VzZXIuZW1haWwnXTtcclxuXHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KSBzb3J0OiBNYXRTb3J0O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YU1hbmFnZXI6IERhdGFNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zb3J0KSB7XHJcbiAgICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXHJcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VTb3J0KHZhbHVlKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldCBleGNlbERhdGEoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMuYXVkaXRMb2dMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXVkaXRMb2dMaXN0Lm1hcChpdGVtID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgJ1R5cGUnOiBpdGVtPy5vYmplY3RfdHlwZSxcclxuICAgICAgICAgICdBY3Rpb24nOiBpdGVtPy5hY3Rpb24sXHJcbiAgICAgICAgICAnRGF0YSc6IEpTT04uc3RyaW5naWZ5KGl0ZW0/LmRhdGEgfHwge30pLFxyXG4gICAgICAgICAgJ09iamVjdCc6IEpTT04uc3RyaW5naWZ5KGl0ZW0/Lm9iamVjdCB8fCB7fSksXHJcbiAgICAgICAgICAnUHJlLU9iamVjdCc6IEpTT04uc3RyaW5naWZ5KGl0ZW0/LnByZV9vYmplY3QgfHwge30pLFxyXG4gICAgICAgICAgJ0NyZWF0ZWQgQXQnOiBuZXcgRGF0ZShpdGVtPy5jcmVhdGVkX2F0KS50b0RhdGVTdHJpbmcoKSxcclxuICAgICAgICAgICdDcmVhdGVkIEJ5JzogaXRlbT8udXNlcj8uZW1haWxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNvcnQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LmRpcmVjdGlvbikge1xyXG4gICAgICB0aGlzLmZpbHRlcnMuc29ydF9ieSA9IGAke2V2ZW50LmFjdGl2ZX18JHtldmVudC5kaXJlY3Rpb259YDtcclxuICAgICAgdGhpcy5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ0NsaWNrZWQobG9nOiBhbnkpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3N5c3RlbS9hdWRpdC1sb2dzL2xvZy12aWV3JywgbG9nLmlkXSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgaW5pdGlhbGl6ZURhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5vYmplY3RUeXBlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCBvYmplY3RfdHlwZTogdGhpcy5vYmplY3RUeXBlIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9iamVjdElkKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCBvYmplY3RfaWQ6IHRoaXMub2JqZWN0SWQgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXNlcklkKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzLCB1c2VyX2lkOiB0aGlzLnVzZXJJZCB9XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFNYW5hZ2VyLkdFVChgYXBpL2F1ZGl0LWxvZ3NgLCB7IC4uLnRoaXMuZmlsdGVycywgLi4udGhpcy5wYWdlRXZlbnQgfSk7XHJcbiAgICB0aGlzLmF1ZGl0TG9nTGlzdCA9IHRoaXMuYXVkaXRMb2dMaXN0LmNvbmNhdChyZXN1bHQuZGF0YSk7XHJcbiAgICB0aGlzLnBhZ2VFdmVudC5wYWdlID0gcmVzdWx0LmN1cnJlbnRfcGFnZTtcclxuICAgIHRoaXMucGFnZUV2ZW50Lmxhc3RQYWdlID0gcmVzdWx0Lmxhc3RfcGFnZTtcclxuICB9XHJcblxyXG4gIGZpbHRlckNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5zaG93RmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVycyA9IHtcclxuICAgICAgICAuLi50aGlzLmZpbHRlcnMsXHJcbiAgICAgICAgLi4uZXZlbnQsXHJcbiAgICAgICAgb2JqZWN0X3R5cGU6IHRoaXMub2JqZWN0VHlwZSB8fCBldmVudD8ub2JqZWN0X3R5cGUgfHwgJycsXHJcbiAgICAgICAgb2JqZWN0X2lkOiB0aGlzLm9iamVjdElkIHx8ICcnLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TY3JvbGwoKSB7XHJcbiAgICBpZiAodGhpcy5wYWdlRXZlbnQubGFzdFBhZ2UgPiB0aGlzLnBhZ2VFdmVudC5wYWdlKSB7XHJcbiAgICAgIHRoaXMucGFnZUV2ZW50LnBhZ2UgKz0gMTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVsb2FkKCkge1xyXG4gICAgdGhpcy5hdWRpdExvZ0xpc3QgPSBbXTtcclxuICAgIHRoaXMucGFnZUV2ZW50ID0geyBwYWdlOiAxLCBwZXJQYWdlOiAyNSwgbGFzdFBhZ2U6IDEgfTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcclxuICB9XHJcblxyXG4gIGdldFRyYW5zZm9ybWVkQ2hhbmdlcyhsb2c6IGFueSkge1xyXG4gICAgaWYgKGxvZz8uZGF0YT8uY2hhbmdlcykge1xyXG4gICAgICBjb25zdCBjaGFuZ2VzID0gT2JqZWN0LmtleXMobG9nPy5kYXRhPy5jaGFuZ2VzKSB8fCBbXTtcclxuICAgICAgbGV0IHZhbHVlID0gJzxkaXY+JztcclxuICAgICAgY2hhbmdlcy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlBdHRyaWJ1dGUgPSAoa2V5IGFzIHN0cmluZykuc3BsaXQoJ18nKS5tYXAoeCA9PiB4LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgeC5zbGljZSgxKSkuam9pbignICcpO1xyXG4gICAgICAgIHZhbHVlID0gYCR7dmFsdWV9IDxkaXY+PGI+JHtkaXNwbGF5QXR0cmlidXRlfTo8L2I+IDxzcGFuIGlkPVwib2xkLXZhbHVlXCI+JHtsb2c/LnByZV9vYmplY3Rba2V5XSA/PyAnJ308L3NwYW4+PHNwYW4gaWQ9XCJuZXctdmFsdWVcIj4ke2xvZz8ub2JqZWN0W2tleV0gPz8gJyd9PC9zcGFuPjwvZGl2PmA7XHJcbiAgICAgIH0pO1xyXG4gICAgICB2YWx1ZSA9IGAke3ZhbHVlfSA8L2Rpdj5gO1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIE5lZWRlZCBmb3IgYXV0b21hdGljIHVuc3Vic2NyaWJlIHdpdGggdW50aWxEZXN0cm95ZWRcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { AuditLogListRoutingModule } from './audit-log-list-routing.module';
|
|
4
|
-
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
5
|
-
import { AuditLogListComponent } from './audit-log-list.component';
|
|
6
|
-
import { AuditLogListFilterModule } from '../audit-log-list-filter/audit-log-list-filter.module';
|
|
7
|
-
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
8
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
9
|
-
import { ExportExcelModule } from '../../export-excel/export-excel.module';
|
|
10
|
-
import { MaterialModule } from '../../material.module';
|
|
11
|
-
export class AuditLogListModule {
|
|
12
|
-
}
|
|
13
|
-
AuditLogListModule.decorators = [
|
|
14
|
-
{ type: NgModule, args: [{
|
|
15
|
-
declarations: [AuditLogListComponent],
|
|
16
|
-
imports: [
|
|
17
|
-
CommonModule,
|
|
18
|
-
AuditLogListRoutingModule,
|
|
19
|
-
ExportExcelModule,
|
|
20
|
-
FlexLayoutModule,
|
|
21
|
-
ReactiveFormsModule,
|
|
22
|
-
MaterialModule,
|
|
23
|
-
InfiniteScrollModule,
|
|
24
|
-
AuditLogListFilterModule
|
|
25
|
-
],
|
|
26
|
-
exports: [AuditLogListComponent]
|
|
27
|
-
},] }
|
|
28
|
-
];
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { AuditLogListRoutingModule } from './audit-log-list-routing.module';
|
|
4
|
+
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
5
|
+
import { AuditLogListComponent } from './audit-log-list.component';
|
|
6
|
+
import { AuditLogListFilterModule } from '../audit-log-list-filter/audit-log-list-filter.module';
|
|
7
|
+
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
8
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
9
|
+
import { ExportExcelModule } from '../../export-excel/export-excel.module';
|
|
10
|
+
import { MaterialModule } from '../../material.module';
|
|
11
|
+
export class AuditLogListModule {
|
|
12
|
+
}
|
|
13
|
+
AuditLogListModule.decorators = [
|
|
14
|
+
{ type: NgModule, args: [{
|
|
15
|
+
declarations: [AuditLogListComponent],
|
|
16
|
+
imports: [
|
|
17
|
+
CommonModule,
|
|
18
|
+
AuditLogListRoutingModule,
|
|
19
|
+
ExportExcelModule,
|
|
20
|
+
FlexLayoutModule,
|
|
21
|
+
ReactiveFormsModule,
|
|
22
|
+
MaterialModule,
|
|
23
|
+
InfiniteScrollModule,
|
|
24
|
+
AuditLogListFilterModule
|
|
25
|
+
],
|
|
26
|
+
exports: [AuditLogListComponent]
|
|
27
|
+
},] }
|
|
28
|
+
];
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QvYXVkaXQtbG9nLWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWlCdkQsTUFBTSxPQUFPLGtCQUFrQjs7O1lBZDlCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1oseUJBQXlCO29CQUN6QixpQkFBaUI7b0JBQ2pCLGdCQUFnQjtvQkFDaEIsbUJBQW1CO29CQUNuQixjQUFjO29CQUNkLG9CQUFvQjtvQkFDcEIsd0JBQXdCO2lCQUN6QjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzthQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgeyBBdWRpdExvZ0xpc3RSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9hdWRpdC1sb2ctbGlzdC1yb3V0aW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsTW9kdWxlIH0gZnJvbSAnbmd4LWluZmluaXRlLXNjcm9sbCc7XHJcbmltcG9ydCB7IEF1ZGl0TG9nTGlzdENvbXBvbmVudCB9IGZyb20gJy4vYXVkaXQtbG9nLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXVkaXRMb2dMaXN0RmlsdGVyTW9kdWxlIH0gZnJvbSAnLi4vYXVkaXQtbG9nLWxpc3QtZmlsdGVyL2F1ZGl0LWxvZy1saXN0LWZpbHRlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFeHBvcnRFeGNlbE1vZHVsZSB9IGZyb20gJy4uLy4uL2V4cG9ydC1leGNlbC9leHBvcnQtZXhjZWwubW9kdWxlJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi8uLi9tYXRlcmlhbC5tb2R1bGUnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbQXVkaXRMb2dMaXN0Q29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBBdWRpdExvZ0xpc3RSb3V0aW5nTW9kdWxlLFxyXG4gICAgRXhwb3J0RXhjZWxNb2R1bGUsXHJcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdGVyaWFsTW9kdWxlLFxyXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXHJcbiAgICBBdWRpdExvZ0xpc3RGaWx0ZXJNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtBdWRpdExvZ0xpc3RDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdExvZ0xpc3RNb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { RouterModule } from '@angular/router';
|
|
3
|
-
const routes = [];
|
|
4
|
-
export class AuditLogListFilterRoutingModule {
|
|
5
|
-
}
|
|
6
|
-
AuditLogListFilterRoutingModule.decorators = [
|
|
7
|
-
{ type: NgModule, args: [{
|
|
8
|
-
imports: [RouterModule.forChild(routes)],
|
|
9
|
-
exports: [RouterModule]
|
|
10
|
-
},] }
|
|
11
|
-
];
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
const routes = [];
|
|
4
|
+
export class AuditLogListFilterRoutingModule {
|
|
5
|
+
}
|
|
6
|
+
AuditLogListFilterRoutingModule.decorators = [
|
|
7
|
+
{ type: NgModule, args: [{
|
|
8
|
+
imports: [RouterModule.forChild(routes)],
|
|
9
|
+
exports: [RouterModule]
|
|
10
|
+
},] }
|
|
11
|
+
];
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWxpc3QtZmlsdGVyLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9hdWRpdC1sb2cvYXVkaXQtbG9nLWxpc3QtZmlsdGVyL2F1ZGl0LWxvZy1saXN0LWZpbHRlci1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUM7QUFNMUIsTUFBTSxPQUFPLCtCQUErQjs7O1lBSjNDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtdO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxyXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdWRpdExvZ0xpc3RGaWx0ZXJSb3V0aW5nTW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
3
|
-
import { FormBuilder } from '@angular/forms';
|
|
4
|
-
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
-
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
-
import { FormValidatorService } from '../../core/form-validator.service';
|
|
7
|
-
import { DateValidator } from '../../date-validator';
|
|
8
|
-
let AuditLogListFilterComponent = class AuditLogListFilterComponent {
|
|
9
|
-
constructor(fb, formValidatorService) {
|
|
10
|
-
this.fb = fb;
|
|
11
|
-
this.formValidatorService = formValidatorService;
|
|
12
|
-
this.valueChange = new EventEmitter();
|
|
13
|
-
this.createForm();
|
|
14
|
-
}
|
|
15
|
-
get showObjectFilter() {
|
|
16
|
-
return !(this.objectId || this.objectType);
|
|
17
|
-
}
|
|
18
|
-
createForm() {
|
|
19
|
-
//TODO: Finialize and add more validations.
|
|
20
|
-
this.auditLogFilterForm = this.fb.group({
|
|
21
|
-
object_type: [''],
|
|
22
|
-
action: [''],
|
|
23
|
-
data: [''],
|
|
24
|
-
date_to: ['', DateValidator()],
|
|
25
|
-
date_from: ['', DateValidator()]
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
ngOnInit() {
|
|
29
|
-
this.auditLogFilterForm.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe((value) => {
|
|
30
|
-
value.date_from = value.date_from ? value.date_from.toISOString() : '';
|
|
31
|
-
value.date_to = value.date_to ? value.date_to.toISOString() : '';
|
|
32
|
-
this.valueChange.emit(value);
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
resetFieldValue(field) {
|
|
36
|
-
this.auditLogFilterForm.get(field).setValue('');
|
|
37
|
-
}
|
|
38
|
-
getFieldValue(field) {
|
|
39
|
-
return this.auditLogFilterForm.get(field).value;
|
|
40
|
-
}
|
|
41
|
-
isFieldValid(field) {
|
|
42
|
-
return this.formValidatorService.isFieldValid(field, this.auditLogFilterForm, true);
|
|
43
|
-
}
|
|
44
|
-
ngOnDestroy() {
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
AuditLogListFilterComponent.decorators = [
|
|
48
|
-
{ type: Component, args: [{
|
|
49
|
-
selector: 'app-audit-log-list-filter',
|
|
50
|
-
template: "<form [formGroup]=\"auditLogFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\n <mat-form-field *ngIf=\"showObjectFilter\">\n <mat-label>Model</mat-label>\n <app-searchable-selector formControlName=\"object_type\" apiUrl=\"api/audit-log-types\" titleField=\"object_type\"\n valueField=\"object_type\" [sort]=\"false\" [enableSearch]=\"false\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('object_type')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('object_type')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Action</mat-label>\n <mat-select formControlName=\"action\">\n <mat-option value=\"created\">Created</mat-option>\n <mat-option value=\"updated\">Updated</mat-option>\n <mat-option value=\"deleted\">Deleted</mat-option>\n </mat-select>\n <button mat-button *ngIf=\"getFieldValue('action')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('action')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"date_from\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date (MM/DD/YYYY)\" />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('date_from')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('date_from')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('date_from')\">Invalid Date</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"date_to\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date (MM/DD/YYYY)\" />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('date_to')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('date_to')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('date_to')\">Invalid Date</mat-error>\n </mat-form-field>\n</form>",
|
|
51
|
-
styles: [""]
|
|
52
|
-
},] }
|
|
53
|
-
];
|
|
54
|
-
AuditLogListFilterComponent.ctorParameters = () => [
|
|
55
|
-
{ type: FormBuilder },
|
|
56
|
-
{ type: FormValidatorService }
|
|
57
|
-
];
|
|
58
|
-
AuditLogListFilterComponent.propDecorators = {
|
|
59
|
-
objectId: [{ type: Input }],
|
|
60
|
-
objectType: [{ type: Input }],
|
|
61
|
-
valueChange: [{ type: Output }]
|
|
62
|
-
};
|
|
63
|
-
AuditLogListFilterComponent = __decorate([
|
|
64
|
-
UntilDestroy()
|
|
65
|
-
], AuditLogListFilterComponent);
|
|
66
|
-
export { AuditLogListFilterComponent };
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
3
|
+
import { FormBuilder } from '@angular/forms';
|
|
4
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
+
import { FormValidatorService } from '../../core/form-validator.service';
|
|
7
|
+
import { DateValidator } from '../../date-validator';
|
|
8
|
+
let AuditLogListFilterComponent = class AuditLogListFilterComponent {
|
|
9
|
+
constructor(fb, formValidatorService) {
|
|
10
|
+
this.fb = fb;
|
|
11
|
+
this.formValidatorService = formValidatorService;
|
|
12
|
+
this.valueChange = new EventEmitter();
|
|
13
|
+
this.createForm();
|
|
14
|
+
}
|
|
15
|
+
get showObjectFilter() {
|
|
16
|
+
return !(this.objectId || this.objectType);
|
|
17
|
+
}
|
|
18
|
+
createForm() {
|
|
19
|
+
//TODO: Finialize and add more validations.
|
|
20
|
+
this.auditLogFilterForm = this.fb.group({
|
|
21
|
+
object_type: [''],
|
|
22
|
+
action: [''],
|
|
23
|
+
data: [''],
|
|
24
|
+
date_to: ['', DateValidator()],
|
|
25
|
+
date_from: ['', DateValidator()]
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
this.auditLogFilterForm.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe((value) => {
|
|
30
|
+
value.date_from = value.date_from ? value.date_from.toISOString() : '';
|
|
31
|
+
value.date_to = value.date_to ? value.date_to.toISOString() : '';
|
|
32
|
+
this.valueChange.emit(value);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
resetFieldValue(field) {
|
|
36
|
+
this.auditLogFilterForm.get(field).setValue('');
|
|
37
|
+
}
|
|
38
|
+
getFieldValue(field) {
|
|
39
|
+
return this.auditLogFilterForm.get(field).value;
|
|
40
|
+
}
|
|
41
|
+
isFieldValid(field) {
|
|
42
|
+
return this.formValidatorService.isFieldValid(field, this.auditLogFilterForm, true);
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
AuditLogListFilterComponent.decorators = [
|
|
48
|
+
{ type: Component, args: [{
|
|
49
|
+
selector: 'app-audit-log-list-filter',
|
|
50
|
+
template: "<form [formGroup]=\"auditLogFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\r\n <mat-form-field *ngIf=\"showObjectFilter\">\r\n <mat-label>Model</mat-label>\r\n <app-searchable-selector formControlName=\"object_type\" apiUrl=\"api/audit-log-types\" titleField=\"object_type\"\r\n valueField=\"object_type\" [sort]=\"false\" [enableSearch]=\"false\">\r\n </app-searchable-selector>\r\n <button mat-button *ngIf=\"getFieldValue('object_type')\" matSuffix mat-icon-button\r\n (click)=\"resetFieldValue('object_type')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <mat-label>Action</mat-label>\r\n <mat-select formControlName=\"action\">\r\n <mat-option value=\"created\">Created</mat-option>\r\n <mat-option value=\"updated\">Updated</mat-option>\r\n <mat-option value=\"deleted\">Deleted</mat-option>\r\n </mat-select>\r\n <button mat-button *ngIf=\"getFieldValue('action')\" matSuffix mat-icon-button\r\n (click)=\"resetFieldValue('action')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"date_from\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\r\n placeholder=\"From Date (MM/DD/YYYY)\" />\r\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #fromPicker></mat-datepicker>\r\n <button mat-button *ngIf=\"getFieldValue('date_from')\" matSuffix mat-icon-button\r\n (click)=\"resetFieldValue('date_from')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-error *ngIf=\"isFieldValid('date_from')\">Invalid Date</mat-error>\r\n </mat-form-field>\r\n\r\n <mat-form-field>\r\n <input matInput formControlName=\"date_to\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\r\n placeholder=\"To Date (MM/DD/YYYY)\" />\r\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\r\n <mat-datepicker #toPicker></mat-datepicker>\r\n <button mat-button *ngIf=\"getFieldValue('date_to')\" matSuffix mat-icon-button\r\n (click)=\"resetFieldValue('date_to')\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-error *ngIf=\"isFieldValid('date_to')\">Invalid Date</mat-error>\r\n </mat-form-field>\r\n</form>",
|
|
51
|
+
styles: [""]
|
|
52
|
+
},] }
|
|
53
|
+
];
|
|
54
|
+
AuditLogListFilterComponent.ctorParameters = () => [
|
|
55
|
+
{ type: FormBuilder },
|
|
56
|
+
{ type: FormValidatorService }
|
|
57
|
+
];
|
|
58
|
+
AuditLogListFilterComponent.propDecorators = {
|
|
59
|
+
objectId: [{ type: Input }],
|
|
60
|
+
objectType: [{ type: Input }],
|
|
61
|
+
valueChange: [{ type: Output }]
|
|
62
|
+
};
|
|
63
|
+
AuditLogListFilterComponent = __decorate([
|
|
64
|
+
UntilDestroy()
|
|
65
|
+
], AuditLogListFilterComponent);
|
|
66
|
+
export { AuditLogListFilterComponent };
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWxpc3QtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvYXVkaXQtbG9nL2F1ZGl0LWxvZy1saXN0LWZpbHRlci9hdWRpdC1sb2ctbGlzdC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7SUFReEMsMkJBQTJCLFNBQTNCLDJCQUEyQjtJQVN0QyxZQUFvQixFQUFlLEVBQVUsb0JBQTBDO1FBQW5FLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBRjdFLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd6QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxVQUFVO1FBRWhCLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdEMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNaLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUM5QixTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFFTixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDdkMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixvQkFBb0IsRUFBRSxFQUN0QixjQUFjLENBQUMsSUFBSSxDQUFDLENBQ3JCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDekIsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxLQUFLLENBQUMsU0FBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pGLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsS0FBSyxDQUFDLE9BQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHRCxlQUFlLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUdELFdBQVc7SUFFWCxDQUFDO0NBRUYsQ0FBQTs7WUFqRUEsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLG1qRkFBcUQ7O2FBRXREOzs7WUFYbUIsV0FBVztZQUd0QixvQkFBb0I7Ozt1QkFhMUIsS0FBSzt5QkFDTCxLQUFLOzBCQUVMLE1BQU07O0FBUEksMkJBQTJCO0lBTnZDLFlBQVksRUFBRTtHQU1GLDJCQUEyQixDQTREdkM7U0E1RFksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcclxuaW1wb3J0IHsgRm9ybVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0tdmFsaWRhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRlVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vZGF0ZS12YWxpZGF0b3InO1xyXG5cclxuQFVudGlsRGVzdHJveSgpXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWF1ZGl0LWxvZy1saXN0LWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LWxvZy1saXN0LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXVkaXQtbG9nLWxpc3QtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGl0TG9nTGlzdEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGF1ZGl0TG9nRmlsdGVyRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBASW5wdXQoKSBvYmplY3RJZDogYW55O1xyXG4gIEBJbnB1dCgpIG9iamVjdFR5cGU6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBmb3JtVmFsaWRhdG9yU2VydmljZTogRm9ybVZhbGlkYXRvclNlcnZpY2UpIHtcclxuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dPYmplY3RGaWx0ZXIoKSB7XHJcbiAgICByZXR1cm4gISh0aGlzLm9iamVjdElkIHx8IHRoaXMub2JqZWN0VHlwZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XHJcblxyXG4gICAgLy9UT0RPOiBGaW5pYWxpemUgYW5kIGFkZCBtb3JlIHZhbGlkYXRpb25zLlxyXG4gICAgdGhpcy5hdWRpdExvZ0ZpbHRlckZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgb2JqZWN0X3R5cGU6IFsnJ10sXHJcbiAgICAgIGFjdGlvbjogWycnXSxcclxuICAgICAgZGF0YTogWycnXSxcclxuICAgICAgZGF0ZV90bzogWycnLCBEYXRlVmFsaWRhdG9yKCldLFxyXG4gICAgICBkYXRlX2Zyb206IFsnJywgRGF0ZVZhbGlkYXRvcigpXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmF1ZGl0TG9nRmlsdGVyRm9ybS52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXHJcbiAgICApLnN1YnNjcmliZSgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICB2YWx1ZS5kYXRlX2Zyb20gPSB2YWx1ZS5kYXRlX2Zyb20gPyAodmFsdWUuZGF0ZV9mcm9tIGFzIERhdGUpLnRvSVNPU3RyaW5nKCkgOiAnJztcclxuICAgICAgdmFsdWUuZGF0ZV90byA9IHZhbHVlLmRhdGVfdG8gPyAodmFsdWUuZGF0ZV90byBhcyBEYXRlKS50b0lTT1N0cmluZygpIDogJyc7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RmllbGRWYWx1ZShmaWVsZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmF1ZGl0TG9nRmlsdGVyRm9ybS5nZXQoZmllbGQpLnNldFZhbHVlKCcnKTtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkVmFsdWUoZmllbGQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYXVkaXRMb2dGaWx0ZXJGb3JtLmdldChmaWVsZCkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuaXNGaWVsZFZhbGlkKGZpZWxkLCB0aGlzLmF1ZGl0TG9nRmlsdGVyRm9ybSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcblxyXG4gIH1cclxuXHJcbn1cclxuIl19
|