{"version":3,"sources":["webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app-init.service.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/auth.config.ts","webpack:///./src/app/core/core.module.ts","webpack:///./src/app/core/interceptors/http.error-handler.interceptor.ts","webpack:///./src/app/core/interceptors/http.token.interceptor.ts","webpack:///./src/app/core/interceptors/index.ts","webpack:///./src/app/core/services/api.service.ts","webpack:///./src/app/core/services/cookie-storage.service.ts","webpack:///./src/app/core/services/index.ts","webpack:///./src/app/pages/manage/historical-wells/historical-wells.service.ts","webpack:///./src/app/pages/pad/pad-list-table/pad-list-table.component.html","webpack:///./src/app/pages/pad/pad-list-table/pad-list-table.component.scss","webpack:///./src/app/pages/pad/pad-list-table/pad-list-table.component.ts","webpack:///./src/app/pages/pad/pad-realtime-data.service.ts","webpack:///./src/app/pages/pad/pad-realtime.resolver.ts","webpack:///./src/app/pages/treatments/realtime/realtime-treatment/realtime-treatment.service.ts","webpack:///./src/app/pages/wells/well-list-table/well-list-table.component.html","webpack:///./src/app/pages/wells/well-list-table/well-list-table.component.scss","webpack:///./src/app/pages/wells/well-list-table/well-list-table.component.ts","webpack:///./src/app/pages/wells/wells-compare-data.service.ts","webpack:///./src/app/pages/wells/wells-compare-log-data.service.ts","webpack:///./src/app/pages/wells/wells-compare.resolver.ts","webpack:///./src/app/shared/components/channel-setting-yaxis/channel-setting-yaxis.component.html","webpack:///./src/app/shared/components/channel-setting-yaxis/channel-setting-yaxis.component.scss","webpack:///./src/app/shared/components/channel-setting-yaxis/channel-setting-yaxis.component.ts","webpack:///./src/app/shared/components/charts/index.ts","webpack:///./src/app/shared/components/charts/multi-flow-data-chart/multi-flow-data-chart.component.html","webpack:///./src/app/shared/components/charts/multi-flow-data-chart/multi-flow-data-chart.component.scss","webpack:///./src/app/shared/components/charts/multi-flow-data-chart/multi-flow-data-chart.component.ts","webpack:///./src/app/shared/components/charts/multi-well-chart/multi-well-chart.component.html","webpack:///./src/app/shared/components/charts/multi-well-chart/multi-well-chart.component.scss","webpack:///./src/app/shared/components/charts/multi-well-chart/multi-well-chart.component.ts","webpack:///./src/app/shared/components/charts/scatter-plot-parameter-chart/scatter-plot-parameter-chart.component.html","webpack:///./src/app/shared/components/charts/scatter-plot-parameter-chart/scatter-plot-parameter-chart.component.scss","webpack:///./src/app/shared/components/charts/scatter-plot-parameter-chart/scatter-plot-parameter-chart.component.ts","webpack:///./src/app/shared/components/charts/single-well-multi-treatment-chart/single-well-multi-treatment-chart.component.html","webpack:///./src/app/shared/components/charts/single-well-multi-treatment-chart/single-well-multi-treatment-chart.component.scss","webpack:///./src/app/shared/components/charts/single-well-multi-treatment-chart/single-well-multi-treatment-chart.component.ts","webpack:///./src/app/shared/components/company-selector/company-selector.component.html","webpack:///./src/app/shared/components/company-selector/company-selector.component.scss","webpack:///./src/app/shared/components/company-selector/company-selector.component.ts","webpack:///./src/app/shared/components/compare-wells-time-control/compare-wells-time-control.component.html","webpack:///./src/app/shared/components/compare-wells-time-control/compare-wells-time-control.component.scss","webpack:///./src/app/shared/components/compare-wells-time-control/compare-wells-time-control.component.ts","webpack:///./src/app/shared/components/compare-wells-time-control/compare-wells-time-control.service.ts","webpack:///./src/app/shared/components/custom-smart-table/custom-channels-select.component.ts","webpack:///./src/app/shared/components/custom-smart-table/custom-color.component.ts","webpack:///./src/app/shared/components/custom-smart-table/custom-date.component.ts","webpack:///./src/app/shared/components/custom-smart-table/custom-number-decimal-1.component.ts","webpack:///./src/app/shared/components/custom-smart-table/custom-number-decimal-3.component.ts","webpack:///./src/app/shared/components/custom-smart-table/custom-number.component.ts","webpack:///./src/app/shared/components/custom-smart-table/custom-related-column.component.ts","webpack:///./src/app/shared/components/custom-smart-table/custome-switch-column/custome-switch-column.component.ts","webpack:///./src/app/shared/components/custom-smart-table/edit-custom-channels-select.component.html","webpack:///./src/app/shared/components/custom-smart-table/edit-custom-channels-select.component.ts","webpack:///./src/app/shared/components/custom-smart-table/edit-custom-color.component.ts","webpack:///./src/app/shared/components/custom-smart-table/edit-custom-input-number.ts","webpack:///./src/app/shared/components/diagnostic-points-select/diagnostic-points-select.component.html","webpack:///./src/app/shared/components/diagnostic-points-select/diagnostic-points-select.component.scss","webpack:///./src/app/shared/components/diagnostic-points-select/diagnostic-points-select.component.ts","webpack:///./src/app/shared/components/errorMessage/error-message.component.ts","webpack:///./src/app/shared/components/export-chart-dropdown/export-chart-dropdown.component.html","webpack:///./src/app/shared/components/export-chart-dropdown/export-chart-dropdown.component.scss","webpack:///./src/app/shared/components/export-chart-dropdown/export-chart-dropdown.component.ts","webpack:///./src/app/shared/components/header/header.component.html","webpack:///./src/app/shared/components/header/header.component.scss","webpack:///./src/app/shared/components/header/header.component.ts","webpack:///./src/app/shared/components/index.ts","webpack:///./src/app/shared/components/input-tags/input-tags.component.html","webpack:///./src/app/shared/components/input-tags/input-tags.component.scss","webpack:///./src/app/shared/components/input-tags/input-tags.component.ts","webpack:///./src/app/shared/components/modals/bourdet-derivative/bourdet-derivative.component.html","webpack:///./src/app/shared/components/modals/bourdet-derivative/bourdet-derivative.component.scss","webpack:///./src/app/shared/components/modals/bourdet-derivative/bourdet-derivative.component.ts","webpack:///./src/app/shared/components/modals/channel-selection/channel-selection.component.html","webpack:///./src/app/shared/components/modals/channel-selection/channel-selection.component.scss","webpack:///./src/app/shared/components/modals/channel-selection/channel-selection.component.ts","webpack:///./src/app/shared/components/modals/confirm-template-modal/confirm-template-modal.component.html","webpack:///./src/app/shared/components/modals/confirm-template-modal/confirm-template-modal.component.scss","webpack:///./src/app/shared/components/modals/confirm-template-modal/confirm-template-modal.component.ts","webpack:///./src/app/shared/components/modals/confirm/modal-confirm.component.html","webpack:///./src/app/shared/components/modals/confirm/modal-confirm.component.scss","webpack:///./src/app/shared/components/modals/confirm/modal-confirm.component.ts","webpack:///./src/app/shared/components/modals/fdi-parameter-select/fdi-parameter-select.component.html","webpack:///./src/app/shared/components/modals/fdi-parameter-select/fdi-parameter-select.component.scss","webpack:///./src/app/shared/components/modals/fdi-parameter-select/fdi-parameter-select.component.ts","webpack:///./src/app/shared/components/modals/fdi-well-selection-modal/fdi-well-selection-modal.component.html","webpack:///./src/app/shared/components/modals/fdi-well-selection-modal/fdi-well-selection-modal.component.scss","webpack:///./src/app/shared/components/modals/fdi-well-selection-modal/fdi-well-selection-modal.component.ts","webpack:///./src/app/shared/components/modals/offset-well-compare/offset-well-compare.component.html","webpack:///./src/app/shared/components/modals/offset-well-compare/offset-well-compare.component.scss","webpack:///./src/app/shared/components/modals/offset-well-compare/offset-well-compare.component.ts","webpack:///./src/app/shared/components/modals/pivot-point/pivot-point.component.html","webpack:///./src/app/shared/components/modals/pivot-point/pivot-point.component.scss","webpack:///./src/app/shared/components/modals/pivot-point/pivot-point.component.ts","webpack:///./src/app/shared/components/modals/scatter-plot-parameter-settings/scatter-plot-parameter-settings.component.html","webpack:///./src/app/shared/components/modals/scatter-plot-parameter-settings/scatter-plot-parameter-settings.component.scss","webpack:///./src/app/shared/components/modals/scatter-plot-parameter-settings/scatter-plot-parameter-settings.component.ts","webpack:///./src/app/shared/components/modals/time-settings/time-settings.component.html","webpack:///./src/app/shared/components/modals/time-settings/time-settings.component.scss","webpack:///./src/app/shared/components/modals/time-settings/time-settings.component.ts","webpack:///./src/app/shared/components/modals/treatment-log-chart-settings/treatment-log-chart-settings.component.html","webpack:///./src/app/shared/components/modals/treatment-log-chart-settings/treatment-log-chart-settings.component.scss","webpack:///./src/app/shared/components/modals/treatment-log-chart-settings/treatment-log-chart-settings.component.ts","webpack:///./src/app/shared/components/modals/wells-selection-modal/wells-selection-modal.component.html","webpack:///./src/app/shared/components/modals/wells-selection-modal/wells-selection-modal.component.scss","webpack:///./src/app/shared/components/modals/wells-selection-modal/wells-selection-modal.component.ts","webpack:///./src/app/shared/components/multiple-input/multiple-input.component.scss","webpack:///./src/app/shared/components/multiple-input/multiple-input.component.ts","webpack:///./src/app/shared/components/pivot-point-select/pivot-point-select.component.html","webpack:///./src/app/shared/components/pivot-point-select/pivot-point-select.component.scss","webpack:///./src/app/shared/components/pivot-point-select/pivot-point-select.component.ts","webpack:///./src/app/shared/components/plot-template-dropdown/plot-template-dropdown.component.html","webpack:///./src/app/shared/components/plot-template-dropdown/plot-template-dropdown.component.scss","webpack:///./src/app/shared/components/plot-template-dropdown/plot-template-dropdown.component.ts","webpack:///./src/app/shared/components/rename-channel/rename-channel.component.html","webpack:///./src/app/shared/components/rename-channel/rename-channel.component.scss","webpack:///./src/app/shared/components/rename-channel/rename-channel.component.ts","webpack:///./src/app/shared/components/search-pad-list/search-pad-list.component.html","webpack:///./src/app/shared/components/search-pad-list/search-pad-list.component.scss","webpack:///./src/app/shared/components/search-pad-list/search-pad-list.component.ts","webpack:///./src/app/shared/components/search-pad-list/shared/models/search-pad-list-base.ts","webpack:///./src/app/shared/components/search-pad-list/shared/models/search-pad-list-dropdown.ts","webpack:///./src/app/shared/components/search-pad-list/shared/models/search-pad-list-textbox.ts","webpack:///./src/app/shared/components/search-pad-list/shared/services/search-pad-list-control.service.ts","webpack:///./src/app/shared/components/search-pad-list/shared/services/search-pad-list.service.ts","webpack:///./src/app/shared/components/search-well-api/search-well-api.component.html","webpack:///./src/app/shared/components/search-well-api/search-well-api.component.scss","webpack:///./src/app/shared/components/search-well-api/search-well-api.component.ts","webpack:///./src/app/shared/components/search-well-list/search-well-list-base.ts","webpack:///./src/app/shared/components/search-well-list/search-well-list-control.service.ts","webpack:///./src/app/shared/components/search-well-list/search-well-list-dropdown.ts","webpack:///./src/app/shared/components/search-well-list/search-well-list-textbox.ts","webpack:///./src/app/shared/components/search-well-list/search-well-list.component.html","webpack:///./src/app/shared/components/search-well-list/search-well-list.component.scss","webpack:///./src/app/shared/components/search-well-list/search-well-list.component.ts","webpack:///./src/app/shared/components/search-well-list/search-well-list.service.ts","webpack:///./src/app/shared/components/select-channels/select-channels.component.html","webpack:///./src/app/shared/components/select-channels/select-channels.component.scss","webpack:///./src/app/shared/components/select-channels/select-channels.component.ts","webpack:///./src/app/shared/components/select-design-actual/select-design-actual.component.html","webpack:///./src/app/shared/components/select-design-actual/select-design-actual.component.scss","webpack:///./src/app/shared/components/select-design-actual/select-design-actual.component.ts","webpack:///./src/app/shared/components/select-items/select-item.ts","webpack:///./src/app/shared/components/select-items/select-items.component.html","webpack:///./src/app/shared/components/select-items/select-items.component.scss","webpack:///./src/app/shared/components/select-items/select-items.component.ts","webpack:///./src/app/shared/components/select-multi-treatments/select-multi-treatments.component.html","webpack:///./src/app/shared/components/select-multi-treatments/select-multi-treatments.component.scss","webpack:///./src/app/shared/components/select-multi-treatments/select-multi-treatments.component.ts","webpack:///./src/app/shared/components/select-parameters/select-parameters.component.html","webpack:///./src/app/shared/components/select-parameters/select-parameters.component.scss","webpack:///./src/app/shared/components/select-parameters/select-parameters.component.ts","webpack:///./src/app/shared/components/select/select-item.ts","webpack:///./src/app/shared/components/select/select.component.html","webpack:///./src/app/shared/components/select/select.component.scss","webpack:///./src/app/shared/components/select/select.component.ts","webpack:///./src/app/shared/components/table-wells-selection/table-wells-selection.component.html","webpack:///./src/app/shared/components/table-wells-selection/table-wells-selection.component.scss","webpack:///./src/app/shared/components/table-wells-selection/table-wells-selection.component.ts","webpack:///./src/app/shared/components/treatment-log-template-dropdown/treatment-log-template-dropdown.component.html","webpack:///./src/app/shared/components/treatment-log-template-dropdown/treatment-log-template-dropdown.component.scss","webpack:///./src/app/shared/components/treatment-log-template-dropdown/treatment-log-template-dropdown.component.ts","webpack:///./src/app/shared/components/treatment-plot-fdi-dropdown/treatment-plot-fdi-dropdown.component.html","webpack:///./src/app/shared/components/treatment-plot-fdi-dropdown/treatment-plot-fdi-dropdown.component.scss","webpack:///./src/app/shared/components/treatment-plot-fdi-dropdown/treatment-plot-fdi-dropdown.component.ts","webpack:///./src/app/shared/components/treatment-plot-fdi-info/treatment-plot-fdi-info.component.html","webpack:///./src/app/shared/components/treatment-plot-fdi-info/treatment-plot-fdi-info.component.scss","webpack:///./src/app/shared/components/treatment-plot-fdi-info/treatment-plot-fdi-info.component.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot-data-store.service.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot-fdi-api.service.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot-fdi-store.service.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot-fdi.model.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot-fdi.service.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot-time-converter.service.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot.component.html","webpack:///./src/app/shared/components/treatment-plot/treatment-plot.component.scss","webpack:///./src/app/shared/components/treatment-plot/treatment-plot.component.ts","webpack:///./src/app/shared/components/treatment-plot/treatment-plot.service.ts","webpack:///./src/app/shared/components/well-grid-view/well-grid-view.component.html","webpack:///./src/app/shared/components/well-grid-view/well-grid-view.component.scss","webpack:///./src/app/shared/components/well-grid-view/well-grid-view.component.ts","webpack:///./src/app/shared/directives/decimal-format.directive.ts","webpack:///./src/app/shared/directives/ellipsis-lines.directive.ts","webpack:///./src/app/shared/directives/input-no-unset.directive.ts","webpack:///./src/app/shared/directives/input-number-in-range.directive.ts","webpack:///./src/app/shared/directives/no-white-space.directive.ts","webpack:///./src/app/shared/directives/sortable-table-header.directive.ts","webpack:///./src/app/shared/guards/admin-guard.service.ts","webpack:///./src/app/shared/guards/auth-guard.service.ts","webpack:///./src/app/shared/guards/data-engineer-guard.service.ts","webpack:///./src/app/shared/guards/index.ts","webpack:///./src/app/shared/guards/no-auth-guard.service.ts","webpack:///./src/app/shared/guards/service-company-guard.service.ts","webpack:///./src/app/shared/helpers/app.constants.ts","webpack:///./src/app/shared/helpers/countries.constants.ts","webpack:///./src/app/shared/helpers/helper.ts","webpack:///./src/app/shared/helpers/intervalTimer.ts","webpack:///./src/app/shared/layouts/default/default-layout.component.html","webpack:///./src/app/shared/layouts/default/default-layout.component.scss","webpack:///./src/app/shared/layouts/default/default-layout.component.ts","webpack:///./src/app/shared/layouts/index.ts","webpack:///./src/app/shared/models/channel.model.ts","webpack:///./src/app/shared/models/country.model.ts","webpack:///./src/app/shared/models/offset-well-compare.model.ts","webpack:///./src/app/shared/pipes/well-completion-date.pipe.ts","webpack:///./src/app/shared/services/channel-mapping.service.ts","webpack:///./src/app/shared/services/channel-selection.service.ts","webpack:///./src/app/shared/services/channel-settings-storage.service.ts","webpack:///./src/app/shared/services/charts.service.ts","webpack:///./src/app/shared/services/charts/base-chart.service.ts","webpack:///./src/app/shared/services/charts/index.ts","webpack:///./src/app/shared/services/charts/log-data-curve-parameter-chart.service.ts","webpack:///./src/app/shared/services/charts/multi-well-chart.service.ts","webpack:///./src/app/shared/services/charts/realtime-chart.service.ts","webpack:///./src/app/shared/services/charts/scatter-plot-parameter-chart.service.ts","webpack:///./src/app/shared/services/charts/single-well-multi-treatment-chart.service.ts","webpack:///./src/app/shared/services/companies.service.ts","webpack:///./src/app/shared/services/compare-offset-channels.service.ts","webpack:///./src/app/shared/services/compare-wells.service.ts","webpack:///./src/app/shared/services/countries-and-timezones/countries-and-timezones.service.ts","webpack:///./src/app/shared/services/data-files.service.ts","webpack:///./src/app/shared/services/default-diagnostic-points.service.ts","webpack:///./src/app/shared/services/diagnostic-points.service.ts","webpack:///./src/app/shared/services/fracpro-channels.service.ts","webpack:///./src/app/shared/services/index.ts","webpack:///./src/app/shared/services/loading-overlay.service.ts","webpack:///./src/app/shared/services/local-data-storage.service.ts","webpack:///./src/app/shared/services/navbar-scale-chart.service.ts","webpack:///./src/app/shared/services/pad.service.ts","webpack:///./src/app/shared/services/pivot-point.service.ts","webpack:///./src/app/shared/services/plot-template.service.ts","webpack:///./src/app/shared/services/realtime-treatment-storage.service.ts","webpack:///./src/app/shared/services/scrollbar-chart-settings.service.ts","webpack:///./src/app/shared/services/session/session.service.ts","webpack:///./src/app/shared/services/storage/channel-mapping-storage.service.ts","webpack:///./src/app/shared/services/storage/compare-wells-storage.service.ts","webpack:///./src/app/shared/services/storage/diagnostic-company-storage.service.ts","webpack:///./src/app/shared/services/storage/fracpro-channel-storage.service.ts","webpack:///./src/app/shared/services/storage/search-pad-options-storage.service.ts","webpack:///./src/app/shared/services/storage/search-well-options-storage.service.ts","webpack:///./src/app/shared/services/storage/treatment-details-storage.service.ts","webpack:///./src/app/shared/services/themes-settings.service.ts","webpack:///./src/app/shared/services/toaster.service.ts","webpack:///./src/app/shared/services/treatment-log-parser.service.ts","webpack:///./src/app/shared/services/treatment-log-template.service.ts","webpack:///./src/app/shared/services/treatment-settings.service.ts","webpack:///./src/app/shared/services/treatment.service.ts","webpack:///./src/app/shared/services/unit-system.service.ts","webpack:///./src/app/shared/services/user-auth.service.ts","webpack:///./src/app/shared/services/user-roles.service.ts","webpack:///./src/app/shared/services/user.service.ts","webpack:///./src/app/shared/services/version-build-check.service.ts","webpack:///./src/app/shared/services/well-search-settings.service.ts","webpack:///./src/app/shared/shared.module.ts","webpack:///./src/app/shared/validators/number.validator.ts","webpack:///./src/environments/dynamic-environment.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6E;;;;;;;;;;;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;;;;;;;;;;;;;;;;;;;ACnF2C;AACO;AACb;AASrC;IAEE,wBACU,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IACtB,CAAC;IAEL,6BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,0DAAG,CAAC,gBAAM;YACxD,2CAA2C;YAC3C,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAZU,cAAc;QAD1B,gEAAU,EAAE;yCAIK,+DAAU;OAHf,cAAc,CAa1B;IAAD,qBAAC;CAAA;AAb0B;;;;;;;;;;;;;;;;;;;;;;;ACXc;AAC+C;AAExF,IAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,OAA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","file":"main.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","var map = {\n\t\"./auth/auth.module\": [\n\t\t\"./src/app/auth/auth.module.ts\",\n\t\t\"common\",\n\t\t\"auth-auth-module\"\n\t],\n\t\"app/pages/channel-mapping/channel-mapping.module\": [\n\t\t\"./src/app/pages/channel-mapping/channel-mapping.module.ts\",\n\t\t\"default~app-pages-channel-mapping-channel-mapping-module~app-pages-pages-module\",\n\t\t\"common\"\n\t],\n\t\"app/pages/equip-monitoring/equip-monitoring.module\": [\n\t\t\"./src/app/pages/equip-monitoring/equip-monitoring.module.ts\",\n\t\t\"app-pages-equip-monitoring-equip-monitoring-module\"\n\t],\n\t\"app/pages/inventory/inventory.module\": [\n\t\t\"./src/app/pages/inventory/inventory.module.ts\",\n\t\t\"common\",\n\t\t\"app-pages-inventory-inventory-module\"\n\t],\n\t\"app/pages/manage/manage.module\": [\n\t\t\"./src/app/pages/manage/manage.module.ts\",\n\t\t\"common\",\n\t\t\"app-pages-manage-manage-module\"\n\t],\n\t\"app/pages/pad/pad.module\": [\n\t\t\"./src/app/pages/pad/pad.module.ts\",\n\t\t\"default~app-pages-pad-pad-module~app-pages-treatments-realtime-realtime-module~app-pages-treatments-~f93f3835\",\n\t\t\"common\",\n\t\t\"app-pages-pad-pad-module\"\n\t],\n\t\"app/pages/pages.module\": [\n\t\t\"./src/app/pages/pages.module.ts\",\n\t\t\"default~app-pages-channel-mapping-channel-mapping-module~app-pages-pages-module\",\n\t\t\"default~app-pages-pages-module~app-pages-user-user-module\",\n\t\t\"common\",\n\t\t\"app-pages-pages-module\"\n\t],\n\t\"app/pages/treatments/realtime/realtime.module\": [\n\t\t\"./src/app/pages/treatments/realtime/realtime.module.ts\",\n\t\t\"default~app-pages-pad-pad-module~app-pages-treatments-realtime-realtime-module~app-pages-treatments-~f93f3835\",\n\t\t\"common\"\n\t],\n\t\"app/pages/treatments/treatments.module\": [\n\t\t\"./src/app/pages/treatments/treatments.module.ts\",\n\t\t\"default~app-pages-pad-pad-module~app-pages-treatments-realtime-realtime-module~app-pages-treatments-~f93f3835\",\n\t\t\"default~app-pages-treatments-treatments-module~app-pages-treatments-upload-treatment-upload-treatmen~82c786cc\",\n\t\t\"common\",\n\t\t\"app-pages-treatments-treatments-module\"\n\t],\n\t\"app/pages/treatments/upload-treatment/upload-treatment.module\": [\n\t\t\"./src/app/pages/treatments/upload-treatment/upload-treatment.module.ts\",\n\t\t\"default~app-pages-treatments-treatments-module~app-pages-treatments-upload-treatment-upload-treatmen~82c786cc\",\n\t\t\"common\"\n\t],\n\t\"app/pages/user/user.module\": [\n\t\t\"./src/app/pages/user/user.module.ts\",\n\t\t\"default~app-pages-pages-module~app-pages-user-user-module\",\n\t\t\"common\"\n\t],\n\t\"app/pages/wells/wells.module\": [\n\t\t\"./src/app/pages/wells/wells.module.ts\",\n\t\t\"app-pages-wells-wells-module\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\tvar id = ids[0];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";\nmodule.exports = webpackAsyncContext;","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map } from 'rxjs/operators';\r\n\r\ndeclare var window: any;\r\n\r\nexport interface IAppConfig {\r\n baseURL: string\r\n}\r\n\r\n@Injectable()\r\nexport class AppInitService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n ) { }\r\n\r\n init() {\r\n return this.http.get('../app-config.json').pipe(map(result => {\r\n // set app config in global variable window\r\n window.appConfig = result;\r\n return result;\r\n })).toPromise();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule, ExtraOptions, PreloadAllModules } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: 'pages', loadChildren: 'app/pages/pages.module#PagesModule' },\r\n {\r\n path: 'auth',\r\n loadChildren: './auth/auth.module#AuthModule'\r\n },\r\n { path: '', redirectTo: 'auth', pathMatch: 'full' },\r\n { path: '**', redirectTo: 'pages' },\r\n];\r\n\r\nconst config: ExtraOptions = {\r\n useHash: false,\r\n preloadingStrategy: PreloadAllModules\r\n};\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, config)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { VersionBuildCheckService } from './shared/services';\r\nimport { environment } from '../environments/environment';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n template: `\r\n \r\n \r\n `\r\n})\r\nexport class AppComponent implements OnInit {\r\n title = 'ng-dashboard';\r\n // isLoadingPage = false;\r\n\r\n constructor(\r\n private versionBuildCheckService: VersionBuildCheckService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (environment.production) {\r\n this.versionBuildCheckService.initVersionCheck('../version.json', () => {\r\n console.log('New version updated');\r\n // reload the page\r\n location.reload(true);\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { APP_BASE_HREF } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { CoreModule } from './core/core.module';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { AppInitService } from './app-init.service';\r\n// import { MsalInterceptor } from '@azure/msal-angular';\r\nimport { b2cPolicies, msalConfig } from './auth.config';\r\n// import { IPublicClientApplication, PublicClientApplication, InteractionType } from 'msal';\r\nimport { MsalGuard, BroadcastService, MsalService, MsalAngularConfiguration, MsalModule } from '@azure/msal-angular';\r\n\r\nconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\r\nexport const protectedResourceMap: [string, string[]][] = [\r\n ['\"https://prodlinqx.onmicrosoft.com/PROD_WebApi_Scope/prod_scp_rw\"', ['user.read']]\r\n];\r\nexport function initializeApp(appInitService: AppInitService) {\r\n return (): Promise => {\r\n return appInitService.init();\r\n }\r\n}\r\n// export function MSALInstanceFactory(): IPublicClientApplication {\r\n// return new PublicClientApplication(msalConfig);\r\n// }\r\n// export function MSALGuardConfigFactory(): MsalAngularConfiguration {\r\n// return {\r\n// authRequest: loginRequest\r\n// };\r\n// }\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n AppRoutingModule,\r\n MsalModule.forRoot({\r\n auth: {\r\n clientId: msalConfig.auth.clientId,\r\n authority: b2cPolicies.authorities.signUpSignIn.authority,\r\n validateAuthority: false,\r\n redirectUri: msalConfig.auth.redirectUri,\r\n postLogoutRedirectUri: msalConfig.auth.postLogoutRedirectUri,\r\n \r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: true, // set to true for IE 11\r\n },\r\n },\r\n {\r\n popUp: !isIE,\r\n consentScopes: [\r\n \"user.read\",\r\n \"openid\",\r\n \"profile\",\r\n \"api://a88bb933-319c-41b5-9f04-eff36d985612/access_as_user\"\r\n ],\r\n unprotectedResources: [\"https://www.microsoft.com/en-us/\"],\r\n protectedResourceMap,\r\n extraQueryParameters: {}\r\n }\r\n ),\r\n CoreModule.forRoot(),\r\n SharedModule.forRoot(),\r\n ToastrModule.forRoot()\r\n ],\r\n providers: [\r\n { provide: APP_BASE_HREF, useValue: '/' },\r\n AppInitService,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeApp,\r\n deps: [AppInitService],\r\n multi: true\r\n },\r\n // {\r\n // provide: HTTP_INTERCEPTORS,\r\n // useClass: MsalInterceptor,\r\n // multi: true\r\n // }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { LogLevel, Configuration } from 'msal';\r\n\r\n\r\n\r\nconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\r\n\r\nexport const b2cPolicies = {\r\n names: {\r\n signUpSignIn: 'B2C_1_PROD',\r\n },\r\n authorities: {\r\n signUpSignIn: {\r\n authority: 'https://prodlinqx.b2clogin.com/prodlinqx.onmicrosoft.com/B2C_1_PROD',\r\n },\r\n },\r\n authorityDomain: 'preprodlinqx.b2clogin.com',\r\n};\r\nexport const msalConfig: Configuration = {\r\n auth: {\r\n // clientId: \"64bad283-55ca-4bce-836e-e2e023f56129\", // Local\r\n clientId: \"743ec681-efa8-436d-8dd0-e09570da7861\",\r\n authority: b2cPolicies.authorities.signUpSignIn.authority,\r\n knownAuthorities: [b2cPolicies.authorityDomain],\r\n // redirectUri: \"http://localhost:4200/pages/dashboard\", //Local\r\n redirectUri: \"https://fracpro.ai/pages/dashboard\",\r\n // postLogoutRedirectUri: \"http://localhost:4200/pages/user/logout\", //Local\r\n postLogoutRedirectUri: \"https://fracpro.ai/pages/user/logout\",\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: true,\r\n },\r\n};\r\nexport const loginRequest = {\r\n scopes: []\r\n}\r\n\r\nexport const silentRequest = {\r\n scopes: [],\r\n loginHint: \"example@domain.net\"\r\n};","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NbAuthModule, NbDummyAuthStrategy } from '@nebular/auth';\r\nimport { ApiService, CookieStorageService } from './services';\r\nimport { HttpTokenInterceptor } from './interceptors';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { HttpNotConnectedInterceptor } from './interceptors/http.not-connected.interceptor';\r\nimport { HttpErrorHandlerInterceptor } from './interceptors/http.error-handler.interceptor';\r\nimport { ToasterService } from '../shared/services';\r\n\r\nconst NB_CORE_PROVIDERS = [\r\n ...NbAuthModule.forRoot({\r\n\r\n strategies: [\r\n NbDummyAuthStrategy.setup({\r\n name: 'email',\r\n delay: 3000,\r\n }),\r\n ]\r\n }).providers\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n exports: [\r\n NbAuthModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpTokenInterceptor, multi: true },\r\n // { provide: HTTP_INTERCEPTORS, useClass: HttpNotConnectedInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpErrorHandlerInterceptor, multi: true },\r\n CookieService,\r\n ApiService,\r\n CookieStorageService,\r\n ToasterService\r\n ]\r\n})\r\nexport class CoreModule {\r\n constructor() {}\r\n\r\n static forRoot(): ModuleWithProviders {\r\n // tslint:disable-next-line:no-angle-bracket-type-assertion\r\n return {\r\n ngModule: CoreModule,\r\n providers: [\r\n ...NB_CORE_PROVIDERS,\r\n ],\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject, from } from 'rxjs';\r\nimport { catchError, filter, switchMap, take, tap } from 'rxjs/operators';\r\nimport { ToasterService, UserAuthService } from '../../shared/services';\r\nimport { CookieStorageService } from '../services';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { InteractionRequiredAuthError } from 'msal';\r\nimport { BroadcastService, MsalService } from '@azure/msal-angular';\r\nimport Swal from 'sweetalert2';\r\n\r\n@Injectable()\r\nexport class HttpErrorHandlerInterceptor implements HttpInterceptor {\r\n private accessTokenKey = 'jwtToken';\r\n private isRefreshing = false;\r\n private refreshTokenSubject: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private toasterService: ToasterService,\r\n private userAuthService: UserAuthService,\r\n private cookieStorageService: CookieStorageService,\r\n private cookieService: CookieService,\r\n private authService: MsalService\r\n ) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const currentToken = this.cookieStorageService.getAccessToken();\r\n if (currentToken) {\r\n request = this.addToken(request, currentToken);\r\n }\r\n \r\n return next.handle(request).pipe(\r\n tap(evt => {\r\n }),\r\n catchError((err: any) => {\r\n try {\r\n if (err instanceof HttpErrorResponse && err.error) {\r\n // check to see if there's internet\r\n if (!window.navigator.onLine) {\r\n this.toasterService.showError('No internet connection');\r\n } else {\r\n if (err.status !== 401 && err.status !== 403 && err.status > 0) {\r\n this.toasterService.handleError(err.error);\r\n }\r\n }\r\n \r\n if (err.status === 401) {\r\n setTimeout(() => {\r\n this.userAuthService.logout();\r\n }, 500);\r\n // this.toasterService.showError('Token has expired. Trying to refresh token.'); \r\n // this.handle401Error(request, next); \r\n }\r\n else if(err.status === 403){\r\n setTimeout(()=>{\r\n Swal.fire({\r\n text: \"You do not have a role assigned right now. Kindly contact your organization's administrator.\",\r\n icon: 'info',\r\n showCancelButton: false,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n confirmButtonText: 'Ok',\r\n cancelButtonColor: 'rgb(48,133,214)',\r\n reverseButtons: true\r\n }).then((result) =>{\r\n console.log(\"resss===>\", result);\r\n if(result.value === true){\r\n this.userAuthService.logout();\r\n }\r\n })\r\n // this.toasterService.handleError(err.error);\r\n },300)\r\n }\r\n }\r\n return throwError(err);\r\n } catch (error) {\r\n return throwError(err);\r\n }\r\n }));\r\n }\r\n handle401Error(request: HttpRequest, next: HttpHandler) {\r\n if (!this.isRefreshing) {\r\n this.isRefreshing = true;\r\n this.refreshTokenSubject.next(null);\r\n console.log(\"sss==>>\")\r\n this.userAuthService.refreshToken().then(response=>{\r\n console.log(\"res===>\", response)\r\n this.isRefreshing = false;\r\n this.refreshTokenSubject.next(response.accessToken);\r\n return next.handle(this.addToken(request, response.accessToken));\r\n }),\r\n catchError((error) => {\r\n this.isRefreshing = false;\r\n this.userAuthService.logout()\r\n return throwError(error);\r\n })\r\n \r\n } else {\r\n return this.refreshTokenSubject.pipe(\r\n filter(token => token != null),\r\n take(1),\r\n switchMap(jwt => {\r\n this.refreshTokenSubject.next(jwt);\r\n return next.handle(this.addToken(request, jwt));\r\n })\r\n );\r\n }\r\n }\r\n\r\n \r\n addToken(request: HttpRequest, token: string) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\r\nimport { catchError, filter, switchMap, take, tap } from 'rxjs/operators';\r\nimport { ToasterService, UserAuthService } from '../../shared/services';\r\nimport { CookieStorageService } from '../services';\r\nimport { Router } from '@angular/router';\r\nimport { IsIEOrEdge } from '../../shared/helpers/app.constants';\r\n\r\n@Injectable()\r\nexport class HttpTokenInterceptor implements HttpInterceptor {\r\n isRefreshing: boolean = false;\r\n private readonly JWT_TOKEN = 'jwtToken';\r\n refreshTokenSubject:BehaviorSubject = new BehaviorSubject(null);\r\n constructor(private cookieStoreService: CookieStorageService,\r\n private userAuthService: UserAuthService,\r\n private router: Router,\r\n ) {}\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n const headersConfig = {\r\n Accept: 'application/json',\r\n };\r\n\r\n // const isIEOrEdge = IsIEOrEdge.test(window.navigator.userAgent);\r\n\r\n const token = this.cookieStoreService.getAccessToken();\r\n\r\n if (token) {\r\n req=this.addToken(req, token);\r\n // headersConfig['Authorization'] = `Bearer ${token}`;\r\n }\r\n return next.handle(req).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status === 401) { // try to refresh token but still has error, give up and logout.\r\n // this.userAuthService.logout1();\r\n // this.\r\n // this.router.navigate(['/login']);\r\n // return this.handle401Error(req, next);\r\n } else {\r\n \r\n return throwError(error);\r\n \r\n }\r\n })\r\n );\r\n // if (req.method === 'GET') {\r\n // const customRequest = req.clone({\r\n // headers: req.headers.set('Cache-Control', 'no-cache')\r\n // .set('Pragma', 'no-cache')\r\n // .set('Authorization', `Bearer ${token}`)\r\n // .set('Accept', 'application/json')\r\n // });\r\n // return next.handle(customRequest);\r\n // } else {\r\n // const request = req.clone({ setHeaders: headersConfig });\r\n // return next.handle(request);\r\n // }\r\n\r\n }\r\n handle401Error(request: HttpRequest, next: HttpHandler) {\r\n if (!this.isRefreshing) {\r\n this.isRefreshing = false;\r\n this.refreshTokenSubject.next(null);\r\n this.userAuthService.refreshToken().then(token =>{\r\n this.isRefreshing = false;\r\n this.userAuthService.storeJwtToken(token.accessToken);\r\n this.userAuthService.setAuth(token);\r\n // this.router.navigate(['/']);\r\n this.cookieStoreService.setItem(this.JWT_TOKEN, token.accessToken);\r\n this.refreshTokenSubject.next(token.accessToken);\r\n return next.handle(this.addToken(request, token.accessToken));\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n this.isRefreshing = true;\r\n this.userAuthService.logout();\r\n return throwError(error);\r\n })\r\n \r\n \r\n } else {\r\n return this.refreshTokenSubject.pipe(\r\n filter(token => token != null),\r\n take(1),\r\n switchMap(jwt => {\r\n return next.handle(this.addToken(request, jwt));\r\n }));\r\n }\r\n }\r\n\r\n addToken(request: HttpRequest, token: string) {\r\n return request.clone({\r\n headers: request.headers.set('Cache-Control', 'no-cache')\r\n .set('Pragma', 'no-cache')\r\n .set('Authorization', `Bearer ${token}`)\r\n .set('Accept', 'application/json')\r\n });\r\n }\r\n}\r\n","export * from './http.token.interceptor';\r\nexport * from './http.error-handler.interceptor';\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../../../environments/environment';\r\nimport { HttpHeaders, HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\n\r\nimport { catchError, finalize, timeout } from 'rxjs/operators';\r\n\r\nexport interface IAPIServiceOptions {\r\n overrideBaseUrl?: boolean;\r\n requestTimeout?: number;\r\n}\r\n\r\nconst REQUEST_TIMEOUT = 90000; // 1m30s\r\n\r\n@Injectable()\r\nexport class ApiService {\r\n constructor(\r\n private http: HttpClient,\r\n ) {}\r\n\r\n private formatErrors(error: any) {\r\n return throwError(error.error);\r\n }\r\n\r\n private getRequestUrl(options: IAPIServiceOptions, path: string) {\r\n const opts = typeof options === 'object' && options !== null ? options : {};\r\n let requestUrl = `${environment.api_url}${path}`;\r\n if (opts.overrideBaseUrl) {\r\n requestUrl = path;\r\n }\r\n return requestUrl;\r\n }\r\n\r\n get(path: string, params: HttpParams = new HttpParams(), options?: IAPIServiceOptions): Observable {\r\n const requestUrl = this.getRequestUrl(options, path);\r\n const requestTimeout = options && options.requestTimeout ? options.requestTimeout : REQUEST_TIMEOUT;\r\n\r\n return this.http.get(requestUrl, { params })\r\n .pipe(timeout(requestTimeout))\r\n .pipe(catchError(this.formatErrors));\r\n }\r\n\r\n put(path: string, reqBody: any, finalizeHandler?: VoidFunction, options?: IAPIServiceOptions, params?: HttpParams): Observable {\r\n const requestUrl = this.getRequestUrl(options, path);\r\n\r\n return this.http.put(\r\n requestUrl,\r\n reqBody,\r\n { params }\r\n ).pipe(catchError(this.formatErrors))\r\n .pipe(finalize(() => {\r\n if (typeof finalizeHandler === 'function') {\r\n finalizeHandler();\r\n }\r\n }));\r\n }\r\n\r\n post(path: string, reqBody?: any, finalizeHandler?: VoidFunction, options?: IAPIServiceOptions, params?: HttpParams): Observable {\r\n const requestUrl = this.getRequestUrl(options, path);\r\n const requestTimeout = options && options.requestTimeout ? options.requestTimeout : REQUEST_TIMEOUT;\r\n\r\n return this.http.post(\r\n requestUrl,\r\n reqBody,\r\n { params }\r\n )\r\n .pipe(timeout(requestTimeout))\r\n .pipe(catchError(this.formatErrors))\r\n .pipe(finalize(() => {\r\n if (typeof finalizeHandler === 'function') {\r\n finalizeHandler();\r\n }\r\n }));\r\n }\r\n\r\n patch(path: string, params: HttpParams = new HttpParams(), finalizeHandler?: VoidFunction, options?: IAPIServiceOptions): Observable {\r\n const requestUrl = this.getRequestUrl(options, path);\r\n\r\n return this.http.patch(\r\n requestUrl,\r\n params\r\n ).pipe(catchError(this.formatErrors))\r\n .pipe(finalize(() => {\r\n if (typeof finalizeHandler === 'function') {\r\n finalizeHandler();\r\n }\r\n }));\r\n }\r\n\r\n delete(path: string, finalizeHandler?: VoidFunction, options?: IAPIServiceOptions): Observable {\r\n const requestUrl = this.getRequestUrl(options, path);\r\n\r\n return this.http.delete(\r\n requestUrl,\r\n ).pipe(catchError(this.formatErrors))\r\n .pipe(finalize(() => {\r\n if (typeof finalizeHandler === 'function') {\r\n finalizeHandler();\r\n }\r\n }));\r\n }\r\n\r\n deleteParam(path: string, params: HttpParams = new HttpParams(), finalizeHandler?: VoidFunction, options?: IAPIServiceOptions): Observable {\r\n const requestUrl = this.getRequestUrl(options, path);\r\n\r\n return this.http.delete(\r\n requestUrl, { params }\r\n ).pipe(catchError(this.formatErrors))\r\n .pipe(finalize(() => {\r\n if (typeof finalizeHandler === 'function') {\r\n finalizeHandler();\r\n }\r\n }));\r\n }\r\n\r\n postFile(path: string, params: any, httpOptions?, finalizeHandler?: VoidFunction, options?: IAPIServiceOptions): Observable {\r\n const requestUrl = this.getRequestUrl(options, path);\r\n\r\n return this.http.post(\r\n requestUrl,\r\n params,\r\n httpOptions\r\n ).pipe(catchError(this.formatErrors))\r\n .pipe(finalize(() => {\r\n if (typeof finalizeHandler === 'function') {\r\n finalizeHandler();\r\n }\r\n }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\n@Injectable()\r\nexport class CookieStorageService {\r\n private accessTokenKey = 'jwtToken';\r\n private userIdKey = 'userId';\r\n constructor(private cookieService: CookieService) { }\r\n\r\n getAccessToken(): string {\r\n return this.cookieService.get(this.accessTokenKey);\r\n }\r\n\r\n saveAccessToken(token: string, expireTimestamp?: number) {\r\n console.log(\"token1111==>\", token);\r\n console.log(\"exp===>\", expireTimestamp)\r\n this.cookieService.set(this.accessTokenKey, token, expireTimestamp, '/', null, null, null);\r\n }\r\n\r\n destroyAccessToken() {\r\n this.cookieService.delete(this.accessTokenKey);\r\n this.cookieService.delete('expireInSeconds');\r\n }\r\n\r\n getUserId(): string {\r\n return this.cookieService.get(this.userIdKey);\r\n }\r\n\r\n saveUserId(id: string, expireTimestamp?: number) {\r\n this.cookieService.set(this.userIdKey, id, expireTimestamp);\r\n }\r\n\r\n destroyUserId() {\r\n this.cookieService.delete(this.userIdKey);\r\n }\r\n\r\n destroyAll() {\r\n this.cookieService.deleteAll('/');\r\n }\r\n\r\n // Set Cookies\r\n public setCookies(key: string, value: any, expireTimestamp?: number) {\r\n const expire = expireTimestamp ? expireTimestamp : 1;\r\n this.cookieService.set(key, value, expire, '/', null, null, null);\r\n }\r\n\r\n // Get Cookies\r\n public getCookies(key: string): string {\r\n return this.cookieService.get(key);\r\n }\r\n \r\n public setItem(key: string, value: string) {\r\n this.cookieService.set(key, value);\r\n }\r\n}\r\n","\r\nexport * from './api.service';\r\nexport * from './cookie-storage.service';\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport {ApiService} from '../../../core/services/api.service';\r\n\r\n@Injectable()\r\nexport class HistoricalWellsService {\r\n prefixPath = '/companies/historicalWells';\r\n\r\n constructor(private apiService: ApiService) {\r\n\r\n }\r\n updateByCompany(param: any, finalize?: VoidFunction) {\r\n return this.apiService.put(`${this.prefixPath}/updateVisible`, param, finalize);\r\n }\r\n delete(id: number, finalize?: VoidFunction): Observable {\r\n return this.apiService.delete(`${this.prefixPath}/${id}`, finalize);\r\n }\r\n getAll(): Observable {\r\n return this.apiService.get(`${this.prefixPath}`);\r\n }\r\n getCountries(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getCountries`);\r\n }\r\n getStates(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getStates`);\r\n }\r\n getCounties(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getCounties`);\r\n }\r\n getPads(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getPadNames`);\r\n }\r\n getFormations(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getFormations`);\r\n }\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Pad Name\\r\\n Formation Name\\r\\n OperatorService\\r\\n CountyState
No data found
\\r\\n 0)\\\"\\r\\n [value]=\\\"pad.selected\\\" (click)=\\\"toggleClickPad($event, pad.selected)\\\"\\r\\n (change)=\\\"toggleSelectPad($event, pad)\\\">\\r\\n {{ pad.padName }}{{ pad.formationName }}{{ pad.operatorName }}{{ pad.serviceName }}{{ pad.county }}{{ pad.state }}
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3BhZC9wYWQtbGlzdC10YWJsZS9wYWQtbGlzdC10YWJsZS5jb21wb25lbnQuc2NzcyJ9 */\"","import { ToasterService } from './../../../shared/services/toaster.service';\r\nimport { SortEvent, SortableTableHeaderDirective } from './../../../shared/directives/sortable-table-header.directive';\r\nimport { cloneDeep, remove, countBy, some, isEmpty } from 'lodash';\r\nimport { Component, OnInit, OnChanges, Input, Output, EventEmitter, ViewChildren, QueryList, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-pad-list-table',\r\n templateUrl: './pad-list-table.component.html',\r\n styleUrls: ['./pad-list-table.component.scss']\r\n})\r\nexport class PadListTableComponent implements OnInit, OnChanges {\r\n listPads: any[] = [];\r\n listWellFull: any[] = [];\r\n tableState = {\r\n selectedAll: false\r\n };\r\n @Input() maxItemList: number;\r\n @Input() isCarboAdmin: boolean = false;\r\n @Input() isService: boolean = false;\r\n @Input() isOperator: boolean = false;\r\n @Input() isHideCheck: boolean = false;\r\n @Input()\r\n set itemList(listPads) {\r\n this.listPads = listPads;\r\n if (!this.isCarboAdmin) {\r\n const listPadsFake = cloneDeep(this.listPads);\r\n remove(listPadsFake, (item: any) => {\r\n return (item.treatmentList && item.treatmentList.length === 0);\r\n });\r\n this.checkAllSelect(listPadsFake);\r\n } else {\r\n this.checkAllSelect(this.listPads);\r\n }\r\n }\r\n\r\n @Output() rowSelect: EventEmitter = new EventEmitter();\r\n @Output() selectedChange: EventEmitter = new EventEmitter();\r\n @Output() sortChange: EventEmitter = new EventEmitter();\r\n\r\n @ViewChildren(SortableTableHeaderDirective) headers: QueryList;\r\n\r\n constructor(private toasterService: ToasterService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.listPads && !changes.listPads.isFirstChange()) {\r\n this.listPads = changes.listPads.currentValue;\r\n }\r\n }\r\n\r\n toggleClickPad(event, check: boolean) {\r\n if (!check) {\r\n const countSelected = countBy(this.listWellFull, 'selected').true || 0;\r\n if (countSelected > 100) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toasterService.showError('Wells must be choose at less than or equal to 100 with compare multiple well');\r\n }\r\n }\r\n }\r\n\r\n toggleSelectPad(event, well) {\r\n event.preventDefault();\r\n if (well) {\r\n well.selected = !well.selected;\r\n if (!this.isCarboAdmin) {\r\n const listPadsFake = cloneDeep(this.listPads);\r\n remove(listPadsFake, (item: any) => {\r\n return (item.treatmentList && item.treatmentList.length === 0);\r\n });\r\n this.checkAllSelect(listPadsFake);\r\n } else {\r\n this.checkAllSelect(this.listPads);\r\n }\r\n if (some(this.listWellFull, {wellId: well.wellId})) {\r\n this.removeWellOnList(well);\r\n } else {\r\n this.listWellFull.push(well);\r\n }\r\n const selectedWells = this.listWellFull;\r\n this.selectedChange.emit({ selected: [...selectedWells] });\r\n }\r\n }\r\n\r\n toggleClickAll(event , check: boolean) {\r\n if (!check) {\r\n const count = this.listWellFull.length;\r\n if (count > 100) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toasterService.showError('Wells must be choose at less than or equal to 100 with compare multiple well');\r\n }\r\n }\r\n }\r\n\r\n toggleSelectAll(event) {\r\n event.preventDefault();\r\n this.tableState.selectedAll = !this.tableState.selectedAll;\r\n setTimeout(() => {\r\n this.setSelectedWells(this.tableState.selectedAll);\r\n this.selectedChange.emit({ selected: [...this.listWellFull] });\r\n });\r\n }\r\n\r\n setSelectedWells(value) {\r\n if (this.listPads && this.listPads.length > 0) {\r\n this.listPads.forEach(well => {\r\n if (well.treatmentList && well.treatmentList.length > 0 || this.isCarboAdmin) {\r\n well.selected = value;\r\n if (value) {\r\n if (!some(this.listWellFull, well)) {\r\n this.listWellFull.push(well);\r\n }\r\n } else {\r\n this.removeWellOnList(well);\r\n }\r\n } else {\r\n well.selected = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n removeWellOnList(well) {\r\n remove(this.listWellFull, item => {\r\n return item.wellId === well.wellId;\r\n });\r\n }\r\n\r\n clickRowSelect(e: any) {\r\n this.rowSelect.emit(e);\r\n }\r\n\r\n removeAllSelected() {\r\n this.tableState.selectedAll = false;\r\n this.listWellFull = [];\r\n }\r\n\r\n checkAllSelect(wellList: any[]) {\r\n const countSelected = countBy(wellList, 'selected').true || 0;\r\n if (isEmpty(wellList) || countSelected !== wellList.length) {\r\n this.tableState.selectedAll = false;\r\n } else {\r\n this.tableState.selectedAll = true;\r\n }\r\n }\r\n\r\n onSort({column, direction}: SortEvent) {\r\n // resetting other headers\r\n this.headers.forEach(header => {\r\n if (header.sortable !== column) {\r\n header.direction = '';\r\n }\r\n });\r\n this.sortChange.emit({column, direction});\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TREATMENT_MONITOR_NUMBER } from '../../shared/helpers/app.constants';\r\n\r\nexport interface IPadRealtimeInputData {\r\n padInfo: any;\r\n listWells: any[];\r\n wellInProgress: any;\r\n treatmentInProgress: any;\r\n currentTreatmentId: number;\r\n}\r\n\r\nexport interface IPadDetailWell {\r\n wellId: number;\r\n tzTimeZone: string;\r\n stTimeZone: string;\r\n wellUid: string;\r\n wellName: string;\r\n formation: string;\r\n formationName: string;\r\n operator: string;\r\n operatorName: string;\r\n serviceName: string;\r\n serviceCompany: string;\r\n lastTreatmentId: number;\r\n lastTreatmentInProgress: boolean;\r\n completionDate: string | null;\r\n completionDateDisplay: string | null;\r\n padName: string;\r\n treatmentList: IPadDetailTreatment[];\r\n lastTreatment;\r\n lastTreatmentComplete;\r\n}\r\n\r\nexport interface IPadDetailTreatment {\r\n id: number;\r\n wellId: number;\r\n wellName: string;\r\n treatmentName: string;\r\n treatmentNumber: number;\r\n inProgress: boolean;\r\n treatmentComplete: boolean;\r\n timeEnd: number;\r\n timeStart: number;\r\n timeZone: number;\r\n tzTimeZone: string;\r\n stTimeZone: string;\r\n dayLight: number;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class PadRealtimeDataService {\r\n inputData: IPadRealtimeInputData;\r\n parameterList: any[];\r\n excludeTreatmentIds: number[];\r\n\r\n\r\n constructor() { }\r\n\r\n setInputData(input: IPadRealtimeInputData): void {\r\n this.inputData = {...input};\r\n }\r\n\r\n getInputData() {\r\n return this.inputData;\r\n }\r\n\r\n resetInputData() {\r\n this.inputData = null;\r\n }\r\n\r\n resetData() {\r\n this.inputData = null;\r\n this.parameterList = [];\r\n this.excludeTreatmentIds = [];\r\n }\r\n\r\n setParameterList(data) {\r\n this.parameterList = data;\r\n }\r\n\r\n getParameterList() {\r\n return this.parameterList;\r\n }\r\n\r\n hasCurrentInProgress(listWells: any[], currentTreatment): boolean {\r\n if (!currentTreatment) return false;\r\n for (const well of listWells) {\r\n for (const treatment of well.treatmentList) {\r\n if (treatment.id === currentTreatment.id && treatment.inProgress) return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n getLatestInProgress(listWells: any[], padInfo, currentTreatmentId?: number): IPadRealtimeInputData | null {\r\n let treatmentInProgress = null;\r\n let wellInProgress = null;\r\n\r\n for (const well of listWells) {\r\n for (const treatment of well.treatmentList) {\r\n if (!treatment.inProgress || treatment.treatmentNumber === TREATMENT_MONITOR_NUMBER) continue;\r\n if (currentTreatmentId && treatment.id === currentTreatmentId) continue;\r\n if (!treatmentInProgress || treatment.timeStart > treatmentInProgress.timeStart) {\r\n treatmentInProgress = treatment;\r\n wellInProgress = well;\r\n }\r\n }\r\n }\r\n\r\n if (!treatmentInProgress || !wellInProgress) {\r\n return { listWells, padInfo, wellInProgress: null, treatmentInProgress: null, currentTreatmentId: 0 }\r\n }\r\n\r\n return { listWells, padInfo, wellInProgress, treatmentInProgress, currentTreatmentId: treatmentInProgress.id }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { IPadRealtimeInputData, PadRealtimeDataService } from './pad-realtime-data.service';\r\nimport { of } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class PadRealtimeResolver implements Resolve {\r\n constructor(\r\n private router: Router,\r\n private padRealtimeDataService: PadRealtimeDataService,\r\n ) { }\r\n\r\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const inputData = this.padRealtimeDataService.getInputData();\r\n return of(inputData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { forEach, some, isEmpty } from 'lodash';\r\nimport { IChannelItem, IChannelSettingModel, IInputDataChart, IInputDataMultiFlow } from '../../../../shared/models';\r\nimport { IOffsetWellCompare } from '../../../../shared/models/offset-well-compare.model';\r\nimport { ChartsService, ChannelSelectionService } from '../../../../shared/services';\r\n\r\n@Injectable()\r\nexport class RealtimeTreatmentService {\r\n\r\n constructor(\r\n private chartsService: ChartsService,\r\n private channelSelectionService: ChannelSelectionService,\r\n ) { }\r\n\r\n getChartData(\r\n wellId,\r\n treatmentId,\r\n channelsMap: string[],\r\n flowPathType?: number\r\n ): Promise {\r\n if (wellId) {\r\n flowPathType = typeof flowPathType === 'number' && !isNaN(flowPathType) ? flowPathType : 0;\r\n const requestBody = {\r\n wellId,\r\n treatmentId,\r\n items: channelsMap,\r\n flowPathType\r\n };\r\n return this.chartsService.getDataChart(requestBody).toPromise().then(res => {\r\n if (res && res.result && res.result) {\r\n return Promise.resolve(res.result);\r\n }\r\n return Promise.resolve(res);\r\n });\r\n } else {\r\n return Promise.reject(new Error('Invalid wellId'));\r\n }\r\n }\r\n\r\n getOffsetWellCompareData(channelSettings: IChannelSettingModel, offsetWellCompareSettings: IOffsetWellCompare, flowPathType?: number): Promise {\r\n if (channelSettings && offsetWellCompareSettings) {\r\n const wellId = offsetWellCompareSettings.wellId;\r\n const treatmentId = offsetWellCompareSettings.treatmentId;\r\n const offsetWellChannelSettings = this.channelSelectionService.filterChannelsByAxisType(channelSettings, offsetWellCompareSettings.axisType);\r\n\r\n const channelsMap = this.channelSelectionService.toRequestChannelMap(offsetWellChannelSettings);\r\n return this.getChartData(wellId, treatmentId, channelsMap, flowPathType);\r\n } else {\r\n return Promise.resolve(null);\r\n }\r\n }\r\n\r\n sameChannelData = (currentData: IInputDataMultiFlow, inputData: IInputDataMultiFlow): boolean => {\r\n if (!currentData && !inputData) return true;\r\n if (!currentData && inputData) return false;\r\n if (currentData && !inputData) return false;\r\n\r\n const compare = (data: IInputDataChart[], inData: IInputDataChart[]): boolean => {\r\n if (!data && !inData) return true;\r\n if (!data[0] && !inData[0]) return true;\r\n if (!data[0] && inData[0]) return false;\r\n if (data[0] && !inData[0]) return false;\r\n\r\n if (!data[0].values.length && !inData[0].values.length) return true;\r\n if (data[0].columns.length !== inData[0].columns.length) return false;\r\n if (data[0].values.length !== inData[0].values.length) return false;\r\n return true;\r\n };\r\n\r\n const sameRealtime = compare(currentData.realtimeData, inputData.realtimeData);\r\n const sameFracpro = compare(currentData.fracproData, inputData.fracproData);\r\n return sameRealtime && sameFracpro;\r\n }\r\n\r\n concatRealtimeData = (currentData: IInputDataMultiFlow, inputData: IInputDataMultiFlow, baseDateTime: string, requestDateTime: string): IInputDataMultiFlow => {\r\n const concat = (currData: IInputDataChart[], inData: IInputDataChart[]): IInputDataChart[] => {\r\n if (!currData || !currData.length) {\r\n currData = [];\r\n if (!inData[0].values || !inData[0].values.length) return currData;\r\n currData[0] = inData[0];\r\n } else {\r\n if (!inData[0].values || !inData[0].values.length) return currData;\r\n const n = currData[0].values.length;\r\n const m = inData[0].values.length;\r\n let idx = n - 1;\r\n const firstInData = inData[0].values[0];\r\n for (let i = idx; i >= 0; i--) {\r\n const lastCurrData = currData[0].values[i];\r\n if (firstInData[0] <= lastCurrData[0]) continue;\r\n idx = i;\r\n break;\r\n }\r\n for (let i = 0; i < m; i++) {\r\n currData[0].values[idx + i + 1] = inData[0].values[i];\r\n }\r\n }\r\n return currData;\r\n };\r\n\r\n if (!currentData) return inputData;\r\n if (!inputData) return currentData;\r\n // if there requestTreatmentDateTime IS baseTreatmentDateTime: return inputData\r\n if (baseDateTime === requestDateTime) return inputData;\r\n // if there is NO inputDate: return currentData\r\n const noInputRealtimeData = !inputData.realtimeData || !inputData.realtimeData[0];\r\n const noInputFracproData = !inputData.fracproData || !inputData.fracproData[0];\r\n if (noInputRealtimeData && noInputFracproData) return currentData;\r\n\r\n // else begin to concat data\r\n if (inputData.realtimeData && inputData.realtimeData[0]) {\r\n currentData.realtimeData = concat(currentData.realtimeData, inputData.realtimeData);\r\n }\r\n if (inputData.fracproData && inputData.fracproData[0]) {\r\n currentData.fracproData = concat(currentData.fracproData, inputData.fracproData);\r\n }\r\n\r\n const res: IInputDataMultiFlow = {\r\n realtimeData: [],\r\n fracproData: [],\r\n equipmentData: []\r\n };\r\n if (currentData.realtimeData && currentData.realtimeData[0]) res.realtimeData[0] = currentData.realtimeData[0];\r\n if (currentData.fracproData && currentData.fracproData[0]) res.fracproData[0] = currentData.fracproData[0];\r\n if (currentData.equipmentData && currentData.equipmentData[0]) res.equipmentData[0] = currentData.equipmentData[0];\r\n return res;\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Well NameWell API/UWIPadComplete DateService CompanyOperatorFormationCountyStateAvg Perf TVD {{ getUnitConveter(WELL_UNIT_TYPE.avgPerfTVD, 'ft') }}Total Proppant {{ getUnitConveter(WELL_UNIT_TYPE.totalProppantWt, 'lbm') }}Lateral Length {{ getUnitConveter(WELL_UNIT_TYPE.lateralLength, 'ft') }}
No data found
\\r\\n 0)\\\" [value]=\\\"well.selected\\\" (click)=\\\"toggleClickWell($event, well.selected)\\\" (change)=\\\"toggleSelectWell($event, well)\\\">\\r\\n {{ well.wellName }}\\r\\n 0) ? '' : '0'}\\\">{{!(well.treatmentList && well.treatmentList.length > 0) ? 'No data' : ''}}\\r\\n {{ well.wellUid }}{{ well.padName }}{{ well.completionDate | wellCompletionDate: well }}{{ well.serviceCompany }}{{ well.operatorCompany }}{{ well.formation }}{{ well.county }}{{ well.state }}{{ convertUnit(WELL_UNIT_TYPE.avgPerfTVD, well.avgPerfTVD, DEFAULT_DIGIT_AFTER_DECIMAL['avgPerfTVD']) }}{{ convertUnit(WELL_UNIT_TYPE.totalProppantWt, well.totalProppant, DEFAULT_DIGIT_AFTER_DECIMAL['totalProppantWt']) }}{{ convertUnit(WELL_UNIT_TYPE.lateralLength, well.lateralLength, DEFAULT_DIGIT_AFTER_DECIMAL['lateralLength']) }}
\\r\\n
\\r\\n\"","module.exports = \"/*\\r\\n.app-well-list-table {\\r\\n //overflow: visible;\\r\\n table {\\r\\n thead tr th {\\r\\n border: none;\\r\\n vertical-align: middle;\\r\\n position: relative;\\r\\n }\\r\\n tbody {\\r\\n //border-top: 10px solid #f5f6f6;\\r\\n tr {\\r\\n border-top: 2px solid #f5f6f6;\\r\\n &:hover {\\r\\n background-color: #e6f3ff !important;\\r\\n }\\r\\n &:active {\\r\\n background-color: #bdcbd7 !important;\\r\\n }\\r\\n }\\r\\n tr td {\\r\\n color: #36404b;\\r\\n border: none;\\r\\n }\\r\\n // for empty data\\r\\n tr td:only-child {\\r\\n display: none;\\r\\n }\\r\\n .ng2-smart-actions a.ng2-smart-action {\\r\\n border: none !important;\\r\\n width: 50%;\\r\\n }\\r\\n .no-data-treatment {\\r\\n padding: 3px 5px 2px 5px;\\r\\n border-radius: 2px;\\r\\n background-color: #e9585a;\\r\\n font-size: 8px;\\r\\n font-weight: bold;\\r\\n color: #ffffff;\\r\\n line-height: 1;\\r\\n white-space: nowrap;\\r\\n }\\r\\n }\\r\\n tbody tr:nth-of-type(odd) {\\r\\n background-color: #fff;\\r\\n }\\r\\n tbody tr:nth-of-type(even) {\\r\\n background-color: #eaf5fa;\\r\\n }\\r\\n }\\r\\n}\\r\\n*/\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFnZXMvd2VsbHMvd2VsbC1saXN0LXRhYmxlL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxccGFnZXNcXHdlbGxzXFx3ZWxsLWxpc3QtdGFibGVcXHdlbGwtbGlzdC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvd2VsbHMvd2VsbC1saXN0LXRhYmxlL3dlbGwtbGlzdC10YWJsZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NDbURDIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvd2VsbHMvd2VsbC1saXN0LXRhYmxlL3dlbGwtbGlzdC10YWJsZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbi5hcHAtd2VsbC1saXN0LXRhYmxlIHtcclxuICAvL292ZXJmbG93OiB2aXNpYmxlO1xyXG4gIHRhYmxlIHtcclxuICAgIHRoZWFkIHRyIHRoIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcbiAgICB0Ym9keSB7XHJcbiAgICAgIC8vYm9yZGVyLXRvcDogMTBweCBzb2xpZCAjZjVmNmY2O1xyXG4gICAgICB0ciB7XHJcbiAgICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNmNWY2ZjY7XHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmM2ZmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGNiZDcgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdHIgdGQge1xyXG4gICAgICAgIGNvbG9yOiAjMzY0MDRiO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgfVxyXG4gICAgICAvLyBmb3IgZW1wdHkgZGF0YVxyXG4gICAgICB0ciB0ZDpvbmx5LWNoaWxkIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgIC5uZzItc21hcnQtYWN0aW9ucyBhLm5nMi1zbWFydC1hY3Rpb24ge1xyXG4gICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgIH1cclxuICAgICAgLm5vLWRhdGEtdHJlYXRtZW50IHtcclxuICAgICAgICBwYWRkaW5nOiAzcHggNXB4IDJweCA1cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlOTU4NWE7XHJcbiAgICAgICAgZm9udC1zaXplOiA4cHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICB9XHJcbiAgICB0Ym9keSB0cjpudGgtb2YtdHlwZShldmVuKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiovXHJcbiIsIi8qXHJcbi5hcHAtd2VsbC1saXN0LXRhYmxlIHtcclxuICAvL292ZXJmbG93OiB2aXNpYmxlO1xyXG4gIHRhYmxlIHtcclxuICAgIHRoZWFkIHRyIHRoIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcbiAgICB0Ym9keSB7XHJcbiAgICAgIC8vYm9yZGVyLXRvcDogMTBweCBzb2xpZCAjZjVmNmY2O1xyXG4gICAgICB0ciB7XHJcbiAgICAgICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNmNWY2ZjY7XHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmM2ZmICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGNiZDcgIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdHIgdGQge1xyXG4gICAgICAgIGNvbG9yOiAjMzY0MDRiO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgfVxyXG4gICAgICAvLyBmb3IgZW1wdHkgZGF0YVxyXG4gICAgICB0ciB0ZDpvbmx5LWNoaWxkIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgIC5uZzItc21hcnQtYWN0aW9ucyBhLm5nMi1zbWFydC1hY3Rpb24ge1xyXG4gICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgIH1cclxuICAgICAgLm5vLWRhdGEtdHJlYXRtZW50IHtcclxuICAgICAgICBwYWRkaW5nOiAzcHggNXB4IDJweCA1cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlOTU4NWE7XHJcbiAgICAgICAgZm9udC1zaXplOiA4cHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICB9XHJcbiAgICB0Ym9keSB0cjpudGgtb2YtdHlwZShldmVuKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiovXG4iXX0= */\"","import {\r\n Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges, ViewChildren, QueryList,\r\n} from '@angular/core';\r\nimport { countBy, some, remove, cloneDeep, isEmpty, isNil } from 'lodash';\r\nimport { ToasterService } from '../../../shared/services/toaster.service';\r\nimport { SortEvent, SortableTableHeaderDirective } from '../../../shared/directives/sortable-table-header.directive';\r\nimport { DEFAULT_DIGIT_AFTER_DECIMAL, TREATMENT_UNIT_TYPE, WELL_UNIT_TYPE } from '../../../shared/helpers/app.constants';\r\nimport { UnitSystemService } from '../../../shared/services/unit-system.service';\r\nimport { formatNumber } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-well-list-table',\r\n templateUrl: './well-list-table.component.html',\r\n styleUrls: ['./well-list-table.component.scss']\r\n})\r\nexport class WellListTableComponent implements OnInit, OnChanges {\r\n WELL_UNIT_TYPE = WELL_UNIT_TYPE;\r\n DEFAULT_DIGIT_AFTER_DECIMAL = DEFAULT_DIGIT_AFTER_DECIMAL;\r\n listWells: any[] = [];\r\n listWellFull: any[] = [];\r\n tableState = {\r\n selectedAll: false\r\n };\r\n @Input() maxItemList: number;\r\n @Input() isCarboAdmin: boolean = false;\r\n @Input() isService: boolean = false;\r\n @Input() isOperator: boolean = false;\r\n @Input() isHideCheck: boolean = false;\r\n @Input()\r\n set itemList(listWells) {\r\n this.listWells = listWells;\r\n if (!this.isCarboAdmin) {\r\n const listWellsFake = cloneDeep(this.listWells);\r\n remove(listWellsFake, (item: any) => {\r\n return (item.treatmentList && item.treatmentList.length === 0);\r\n });\r\n this.checkAllSelect(listWellsFake);\r\n } else {\r\n this.checkAllSelect(this.listWells);\r\n }\r\n }\r\n\r\n @Output() rowSelect: EventEmitter = new EventEmitter();\r\n @Output() selectedChange: EventEmitter = new EventEmitter();\r\n @Output() sortChange: EventEmitter = new EventEmitter();\r\n\r\n @ViewChildren(SortableTableHeaderDirective) headers: QueryList;\r\n\r\n constructor(private toasterService: ToasterService, private unitSystemService: UnitSystemService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.listWells && !changes.listWells.isFirstChange()) {\r\n this.listWells = changes.listWells.currentValue;\r\n }\r\n }\r\n\r\n toggleClickWell(event, check: boolean) {\r\n if (!check) {\r\n const countSelected = countBy(this.listWellFull, 'selected').true || 0;\r\n if (countSelected > 100) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toasterService.showError('Wells must be choose at less than or equal to 100 with compare multiple well');\r\n }\r\n }\r\n }\r\n\r\n toggleSelectWell(event, well) {\r\n event.preventDefault();\r\n if (well) {\r\n well.selected = !well.selected;\r\n if (!this.isCarboAdmin) {\r\n const listWellsFake = cloneDeep(this.listWells);\r\n remove(listWellsFake, (item: any) => {\r\n return (item.treatmentList && item.treatmentList.length === 0);\r\n });\r\n this.checkAllSelect(listWellsFake);\r\n } else {\r\n this.checkAllSelect(this.listWells);\r\n }\r\n if (some(this.listWellFull, {wellId: well.wellId})) {\r\n this.removeWellOnList(well);\r\n } else {\r\n this.listWellFull.push(well);\r\n }\r\n const selectedWells = this.listWellFull;\r\n this.selectedChange.emit({ selected: [...selectedWells] });\r\n }\r\n }\r\n\r\n toggleClickAll(event , check: boolean) {\r\n if (!check) {\r\n const count = this.listWellFull.length;\r\n if (count > 100) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toasterService.showError('Wells must be choose at less than or equal to 100 with compare multiple well');\r\n }\r\n }\r\n }\r\n\r\n toggleSelectAll(event) {\r\n event.preventDefault();\r\n this.tableState.selectedAll = !this.tableState.selectedAll;\r\n setTimeout(() => {\r\n this.setSelectedWells(this.tableState.selectedAll);\r\n this.selectedChange.emit({ selected: [...this.listWellFull] });\r\n });\r\n }\r\n\r\n setSelectedWells(value) {\r\n if (this.listWells && this.listWells.length > 0) {\r\n this.listWells.forEach(well => {\r\n if (well.treatmentList && well.treatmentList.length > 0 || this.isCarboAdmin) {\r\n well.selected = value;\r\n if (value) {\r\n if (!some(this.listWellFull, well)) {\r\n this.listWellFull.push(well);\r\n }\r\n } else {\r\n this.removeWellOnList(well);\r\n }\r\n } else {\r\n well.selected = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n removeWellOnList(well) {\r\n remove(this.listWellFull, item => {\r\n return item.wellId === well.wellId;\r\n });\r\n }\r\n\r\n clickRowSelect(e: any) {\r\n this.rowSelect.emit(e);\r\n }\r\n\r\n removeAllSelected() {\r\n this.tableState.selectedAll = false;\r\n this.listWellFull = [];\r\n }\r\n\r\n checkAllSelect(wellList: any[]) {\r\n const countSelected = countBy(wellList, 'selected').true || 0;\r\n if (isEmpty(wellList) || countSelected !== wellList.length) {\r\n this.tableState.selectedAll = false;\r\n } else {\r\n this.tableState.selectedAll = true;\r\n }\r\n }\r\n\r\n onSort({column, direction}: SortEvent) {\r\n // resetting other headers\r\n this.headers.forEach(header => {\r\n if (header.sortable !== column) {\r\n header.direction = '';\r\n }\r\n });\r\n this.sortChange.emit({column, direction});\r\n }\r\n\r\n getUnitConveter(measureType: string, curUnit: string): string {\r\n if (isNil(measureType) || !measureType.length) return curUnit ? `(${curUnit})` : '';\r\n else {\r\n const unit = this.unitSystemService.getUnit(measureType, undefined, curUnit);\r\n return unit ? `(${unit})` : '';\r\n }\r\n }\r\n\r\n convertUnit(measureType: string, value, decimal?: number): number | string {\r\n return this.unitSystemService.getValueConvert(measureType, value, decimal);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isEmpty } from 'lodash';\r\n\r\nexport interface IWellsCompareInputData {\r\n compareType: string;\r\n parameterSelect: any[];\r\n channelSelect: any[];\r\n treatmentSelect: any[];\r\n wellSelect: any[];\r\n};\r\n\r\n@Injectable()\r\nexport class WellsCompareDataService {\r\n inputData: IWellsCompareInputData;\r\n channelList: any[];\r\n parameterList: any[];\r\n treatmentList: any[];\r\n treatmentSelectDetails: any = {};\r\n\r\n\r\n constructor() { }\r\n\r\n setInputData(input: IWellsCompareInputData): void {\r\n this.inputData = {...input};\r\n }\r\n\r\n getInputData() {\r\n return this.inputData;\r\n }\r\n\r\n resetInputData() {\r\n this.inputData = null;\r\n }\r\n\r\n resetData() {\r\n this.inputData = null;\r\n this.channelList = [];\r\n this.parameterList = [];\r\n this.treatmentList = [];\r\n this.treatmentSelectDetails = {};\r\n }\r\n\r\n setChannelList(data) {\r\n this.channelList = data;\r\n }\r\n\r\n getChannelList() {\r\n return this.channelList;\r\n }\r\n\r\n setParameterList(data) {\r\n this.parameterList = data;\r\n }\r\n\r\n getParameterList() {\r\n return this.parameterList;\r\n }\r\n\r\n setTreatmentList(data) {\r\n this.treatmentList = data;\r\n }\r\n\r\n getTreatmentList() {\r\n return this.treatmentList;\r\n }\r\n\r\n toGroupParametersList(listParameters) {\r\n const result = {\r\n listISIPOptions: [],\r\n listPressureOptions: [],\r\n listSlurryRateOptions: [],\r\n listMassOptions: [],\r\n listVolumeOptions: [],\r\n listProppantConcOptions: [],\r\n listFDIOptions: [],\r\n listTimeOptions: []\r\n }\r\n if (!isEmpty(listParameters)) {\r\n listParameters.splice(0, 0, '');\r\n // ISIP\r\n result.listISIPOptions.push({ id: listParameters[32].id, text: \"ISIP (Final)\" });\r\n result.listISIPOptions.push({ id: listParameters[31].id, text: \"ISIP Gradient (Final)\" });\r\n result.listISIPOptions.push({ id: listParameters[37].id, text: \"ISIP (Early)\" });\r\n result.listISIPOptions.push({ id: listParameters[45].id, text: \"ISIP Gradient (Early)\" });\r\n result.listISIPOptions.push({ id: listParameters[46].id, text: \"Btm Pressure (ISIP)\" });\r\n // Pressure\r\n result.listPressureOptions.push({ id: listParameters[25].id, text: \"Pressure (Average)\" });\r\n result.listPressureOptions.push({ id: listParameters[8].id, text: \"Pressure (Maximum)\" });\r\n result.listPressureOptions.push({ id: listParameters[21].id, text: \"Pressure (Ballseat)\" });\r\n result.listPressureOptions.push({ id: listParameters[17].id, text: \"Pressure (Breakdown)\" });\r\n result.listPressureOptions.push({ id: listParameters[4].id, text: \"Pressure (Well Opening)\" });\r\n result.listPressureOptions.push({ id: listParameters[49].id, text: \"Btm Pressure (Maximum)\" });\r\n result.listPressureOptions.push({ id: listParameters[50].id, text: \"Btm Pressure (Average)\" });\r\n // Slurry\r\n result.listSlurryRateOptions.push({ id: listParameters[9].id, text: \"Slurry Rate (Maximum)\" });\r\n result.listSlurryRateOptions.push({ id: listParameters[26].id, text: \"Slurry Rate (Average)\" });\r\n result.listSlurryRateOptions.push({ id: listParameters[22].id, text: \"Slurry Rate (Ballseat)\" });\r\n result.listSlurryRateOptions.push({ id: listParameters[18].id, text: \"Slurry Rate (Breakdown)\" });\r\n result.listSlurryRateOptions.push({ id: listParameters[44].id, text: \"Slurry Rate (Pump Down)\" });\r\n // Mass\r\n result.listMassOptions.push({ id: listParameters[29].id, text: \"Mass (Total Proppant)\" });\r\n // Volume\r\n result.listVolumeOptions.push({ id: listParameters[28].id, text: \"Volume (Slurry)\" });\r\n result.listVolumeOptions.push({ id: listParameters[27].id, text: \"Volume (Clean)\" });\r\n result.listVolumeOptions.push({ id: listParameters[23].id, text: \"Volume (Ballseat)\" });\r\n result.listVolumeOptions.push({ id: listParameters[19].id, text: \"Volume (Breakdown)\" });\r\n result.listVolumeOptions.push({ id: listParameters[24].id, text: \"Volume (Pumpdown)\" });\r\n result.listVolumeOptions.push({ id: listParameters[51].id, text: \"Volume (Design Rate)\" });\r\n // Proppant Conc\r\n result.listProppantConcOptions.push({ id: listParameters[11].id, text: \"Proppant Conc (Average)\" });\r\n result.listProppantConcOptions.push({ id: listParameters[10].id, text: \"Proppant Conc (Maximum)\" });\r\n // FDI\r\n result.listFDIOptions.push({ id: listParameters[55].id, text: \"VFR\"});\r\n result.listFDIOptions.push({ id: listParameters[56].id, text: \"%VFR\"});\r\n result.listFDIOptions.push({ id: listParameters[53].id, text: \"Net Pressure Gain\"});\r\n result.listFDIOptions.push({ id: listParameters[54].id, text: \"Gross Pressure Gain\"});\r\n result.listFDIOptions.push({ id: listParameters[59].id, text: \"Pre FDI Pressure Trend\"});\r\n result.listFDIOptions.push({ id: listParameters[60].id, text: \"Avg FDI Pressure Trend\"});\r\n result.listFDIOptions.push({ id: listParameters[61].id, text: \"Max FDI Pressure Trend\"});\r\n result.listFDIOptions.push({ id: listParameters[57].id, text: \"Avg FDI Intensity\"});\r\n result.listFDIOptions.push({ id: listParameters[58].id, text: \"Max FDI Intensity\"});\r\n // Time\r\n result.listTimeOptions.push({ id: listParameters[5].id, text: \"Time (Pumping)\" });\r\n result.listTimeOptions.push({ id: listParameters[52].id, text: \"Time (Design Rate)\" });\r\n }\r\n return result;\r\n }\r\n\r\n setTreatmentSelectedDetail(data) {\r\n this.treatmentSelectDetails = data;\r\n }\r\n\r\n getTreatmentSelectDetails() {\r\n return this.treatmentSelectDetails;\r\n }\r\n}\r\n\r\nexport const OBJ_FDI_PARAMS = {\r\n NetGainPress: \"NetGainPress\",\r\n GrossGainPress: \"GrossGainPress\",\r\n VolToFrstResp: \"VolToFrstResp\",\r\n VolToFrstRespPercent: \"VolToFrstRespPercent\",\r\n AvgSlope: \"AvgSlope\",\r\n MaxSlope: \"MaxSlope\",\r\n PreFdiPressure: \"PreFdiPressure\",\r\n AvgFdiPressure: \"AvgFdiPressure\",\r\n MaxFdiPressure: \"MaxFdiPressure\"\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { of, from, Observable } from 'rxjs';\r\nimport { delay, map, mergeMap, filter } from 'rxjs/operators';\r\nimport { TreatmentService } from '../../shared/services/treatment.service';\r\nimport { DataFilesService } from '../../shared/services/data-files.service';\r\n\r\nexport interface ITreatmentAvgMDItem {\r\n id: number;\r\n name: string;\r\n avgMD: number;\r\n}\r\n\r\n@Injectable()\r\nexport class WellsCompareLogDataService {\r\n\r\n constructor(\r\n private treatmentService: TreatmentService,\r\n private dataFilesService: DataFilesService\r\n ) { }\r\n\r\n getLogDataFiles(wellId) {\r\n return this.dataFilesService.getByWell(wellId).pipe(map(res => {\r\n return res.result.filter(file => {\r\n return file.dataFile && file.dataFile.indexOf('.las') > -1;\r\n });\r\n }))\r\n .pipe(map(res => {\r\n return res.map(item => ({\r\n id: item.dataFile,\r\n text: item.dataFile\r\n }));\r\n }));\r\n }\r\n\r\n getListCurves(fileName, wellId) {\r\n return this.dataFilesService.getCurvesDasFile(fileName, wellId).pipe(map(res => {\r\n return res.result;\r\n })).pipe(map(res => {\r\n return res.map(item => ({\r\n id: item.name,\r\n unit: item.unit,\r\n text: item.name\r\n }));\r\n }));\r\n }\r\n\r\n getLogDataCurve(fileName, wellId, curve) {\r\n return this.dataFilesService.getLogDataCurveDasFile(fileName, wellId, curve.toLowerCase()).pipe(map(res => {\r\n return {\r\n columns: ['DEPTH', `${curve}`],\r\n values: res.result.map(item => {\r\n return [item.depth, item.column];\r\n })\r\n };\r\n }));\r\n }\r\n\r\n getTreatmentAvgMD(wellId, treatmentId, treatmentName): Observable {\r\n return this.treatmentService.getTreatmentDetail(wellId, treatmentId).pipe(\r\n map(res => {\r\n let avgMD = null;\r\n if (res.result) {\r\n avgMD = (res.result.topPerfMD + res.result.bottomPerfMD) / 2;\r\n }\r\n return {\r\n id: treatmentId,\r\n name: treatmentName,\r\n avgMD: avgMD\r\n };\r\n })\r\n );\r\n }\r\n\r\n getTreatmentDetails(wellId, treatmentId, treatmentName): Observable {\r\n return this.treatmentService.getTreatmentDetail(wellId, treatmentId).pipe(\r\n map(response => {\r\n if (!response.result) return null;\r\n const treatmentDetail = response.result;\r\n const avgMD = (treatmentDetail.topPerfMD + treatmentDetail.bottomPerfMD) / 2;\r\n return {\r\n id: treatmentId,\r\n name: treatmentName,\r\n wellId: wellId,\r\n avgMD: avgMD,\r\n desPumpTime: treatmentDetail.desPumpTime / 60, // sec to min\r\n desCleanVol: treatmentDetail.desCleanVol,\r\n desSlurryVol: treatmentDetail.desSlurryVol,\r\n totalPumpTime: treatmentDetail.totalPumpTime / 60, // sec to min\r\n baseFluidVol: treatmentDetail.baseFluidVol,\r\n totalVolume: treatmentDetail.totalVolume\r\n };\r\n })\r\n );\r\n }\r\n\r\n getTreatmentDataForCompareWell(wellId, treatmentId: number, treatmentName: string): Observable {\r\n return this.treatmentService.getTreatmentData(wellId, treatmentId)\r\n .pipe(map(treatmentDetail => {\r\n if (!treatmentDetail) return null;\r\n const avgMD = (treatmentDetail.topPerfMD + treatmentDetail.bottomPerfMD) / 2;\r\n return {\r\n id: treatmentId,\r\n name: treatmentName,\r\n wellId: wellId,\r\n avgMD: avgMD,\r\n desPumpTime: treatmentDetail.desPumpTime / 60, // sec to min\r\n desCleanVol: treatmentDetail.desCleanVol,\r\n desSlurryVol: treatmentDetail.desSlurryVol,\r\n totalPumpTime: treatmentDetail.totalPumpTime / 60, // sec to min\r\n baseFluidVol: treatmentDetail.baseFluidVol,\r\n totalVolume: treatmentDetail.totalVolume\r\n };\r\n }));\r\n }\r\n\r\n getTreatmentsDataForCompareWell(wellId, treatmentsInput?: { treatmentId: number, treatmentNumber: number, treatmentName?: string }[]): Observable {\r\n const treatmentIds = treatmentsInput.map(item => item.treatmentId);\r\n return this.treatmentService.getTreatmentsData(wellId, treatmentIds).pipe(\r\n map(response => {\r\n return response.map(treatment => {\r\n const topPerfMD = !treatment.topPerfMD ? 0 : treatment.topPerfMD;\r\n const bottomPerfMD = !treatment.bottomPerfMD ? 0 : treatment.bottomPerfMD;\r\n const treatmentExist = treatmentsInput.find(item => item.treatmentNumber === treatment.number);\r\n const treatmentId = treatmentExist ? treatmentExist.treatmentId : 0;\r\n const treatmentName = treatmentExist.treatmentName ? treatmentExist.treatmentName : treatmentExist.treatmentNumber.toString();\r\n\r\n return {\r\n id: treatmentId,\r\n name: treatmentName,\r\n wellId: wellId,\r\n avgMD: (topPerfMD + bottomPerfMD) / 2,\r\n desPumpTime: treatment.desPumpTime / 60, // sec to min\r\n desCleanVol: treatment.desCleanVol,\r\n desSlurryVol: treatment.desSlurryVol,\r\n totalPumpTime: treatment.totalPumpTime / 60, // sec to min\r\n baseFluidVol: treatment.baseFluidVol,\r\n totalVolume: treatment.totalVolume\r\n };\r\n });\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { WellsCompareDataService, IWellsCompareInputData } from './wells-compare-data.service';\r\nimport { of } from 'rxjs';\r\n\r\n\r\n@Injectable()\r\nexport class WellsCompareResolver implements Resolve {\r\n constructor(\r\n private router: Router,\r\n private wellsCompareDataService: WellsCompareDataService,\r\n ) { }\r\n\r\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const inputData = this.wellsCompareDataService.getInputData();\r\n if (inputData) {\r\n return of(inputData);\r\n } else {\r\n this.router.navigate(['pages/wells']);\r\n return of(null);\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ titleHeader }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Channels\\r\\n All Channels\\r\\n Color Mode\\r\\n -\\r\\n Color\\r\\n -\\r\\n \\r\\n Minimum\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Maximum\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Digits\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n = 6)}\\\"\\r\\n [idField]=\\\"'name'\\\" [textField]=\\\"'name'\\\"\\r\\n [item]=\\\"realtimeChannels\\\"\\r\\n [fracproItem]=\\\"fracproChannels\\\"\\r\\n [active]=\\\"channelsActived\\\"\\r\\n [curActiveItemIndex]=\\\"itemIndex\\\"\\r\\n [autoClose]=\\\"false\\\"\\r\\n [allowEmpty]=\\\"false\\\"\\r\\n [multiple]=\\\"true\\\"\\r\\n [isFullWidth]=\\\"true\\\"\\r\\n [placeholder]=\\\"'Choose Channel(s)'\\\"\\r\\n (selected)=\\\"selectChannels(settings.channels, $event)\\\"\\r\\n >\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n = 6)}\\\"\\r\\n [item]=\\\"colorModeList\\\"\\r\\n [active]=\\\"[item.colorMode]\\\"\\r\\n [sortSelect]=\\\"false\\\"\\r\\n [searchField]=\\\"false\\\"\\r\\n [allowEmpty]=\\\"false\\\"\\r\\n [placeholder]=\\\"'Choose Color Mode'\\\"\\r\\n (selected)=\\\"selectColorMode(item, $event)\\\"\\r\\n [disabled]=\\\"disabledEditColorMode\\\"\\r\\n >\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{!(convertUnit(item.measureType, item.min) === 0 && convertUnit(item.measureType, item.max) === 0) ? (convertUnit(item.measureType, item.min)) : ''}}\\r\\n \\r\\n {{!(convertUnit(item.measureType, item.min) === 0 && convertUnit(item.measureType, item.max) === 0) ? (convertUnit(item.measureType, item.max)) : ''}}\\r\\n \\r\\n \\r\\n 3}\\\"\\r\\n [sortSelect]=\\\"false\\\"\\r\\n [searchField]=\\\"false\\\"\\r\\n [isFullWidth]=\\\"true\\\" (selected)=\\\"onChangeDigitsAfterDecimalOptions(item, $event)\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".channel-container .app-table-container {\\n overflow: visible; }\\n .channel-container .app-table-container .table-default th:last-child, .channel-container .app-table-container .table-default td:last-child {\\n padding-right: 24px; }\\n .channel-container .table-sub-header .child-header {\\n margin-top: 5px; }\\n .channel-container .input-color {\\n border: 0;\\n border-radius: 50%;\\n width: 16px;\\n height: 16px;\\n color: transparent;\\n cursor: pointer;\\n padding: 8px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hhbm5lbC1zZXR0aW5nLXlheGlzL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxjaGFubmVsLXNldHRpbmcteWF4aXNcXGNoYW5uZWwtc2V0dGluZy15YXhpcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUVJLGlCQUFpQixFQUFBO0VBRnJCO0lBTVUsbUJBQW1CLEVBQUE7RUFON0I7RUFhTSxlQUFlLEVBQUE7RUFickI7RUFrQkksU0FBUTtFQUNSLGtCQUFpQjtFQUNqQixXQUFVO0VBQ1YsWUFBVztFQUNYLGtCQUFrQjtFQUNsQixlQUFjO0VBQ2QsWUFBWSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hhbm5lbC1zZXR0aW5nLXlheGlzL2NoYW5uZWwtc2V0dGluZy15YXhpcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGFubmVsLWNvbnRhaW5lciB7XHJcbiAgLmFwcC10YWJsZS1jb250YWluZXIge1xyXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICAudGFibGUtZGVmYXVsdCB7XHJcbiAgICAgIHRoLCB0ZCB7XHJcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC50YWJsZS1zdWItaGVhZGVyIHtcclxuICAgIC5jaGlsZC1oZWFkZXIge1xyXG4gICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuaW5wdXQtY29sb3Ige1xyXG4gICAgYm9yZGVyOjA7XHJcbiAgICBib3JkZXItcmFkaXVzOjUwJTtcclxuICAgIHdpZHRoOjE2cHg7XHJcbiAgICBoZWlnaHQ6MTZweDtcclxuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGN1cnNvcjpwb2ludGVyO1xyXG4gICAgcGFkZGluZzogOHB4O1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import { formatNumber } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { isEmpty, forEach, isNil } from 'lodash';\r\nimport { DefaultColor, ENUM_COLOR_MODE } from '../../helpers/app.constants';\r\nimport { Helper } from '../../helpers/helper';\r\nimport { IChannelSettingModel } from '../../models/channel.model';\r\nimport { ChannelSelectionService, DIGITS_AFTER_DECIMAL_DEFAULT, ToasterService } from '../../services';\r\nimport { TreatmentService } from '../../services/treatment.service';\r\nimport { UnitSystemService } from '../../services/unit-system.service';\r\n\r\nexport interface IChannelSettingYAxis {\r\n min: number;\r\n max: number;\r\n channels: any[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-channel-setting-yaxis',\r\n templateUrl: './channel-setting-yaxis.component.html',\r\n styleUrls: ['./channel-setting-yaxis.component.scss']\r\n})\r\nexport class ChannelSettingYaxisComponent implements OnInit {\r\n defaultColor: any[] = DefaultColor;\r\n numeralOption = {\r\n numeral: true,\r\n numeralThousandsGroupStyle: 'thousand',\r\n };\r\n\r\n settings: IChannelSettingYAxis = {\r\n min: 0,\r\n max: 150,\r\n channels: []\r\n };\r\n\r\n @Input() isDisplayDigits: boolean;\r\n @Input() multipleSelection: boolean;\r\n @Input() simpleMode: boolean = false;\r\n\r\n @Input() wellId: number;\r\n @Input() treatmentId: number;\r\n @Input() flowPathType: number;\r\n @Input() titleHeader: string;\r\n @Input() compareChannel: boolean = false;\r\n @Input() equipmentId: number;\r\n @Input() uniqueKey: string = 'cName';\r\n @Input() autoScaleYAxis: boolean = true;\r\n @Input() ngSelectUp: boolean = false;\r\n @Input() realtimeChannels: any[] = [];\r\n @Input() fracproChannels: any[] = [];\r\n @Input() settingsModel: IChannelSettingModel;\r\n @Input() showChannelMinMax: boolean = true;\r\n @Input() disabledEditColorMode: boolean = false;\r\n @Input() compareChannelsSelected: { cName: string, name: string, min: number, max: number }[];\r\n\r\n channelsActived: any[] = [];\r\n\r\n @Input()\r\n set yAxisModel(data: IChannelSettingYAxis) {\r\n if (data) {\r\n data.channels = data.channels.map(item => {\r\n if (item && item.channel) {\r\n item.channel.digits = item.channel.digits !== undefined && item.channel.digits !== null ? item.channel.digits : this.digitsAfterDecimalValue;\r\n }\r\n return item;\r\n });\r\n this.settings = data;\r\n this.channelsActived = this.settings.channels.map(item => item && item.channel);\r\n if (!!this.simpleMode) {\r\n this.settings.max = null;\r\n this.settings.min = null;\r\n }\r\n }\r\n }\r\n @Input()\r\n set compareWellCount(count: number) {\r\n this.colorModeDefault = count > 1 ? [ENUM_COLOR_MODE.Flat] : [ENUM_COLOR_MODE.Gradient];\r\n }\r\n\r\n @Output() onCreateChannel: EventEmitter = new EventEmitter();\r\n @Output() onDeleteChannel: EventEmitter = new EventEmitter();\r\n @Output() onChangeChannel: EventEmitter = new EventEmitter();\r\n\r\n colorPickerValue: string = Helper.randomHexColor();\r\n colorModeList: string[] = [ENUM_COLOR_MODE.Random, ENUM_COLOR_MODE.Flat, ENUM_COLOR_MODE.Gradient];\r\n colorModeDefault: string[] = [ENUM_COLOR_MODE.Gradient];\r\n isShowAddChannel: boolean = false;\r\n isDisableAddChannel: boolean = false;\r\n\r\n digitsAfterDecimalOptions: string[] = ['0', '1', '2', '3', '4'];\r\n digitsAfterDecimalValue: string = DIGITS_AFTER_DECIMAL_DEFAULT;\r\n\r\n constructor(\r\n private toasterService: ToasterService,\r\n private treatmentService: TreatmentService,\r\n private channelSelectionService: ChannelSelectionService,\r\n private unitSystemService: UnitSystemService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onRemoveChannel(item, index) {\r\n this.settings.channels.splice(index, 1);\r\n this.channelsActived = this.settings.channels.map(item => item && item.channel);\r\n this.onDeleteChannel.emit(item);\r\n }\r\n\r\n isDuplicate(channel): boolean {\r\n try {\r\n const selectedChannels = [\r\n ...this.settingsModel.firstLeft.channels,\r\n ...this.settingsModel.secondLeft.channels,\r\n ...this.settingsModel.firstRight.channels,\r\n ...this.settingsModel.secondRight.channels,\r\n ];\r\n const existed = selectedChannels.find(item => item.channel[this.uniqueKey] === channel[this.uniqueKey]);\r\n return !!existed;\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n\r\n selectChannels(channels, event) {\r\n const channel = Helper.findInMultiList([this.realtimeChannels, this.fracproChannels], 'name', event.id);\r\n if (!channel) return;\r\n\r\n if (!channels) return;\r\n\r\n const isDuplicated = this.isDuplicate(channel);\r\n if (isDuplicated) {\r\n const removeIndex = channels.findIndex(item => item.name === channel.name);\r\n if (removeIndex > -1) this.onRemoveChannel(channels[removeIndex], removeIndex);\r\n } else {\r\n this.addChannel(channels);\r\n\r\n channels[channels.length - 1] = Object.assign(channels[channels.length - 1], channel);\r\n channels[channels.length - 1].channel = { ...channel };\r\n if (!channels[channels.length - 1].color) channels[channels.length - 1].color = Helper.getRandomColor();\r\n\r\n // emit on change event and map minmax if need\r\n this.onChangeChannel.emit(channels[channels.length - 1]);\r\n this.mapChannelMinMax(channels[channels.length - 1], channels.length - 1);\r\n }\r\n\r\n this.channelsActived = this.settings.channels.map(item => item && item.channel);\r\n }\r\n\r\n selectChannel(item, event, itemIndex) {\r\n const channel = Helper.findInMultiList([this.realtimeChannels, this.fracproChannels], 'name', event.id);\r\n if (!channel) return;\r\n const isDuplicated = this.isDuplicate(channel);\r\n if (isDuplicated) this.toasterService.showError('This channel is already added');\r\n\r\n item = Object.assign(item, channel);\r\n item.channel = { ...channel };\r\n if (!item.color) item.color = Helper.getRandomColor();\r\n\r\n // emit on change event and map minmax if need\r\n this.onChangeChannel.emit(item);\r\n this.mapChannelMinMax(item, itemIndex);\r\n if (!isDuplicated) {\r\n this.channelsActived = this.settings.channels.map(item => item && item.channel);\r\n }\r\n }\r\n\r\n private getChannelIdData = item => {\r\n const isDefault = !item.channel || !item.channel.isOffset;\r\n return {\r\n wellId: isDefault ? this.wellId : item.channel.wellId,\r\n treatmentId: isDefault ? this.treatmentId : item.channel.treatmentId,\r\n };\r\n }\r\n\r\n private updateScale(item, itemIndex) {\r\n // in edit mode, only update axis scale if select on first item\r\n // case add new channel, the list channel must empty\r\n if ((itemIndex === 0 && this.settings.channels.length === 1) || (this.isShowAddChannel && isEmpty(this.settings.channels))) {\r\n this.autoUpdateScale(item.min, item.max);\r\n }\r\n }\r\n\r\n private mapChannelMinMax(item, itemIndex) {\r\n if (!!this.simpleMode) {\r\n item.min = null;\r\n item.max = null;\r\n } else {\r\n if (!item.channel || !item.channel.cName) return;\r\n const cNames = [item.channel.cName];\r\n if (!this.compareChannel) {\r\n const { wellId, treatmentId } = this.getChannelIdData(item);\r\n if (wellId && treatmentId && !isEmpty(cNames)) {\r\n this.treatmentService.getChannelsMinMax(wellId, treatmentId, this.flowPathType, cNames).subscribe(response => {\r\n if (!response || !response.result.length) return;\r\n const channel = response.result[0];\r\n item.min = channel.min;\r\n item.max = channel.max;\r\n this.updateScale(channel, itemIndex);\r\n }, err => err);\r\n } else if (this.equipmentId) {\r\n this.treatmentService.getChannelsMinMaxEquipment(this.equipmentId, cNames).subscribe(response => {\r\n if (!response || !response.result.length) return;\r\n const channel = response.result[0];\r\n item.min = channel.min;\r\n item.max = channel.max;\r\n this.updateScale(channel, itemIndex);\r\n }, err => err);\r\n }\r\n } else {\r\n if (!isEmpty(this.compareChannelsSelected)) {\r\n const selectingChannel = this.compareChannelsSelected.find(channel => channel.name === item.channel.name);\r\n if (selectingChannel) {\r\n item.min = selectingChannel.min;\r\n item.max = selectingChannel.max;\r\n }\r\n }\r\n this.updateScale(item, itemIndex);\r\n }\r\n }\r\n }\r\n\r\n selectColor(item, event) {\r\n item.color = event;\r\n }\r\n\r\n selectColorMode(item, event) {\r\n item.colorMode = event.text;\r\n }\r\n\r\n autoUpdateScale(min, max) {\r\n this.settings.min = min;\r\n this.settings.max = this.channelSelectionService.roundUpMaxValue(max);\r\n // if (this.settings && min <= max) {\r\n // this.settings.min = min || 0;\r\n // this.settings.max = this.channelSelectionService.roundUpMaxValue(max);\r\n // if (this.settings.min === 0 && this.settings.max === 0) {\r\n // this.settings.max = 150;\r\n // }\r\n // }\r\n }\r\n\r\n addChannel(channels: any[]) {\r\n if (channels) {\r\n const isAllowNew = !isEmpty(channels) && channels[channels.length - 1].channel;\r\n if (channels.length === 0 || isAllowNew) {\r\n const newChannel = {\r\n color: this.colorPickerValue,\r\n colorMode: this.colorModeDefault[0],\r\n digits: this.digitsAfterDecimalValue\r\n };\r\n if (this.disabledEditColorMode) {\r\n // this.colorModeDefault = this.compareWellCount > 1 ? [ENUM_COLOR_MODE.Flat] : [ENUM_COLOR_MODE.Gradient];\r\n newChannel.colorMode = this.colorModeDefault[0];\r\n }\r\n channels.push(newChannel);\r\n this.onCreateChannel.emit(newChannel);\r\n }\r\n }\r\n }\r\n\r\n onChangeDigitsAfterDecimalOptions(item, digits) {\r\n if (digits && digits.id) {\r\n item.digits = digits.id;\r\n this.onChangeChannel.emit(item);\r\n }\r\n }\r\n\r\n convertUnit(measureType: string, value, decimal?: number): number | string {\r\n return this.unitSystemService.getValueConvert(measureType, value, decimal);\r\n }\r\n\r\n}\r\n","export * from './multi-flow-data-chart/multi-flow-data-chart.component';\r\nexport * from './single-well-multi-treatment-chart/single-well-multi-treatment-chart.component';\r\nexport * from './multi-well-chart/multi-well-chart.component';\r\nexport * from './scatter-plot-parameter-chart/scatter-plot-parameter-chart.component';\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9tdWx0aS1mbG93LWRhdGEtY2hhcnQvbXVsdGktZmxvdy1kYXRhLWNoYXJ0LmNvbXBvbmVudC5zY3NzIn0= */\"","import { KEY_SCROLLBAR_SETTINGS, ScrollbarChartSettingsService, OFFSET_DATA_BEFORE_TREATMENT_START, OFFSET_DATA_AFTER_TREATMENT_END } from './../../../services/scrollbar-chart-settings.service';\r\nimport { Component, OnInit, Input, OnChanges, SimpleChanges, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, OnDestroy, ComponentFactoryResolver } from '@angular/core';\r\nimport { isEmpty, isString, isNumber, forEach, isNil, capitalize } from 'lodash';\r\nimport * as Highcharts from 'highcharts';\r\nimport HC_exporting from 'highcharts/modules/exporting';\r\nimport HC_offline_exporting from 'highcharts/modules/offline-exporting';\r\nimport HC_noData from 'highcharts/modules/no-data-to-display';\r\nimport HC_annotations from 'highcharts/modules/annotations';\r\nimport HC_draggablePoints from 'highcharts/modules/draggable-points';\r\nHC_annotations(Highcharts);\r\nHC_noData(Highcharts);\r\nHC_exporting(Highcharts);\r\nHC_offline_exporting(Highcharts);\r\nHC_draggablePoints(Highcharts);\r\n\r\nimport { IChannelSettingModel, ITimeSetting, IInputDataMultiFlow, IChartDataState, IOffsetDataState, IInputDataChart, IChannelItem } from '../../../../shared/models';\r\nimport { BaseChartService, TIMEFLOAT_CHANNEL_NAME, FRACPRO_TIMEFLOAT_CNAME, DATETIME_CHANNEL_NAME, EQUIPMENT_TIMEFLOAT_CNAME, ENUM_CURSOR_OPTS, CURSOR_OPT_DEFAULT } from '../../../../shared/services/charts/base-chart.service';\r\nimport { ChannelSelectionService } from '../../../services';\r\nimport { of, forkJoin, from, Subscription } from 'rxjs';\r\nimport { delay, finalize } from 'rxjs/operators';\r\nimport { CHART_MESSAGES, CHART_SERIES_NAME, ENUM_THEMES, ENUM_LOS_DEFAULTS, FDI_PARAM, FDI_PARAM_TENANT, INPUT_DATA_KEY, LOS_DEFAULTS, TIME_SETTING_TYPE, YAXIS_KEYS } from '../../../helpers/app.constants';\r\nimport { CustomDataPoint, IDiagnosticPoint, IDiagnosticPointDataChange } from '../../../models/diagnostic-points.model';\r\nimport { IOffsetWellCompare } from '../../../models/offset-well-compare.model';\r\nimport { CompareOffsetChannelsService } from '../../../services/compare-offset-channels.service';\r\nimport { ID_YAXIS_FDI, TreatmentPlotFdiService } from '../../treatment-plot/treatment-plot-fdi.service';\r\nimport { IFdiDropEventData, TreatmentPlotFDI } from '../../treatment-plot/treatment-plot-fdi.model';\r\nimport { ITreatmentItem } from '../../../models/treatment.model';\r\nimport { Helper } from '../../../helpers/helper';\r\n\r\nimport * as moment from 'moment';\r\nimport * as momentTz from 'moment-timezone';\r\nimport { ThemesSettingsService } from '../../../services/themes-settings.service';\r\nimport { UnitSystemService } from '../../../services/unit-system.service';\r\n(window as any).moment = moment;\r\n(window as any).momentTz = momentTz;\r\n\r\nexport const INPUT_DATA_FLOWS_KEYS = [INPUT_DATA_KEY.fracproData, INPUT_DATA_KEY.realtimeData, INPUT_DATA_KEY.equipmentData];\r\n\r\nexport const CHART_ID_DEFAULT = 'multi-flow-chart';\r\n\r\n@Component({\r\n selector: 'app-multi-flow-data-chart',\r\n templateUrl: './multi-flow-data-chart.component.html',\r\n styleUrls: ['./multi-flow-data-chart.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MultiFlowDataChartComponent implements OnInit, OnChanges, OnDestroy {\r\n subscriptions: Subscription[] = [];\r\n\r\n @Input() companyId: number;\r\n @Input() chartId: string = CHART_ID_DEFAULT;\r\n @Input() chartHeight: string = '620px';\r\n @Input() chartWidth: string = '100%';\r\n\r\n @Input()\r\n set inputState(state: IChartDataState) {\r\n if (state) {\r\n this.channelSettings = state.channelSettings;\r\n this.filterSettings = state.filterSettings;\r\n this.inputChartData = state.inputData;\r\n this.offsetDataState = state.offsetDataState;\r\n this.timezoneOffset = state.timezoneOffset;\r\n this.listDiagnosticPoints = state.listDiagnosticPoints;\r\n this.losPoints = state.losPoints;\r\n this.baseTreatmentDataTime = state.baseTreatmentDataTime;\r\n this.treatmentInfo = state.treatmentInfo;\r\n this.wellInfo = state.wellInfo;\r\n this.realtimeChannels = state.realtimeChannels;\r\n this.fracProChannels = state.fracProChannels;\r\n }\r\n }\r\n\r\n @Input()\r\n set inputReflow(isReflow: any) {\r\n if (this.highChart) {\r\n this.highChart.reflow();\r\n }\r\n }\r\n\r\n @Input() defaultTextData: string = '';\r\n @Input() isFilterData: boolean = true;\r\n cursor: { id: string, text: string, typeCursor: string };\r\n\r\n @Output() chartDataLoad: EventEmitter = new EventEmitter();\r\n @Output() diagnosticPointsDisplay: EventEmitter = new EventEmitter();\r\n @Output() diagnosticPointDrag: EventEmitter = new EventEmitter();\r\n @Output() diagnosticPointDrop: EventEmitter = new EventEmitter();\r\n @Output() fdiDrag: EventEmitter = new EventEmitter();\r\n @Output() fdiDrop: EventEmitter = new EventEmitter();\r\n @Output() fdiMouseOver: EventEmitter = new EventEmitter();\r\n @Output() treatmentStartEndDrop: EventEmitter = new EventEmitter();\r\n @Output() returnMinMaxTime: EventEmitter = new EventEmitter();\r\n @Output() losPointsChange: EventEmitter = new EventEmitter();\r\n\r\n realtimeChannels: IChannelItem[] = [];\r\n fracProChannels: IChannelItem[] = [];\r\n inputChartData: IInputDataMultiFlow;\r\n offsetDataState: IOffsetDataState;\r\n treatmentInfo: ITreatmentItem;\r\n wellInfo: any;\r\n channelSettings: IChannelSettingModel;\r\n filterSettings: ITimeSetting = {\r\n type: TIME_SETTING_TYPE.OffsetTime,\r\n startIndex: 0,\r\n endIndex: 0\r\n };\r\n listDiagnosticPoints: IDiagnosticPoint[] = [];\r\n losPoints: IDiagnosticPoint[] = [];\r\n highChart: Highcharts.Chart;\r\n Highcharts = Highcharts;\r\n chartOptions: Highcharts.Options | any;\r\n updateFlagChart: boolean = false;\r\n isLoadingChart = false;\r\n messageNoData: string = '';\r\n timezoneOffset: number;\r\n minTime: any;\r\n baseTreatmentDataTime: string;\r\n isDarkTheme: boolean;\r\n\r\n unitSetting: number;\r\n @Input() isReloadDataChart: boolean;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private unitSystemService: UnitSystemService,\r\n private baseChartService: BaseChartService,\r\n private channelSelectionService: ChannelSelectionService,\r\n private compareOffsetChannelsService: CompareOffsetChannelsService,\r\n private treatmentPlotFdiService: TreatmentPlotFdiService,\r\n private themesSettingsService: ThemesSettingsService\r\n ) {\r\n const localData = this.themesSettingsService.getLocalStorage();\r\n if (localData && localData.themes === ENUM_THEMES.Dark) {\r\n this.isDarkTheme = true;\r\n }\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: ','\r\n }\r\n });\r\n\r\n this.unitSetting = this.unitSystemService.loadUnitSettings();\r\n }\r\n\r\n ngOnInit() {\r\n this.setupChart();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!changes.inputState) return;\r\n // if this is the first time loaded: use setTimeout to wait for the chart to setup first\r\n if (changes.inputState.isFirstChange()) {\r\n setTimeout(() => this.updateChart(this.channelSettings, this.filterSettings, this.inputChartData, this.offsetDataState, this.listDiagnosticPoints, this.losPoints), 100);\r\n } else {\r\n this.updateChart(this.channelSettings, this.filterSettings, this.inputChartData, this.offsetDataState, this.listDiagnosticPoints, this.losPoints);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n Helper.unsubscribe(this.subscriptions);\r\n }\r\n\r\n chartInstanceHandler(chart) {\r\n this.highChart = chart;\r\n }\r\n\r\n getChartInstance() {\r\n return this.highChart;\r\n }\r\n\r\n public setLoadingChart(value: boolean) {\r\n this.isLoadingChart = value;\r\n }\r\n\r\n setupChart(timeOut = true) {\r\n const self = this;\r\n // also the line rendered in boost enabled is not meet with customer requirement\r\n const chartDefaultOptions = this.baseChartService.getDefaultOptions(false, undefined, this.isDarkTheme, this.cursor);\r\n this.chartOptions = chartDefaultOptions;\r\n\r\n this.chartOptions.chart.events = {\r\n selection(event) {\r\n const result = { minX: null, maxX: null };\r\n if (event.xAxis) {\r\n result.minX = event.xAxis[0].min;\r\n result.maxX = event.xAxis[0].max;\r\n } else if (this.xAxis && this.xAxis[0]) {\r\n const xAxisData = this.xAxis[0].getExtremes();\r\n if (xAxisData) {\r\n result.minX = xAxisData.dataMin;\r\n result.maxX = xAxisData.dataMax;\r\n }\r\n }\r\n self.returnMinMaxTime.emit(result);\r\n }\r\n };\r\n\r\n this.chartOptions.yAxis = [];\r\n // set timezone offset\r\n // if (this.timezoneOffset) {\r\n // this.chartOptions.time.timezoneOffset = this.timezoneOffset;\r\n // }\r\n if (this.defaultTextData) {\r\n this.chartOptions.lang.noData = this.defaultTextData;\r\n }\r\n if (!this.chartId || !this.chartId.trim()) this.chartId = CHART_ID_DEFAULT;\r\n if (timeOut) {\r\n setTimeout(() => {\r\n this.highChart = Highcharts.chart(this.chartId, this.chartOptions);\r\n }, 100);\r\n } else {\r\n this.highChart = Highcharts.chart(this.chartId, this.chartOptions);\r\n }\r\n }\r\n\r\n parseInputDataToSeriesData(channelSettings: IChannelSettingModel, inputData: IInputDataMultiFlow, timeFormat: string, offsetWellCompare?: IOffsetWellCompare) {\r\n let seriesData = [];\r\n INPUT_DATA_FLOWS_KEYS.forEach(dataType => {\r\n if (inputData.hasOwnProperty(dataType)) {\r\n if (!isEmpty(inputData[dataType])) {\r\n const dataFlow = inputData[dataType][0];\r\n const prefixChannel = this.channelSelectionService.getPrefixChannelByDataType(dataType);\r\n const channelSettingsByDataType = this.channelSelectionService.filterChannelsByPrefixStr(channelSettings, prefixChannel);\r\n const extraInfo = { isOffsetSeries: !!offsetWellCompare };\r\n const parsedData = this.baseChartService.parseSeriesData(channelSettingsByDataType, [], dataFlow, this.realtimeChannels, timeFormat, dataType, extraInfo, this.unitSetting);\r\n seriesData = seriesData.concat(parsedData);\r\n }\r\n }\r\n });\r\n return seriesData;\r\n }\r\n\r\n private mapInputData(channelSettings: IChannelSettingModel, inputRealtimeData: IInputDataChart[], inputFracproData: IInputDataChart[]): IInputDataChart[] {\r\n const hasChannel = (inputDataChart: IInputDataChart[]) => {\r\n for (const key of YAXIS_KEYS) {\r\n if (channelSettings[key] && channelSettings[key].channels && channelSettings[key].channels.length) {\r\n for (const channel of channelSettings[key].channels) {\r\n if (inputDataChart[0].columns.includes(channel.cName)) return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n const hasRealtimeData = inputRealtimeData && inputRealtimeData.length && hasChannel(inputRealtimeData);\r\n const hasFracproData = inputFracproData && inputFracproData.length && hasChannel(inputFracproData);\r\n if (!hasRealtimeData && !hasFracproData) return [];\r\n if (!hasRealtimeData || !inputRealtimeData[0].values.length) return inputFracproData;\r\n if (!hasFracproData || !inputFracproData[0].values.length) return inputRealtimeData;\r\n\r\n if (inputRealtimeData[0].values[0][0] > inputFracproData[0].values[0][0]) return inputFracproData;\r\n return inputRealtimeData;\r\n }\r\n\r\n private getFirstLastData(channelSettings: IChannelSettingModel, inputRealtimeData: IInputDataChart[], inputFracproData: IInputDataChart[]): { firstData: any; lastData: any; } {\r\n const hasChannel = (inputDataChart: IInputDataChart[]) => {\r\n if (!inputDataChart || !inputDataChart.length) return false;\r\n for (const key of YAXIS_KEYS) {\r\n if (channelSettings[key] && channelSettings[key].channels && channelSettings[key].channels.length) {\r\n for (const channel of channelSettings[key].channels) {\r\n if (inputDataChart[0].columns.includes(channel.cName) && inputDataChart[0].values.length) return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n const hasRealtimeData = inputRealtimeData && inputRealtimeData.length && hasChannel(inputRealtimeData);\r\n const hasFracproData = inputFracproData && inputFracproData.length && hasChannel(inputFracproData);\r\n if (!hasRealtimeData && !hasFracproData) return { firstData: null, lastData: null };\r\n if (!hasRealtimeData || !inputRealtimeData[0].values.length) return this.baseChartService.getFirstLastData(inputFracproData[0]);\r\n if (!hasFracproData || !inputFracproData[0].values.length) return this.baseChartService.getFirstLastData(inputRealtimeData[0]);\r\n\r\n\r\n const firstFracproData = inputFracproData[0].values[0][0];\r\n const lastFracproData = inputFracproData[0].values[inputFracproData[0].values.length - 1][0];\r\n\r\n const firstRealtimeData = inputRealtimeData[0].values[0][0];\r\n const lastRealtimeData = inputRealtimeData[0].values[inputRealtimeData[0].values.length - 1][0];\r\n\r\n const firstData = firstRealtimeData > firstFracproData ? inputFracproData[0].values[0] : inputRealtimeData[0].values[0];\r\n const lastData = lastFracproData > lastRealtimeData ? inputFracproData[0].values[inputRealtimeData[0].values.length - 1] : inputRealtimeData[0].values[inputRealtimeData[0].values.length - 1];\r\n\r\n return { firstData: firstData, lastData: lastData };\r\n }\r\n\r\n private calcStartEndIndex(channelSettings: IChannelSettingModel, timeSetting: ITimeSetting, inputRealtimeData: IInputDataChart[], inputFracproData: IInputDataChart[]) {\r\n const res = { startIndex: timeSetting.startIndex, endIndex: timeSetting.endIndex, firstData: null, lastData: null, inputData: null };\r\n // const iData = this.mapInputData(channelSettings, inputRealtimeData, inputFracproData);\r\n\r\n const { firstData, lastData } = this.getFirstLastData(channelSettings, inputRealtimeData, inputFracproData);\r\n res.firstData = firstData;\r\n res.lastData = firstData;\r\n // res.inputData = iData[0];\r\n\r\n if (!!timeSetting.autoScale && (!lastData || !timeSetting.lastMin)) {\r\n res.startIndex = res.endIndex = null;\r\n return res;\r\n }\r\n\r\n const timeTypeLowerCase = timeSetting.type ? timeSetting.type.toLowerCase() : '';\r\n if (timeSetting.type && timeTypeLowerCase === TIME_SETTING_TYPE.EpochTimeLowerCase) {\r\n if (lastData && timeSetting.lastMin) {\r\n const endIndex = new Date(lastData[0]).getTime();\r\n res.startIndex = endIndex - timeSetting.lastMin * 60_000;\r\n }\r\n if (firstData) {\r\n const startIndex = new Date(firstData[0]).getTime();\r\n if (res.startIndex < startIndex) res.startIndex = startIndex;\r\n }\r\n if (timeSetting.lastMin && res.endIndex - res.startIndex > timeSetting.lastMin * 60000) {\r\n res.startIndex = res.endIndex - timeSetting.lastMin * 60_000;\r\n }\r\n if (!!timeSetting.autoScale) res.endIndex = null;\r\n } else {\r\n if (lastData && timeSetting.lastMin) {\r\n const endIndex = lastData[1];\r\n res.startIndex = endIndex - timeSetting.lastMin * 60;\r\n }\r\n if (firstData) {\r\n const startIndex = firstData[1];\r\n if (res.startIndex < startIndex) res.startIndex = startIndex;\r\n }\r\n if (timeSetting.lastMin && res.endIndex - res.startIndex > timeSetting.lastMin * 60) {\r\n res.startIndex = res.endIndex - timeSetting.lastMin * 60;\r\n }\r\n if (!!timeSetting.autoScale) res.endIndex = null;\r\n }\r\n return res;\r\n }\r\n\r\n loadChartData(channelSettings: IChannelSettingModel, timeSetting: ITimeSetting, inputData: IInputDataMultiFlow, offsetDataState?: IOffsetDataState, listDiagnosticPoints?: IDiagnosticPoint[], losPoints?: IDiagnosticPoint[]) {\r\n const observables = [of(null).pipe(delay(100))];\r\n const self = this;\r\n\r\n if (!this.highChart || !channelSettings || !timeSetting) return forkJoin(observables);\r\n const timeFormat = timeSetting.type;\r\n // re-setup chart\r\n this.setupChart(false);\r\n let xAxisOpt;\r\n const cursorOpt = this.cursor ? this.cursor.id : ENUM_CURSOR_OPTS.Default;\r\n const crosshair = this.baseChartService.crosshair(cursorOpt);\r\n const isXAxisCrosshair = !!crosshair.x;\r\n const isYAxisCrosshair = !!crosshair.y;\r\n\r\n const mapDataIndex = this.calcStartEndIndex(channelSettings, timeSetting, inputData.realtimeData, inputData.fracproData);\r\n xAxisOpt = this.baseChartService.getXAxisOption(timeFormat, mapDataIndex.startIndex, mapDataIndex.endIndex, false, isXAxisCrosshair);\r\n this.highChart.addAxis(xAxisOpt, true);\r\n // get y axis options\r\n let yAxisData = this.baseChartService.getYAxisOption(channelSettings, undefined, this.unitSetting, isYAxisCrosshair);\r\n const timezone = this.wellInfo.tzTimeZone;\r\n\r\n Highcharts.setOptions({\r\n time: {\r\n getTimezoneOffset(timestamp) {\r\n return -momentTz.tz(timestamp, timezone).utcOffset();\r\n },\r\n }\r\n });\r\n\r\n // update tooltip header\r\n this.highChart.update({\r\n tooltip: {\r\n headerFormat: this.baseChartService.getTooltipHeader(timeFormat)\r\n },\r\n }, false);\r\n // parse all flow input data to chart's series data\r\n let seriesData = this.parseInputDataToSeriesData(channelSettings, inputData, timeFormat);\r\n // set startIndex and endIndex to detect zoomIn\r\n for (const series of seriesData) {\r\n if (!series.data || !series.data.length) continue;\r\n }\r\n\r\n // parse data for offset data\r\n if (offsetDataState && offsetDataState.channelSettings && offsetDataState.channelData) {\r\n yAxisData = this.baseChartService.getYAxisOption(channelSettings, offsetDataState.channelSettings, this.unitSetting, isYAxisCrosshair);\r\n offsetDataState.channelData.forEach(offsetInputData => {\r\n const offsetChannel = this.compareOffsetChannelsService.getOffsetChannelInfo(offsetDataState.channelSettings, offsetInputData);\r\n if (offsetChannel.channel) {\r\n if (!offsetChannel.channel.isRealtime) {\r\n let primaryInputData;\r\n if (offsetInputData.realtimeData && offsetInputData.realtimeData.length) {\r\n primaryInputData = offsetInputData.realtimeData[0];\r\n } else if (offsetInputData.fracproData && offsetInputData.fracproData.length) {\r\n primaryInputData = offsetInputData.fracproData[0];\r\n }\r\n const offsetSeriesData = this.baseChartService.getDataSeriesFromChannels(offsetChannel.index, [offsetChannel.channel], [], primaryInputData, timeFormat, null, { isOffsetSeries: true }, this.unitSetting);\r\n seriesData.push(...offsetSeriesData);\r\n } else {\r\n let primaryInputData;\r\n if (inputData.realtimeData && inputData.realtimeData[0]) {\r\n primaryInputData = inputData.realtimeData[0];\r\n } else if (inputData.fracproData && inputData.fracproData[0]) {\r\n primaryInputData = inputData.fracproData[0];\r\n }\r\n if (primaryInputData && !isEmpty(offsetInputData.realtimeData) && offsetInputData.realtimeData[0]) {\r\n const offsetSeriesData = this.compareOffsetChannelsService.getOffsetChannelDataSeries(\r\n offsetChannel.index,\r\n offsetChannel.channel,\r\n primaryInputData,\r\n offsetInputData.realtimeData[0],\r\n [],\r\n timeFormat,\r\n this.unitSetting\r\n );\r\n seriesData.push(...offsetSeriesData);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // add FDI y-axis but invisible\r\n const FDIAxisOpt: Highcharts.YAxisOptions = {\r\n id: ID_YAXIS_FDI,\r\n title: {\r\n text: 'FDI',\r\n useHTML: false,\r\n },\r\n opposite: false,\r\n showEmpty: false,\r\n min: 0,\r\n max: 100,\r\n maxPadding: 0,\r\n startOnTick: false,\r\n endOnTick: false,\r\n visible: false\r\n };\r\n yAxisData.push(FDIAxisOpt);\r\n\r\n // load fdis\r\n if (!isEmpty(offsetDataState.listFDIs) && offsetDataState.fdiPayload) {\r\n const onDragHandler = (event) => {\r\n this.fdiDrag.emit(event.target);\r\n };\r\n // load treatment start/end fdis\r\n const onTreatmentStartEndDropHandler = (event) => {\r\n this.treatmentStartEndDrop.emit(event.target);\r\n };\r\n\r\n const staticFDISeries = this.treatmentPlotFdiService.parseTreatmentChartSeries({\r\n baseTreatmentDataTime: this.baseTreatmentDataTime,\r\n timeFormat,\r\n yAxisIndex: yAxisData.length - 1,\r\n treatmentStart: offsetDataState.fdiPayload.treatmentStart,\r\n treatmentEnd: offsetDataState.fdiPayload.treatmentEnd,\r\n treatmentInfo: this.treatmentInfo,\r\n startIndex: timeSetting.startIndex,\r\n endIndex: timeSetting.endIndex,\r\n onDropHandler: onTreatmentStartEndDropHandler,\r\n onDragHandler\r\n });\r\n seriesData = seriesData.concat(staticFDISeries);\r\n\r\n const onDropHandler = (event) => {\r\n this.fdiDrop.emit(event.target);\r\n };\r\n const onMouseOverHandler = (event) => {\r\n this.fdiMouseOver.emit(event.target);\r\n };\r\n // load dynamic fdis\r\n offsetDataState.listFDIs.forEach(fdiInfo => {\r\n const dynamicFDISeries = this.treatmentPlotFdiService.parseFDIChartSeries({\r\n baseTreatmentDataTime: this.baseTreatmentDataTime,\r\n timeFormat,\r\n yAxisIndex: yAxisData.length - 1,\r\n fdiInfo,\r\n onDropHandler, onMouseOverHandler, onDragHandler\r\n });\r\n seriesData = seriesData.concat(dynamicFDISeries);\r\n });\r\n\r\n // load tangent FDI dot lines\r\n const tangentSeries = this.treatmentPlotFdiService.parseFDITangentToChartSeries(seriesData, FDI_PARAM_TENANT);\r\n seriesData = seriesData.concat(tangentSeries);\r\n }\r\n }\r\n\r\n // load diagnostic point (vertical line)\r\n let loadPivotPoints = (dataList: any, keyOpt?: string, name?: any) => {\r\n if (!keyOpt) keyOpt = 'diag';\r\n if (!name) name = CHART_SERIES_NAME.diagnostic;\r\n let dragPrecisionX = 1;\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime) {\r\n dragPrecisionX = 1000;\r\n }\r\n // add a virsual yAxis for vertical line series\r\n const diagnoctisAxisOpt: Highcharts.YAxisOptions = {\r\n title: {\r\n text: capitalize(name),\r\n useHTML: false,\r\n },\r\n opposite: false,\r\n showEmpty: false,\r\n min: 0,\r\n max: 100,\r\n maxPadding: 0,\r\n startOnTick: false,\r\n endOnTick: false,\r\n visible: false\r\n };\r\n yAxisData.push(diagnoctisAxisOpt);\r\n\r\n dataList.forEach((diagPoint, index) => {\r\n let offsetTimeSec = (index + 1) * 2; // default when unset\r\n let timefloat = { start: null, end: null };\r\n let timestamp = { start: null, end: null };\r\n\r\n if (inputData.realtimeData && inputData.realtimeData.length) {\r\n const timeRange = this.baseChartService.getTimeRangeFilter(inputData.realtimeData[0]);\r\n timefloat = timeRange.timefloat;\r\n timestamp = timeRange.timestamp;\r\n } else if (inputData.fracproData && inputData.fracproData.length) {\r\n const timeRange = this.baseChartService.getTimeRangeFilter(inputData.fracproData[0]);\r\n timefloat = timeRange.timefloat;\r\n timestamp = timeRange.timestamp;\r\n }\r\n\r\n if (isNumber(diagPoint.timeOffSet)) {\r\n if (timeFormat !== TIME_SETTING_TYPE.EpochTime) {\r\n offsetTimeSec = diagPoint.timeOffSet; // in sec\r\n if (timefloat.start && diagPoint.timeOffSet < timefloat.start) offsetTimeSec = timefloat.start;\r\n if (timefloat.end && diagPoint.timeOffSet > timefloat.end) offsetTimeSec = timefloat.end;\r\n } else {\r\n if (this.baseTreatmentDataTime) {\r\n // convert offset value to epoch value\r\n offsetTimeSec = diagPoint.timeOffSet;\r\n if (timefloat.start && diagPoint.timeOffSet < timefloat.start) offsetTimeSec = timefloat.start;\r\n if (timefloat.end && diagPoint.timeOffSet > timefloat.end) offsetTimeSec = timefloat.end;\r\n offsetTimeSec = new Date(this.baseTreatmentDataTime).getTime() + offsetTimeSec * 1000;\r\n // offsetTimeSec = offsetTimeSec + this.timezoneOffset * 60 * 1000;\r\n }\r\n }\r\n }\r\n seriesData.push({\r\n id: `${keyOpt}_${diagPoint.id}`,\r\n name: name,\r\n type: 'line',\r\n tooltip: false,\r\n data: [\r\n { x: offsetTimeSec, y: 0, groupId: `${diagPoint.id}`, name: `${diagPoint.name}` },\r\n { x: offsetTimeSec, y: 100, groupId: `${diagPoint.id}`, name: `${diagPoint.name}` }\r\n ],\r\n showInLegend: false,\r\n yAxis: yAxisData.length - 1,\r\n color: diagPoint.color,\r\n lineWidth: 3,\r\n dragDrop: {\r\n draggableX: true,\r\n dragMinX: 0,\r\n // dragMaxX: 1000,\r\n groupBy: 'groupId',\r\n dragSensitivity: 5,\r\n dragPrecisionX\r\n },\r\n stickyTracking: false,\r\n visible: !!diagPoint.selected,\r\n point: {\r\n events: {\r\n drop(e) {\r\n self.diagnosticPointDrop.emit(e.target);\r\n this.series.update({\r\n cursor: 'grab'\r\n });\r\n },\r\n dragStart(e) {\r\n self.diagnosticPointDrag.emit(e.target);\r\n this.series.update({\r\n cursor: 'grabbing'\r\n });\r\n }\r\n }\r\n },\r\n cursor: 'grab',\r\n events: {\r\n click(e) {\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n if (listDiagnosticPoints && !isEmpty(listDiagnosticPoints)) {\r\n loadPivotPoints(listDiagnosticPoints, 'diag', CHART_SERIES_NAME.diagnostic);\r\n }\r\n // handle LOS feature\r\n if (!losPoints || losPoints.length === 0) {\r\n let firstPos = null;\r\n let lastPos = null;\r\n seriesData\r\n .filter(series => series.name !== 'diagnostic' && series.name !== 'Diagnostic')\r\n .forEach(series => {\r\n if (series.data && series.data.length > 0) {\r\n if (firstPos === null || firstPos > series.data[0].x) firstPos = series.data[0].x;\r\n if (lastPos === null || lastPos > series.data[series.data.length - 1].x) lastPos = series.data[series.data.length - 1].x;\r\n }\r\n });\r\n\r\n if (firstPos !== null && lastPos !== null && lastPos >= firstPos) {\r\n let convertMinMaxTime = ({ xValue, timeFormat, baseTreatmentDataTime }) => {\r\n let timeOffset;\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime) {\r\n timeOffset = xValue - new Date(baseTreatmentDataTime).getTime();\r\n timeOffset = timeOffset / 1000; // in seconds\r\n } else { timeOffset = xValue; }\r\n return timeOffset;\r\n }\r\n losPoints = [];\r\n LOS_DEFAULTS.forEach(item => {\r\n const point = Object.assign({\r\n id: item.id,\r\n name: item.text,\r\n timeOffSet: item.id === ENUM_LOS_DEFAULTS.MinMaxStart ? convertMinMaxTime({\r\n xValue: firstPos * 1000, timeFormat: timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime\r\n }) : convertMinMaxTime({\r\n xValue: lastPos * 1000, timeFormat: timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime\r\n }),\r\n color: item.color || Helper.randomHexColor(),\r\n isDefault: true\r\n }) as IDiagnosticPoint;\r\n losPoints.push(point);\r\n })\r\n this.losPoints = losPoints;\r\n this.losPointsChange.emit(losPoints);\r\n }\r\n }\r\n if (losPoints && !isEmpty(losPoints)) {\r\n loadPivotPoints(losPoints, CHART_SERIES_NAME.los, CHART_SERIES_NAME.los);\r\n }\r\n\r\n // add y axis in highchart\r\n yAxisData.forEach(yAxis => {\r\n this.highChart.addAxis(yAxis, false);\r\n });\r\n\r\n // check if all series is empty data then return empty array (prevent show series legend on chart\r\n if (this.channelSelectionService.isEmptyChannels(channelSettings)) {\r\n // this.setChartMessage(CHART_MESSAGES.en.pleaseSelectChannel);\r\n } else {\r\n const promiesHandleSeries = new Promise((resolve) => {\r\n if (this.baseChartService.isAllSeriesDataEmpty(seriesData)) {\r\n seriesData = [];\r\n }\r\n if (isEmpty(seriesData)) {\r\n this.setChartMessage(CHART_MESSAGES.en.noData);\r\n }\r\n seriesData.forEach(series => {\r\n this.highChart.addSeries(series, false, false);\r\n });\r\n setTimeout(() => {\r\n this.highChart.redraw();\r\n this.highChart.setSize(this.highChart.chartWidth, this.highChart.chartHeight);\r\n // this.highChart.options.time.timezoneOffset = this.timezoneOffset;\r\n this.highChart.options.chart.width = null;\r\n this.highChart.options.chart.height = null;\r\n resolve();\r\n }, 100);\r\n });\r\n\r\n const handleSeries$ = from(promiesHandleSeries);\r\n observables.push(handleSeries$);\r\n }\r\n\r\n return forkJoin(observables);\r\n }\r\n\r\n private updateChart(channelSettings: IChannelSettingModel, filterSettings: ITimeSetting, inputChartData: IInputDataMultiFlow, offsetDataState, listDiagnosticPoints, losPoints): void {\r\n if (inputChartData && channelSettings && filterSettings) {\r\n this.isLoadingChart = true;\r\n let inputData = inputChartData;\r\n if (this.isFilterData) inputData = this.handleFilterInputData(inputData, filterSettings, channelSettings);\r\n\r\n this.subscriptions.push(\r\n this.loadChartData(channelSettings, filterSettings, inputData, offsetDataState, listDiagnosticPoints, losPoints)\r\n .pipe(finalize(() => {\r\n this.isLoadingChart = false;\r\n this.ref.detectChanges();\r\n this.chartDataLoad.emit();\r\n }))\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n private handleFilterInputData(inputData: IInputDataMultiFlow, filterSetting: ITimeSetting, channelSettings?: IChannelSettingModel): IInputDataMultiFlow {\r\n const res: any = {};\r\n if (!inputData || !filterSetting) return res;\r\n if (filterSetting.autoScale) {\r\n res.fracproData = inputData.fracproData;\r\n res.realtimeData = inputData.realtimeData;\r\n return res;\r\n }\r\n\r\n let channelFiltering;\r\n const startTime = filterSetting.startIndex;\r\n const endTime = filterSetting.endIndex;\r\n const filterType = isString(filterSetting.type) ? filterSetting.type.toLowerCase() : '';\r\n // filter by datetime column\r\n if (filterType === TIME_SETTING_TYPE.EpochTimeLowerCase) {\r\n channelFiltering = DATETIME_CHANNEL_NAME;\r\n // if (filterSetting.lastMin && endTime - startTime > filterSetting.lastMin * 60000) {\r\n // startTime = endTime - filterSetting.lastMin * 60_000;\r\n // }\r\n // } else {\r\n // if (filterSetting.lastMin && endTime - startTime > filterSetting.lastMin * 60) {\r\n // startTime = endTime - filterSetting.lastMin * 60;\r\n // }\r\n }\r\n\r\n // filter all flow data\r\n INPUT_DATA_FLOWS_KEYS.forEach(key => {\r\n if (inputData.hasOwnProperty(key)) {\r\n if (!isEmpty(inputData[key])) {\r\n const dataFlowObj = inputData[key][0];\r\n // filter by float column\r\n if (filterType === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n if (key === 'fracproData') {\r\n channelFiltering = FRACPRO_TIMEFLOAT_CNAME;\r\n } else if (key === 'realtimeData') {\r\n channelFiltering = TIMEFLOAT_CHANNEL_NAME;\r\n } else if (key === 'equipmentData') {\r\n channelFiltering = EQUIPMENT_TIMEFLOAT_CNAME;\r\n }\r\n }\r\n res[key] = [this.baseChartService.filterInputData(dataFlowObj, startTime, endTime, channelFiltering)];\r\n }\r\n }\r\n });\r\n\r\n return res;\r\n }\r\n\r\n resetChart(isRedraw?: boolean) {\r\n if (this.highChart) {\r\n this.chartOptions.xAxis = [];\r\n this.chartOptions.yAxis = [];\r\n this.chartOptions.series = [];\r\n // clear chart and reload data\r\n while (this.highChart.series.length > 0) {\r\n this.highChart.series[0].remove(false);\r\n }\r\n while (this.highChart.yAxis.length > 0) {\r\n this.highChart.yAxis[0].remove(false);\r\n }\r\n while (this.highChart.xAxis.length > 0) {\r\n this.highChart.xAxis[0].remove(false);\r\n }\r\n\r\n // remove annotations\r\n // this.clearAnnotations();\r\n if (isRedraw) {\r\n this.highChart.redraw();\r\n }\r\n }\r\n }\r\n\r\n setAxisMinMax(min: number, max: number, isYAxis?: boolean, isRedraw?: boolean) {\r\n const axisKey = isYAxis ? 'yAxis' : 'xAxis';\r\n if (this.highChart && !isEmpty(this.highChart[axisKey])) {\r\n const axisItems = this.highChart[axisKey];\r\n const axisLength = axisItems.length;\r\n for (let index = 0; index < axisLength; index++) {\r\n // do NOT set min/max to non-treatment YAxis\r\n if (isYAxis) {\r\n const axisLabel = this.highChart[axisKey][index]['userOptions'].title.text;\r\n if (!axisLabel || axisLabel === 'FDI' || axisLabel === 'Diagnostic' || axisLabel === 'Los') continue;\r\n }\r\n this.highChart[axisKey][index].update({ min, max }, isRedraw);\r\n }\r\n\r\n // forEach(axisItems, (value, index) => {\r\n // this.highChart[axisKey][index].update({ min, max }, isRedraw);\r\n // });\r\n }\r\n }\r\n\r\n setChartMessage(message: string) {\r\n if (typeof message === 'string' && this.highChart) {\r\n const noDataEle = document.querySelector('.highcharts-no-data');\r\n if (noDataEle) {\r\n const noDataEleText = noDataEle.querySelector('text tspan');\r\n if (noDataEleText) {\r\n noDataEleText.textContent = message;\r\n this.messageNoData = message;\r\n }\r\n }\r\n }\r\n }\r\n\r\n zoomOut() {\r\n this.highChart.zoomOut();\r\n }\r\n\r\n reflow() {\r\n if (!this.highChart) return;\r\n this.highChart.reflow();\r\n }\r\n\r\n exportChart(fileName?: string, type?: string) {\r\n const chart = this.highChart;\r\n if (type === 'Save PNG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 4,\r\n type: 'image/png'\r\n }, {\r\n lang: {\r\n noData: `${this.messageNoData}`\r\n },\r\n });\r\n } else if (type === 'Save JPEG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 8,\r\n type: 'image/jpeg'\r\n }, {\r\n lang: {\r\n noData: `${this.messageNoData}`\r\n },\r\n });\r\n } else {\r\n chart.print();\r\n }\r\n }\r\n\r\n updateSeriesData(inputData: IInputDataMultiFlow, filterSettings: ITimeSetting, isRedraw?: boolean, offsetDataState?: IOffsetDataState) {\r\n if (!this.highChart || !this.channelSettings || !filterSettings || !filterSettings.type) return;\r\n\r\n // STEP 1: handle filter input data by time setting\r\n const filteredData = this.handleFilterInputData(inputData, filterSettings, this.channelSettings);\r\n const seriesData = [];\r\n for (const dataType in filteredData) {\r\n if (!filteredData[dataType] || !filteredData[dataType][0]) continue;\r\n const dataFlow = filteredData[dataType][0];\r\n const prefixChannel = this.channelSelectionService.getPrefixChannelByDataType(dataType);\r\n const channelSettingsByDataType = this.channelSelectionService.filterChannelsByPrefixStr(this.channelSettings, prefixChannel);\r\n const parsedData = this.baseChartService.parseSeriesData(channelSettingsByDataType, this.highChart.series, dataFlow, this.realtimeChannels, filterSettings.type, dataType, undefined, this.unitSetting);\r\n seriesData.push(...parsedData);\r\n }\r\n\r\n // STEP 2: parse data for offset data\r\n if (offsetDataState && offsetDataState.channelSettings && offsetDataState.channelData) {\r\n for (const offsetInputData of offsetDataState.channelData) {\r\n const offsetChannel = this.compareOffsetChannelsService.getOffsetChannelInfo(offsetDataState.channelSettings, offsetInputData);\r\n if (offsetChannel.channel) {\r\n if (!offsetChannel.channel.isRealtime) {\r\n const offsetFirstRealtimeData = offsetInputData.realtimeData && offsetInputData.realtimeData.length ? offsetInputData.realtimeData[0] : null;\r\n const offsetSeriesData = this.baseChartService.getDataSeriesFromChannels(offsetChannel.index, [offsetChannel.channel], this.highChart.series, offsetFirstRealtimeData, filterSettings.type, null, { isOffsetSeries: true }, this.unitSetting);\r\n seriesData.push(...offsetSeriesData);\r\n } else {\r\n const getFirstInputData = (realtimeData, fracproData) => {\r\n if (realtimeData && realtimeData[0]) return realtimeData[0];\r\n if (fracproData && fracproData[0]) return fracproData[0];\r\n return null;\r\n };\r\n const primaryInputData = getFirstInputData(inputData.realtimeData, inputData.fracproData);\r\n if (!primaryInputData || !offsetInputData.realtimeData || !offsetInputData.realtimeData.length) continue;\r\n const offsetSeriesData = this.compareOffsetChannelsService.getOffsetChannelDataSeries(\r\n offsetChannel.index,\r\n offsetChannel.channel,\r\n primaryInputData,\r\n offsetInputData.realtimeData[0],\r\n this.highChart.series,\r\n filterSettings.type,\r\n this.unitSetting\r\n );\r\n seriesData.push(...offsetSeriesData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // STEP 3: if there is seriesData: update highChart or add series\r\n if (!seriesData || !seriesData.length) return;\r\n if (!this.highChart.series || !this.highChart.series.length) {\r\n for (const series of seriesData) {\r\n this.highChart.addSeries(series, false, false);\r\n }\r\n isRedraw = true;\r\n }\r\n else {\r\n // for each series update their data in the highChart\r\n for (const series of this.highChart.series) {\r\n // check if there seriesItem has data to append or set\r\n const seriesItem = seriesData.find(x => x.id === series.options.id);\r\n if (!seriesItem || !seriesItem.data || !seriesItem.data.length) continue;\r\n // check if user is zoomIn: if DOES: userMin and userMax has data\r\n const extreme = series.chart.xAxis[0].getExtremes();\r\n if (extreme.userMin !== undefined || extreme.userMax !== undefined) continue;\r\n const lastSeriesData = !series.data.length ? null : series.data[series.data.length - 1];\r\n\r\n // CASE 1: if there is data: addPoint\r\n if (lastSeriesData) {\r\n const lastIndex = seriesItem.data.length - 1;\r\n let addIndex = 0;\r\n for (let i = lastIndex; i >= addIndex; i--) {\r\n if (seriesItem.data[i].x > lastSeriesData.x) continue;\r\n addIndex = i;\r\n break;\r\n }\r\n for (let i = addIndex; i <= lastIndex; i++) {\r\n series.addPoint(seriesItem.data[i], false);\r\n isRedraw = true;\r\n }\r\n }\r\n // CASE 2: if NULL: setData\r\n else if (seriesItem) {\r\n series.setData(seriesItem.data);\r\n }\r\n }\r\n // if there is a series that the highChart have not render: add it\r\n for (const series of seriesData) {\r\n const seriesOption = this.highChart.series.find(x => x.options.id === series.id);\r\n if (seriesOption) continue;\r\n this.highChart.addSeries(series, false, false);\r\n isRedraw = true;\r\n }\r\n }\r\n\r\n // reset min max\r\n if (filterSettings.autoScale && filterSettings.lastMin) {\r\n let min = this.highChart['xAxis'][0].min;\r\n let endIndex: number;\r\n const timeTypeLowerCase = filterSettings.type ? filterSettings.type.toLowerCase() : '';\r\n const { firstData, lastData } = this.getFirstLastData(this.channelSettings, inputData.realtimeData, inputData.fracproData);\r\n\r\n if (filterSettings.type && timeTypeLowerCase === TIME_SETTING_TYPE.EpochTimeLowerCase) {\r\n if (lastData) {\r\n endIndex = new Date(lastData[0]).getTime();\r\n min = endIndex - filterSettings.lastMin * 60_000;\r\n }\r\n if (firstData) {\r\n const startIndex = new Date(firstData[0]).getTime();\r\n if (min < startIndex) min = startIndex;\r\n }\r\n if (endIndex && endIndex - min > filterSettings.lastMin * 60000) {\r\n min = endIndex - filterSettings.lastMin * 60_000;\r\n }\r\n } else {\r\n if (lastData) {\r\n endIndex = lastData[1];\r\n min = endIndex - filterSettings.lastMin * 60;\r\n }\r\n if (firstData) {\r\n const startIndex = firstData[1];\r\n if (min < startIndex) min = startIndex;\r\n }\r\n if (endIndex && endIndex - min > filterSettings.lastMin * 60) {\r\n min = endIndex - filterSettings.lastMin * 60;\r\n }\r\n }\r\n this.setAxisMinMax(min, null, false, true);\r\n }\r\n // end\r\n\r\n // STEP 4: call highChart redraw if isRedraw\r\n if (isRedraw) {\r\n setTimeout(() => {\r\n this.highChart.redraw();\r\n this.highChart.reflow();\r\n }, 100);\r\n }\r\n }\r\n\r\n toggleTooltip(isDisplay) {\r\n if (this.highChart) {\r\n this.highChart.update({\r\n tooltip: {\r\n enabled: isDisplay\r\n // formatter: this.baseChartService.getTooltipFormatter(!isDisplay)\r\n }\r\n });\r\n }\r\n }\r\n\r\n updateChartCursorOptions(cursor) {\r\n if (cursor) {\r\n this.cursor = cursor;\r\n if (this.highChart) {\r\n const crosshair = this.baseChartService.crosshair(this.cursor.id);\r\n const handleAxisCross = (axisOpt, crossValue) => {\r\n if (axisOpt) {\r\n if (Array.isArray(axisOpt) && axisOpt.length) {\r\n axisOpt.forEach(item => {\r\n item.crosshair = crossValue;\r\n })\r\n } else {\r\n axisOpt.crosshair = crossValue;\r\n }\r\n }\r\n return axisOpt;\r\n };\r\n // set xAxis\r\n let xAxisOpt: any = this.highChart.options.xAxis;\r\n xAxisOpt = handleAxisCross(xAxisOpt, crosshair.x);\r\n // set yAxis\r\n let yAxisOpt: any = this.highChart.options.yAxis;\r\n yAxisOpt = handleAxisCross(yAxisOpt, crosshair.y);\r\n // update chart\r\n this.highChart.update({\r\n tooltip: {\r\n shared: this.cursor.id === ENUM_CURSOR_OPTS.Default\r\n },\r\n xAxis: xAxisOpt,\r\n yAxis: yAxisOpt,\r\n plotOptions: {\r\n series: {\r\n cursor: this.cursor.id\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n toggleAnnotations(annotationsOption, isDisplay?: boolean) {\r\n if (this.highChart) {\r\n // get comment series by id\r\n let commentSeries: any = this.highChart.get(CHART_SERIES_NAME.comment);\r\n if (!isEmpty(annotationsOption) && !isEmpty(this.highChart.xAxis) && !isEmpty(this.highChart.yAxis)) {\r\n const seriesObj: any = {\r\n id: CHART_SERIES_NAME.comment,\r\n name: CHART_SERIES_NAME.comment,\r\n zIndex: 100,\r\n // type: 'scatter',\r\n type: 'line',\r\n color: '#000',\r\n lineWidth: 0,\r\n states: {\r\n hover: {\r\n lineWidthPlus: 0,\r\n lineWidth: 0\r\n }\r\n },\r\n marker: {\r\n enabled: true,\r\n radius: 5,\r\n symbol: 'circle',\r\n states: {\r\n hover: {\r\n lineWidth: 0\r\n }\r\n },\r\n },\r\n tooltip: {\r\n headerFormat: '
',\r\n pointFormat: `\r\n

{point.comment}

\r\n `,\r\n footerFormat: '
',\r\n style: {\r\n backgroundColor: 'black',\r\n color: 'white'\r\n },\r\n enabled: false,\r\n animation: false\r\n },\r\n showInLegend: false,\r\n data: [],\r\n findNearestPointBy: 'xy'\r\n };\r\n // add comment series if doesn't exists\r\n if (!commentSeries) {\r\n this.highChart.addSeries(seriesObj);\r\n commentSeries = this.highChart.get(CHART_SERIES_NAME.comment);\r\n }\r\n if (isDisplay) commentSeries.setData(annotationsOption);\r\n else commentSeries.setData([]);\r\n } else {\r\n // set data as empty in case update comments data is an empty array\r\n if (commentSeries) commentSeries.setData([]);\r\n }\r\n setTimeout(() => {\r\n this.highChart.reflow();\r\n });\r\n }\r\n }\r\n\r\n clearAnnotations() {\r\n // remove annotations\r\n const chart: any = this.highChart;\r\n if (chart) {\r\n const annotations = chart.annotations;\r\n if (!isEmpty(annotations)) {\r\n for (let index = annotations.length - 1; index >= 0; index--) {\r\n const annotationObj = annotations[index];\r\n chart.removeAnnotation(annotationObj.options.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n toggleDiagnosticPoints(points: IDiagnosticPoint | IDiagnosticPoint[], keyOpt?: string): void {\r\n if (!points) return;\r\n if (points instanceof Array) {\r\n let pointsChange: IDiagnosticPointDataChange[] = [];\r\n forEach(points, (point) => {\r\n const pointChange = this.baseChartService.makeDiagnosticPoint(this.highChart, point, keyOpt);\r\n if (pointChange) pointsChange.push(pointChange);\r\n });\r\n if (pointsChange.length) this.diagnosticPointsDisplay.emit(pointsChange);\r\n } else {\r\n const diagnosticPoint = this.baseChartService.makeDiagnosticPoint(this.highChart, points, keyOpt);\r\n if (diagnosticPoint) this.diagnosticPointsDisplay.emit(diagnosticPoint);\r\n }\r\n }\r\n\r\n getFilterByTimeObj(startTime: number, endTime: number): ITimeSetting {\r\n const filterSetting: ITimeSetting = {\r\n type: TIME_SETTING_TYPE.EpochTime,\r\n startIndex: new Date(startTime).getTime(),\r\n endIndex: new Date(endTime).getTime(),\r\n };\r\n return filterSetting;\r\n }\r\n\r\n /**\r\n * FDI handlers\r\n */\r\n addFDIHandler({ baseTreatmentDataTime, timeFormat, timezoneOffset, fdiInfo, isStaticFDI, treatmentInfo, startIndex, endIndex, treatmentStart, treatmentEnd }) {\r\n const yAxisFDI: Highcharts.AxisOptions & { userOptions?: { index: number } } = Object.assign(this.highChart.get(ID_YAXIS_FDI));\r\n const highChartInstance = this.highChart;\r\n let yAxisIndex = 0;\r\n if (yAxisFDI && yAxisFDI.userOptions) {\r\n yAxisIndex = yAxisFDI.userOptions.index;\r\n }\r\n const onDragHandler = (event) => {\r\n this.fdiDrag.emit(event.target);\r\n };\r\n const onDropHandler = (event) => {\r\n this.fdiDrop.emit(event.target);\r\n };\r\n const onTreatmentStartEndDropHandler = (event) => {\r\n this.treatmentStartEndDrop.emit(event.target);\r\n };\r\n const onMouseOverHandler = (event) => {\r\n this.fdiMouseOver.emit(event.target);\r\n };\r\n this.treatmentPlotFdiService.addFDIHandler({\r\n highChartInstance,\r\n baseTreatmentDataTime,\r\n timeFormat,\r\n timezoneOffset,\r\n fdiInfo,\r\n yAxisIndex,\r\n isStaticFDI,\r\n treatmentInfo,\r\n startIndex,\r\n endIndex,\r\n treatmentStart,\r\n treatmentEnd,\r\n onDropHandler,\r\n onTreatmentStartEndDropHandler,\r\n onMouseOverHandler,\r\n onDragHandler\r\n });\r\n }\r\n\r\n removeAllFDIHandler() {\r\n const highChartInstance = this.highChart;\r\n this.treatmentPlotFdiService.removeFDIHandler({ highChartInstance });\r\n }\r\n\r\n toggleShowFDIHandler(isShow) {\r\n const highChartInstance = this.highChart;\r\n this.treatmentPlotFdiService.toggleShowFDIHandler({ highChartInstance, isShow });\r\n }\r\n\r\n updateFDIHandler(fdi: TreatmentPlotFDI, fdiStart: number, fdiEnd: number) {\r\n const highChartInstance = this.highChart;\r\n this.treatmentPlotFdiService.updateFDIHandler(highChartInstance, fdi, fdiStart, fdiEnd);\r\n }\r\n\r\n updateFDIPoint(fdiId: string, fdiKeyValue: string, xValue: number, yValue: number) {\r\n const highChartInstance = this.highChart;\r\n this.treatmentPlotFdiService.updateFDIDataPoint(highChartInstance, fdiId, fdiKeyValue, xValue, yValue);\r\n }\r\n\r\n updateLOSPoint(timeOffset, keyValue: string) {\r\n // if (!this.highChart) return;\r\n // // const highChartInstance: any = this.highChart;\r\n // // const series = highChartInstance.series.find(x => x.userOptions.id.includes(`los_${keyValue}`));\r\n // const series = this.highChart.get(`los_${keyValue}`) as Highcharts.Series;\r\n // if (series && series.data) {\r\n // console.log([timeOffset, series.data]);\r\n // const updateData: any[] = [];\r\n // // seriesObj.setData([\r\n // // { x: offsetTimeSec, y: 0, groupId: `${point.id}`, name: `${point.name}` },\r\n // // { x: offsetTimeSec, y: 100, groupId: `${point.id}`, name: `${point.name}` }\r\n // // ]);\r\n // series.data.forEach(c => {\r\n // updateData.push({ x: timeOffset, y: c.y, groupId: `los_${keyValue}`, name: c.name });\r\n // });\r\n // series.setData(updateData);\r\n // // series.graph.show();\r\n // setTimeout(() => { this.highChart.redraw(); }, 500);\r\n // }\r\n }\r\n\r\n setTreatmentDragMax(baseData, lastData, timeSetting: ITimeSetting) {\r\n const highChartInstance = this.highChart;\r\n const userOptionNames = ['treatmentStart', 'treatmentEnd'];\r\n this.treatmentPlotFdiService.setTreatmentDragMax(highChartInstance, baseData, lastData, timeSetting, userOptionNames);\r\n }\r\n\r\n setFDIDragMax(baseData, lastData, timeSetting: ITimeSetting) {\r\n const highChartInstance = this.highChart;\r\n const userOptionNames = FDI_PARAM;\r\n this.treatmentPlotFdiService.setTreatmentDragMax(highChartInstance, baseData, lastData, timeSetting, userOptionNames);\r\n }\r\n\r\n updateDiagnosticPoint(point: IDiagnosticPoint, keyOpt?: string) {\r\n if (!keyOpt) keyOpt = 'diag';\r\n if (point && this.highChart) {\r\n const seriesObj = this.highChart.get(`${keyOpt}_${point.id}`) as Highcharts.Series;\r\n if (seriesObj) {\r\n const seriesDataPoint = seriesObj.data[0] as unknown as CustomDataPoint;\r\n // generate xAxis value\r\n const timeFormat = this.filterSettings.type;\r\n let offsetTimeSec: number;\r\n let timefloat = { start: null, end: null };\r\n let timestamp = { start: null, end: null };\r\n // set input chart data\r\n let inputData: IInputDataMultiFlow;\r\n // if (this.isFilterData && !this.filterSettings.autoScale) {\r\n // inputData = this.handleFilterInputData(this.inputChartData, this.filterSettings, this.channelSettings);\r\n // } else {\r\n // inputData = this.handleFilterInputData(this.inputChartData, this.filterSettings, this.channelSettings);\r\n // }\r\n inputData = this.handleFilterInputData(this.inputChartData, this.filterSettings, this.channelSettings);\r\n // set time range\r\n if (inputData.realtimeData && inputData.realtimeData.length) {\r\n const timeRange = this.baseChartService.getTimeRangeFilter(inputData.realtimeData[0]);\r\n timefloat = timeRange.timefloat;\r\n timestamp = timeRange.timestamp;\r\n } else if (inputData.fracproData && inputData.fracproData.length) {\r\n const timeRange = this.baseChartService.getTimeRangeFilter(inputData.fracproData[0]);\r\n timefloat = timeRange.timefloat;\r\n timestamp = timeRange.timestamp;\r\n }\r\n\r\n if (isNumber(point.timeOffSet)) {\r\n if (timeFormat !== TIME_SETTING_TYPE.EpochTime) {\r\n offsetTimeSec = point.timeOffSet; // in sec\r\n if (timefloat.start && point.timeOffSet < timefloat.start) offsetTimeSec = timefloat.start;\r\n if (timefloat.end && point.timeOffSet > timefloat.end) offsetTimeSec = timefloat.end;\r\n } else {\r\n if (this.baseTreatmentDataTime) {\r\n // convert offset value to epoch value\r\n offsetTimeSec = point.timeOffSet;\r\n if (timefloat.start && point.timeOffSet < timefloat.start) offsetTimeSec = timefloat.start;\r\n if (timefloat.end && point.timeOffSet > timefloat.end) offsetTimeSec = timefloat.end;\r\n offsetTimeSec = new Date(this.baseTreatmentDataTime).getTime() + offsetTimeSec * 1000;\r\n // offsetTimeSec = offsetTimeSec + this.timezoneOffset * 60 * 1000;\r\n }\r\n }\r\n // update diagnostic point\r\n seriesObj.setData([\r\n { x: offsetTimeSec, y: 0, groupId: `${point.id}`, name: `${point.name}` },\r\n { x: offsetTimeSec, y: 100, groupId: `${point.id}`, name: `${point.name}` }\r\n ]);\r\n }\r\n // end\r\n }\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9tdWx0aS13ZWxsLWNoYXJ0L211bHRpLXdlbGwtY2hhcnQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy, ChangeDetectorRef, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport * as Highcharts from 'highcharts';\r\nimport HC_exporting from 'highcharts/modules/exporting';\r\nimport HC_offline_exporting from 'highcharts/modules/offline-exporting';\r\n\r\nimport HC_annotations from 'highcharts/modules/annotations';\r\nimport { isEmpty, cloneDeep, forEach, isObject, isNumber, maxBy, capitalize } from 'lodash';\r\nimport HC_boost from 'highcharts/modules/boost';\r\nHC_annotations(Highcharts);\r\nHC_exporting(Highcharts);\r\nHC_offline_exporting(Highcharts);\r\nHC_boost(Highcharts);\r\nconst noData = require('highcharts/modules/no-data-to-display');\r\nnoData(Highcharts);\r\n\r\nconst randomColors = require('randomcolor');\r\nimport * as tinygradient from 'tinygradient';\r\nimport * as tinycolor from 'tinycolor2';\r\n\r\nimport { IChannelSettingModel, IChannelSettingItemModel } from '../../../../shared/models/channel.model';\r\nimport { BaseChartService, ISeriesDataExtraInfo, DATETIME_CHANNEL_NAME, TIMEFLOAT_CHANNEL_NAME, FRACPRO_TIMEFLOAT_CNAME, ENUM_CURSOR_OPTS } from '../../../../shared/services/charts/base-chart.service';\r\nimport { ChannelSelectionService } from '../../../services';\r\nimport { PivotPointService, IPivotPointItem } from '../../../../shared/services/pivot-point.service';\r\nimport { of, Subscription } from 'rxjs';\r\nimport { delay, switchMap, tap } from 'rxjs/operators';\r\nimport { CHART_MESSAGES, CHART_SERIES_NAME, ENUM_THEMES, PREFIX_PREDICTIVE_CHANNEL, TIME_SETTING_TYPE } from '../../../helpers/app.constants';\r\nimport { IInputDataChart } from '../../../models';\r\nimport { Helper } from '../../../helpers/helper';\r\nimport { IInputDataWell, MultiWellChartService, IWellOptions } from '../../../services/charts/multi-well-chart.service';\r\nimport { CompareWellsTimeControlService } from '../../compare-wells-time-control/compare-wells-time-control.service';\r\n\r\nimport * as moment from 'moment';\r\nimport * as momentTz from 'moment-timezone';\r\nimport { ThemesSettingsService } from '../../../services/themes-settings.service';\r\nimport { UnitSystemService } from '../../../services/unit-system.service';\r\nimport { IDiagnosticPoint } from '../../../models/diagnostic-points.model';\r\n(window as any).moment = moment;\r\n(window as any).momentTz = momentTz;\r\n\r\ninterface IInputState {\r\n channelSettings: IChannelSettingModel;\r\n inputData: IInputDataWell[];\r\n filterSettings?: {\r\n type: string;\r\n startIndex: number;\r\n endIndex: number;\r\n multiWellScrollbar?: boolean,\r\n scrollbarSamplingRate?: string\r\n };\r\n pivotPointData: IPivotPointItem[];\r\n navigatorInputData?: IInputDataWell[];\r\n wellOptions: IWellOptions[];\r\n}\r\n\r\n@Component({\r\n selector: 'app-multi-well-chart',\r\n templateUrl: './multi-well-chart.component.html',\r\n styleUrls: ['./multi-well-chart.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MultiWellChartComponent implements OnInit, OnChanges, OnDestroy {\r\n subscriptions: Subscription[] = [];\r\n isWellColorMode: boolean = true;\r\n parsedSeriesData: any = [];\r\n\r\n cursor: { id: string, text: string, typeCursor: string };\r\n\r\n @Input()\r\n set inputState(state: IInputState) {\r\n if (state) {\r\n this.channelSettings = state.channelSettings;\r\n this.filterSettings = state.filterSettings;\r\n this.inputChartData = state.inputData;\r\n this.pivotPointData = state.pivotPointData;\r\n this.navigatorInputData = state.navigatorInputData;\r\n this.wellOptions = state.wellOptions;\r\n }\r\n }\r\n\r\n @Input()\r\n set inputReflow(isReflow: any) {\r\n if (this.highChart) {\r\n this.highChart.reflow();\r\n }\r\n }\r\n\r\n @Input() defaultTextData: string = '';\r\n\r\n @Output() onChangeXMinMax: EventEmitter = new EventEmitter();\r\n @Output() onChangeNavigatorMinMax: EventEmitter = new EventEmitter();\r\n\r\n inputChartData: IInputDataWell[];\r\n pivotPointData: IPivotPointItem[];\r\n navigatorInputData: IInputDataWell[];\r\n wellOptions: IWellOptions[];\r\n channelSettings: IChannelSettingModel;\r\n filterSettings: any = {\r\n type: TIME_SETTING_TYPE.OffsetTime,\r\n startIndex: 0,\r\n endIndex: 0,\r\n multiWellScrollbar: true,\r\n scrollbarSamplingRate: ''\r\n };\r\n\r\n highChart: any;\r\n Highcharts = Highcharts;\r\n chartOptions: Highcharts.Options;\r\n updateFlagChart: boolean = false;\r\n isLoadingChart = false;\r\n\r\n messageNoData: string = CHART_MESSAGES.en.pleaseSelectChannel;\r\n\r\n randomColorsList = [];\r\n annotationBuffer: any = {};\r\n isDarkTheme: boolean;\r\n\r\n unitSetting: number;\r\n\r\n constructor(\r\n private baseChartService: BaseChartService,\r\n private channelSelectionService: ChannelSelectionService,\r\n private pivotPointService: PivotPointService,\r\n private multiWellChartService: MultiWellChartService,\r\n private compareWellsTimeControlService: CompareWellsTimeControlService,\r\n private ref: ChangeDetectorRef,\r\n private themesSettingsService: ThemesSettingsService,\r\n private unitSystemService: UnitSystemService\r\n ) {\r\n const localData = this.themesSettingsService.getLocalStorage();\r\n if (localData && localData.themes === ENUM_THEMES.Dark) {\r\n this.isDarkTheme = true;\r\n }\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: ','\r\n }\r\n });\r\n\r\n this.unitSetting = this.unitSystemService.loadUnitSettings();\r\n }\r\n\r\n ngOnInit() {\r\n this.setupChart();\r\n this.randomColorsList = this.generateRandomColors();\r\n\r\n // update chart series data by zoom buffer\r\n const subs = this.multiWellChartService.getZoomBufferData().subscribe((dataByTreatments: IInputDataWell[]) => {\r\n if (dataByTreatments) {\r\n\r\n // parse all treatment data\r\n const seriesData = this.parseMultiWellSeriesData(dataByTreatments, this.filterSettings.type, this.pivotPointData, this.unitSetting);\r\n this.updateChartSeriesData(seriesData);\r\n this.parsedSeriesData = seriesData;\r\n }\r\n });\r\n const subsAliasName = this.multiWellChartService.onWellAliasNameChangeSubject.asObservable().subscribe((wellOption: IWellOptions) => {\r\n if (wellOption && !isEmpty(wellOption)) {\r\n if (!isEmpty(this.annotationBuffer) && !isEmpty(wellOption.selectedTreatmentList)) {\r\n wellOption.selectedTreatmentList.forEach(treatment => {\r\n const annotationId = `${wellOption.wellId}_${treatment.id}`;\r\n if (this.annotationBuffer[annotationId]) {\r\n this.annotationBuffer[annotationId].update({\r\n labelOptions: {\r\n text: wellOption.aliasName ? `(${wellOption.aliasName})-${treatment.text}` : treatment.text\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n });\r\n const subsAliasColor = this.multiWellChartService.onWellAliasColorChangeSubject.asObservable().subscribe((wellOption: IWellOptions) => {\r\n if (wellOption && !isEmpty(wellOption)) {\r\n if (this.highChart && !isEmpty(this.highChart.series)) {\r\n const seriesByWellId = this.highChart.series.filter(item => item.userOptions.id && item.userOptions.id.indexOf(`${wellOption.wellId}`) === 0);\r\n seriesByWellId.forEach(series => {\r\n series.update({\r\n color: wellOption.wellColor\r\n }, false);\r\n });\r\n this.highChart.redraw();\r\n }\r\n }\r\n });\r\n const subsWellTimeControl = this.compareWellsTimeControlService.getDataState().subscribe(settings => {\r\n if (settings) {\r\n // update well color mode\r\n this.isWellColorMode = settings.isWellColor;\r\n }\r\n });\r\n this.subscriptions.push(subs);\r\n this.subscriptions.push(subsAliasName);\r\n this.subscriptions.push(subsAliasColor);\r\n this.subscriptions.push(subsWellTimeControl);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.inputState && !changes.inputState.isFirstChange()) {\r\n const timezone = this.wellOptions[0].tzTimeZone;\r\n Highcharts.setOptions({\r\n time: {\r\n getTimezoneOffset(timestamp) {\r\n return -momentTz.tz(timestamp, timezone).utcOffset();\r\n },\r\n }\r\n });\r\n\r\n this.updateChart(this.inputChartData, this.filterSettings, this.pivotPointData, this.unitSetting);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n Helper.unsubscribe(this.subscriptions);\r\n // unset zoom buffer data\r\n this.multiWellChartService.setZoomBufferData(null);\r\n this.annotationBuffer = {};\r\n }\r\n\r\n setupChart() {\r\n let options = this.baseChartService.getDefaultOptions(true, true, this.isDarkTheme, this.cursor);\r\n\r\n const cursorOpt = this.cursor ? this.cursor.id : ENUM_CURSOR_OPTS.Default;\r\n const crosshair = this.baseChartService.crosshair(cursorOpt);\r\n const isXAxisCrosshair = !!crosshair.x;\r\n const isYAxisCrosshair = !!crosshair.y;\r\n\r\n const xAxisOpt = this.baseChartService.getXAxisOption(this.filterSettings.type, null, null, true, isXAxisCrosshair);\r\n const self = this;\r\n // bind set extreme event\r\n xAxisOpt.events = {\r\n setExtremes(e) {\r\n if (e && e.trigger === 'navigator') {\r\n self.onChangeNavigatorMinMax.emit(e);\r\n }\r\n }\r\n };\r\n options.xAxis = [xAxisOpt];\r\n options.yAxis = this.baseChartService.getYAxisOption(this.channelSettings, undefined, this.unitSetting, isYAxisCrosshair);\r\n // const tooltipShared = !this.cursor ? false : (this.cursor.typeCursor === ENUM_CURSOR_OPTS.VertLine);\r\n // const tooltipSplit = !this.cursor ? false : (this.cursor.typeCursor === ENUM_CURSOR_OPTS.VertLine);\r\n\r\n // add diagnostic Axis\r\n if (this.filterSettings.type !== TIME_SETTING_TYPE.EpochTime) {\r\n // add a virsual yAxis for vertical line series\r\n const diagnoctisAxisOpt: Highcharts.YAxisOptions = {\r\n title: {\r\n text: capitalize(CHART_SERIES_NAME.diagnostic),\r\n useHTML: false,\r\n },\r\n opposite: false,\r\n showEmpty: false,\r\n min: 0,\r\n max: 100,\r\n maxPadding: 0,\r\n startOnTick: false,\r\n endOnTick: false,\r\n visible: false\r\n };\r\n options.yAxis.push(diagnoctisAxisOpt);\r\n }\r\n options.tooltip = Object.assign(options.tooltip, {\r\n headerFormat: this.baseChartService.getTooltipHeader(this.filterSettings.type),\r\n shared: false,\r\n split: false\r\n });\r\n\r\n options.legend.labelFormatter = function () {\r\n // case 1: if this is monitor\r\n if (this.userOptions.treatmentNumber === 'Monitor') {\r\n const arr = this.name.split(' - Monitor - ');\r\n return arr[arr.length - 1].trim();\r\n }\r\n // case 2: if this is treatment\r\n else {\r\n const arr = this.name.split('-');\r\n return arr[arr.length - 1].trim();\r\n }\r\n };\r\n\r\n this.chartOptions = options;\r\n if (this.defaultTextData) {\r\n this.chartOptions.lang.noData = this.defaultTextData;\r\n }\r\n this.chartOptions.chart.events = {\r\n selection(event) {\r\n const result = { minX: null, maxX: null, isReset: false };\r\n if (event.xAxis) {\r\n result.minX = event.xAxis[0].min;\r\n result.maxX = event.xAxis[0].max;\r\n } else {\r\n const xAxisData = this.xAxis[0].getExtremes();\r\n result.minX = xAxisData.dataMin;\r\n result.maxX = xAxisData.dataMax;\r\n result.isReset = true;\r\n }\r\n self.onChangeXMinMax.emit(result);\r\n\r\n return true;\r\n }\r\n };\r\n\r\n setTimeout(() => {\r\n if (this.filterSettings.type === TIME_SETTING_TYPE.EpochTime) {\r\n // parse all treatment data\r\n const seriesData = this.parseMultiWellSeriesData(this.inputChartData, this.filterSettings.type, this.pivotPointData, this.unitSetting);\r\n this.parsedSeriesData = seriesData;\r\n // set empty first\r\n seriesData.forEach(item => {\r\n item.data = [];\r\n });\r\n const navigatorSeriesData = this.parseNavigatorSeriesData(this.navigatorInputData, this.filterSettings.type, this.pivotPointData, this.unitSetting);\r\n\r\n options = Object.assign(options, {\r\n navigator: {\r\n adaptToUpdatedData: false,\r\n enabled: !!this.filterSettings.multiWellScrollbar,\r\n handles: {\r\n enabled: true\r\n },\r\n series: navigatorSeriesData,\r\n margin: 5,\r\n maskFill: !this.isDarkTheme ? 'rgba(102,133,194,0.3)' : 'rgba(51, 77, 128, 0.3)',\r\n outlineColor: !this.isDarkTheme ? '#cccccc' : '#e8e6e3',\r\n xAxis: {\r\n labels: {\r\n formatter() {\r\n const utcTimestamp = new Date(this.value).getTime();\r\n return Highcharts.dateFormat('%m/%d %H:%M', utcTimestamp);\r\n },\r\n style: { color: !this.isDarkTheme ? '#000' : '#e8e6e3' }\r\n }\r\n }\r\n },\r\n scrollbar: {\r\n liveRedraw: false,\r\n enabled: !!this.filterSettings.multiWellScrollbar,\r\n },\r\n series: seriesData\r\n });\r\n\r\n options.rangeSelector = {\r\n enabled: false,\r\n selected: 0,\r\n buttons: [{\r\n type: 'day',\r\n count: 1,\r\n text: '1d'\r\n }, {\r\n type: 'week',\r\n count: 1,\r\n text: '1w'\r\n }, {\r\n type: 'month',\r\n text: '1m'\r\n }, {\r\n type: 'all',\r\n text: 'All'\r\n }],\r\n inputEnabled: false\r\n };\r\n // options.tooltip.split = false;\r\n this.chartOptions = options;\r\n this.highChart = Highcharts.stockChart('multi-wells-highstock-chart', options);\r\n } else {\r\n this.highChart = Highcharts.chart('multi-wells-highstock-chart', this.chartOptions);\r\n }\r\n }, 200);\r\n\r\n }\r\n\r\n private getPivotSeriesData(diagPoint: IDiagnosticPoint, index, groupId: string, timeFormat: string, inputData): { x: number, y: number, groupId: string, name: string }[] {\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime || !inputData || !diagPoint) return null;\r\n let offsetTimeSec = (index + 1) * 2; // default when unset\r\n let timefloat: { start: number, end: number } = { start: null, end: null }; // in second\r\n\r\n if (inputData.realtimeData && inputData.realtimeData.length) {\r\n const timeRange = this.baseChartService.getTimeRangeFilter(inputData.realtimeData[0]);\r\n timefloat = timeRange.timefloat;\r\n } else if (inputData.fracproData && inputData.fracproData.length) {\r\n const timeRange = this.baseChartService.getTimeRangeFilter(inputData.fracproData[0]);\r\n timefloat = timeRange.timefloat;\r\n }\r\n\r\n if (isNumber(diagPoint.timeOffSet)) {\r\n offsetTimeSec = diagPoint.timeOffSet; // in sec\r\n if (timefloat.start && diagPoint.timeOffSet < timefloat.start) offsetTimeSec = timefloat.start;\r\n if (timefloat.end && diagPoint.timeOffSet > timefloat.end) offsetTimeSec = timefloat.end;\r\n }\r\n const formatOffsetTime = (value: number): number => {\r\n if (!value) return value;\r\n const result = (value / 60).toFixed(2);\r\n return Number(result);\r\n };\r\n\r\n const res: { x: number, y: number, groupId: string, name: string }[] = [];\r\n const xValue = formatOffsetTime(offsetTimeSec);\r\n const name = diagPoint.name;\r\n for (let i = 0; i <= 100; i++) {\r\n res.push({ x: xValue, y: i, groupId, name });\r\n }\r\n return res;\r\n }\r\n\r\n private loadPivotPoints(diagPoint: IDiagnosticPoint, index, keyOpt: string, timeFormat: string, inputData, yAxisData) {\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime || !inputData || !diagPoint) return null;\r\n const name = CHART_SERIES_NAME.diagnostic;\r\n const groupId = `${keyOpt}_${diagPoint.id}`;\r\n const data = this.getPivotSeriesData(diagPoint, index, groupId, timeFormat, inputData);\r\n\r\n return {\r\n id: groupId,\r\n name,\r\n type: 'line',\r\n tooltip: true,\r\n data,\r\n showInLegend: false,\r\n yAxis: yAxisData.length - 1,\r\n color: diagPoint.color,\r\n lineWidth: 5,\r\n dragDrop: {\r\n draggableX: false,\r\n groupBy: 'groupId',\r\n dragSensitivity: 0,\r\n dragPrecisionX: 1\r\n },\r\n boostThreshold: 20000,\r\n stickyTracking: false,\r\n visible: !!diagPoint.selected,\r\n };\r\n }\r\n\r\n parsePivotPointData(pivotPointData: IPivotPointItem[], inputDataList: IInputDataWell[], timeFormat: string) {\r\n const seriesData = [];\r\n if (!pivotPointData || !pivotPointData.length) return seriesData;\r\n const maxPivotPoint = this.pivotPointService.getMaxPivotPoint(pivotPointData);\r\n\r\n const diagPoint: IDiagnosticPoint = {\r\n id: `${maxPivotPoint.paramName}_${maxPivotPoint.paramValue}`,\r\n name: maxPivotPoint.paramNameDisplay || maxPivotPoint.paramName,\r\n color: maxPivotPoint.color,\r\n timeOffSet: maxPivotPoint.paramValue,\r\n selected: true,\r\n isDefault: true\r\n };\r\n\r\n const index = pivotPointData.findIndex(x => x.treatmentId === maxPivotPoint.treatmentId);\r\n const inputData: IInputDataWell = inputDataList.find(data => data.treatmentId === maxPivotPoint.treatmentId);\r\n const series = this.loadPivotPoints(diagPoint, index, 'diag', timeFormat, inputData, this.highChart.yAxis);\r\n seriesData.push(series);\r\n\r\n return seriesData;\r\n }\r\n\r\n loadChartData(inputData: IInputDataWell[], timeFormat, pivotPointData?: IPivotPointItem[], unitSetting?: number) {\r\n const renderChart$ = of(null)\r\n .pipe(delay(1000))\r\n .pipe(switchMap(() => {\r\n // console.log('begin parse series: ', new Date());\r\n // parse all treatment data\r\n let seriesData = this.parseMultiWellSeriesData(inputData, timeFormat, pivotPointData, unitSetting);\r\n let pivotSeries = this.parsePivotPointData(pivotPointData, inputData, timeFormat);\r\n // check if all series is empty data then return empty array (prevent show series legend on chart)\r\n if (this.baseChartService.isAllSeriesDataEmpty(seriesData)) {\r\n seriesData = pivotSeries;\r\n } else seriesData = seriesData.concat(pivotSeries);\r\n return of(seriesData);\r\n }))\r\n .pipe(tap(seriesData => {\r\n this.parsedSeriesData = seriesData;\r\n if (this.highChart) {\r\n if (isEmpty(seriesData)) {\r\n this.setChartMessage(CHART_MESSAGES.en.noData);\r\n }\r\n this.updateChartSeriesData(seriesData, true);\r\n // console.log(seriesData);\r\n // console.log('add series done: ', new Date());\r\n // add annotations\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime) {\r\n this.toggleAliasNameAnnotation(false, false, this.filterSettings.showWellAliasInTag);\r\n }\r\n this.highChart.redraw();\r\n }\r\n }));\r\n\r\n return renderChart$;\r\n }\r\n\r\n toggleAliasNameAnnotation(isRedraw: boolean = true, isRemove: boolean = false, isAlias?: boolean) {\r\n if (this.parsedSeriesData) {\r\n const aliasNameAnnotations = this.parseAliasNameAnnotation(this.wellOptions, this.parsedSeriesData, isAlias);\r\n if (!isEmpty(aliasNameAnnotations)) {\r\n Object.keys(aliasNameAnnotations).forEach(id => {\r\n if (aliasNameAnnotations[id]) {\r\n if (isRemove) {\r\n this.highChart.removeAnnotation(id, false);\r\n }\r\n const annotation = this.highChart.addAnnotation(aliasNameAnnotations[id], false);\r\n this.annotationBuffer[id] = annotation;\r\n }\r\n });\r\n }\r\n if (isRedraw) {\r\n this.highChart.redraw();\r\n }\r\n }\r\n }\r\n\r\n updateChartSeriesData(seriesData: any[], noRedraw?: boolean) {\r\n if (!isEmpty(seriesData)) {\r\n if (!isEmpty(this.highChart.series)) {\r\n let pivotSeries = seriesData.filter(series => series.name === CHART_SERIES_NAME.diagnostic);\r\n this.highChart.series.forEach(series => {\r\n const seriesItem = seriesData.find(item => {\r\n return item.name === series.options.name;\r\n });\r\n if (seriesItem) {\r\n pivotSeries = pivotSeries.filter(series => series.name !== seriesItem.name);\r\n if (seriesItem.name === CHART_SERIES_NAME.diagnostic) series.setVisible(!!seriesItem.selected);\r\n series.setData(seriesItem.data, false);\r\n }\r\n });\r\n // check pivot item\r\n pivotSeries.forEach(series => {\r\n this.highChart.addSeries(series, false, false);\r\n });\r\n } else {\r\n // name\r\n seriesData.forEach(series => {\r\n this.highChart.addSeries(series, false, false);\r\n });\r\n }\r\n\r\n if (!noRedraw) {\r\n this.highChart.redraw();\r\n }\r\n }\r\n }\r\n\r\n parseSeriesDataByChannels(dataInfo: IInputDataWell, channelSettings: IChannelSettingModel, inputData?: IInputDataChart, timeFormat?: string, dataType?: string, extraInfo?: ISeriesDataExtraInfo, masterDataInfo?: IInputDataWell, unitSetting?: number) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n\r\n let result = [];\r\n if (channelSettings && inputData) {\r\n let yAxisIndex = 0;\r\n for (const key in channelSettings) {\r\n if (channelSettings.hasOwnProperty(key) && key !== 'autoScaleYAxis') {\r\n const setting = channelSettings[key];\r\n if (setting.channels && setting.channels.length > 0) {\r\n // set y axis's min max for filtering data series\r\n if (isNumber(setting.min) && isNumber(setting.max) && !channelSettings.autoScaleYAxis) {\r\n extraInfo.yAxisMin = setting.min;\r\n extraInfo.yAxisMax = setting.max;\r\n }\r\n const seriesData = this.getDataSeriesFromChannels(dataInfo, yAxisIndex, setting.channels, inputData, timeFormat, dataType, extraInfo, masterDataInfo, unitSetting);\r\n result = result.concat(seriesData);\r\n }\r\n yAxisIndex++;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getDataSeriesFromChannels(dataInfo: IInputDataWell, yAxisIndex: number, channels: IChannelSettingItemModel[], inputData?: IInputDataChart, timeFormat?: string, dataType?: string, extraInfo?: ISeriesDataExtraInfo, masterDataInfo?: IInputDataWell, unitSetting?: number) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n let result = [];\r\n if (channels && inputData) {\r\n let values = [];\r\n const columns = inputData.columns;\r\n let xAxisChannelName = DATETIME_CHANNEL_NAME;\r\n if (timeFormat && timeFormat.toLowerCase() === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n xAxisChannelName = TIMEFLOAT_CHANNEL_NAME;\r\n // set fracpro time float channel name\r\n if (dataType === 'fracproData') {\r\n xAxisChannelName = FRACPRO_TIMEFLOAT_CNAME;\r\n }\r\n }\r\n // find index of time channel\r\n const timeIndex = columns.findIndex(value => value === xAxisChannelName);\r\n result = channels.map((channelItem, index) => {\r\n if (channelItem.channelMappedGroup && channelItem.channelMappedGroup.length) {\r\n const selectedItem = channelItem.channelMappedGroup.find(x => x.wellId === dataInfo.wellId && x.treatmentId === dataInfo.treatmentId);\r\n if (selectedItem) {\r\n channelItem.cName = channelItem.channel.cName = selectedItem.cName;\r\n // channelItem.color = channelItem.channel.color = selectedItem.color;\r\n channelItem.originalName = channelItem.channel.originalName = selectedItem.originalName;\r\n channelItem.channelName = selectedItem.name;\r\n channelItem.name = channelItem.channel.name = selectedItem.name;\r\n // channelItem.unit = channelItem.channel.unit = selectedItem.unit;\r\n // channelItem.measureType = channelItem.channel.measureType = selectedItem.measureType;\r\n }\r\n } else if (dataInfo.mappedChannels && dataInfo.mappedChannels.length) {\r\n const mappedChannel = dataInfo.mappedChannels.find(x => x.mappedName === channelItem.name || x.mappedName === channelItem.channelName);\r\n if (mappedChannel) {\r\n channelItem.channelName = mappedChannel.mappedName;\r\n channelItem.name = mappedChannel.mappedName;\r\n channelItem.originalName = mappedChannel.originalName;\r\n }\r\n }\r\n\r\n const measureType = channelItem.measureType;\r\n const unitCoefficient = this.unitSystemService.getUnitCoefficient(measureType, unitSetting);\r\n let dataSeries = [];\r\n const dataIndex = typeof yAxisIndex === 'number' && !isNaN(yAxisIndex) ? yAxisIndex : index;\r\n // find index of channel setting\r\n const channelIndex = columns.findIndex(value => value === channelItem.cName);\r\n\r\n // filter valid value\r\n values = cloneDeep(inputData.values);\r\n values = values.filter(dataRow => {\r\n const yValue = dataRow[channelIndex];\r\n return isNumber(yValue) && !isNaN(yValue);\r\n });\r\n\r\n if (!values || !values.length) return null;\r\n\r\n if (isNumber(extraInfo.yAxisMin) && isNumber(extraInfo.yAxisMax) && extraInfo.yAxisMin <= extraInfo.yAxisMax) {\r\n if (unitCoefficient) {\r\n values = values.map(dataRow => {\r\n const yValue = dataRow[channelIndex];\r\n // y_plot = min (y_max, max (y_min, y))\r\n const yAxisMin = this.unitSystemService.revertValue(extraInfo.yAxisMin, unitCoefficient);\r\n const yAxisMax = this.unitSystemService.revertValue(extraInfo.yAxisMax, unitCoefficient);\r\n dataRow[channelIndex] = Math.min(yAxisMax, Math.max(yAxisMin, yValue));\r\n return dataRow;\r\n });\r\n } else {\r\n values = values.map(dataRow => {\r\n const yValue = dataRow[channelIndex];\r\n const yAxisMin = extraInfo.yAxisMin;\r\n const yAxisMax = extraInfo.yAxisMax;\r\n dataRow[channelIndex] = Math.min(yAxisMax, Math.max(yAxisMin, yValue));\r\n return dataRow;\r\n });\r\n }\r\n }\r\n\r\n // parse to chart data point\r\n const seriesId = `${dataInfo.wellId}-${dataInfo.treatmentId}_${channelItem.channelName || channelItem.name}`;\r\n let masterSeriesId;\r\n if (masterDataInfo) {\r\n masterSeriesId = `${masterDataInfo.wellId}-${masterDataInfo.treatmentId}_${channelItem.channelName || channelItem.name}`;\r\n }\r\n if (unitCoefficient) {\r\n values.forEach(dataRow => {\r\n let xValue = dataRow[timeIndex];\r\n if (xAxisChannelName === DATETIME_CHANNEL_NAME) {\r\n xValue = new Date(xValue).getTime();\r\n }\r\n // covert x value from second to min (time float value response from api is in second)\r\n if (xAxisChannelName === TIMEFLOAT_CHANNEL_NAME || xAxisChannelName === FRACPRO_TIMEFLOAT_CNAME) {\r\n xValue = Helper.convertSecToMin(xValue);\r\n }\r\n\r\n const yValue = this.unitSystemService.convertValue(dataRow[channelIndex], unitCoefficient);\r\n const point = { x: xValue, y: yValue };\r\n dataSeries.push(point);\r\n });\r\n } else {\r\n values.forEach(dataRow => {\r\n let xValue = dataRow[timeIndex];\r\n if (xAxisChannelName === DATETIME_CHANNEL_NAME) {\r\n xValue = new Date(xValue).getTime();\r\n }\r\n // covert x value from second to min (time float value response from api is in second)\r\n if (xAxisChannelName === TIMEFLOAT_CHANNEL_NAME || xAxisChannelName === FRACPRO_TIMEFLOAT_CNAME) {\r\n xValue = Helper.convertSecToMin(xValue);\r\n }\r\n\r\n const yValue = dataRow[channelIndex] as number;\r\n const point = { x: xValue, y: yValue };\r\n dataSeries.push(point);\r\n });\r\n }\r\n\r\n // pre-sort data series\r\n // if (dataSeries.length > 1) {\r\n // dataSeries = dataSeries.sort((a, b) => {\r\n // return a.x - b.x;\r\n // });\r\n // }\r\n\r\n let isMonitor = false;\r\n let treatmentNumber: string | number = dataInfo.treatmentNumber;\r\n if (treatmentNumber < 0) {\r\n treatmentNumber = 'Monitor';\r\n isMonitor = true;\r\n }\r\n\r\n // const channelUnit = Helper.getValidUnit(channelItem.unit, true);\r\n // const seriesChannel = channelItem.channelName ? channelItem.channelName : channelItem.name;\r\n // const seriesChannelName = isMonitor ? `${dataInfo.wellName}.${seriesChannel}` : seriesChannel;\r\n // const seriesName = `${extraInfo.seriesPrefix || ''}${seriesChannelName} ${channelUnit}`;\r\n\r\n const unit = (measureType && measureType.trim() && !!unitSetting) ? (unitCoefficient ? unitCoefficient.unit : undefined) : channelItem.unit;\r\n const channelUnit = Helper.getValidUnit(unit, true);\r\n const channelName = channelItem.channelName || channelItem.name;\r\n const isDisplayOriginalName = (channelItem.originalName && channelName.toUpperCase() !== channelItem.originalName.toUpperCase());\r\n\r\n let isPridective: boolean;\r\n if (channelItem.originalName) {\r\n const originalNameLoweCase = channelItem.originalName.toLowerCase();\r\n isPridective = originalNameLoweCase.indexOf(PREFIX_PREDICTIVE_CHANNEL) === 0;\r\n }\r\n\r\n let seriesName = `${extraInfo.seriesPrefix || ''}${channelItem.channelName || channelItem.name}`;\r\n const tooltipName = !!isDisplayOriginalName ? `${seriesName}: ${channelItem.originalName} ${channelUnit}` : `${seriesName} ${channelUnit}`;\r\n seriesName = seriesName + ' ' + channelUnit;\r\n const seriesColor = channelItem.color ? channelItem.color : extraInfo.seriesColor;\r\n\r\n return {\r\n id: seriesId,\r\n name: seriesName,\r\n tooltipName,\r\n type: 'line',\r\n data: dataSeries,\r\n // lineWidth: !!isPridective ? 3 : 2,\r\n dashStyle: !!isPridective ? 'shortdash' : 'Solid',\r\n yAxis: dataIndex,\r\n color: seriesColor,\r\n boostThreshold: 10000,\r\n connectNulls: true,\r\n linkedTo: isMonitor ? undefined : masterSeriesId,\r\n wellId: dataInfo.wellId,\r\n treatmentId: dataInfo.treatmentId,\r\n treatmentNumber\r\n };\r\n });\r\n }\r\n\r\n return result.filter(x => x);\r\n }\r\n\r\n parseSingleWellSeriesData(channelSettings, wellInputData: IInputDataWell, timeFormat, color?: string, masterDataInfo?: IInputDataWell, unitSetting?: number) {\r\n // parse all flow input data to chart's series data\r\n let seriesData = [];\r\n if (wellInputData) {\r\n // generate series data name\r\n let treatmentName = `Treatment ${wellInputData.treatmentNumber}`;\r\n if (wellInputData.treatmentNumber < 0) {\r\n treatmentName = 'Monitor';\r\n }\r\n\r\n const prefixName = `${wellInputData.wellName} - ${treatmentName} - `;\r\n const extraInfo = {\r\n seriesPrefix: prefixName,\r\n seriesColor: color\r\n };\r\n const dataCollection = {\r\n realtimeData: wellInputData.realtimeData,\r\n fracproData: wellInputData.fracproData\r\n };\r\n for (const dataType in dataCollection) {\r\n if (dataCollection.hasOwnProperty(dataType)) {\r\n if (!isEmpty(dataCollection[dataType])) {\r\n const dataFlow = dataCollection[dataType][0];\r\n const prefixChannel = this.channelSelectionService.getPrefixChannelByDataType(dataType);\r\n const channelSettingsByDataType = this.channelSelectionService.filterChannelsByPrefixStr(channelSettings, prefixChannel);\r\n\r\n const parsedData = this.parseSeriesDataByChannels(wellInputData, channelSettingsByDataType, dataFlow, timeFormat, dataType, extraInfo, masterDataInfo, unitSetting);\r\n if (!parsedData.length) continue;\r\n seriesData = seriesData.concat(parsedData);\r\n }\r\n }\r\n }\r\n }\r\n return seriesData;\r\n }\r\n\r\n parseMultiWellSeriesData(multiWellInputData: IInputDataWell[], timeFormat, pivotPointData?: IPivotPointItem[], unitSetting?: number) {\r\n let seriesData = [];\r\n if (!isEmpty(multiWellInputData)) {\r\n // find well master that is not monitor well\r\n const normalWellAsMaster = multiWellInputData.find(dataWell => dataWell.treatmentNumber > 0);\r\n const indexNormalWellAsMaster = multiWellInputData.findIndex(dataWell => dataWell.treatmentNumber > 0);\r\n\r\n multiWellInputData.forEach((wellData, index) => {\r\n let masterDataInfo;\r\n if (normalWellAsMaster && index !== indexNormalWellAsMaster) {\r\n masterDataInfo = normalWellAsMaster;\r\n }\r\n if (wellData && wellData.channelSettings) {\r\n let parsedData = [];\r\n\r\n // update time value by pivot point data\r\n if (!isEmpty(pivotPointData)) {\r\n const shiftedData = this.pivotPointService.handleUpdateTimeByPivotData(wellData, pivotPointData);\r\n // parse chart series data for each treatment\r\n parsedData = this.parseSingleWellSeriesData(wellData.channelSettings, shiftedData, timeFormat, this.randomColorsList[index], masterDataInfo, unitSetting);\r\n } else {\r\n parsedData = this.parseSingleWellSeriesData(wellData.channelSettings, wellData, timeFormat, this.randomColorsList[index], masterDataInfo, unitSetting);\r\n }\r\n seriesData = seriesData.concat(parsedData);\r\n }\r\n });\r\n }\r\n\r\n if (this.isWellColorMode && !isEmpty(this.wellOptions)) {\r\n this.wellOptions.forEach(opt => {\r\n seriesData.forEach(series => {\r\n if (series.wellId === opt.wellId) {\r\n series.color = opt.wellColor;\r\n }\r\n });\r\n });\r\n } else {\r\n seriesData = this.changeColorFollowColorMode(this.channelSettings, seriesData);\r\n }\r\n\r\n return seriesData;\r\n }\r\n\r\n changeColorFollowColorMode(channelSettings: IChannelSettingModel, seriesData) {\r\n const settings = cloneDeep(channelSettings);\r\n for (const key in settings) {\r\n if (settings.hasOwnProperty(key)) {\r\n const setting = settings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n let dataRandomColor: any[] = [];\r\n forEach(setting.channels, item => {\r\n let wellData = seriesData.filter(i => i.id.includes(item.channelName));\r\n if (item.colorMode === 'Random') {\r\n dataRandomColor = dataRandomColor.concat(wellData);\r\n } else if (item.colorMode === 'Flat') {\r\n wellData = wellData.map((data, index) => {\r\n data.color = item.color;\r\n return data;\r\n });\r\n } else {\r\n let colorDarken;\r\n let colorLighten;\r\n const countTreatmentData = wellData.length;\r\n const colorChannelDark = new tinycolor(item.color);\r\n const colorChannelLight = new tinycolor(item.color);\r\n if (colorChannelDark.isDark()) {\r\n colorDarken = colorChannelDark.darken(20).toHexString();\r\n if (colorChannelDark.getBrightness() < 25) {\r\n colorDarken = colorChannelDark.lighten(10).toHexString();\r\n }\r\n colorLighten = colorChannelLight.lighten(40).toHexString();\r\n } else if (colorChannelLight.isLight()) {\r\n colorLighten = colorChannelLight.lighten(20).toHexString();\r\n if (colorChannelLight.getBrightness() > 240) {\r\n colorLighten = colorChannelLight.darken(10).toHexString();\r\n }\r\n colorDarken = colorChannelDark.darken(40).toHexString();\r\n }\r\n const listColor = new tinygradient([\r\n colorDarken,\r\n colorLighten\r\n ]);\r\n if (countTreatmentData > 2) {\r\n const listColorPicker = listColor.rgb(countTreatmentData).map((value) => {\r\n return value.toString();\r\n });\r\n wellData = wellData.map((data, index) => {\r\n data.color = listColorPicker[index];\r\n return data;\r\n });\r\n } else {\r\n const listColorDefault = [colorDarken, colorLighten];\r\n wellData = wellData.map((data, index) => {\r\n data.color = listColorDefault[index];\r\n return data;\r\n });\r\n }\r\n }\r\n });\r\n if (dataRandomColor && dataRandomColor.length > 0) {\r\n dataRandomColor = dataRandomColor.map((data, index) => {\r\n data.color = this.randomColorsList[index];\r\n return data;\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return seriesData;\r\n }\r\n\r\n updateChart(inputData, filterSettings, pivotPointData?, unitSetting?: number) {\r\n if (inputData && filterSettings) {\r\n this.setupChart();\r\n this.isLoadingChart = true;\r\n this.loadChartData(inputData, filterSettings.type, pivotPointData, unitSetting).subscribe(() => {\r\n this.isLoadingChart = false;\r\n this.highChart.redraw();\r\n this.highChart.setSize(this.highChart.chartWidth, this.highChart.chartHeight);\r\n this.highChart.options.chart.width = null;\r\n this.highChart.options.chart.height = null;\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n resetChart(isRedraw?: boolean) {\r\n if (this.highChart) {\r\n this.chartOptions.xAxis = [];\r\n this.chartOptions.yAxis = [];\r\n this.chartOptions.series = [];\r\n // clear chart and reload data\r\n while (this.highChart.series.length > 0) {\r\n this.highChart.series[0].remove(false);\r\n }\r\n while (this.highChart.yAxis.length > 0) {\r\n this.highChart.yAxis[0].remove(false);\r\n }\r\n while (this.highChart.xAxis.length > 0) {\r\n this.highChart.xAxis[0].remove(false);\r\n }\r\n\r\n if (isRedraw) {\r\n this.highChart.redraw();\r\n }\r\n }\r\n }\r\n\r\n setChartMessage(message: string) {\r\n if (typeof message === 'string' && this.highChart) {\r\n const noDataEle = document.querySelector('.highcharts-no-data');\r\n if (noDataEle && noDataEle.children[0]) {\r\n noDataEle.children[0].innerHTML = message;\r\n this.messageNoData = message;\r\n }\r\n }\r\n }\r\n\r\n zoomOut() {\r\n this.highChart.zoomOut();\r\n }\r\n\r\n reflow() {\r\n this.highChart.reflow();\r\n }\r\n\r\n toggleTooltip(isDisplay) {\r\n if (this.highChart) {\r\n this.highChart.update({\r\n tooltip: {\r\n enabled: isDisplay\r\n }\r\n });\r\n }\r\n }\r\n\r\n updateChartCursorOptions(cursor) {\r\n if (cursor) {\r\n this.cursor = cursor;\r\n\r\n if (this.highChart) {\r\n const crosshair = this.baseChartService.crosshair(this.cursor.id);\r\n const handleAxisCross = (axisOpt, crossValue) => {\r\n if (axisOpt) {\r\n if (Array.isArray(axisOpt) && axisOpt.length) {\r\n axisOpt.forEach(item => {\r\n item.crosshair = crossValue;\r\n })\r\n } else {\r\n axisOpt.crosshair = crossValue;\r\n }\r\n }\r\n return axisOpt;\r\n };\r\n // set xAxis\r\n let xAxisOpt: any = this.highChart.options.xAxis;\r\n xAxisOpt = handleAxisCross(xAxisOpt, crosshair.x);\r\n // set yAxis\r\n let yAxisOpt: any = this.highChart.options.yAxis;\r\n yAxisOpt = handleAxisCross(yAxisOpt, crosshair.y);\r\n // update chartOptions\r\n this.chartOptions.xAxis = xAxisOpt;\r\n this.chartOptions.yAxis = yAxisOpt;\r\n this.chartOptions.plotOptions.series.cursor = this.cursor.id;\r\n this.chartOptions.tooltip.shared = false;\r\n this.chartOptions.tooltip.split = false;\r\n // update chart\r\n this.highChart.update({\r\n plotOptions: {\r\n series: {\r\n cursor: this.cursor.id\r\n }\r\n },\r\n xAxis: xAxisOpt,\r\n yAxis: yAxisOpt,\r\n tooltip: {\r\n shared: false,\r\n split: false\r\n }\r\n }, true);\r\n }\r\n }\r\n }\r\n\r\n toggleScrollbar(isDisplay) {\r\n if (this.highChart) {\r\n this.highChart.update({\r\n navigator: {\r\n enabled: isDisplay\r\n },\r\n scrollbar: {\r\n enabled: isDisplay\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleDragDropSeries() {\r\n if (this.highChart) {\r\n this.highChart.update({\r\n plotOptions: {\r\n series: {\r\n dragDrop: {\r\n draggableX: true,\r\n groupBy: 'groupId'\r\n },\r\n stickyTracking: false\r\n }\r\n },\r\n // tooltip: {\r\n // shared: false\r\n // }\r\n }, false);\r\n }\r\n }\r\n\r\n generateRandomColors() {\r\n const colors = randomColors({\r\n luminosity: 'bright',\r\n count: 200\r\n });\r\n return colors;\r\n }\r\n\r\n exportChart(fileName?: string, type?: string) {\r\n const chart = this.highChart;\r\n if (type === 'Save PNG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 4,\r\n type: 'image/png'\r\n }, {\r\n lang: {\r\n noData: `${this.messageNoData}`\r\n },\r\n });\r\n } else if (type === 'Save JPEG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 8,\r\n type: 'image/jpeg'\r\n }, {\r\n lang: {\r\n noData: `${this.messageNoData}`\r\n },\r\n });\r\n } else {\r\n chart.print();\r\n }\r\n }\r\n\r\n parseNavigatorSeriesData(navigatorInputData, timeFormat?, pivotPointData?, unitSetting?: number) {\r\n let seriesData = [];\r\n seriesData = this.parseMultiWellSeriesData(navigatorInputData, timeFormat, pivotPointData, unitSetting);\r\n seriesData = seriesData.map(series => {\r\n let firstDataPoint;\r\n if (!isEmpty(series.data)) {\r\n firstDataPoint = series.data[0];\r\n firstDataPoint.y = 0;\r\n }\r\n\r\n return {\r\n type: 'line',\r\n fillOpacity: 0.5,\r\n dataGrouping: {\r\n groupPixelWidth: 10\r\n },\r\n data: firstDataPoint ? [{ x: firstDataPoint.x, y: 0 }, { x: firstDataPoint.x, y: 10 }] : [],\r\n color: 'red'\r\n };\r\n });\r\n\r\n return seriesData;\r\n }\r\n\r\n parseAliasNameAnnotation(wellOptions: IWellOptions[], parsedSeries, isAlias: boolean = true) {\r\n const annotationsByWellTreatment = {};\r\n if (wellOptions && !isEmpty(wellOptions)) {\r\n wellOptions.forEach(wellOpt => {\r\n if (!isEmpty(wellOpt.selectedTreatmentList)) {\r\n wellOpt.selectedTreatmentList.forEach(treatment => {\r\n const labels = [];\r\n const seriesByTreatmentList = parsedSeries.filter(series => series.treatmentId === treatment.id);\r\n if (!isEmpty(seriesByTreatmentList)) {\r\n // find data max y\r\n seriesByTreatmentList.forEach(series => {\r\n const maxPoint: any = maxBy(series.data, 'y');\r\n if (maxPoint) {\r\n series.dataMaxY = maxPoint.y;\r\n }\r\n });\r\n const maxByDataMaxSeries: any = maxBy(seriesByTreatmentList, 'dataMaxY');\r\n // const seriesByTreatment = parsedSeries.find(series => series.treatmentId === treatment.id);\r\n const seriesByTreatment = maxByDataMaxSeries;\r\n if (seriesByTreatment && seriesByTreatment && !isEmpty(seriesByTreatment.data)) {\r\n const avgX = (seriesByTreatment.data[0].x + seriesByTreatment.data[seriesByTreatment.data.length - 1].x) / 2;\r\n const maxY: any = maxBy(seriesByTreatment.data, 'y');\r\n if (avgX && maxY.y) {\r\n labels.push({\r\n borderColor: seriesByTreatment.color,\r\n point: {\r\n x: avgX,\r\n y: maxY.y,\r\n xAxis: 0,\r\n yAxis: seriesByTreatment.yAxis\r\n },\r\n allowOverlap: true\r\n });\r\n }\r\n let labelText = wellOpt.aliasName ? `(${wellOpt.aliasName})-${seriesByTreatment.treatmentNumber}` : `${seriesByTreatment.treatmentNumber}`;\r\n if (!isAlias) {\r\n labelText = `${seriesByTreatment.treatmentNumber}`;\r\n }\r\n const annotationId = `${wellOpt.wellId}_${treatment.id}`;\r\n const annotationOpt = {\r\n id: annotationId,\r\n labels,\r\n labelOptions: {\r\n text: labelText\r\n }\r\n };\r\n annotationsByWellTreatment[annotationId] = annotationOpt;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n return annotationsByWellTreatment;\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9zY2F0dGVyLXBsb3QtcGFyYW1ldGVyLWNoYXJ0L3NjYXR0ZXItcGxvdC1wYXJhbWV0ZXItY2hhcnQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, SimpleChanges } from '@angular/core';\r\nimport * as Highcharts from 'highcharts';\r\nimport { isEmpty } from 'lodash';\r\nconst noData = require('highcharts/modules/no-data-to-display');\r\nnoData(Highcharts);\r\n\r\nimport {\r\n ScatterPlotParameterChartService,\r\n IInputParamData, IAxisSetting, IScatterChartInputState, IScatterPlotChartSetting, IParsedChartOptions\r\n} from '../../../../shared/services/charts/scatter-plot-parameter-chart.service';\r\n\r\nimport {\r\n BaseChartService,\r\n} from '../../../../shared/services/charts/base-chart.service';\r\n\r\nimport { CHART_MESSAGES, ENUM_THEMES } from '../../../helpers/app.constants';\r\nimport { ILogDataState, LogDataCurveParameterChartService } from '../../../services/charts/log-data-curve-parameter-chart.service';\r\nimport { ThemesSettingsService } from '../../../services/themes-settings.service';\r\n\r\n@Component({\r\n selector: 'app-scatter-plot-parameter-chart',\r\n templateUrl: './scatter-plot-parameter-chart.component.html',\r\n styleUrls: ['./scatter-plot-parameter-chart.component.scss']\r\n})\r\nexport class ScatterPlotParameterChartComponent implements OnInit {\r\n\r\n @Input()\r\n set inputState(state: IScatterChartInputState) {\r\n if (state) {\r\n this.xAxisMode = state.xAxisMode;\r\n this.itemsComparing = state.itemsComparing;\r\n this.chartSettings = state.chartSettings;\r\n this.inputChartData = state.inputData;\r\n this.fdiOffsetWellsData = state.fdiOffsetWellsData;\r\n this.logDataState = state.logDataState;\r\n this.designActualData = state.designActualData;\r\n this.groupOption = state.groupOption;\r\n }\r\n }\r\n\r\n @Input()\r\n set inputReflow(isReflow: any) {\r\n if (this.highChart) {\r\n this.highChart.reflow();\r\n }\r\n }\r\n\r\n @Input() defaultTextData: string = '';\r\n @Input() isMultiWells: boolean = false;\r\n\r\n xAxisMode: string;\r\n inputChartData: IInputParamData[];\r\n fdiOffsetWellsData: IInputParamData[];\r\n itemsComparing: IAxisSetting[];\r\n logDataState: ILogDataState;\r\n designActualData: any;\r\n groupOption: string = 'treatment';\r\n\r\n chartSettings: IScatterPlotChartSetting;\r\n\r\n highChart: any;\r\n Highcharts = Highcharts;\r\n chartOptions: Highcharts.Options;\r\n updateFlagChart: boolean = false;\r\n isDarkTheme: boolean;\r\n\r\n constructor(\r\n private scatterPlotParameterChartService: ScatterPlotParameterChartService,\r\n private logDataCurveParameterChartService: LogDataCurveParameterChartService,\r\n private baseChartService: BaseChartService,\r\n private themesSettingsService: ThemesSettingsService\r\n ) {\r\n const localData = this.themesSettingsService.getLocalStorage();\r\n if (localData && localData.themes === ENUM_THEMES.Dark) {\r\n this.isDarkTheme = true;\r\n }\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: \",\"\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.setupChart();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.inputState) {\r\n this.loadChartData(\r\n this.itemsComparing, this.chartSettings, this.inputChartData,\r\n this.xAxisMode, this.isMultiWells, this.logDataState, this.designActualData, this.groupOption, this.fdiOffsetWellsData\r\n );\r\n }\r\n }\r\n\r\n chartInstanceHandler(chart) {\r\n this.highChart = chart;\r\n }\r\n\r\n setupChart() {\r\n this.chartOptions = this.scatterPlotParameterChartService.getDefaultOptions(this.xAxisMode, this.isDarkTheme);\r\n this.chartOptions.yAxis = [];\r\n if (this.defaultTextData) {\r\n this.chartOptions.lang.noData = this.defaultTextData;\r\n }\r\n this.updateFlagChart = true;\r\n }\r\n\r\n loadChartData(\r\n itemsComparing: IAxisSetting[],\r\n chartSettings: IScatterPlotChartSetting,\r\n inputData: IInputParamData[],\r\n xAxisMode?: string,\r\n isMultiWells?: boolean,\r\n logDataState?: ILogDataState,\r\n designActualData?: any,\r\n groupOption?: string,\r\n fdiOffsetWellsData?: IInputParamData[]\r\n ) {\r\n try {\r\n itemsComparing = itemsComparing.filter(item => item.treatmentNumber !== -10);\r\n this.resetChart();\r\n let chartOptions: IParsedChartOptions;\r\n if (!logDataState || isEmpty(logDataState.selectedCurves)) {\r\n chartOptions = this.scatterPlotParameterChartService.parseChartOptions(\r\n itemsComparing, chartSettings, inputData, xAxisMode, isMultiWells, designActualData, groupOption, fdiOffsetWellsData, this.isDarkTheme\r\n );\r\n } else {\r\n chartOptions = this.logDataCurveParameterChartService.parseChartOptions(\r\n itemsComparing, chartSettings, inputData, logDataState, designActualData, groupOption, this.isDarkTheme\r\n );\r\n }\r\n\r\n // add x axis\r\n chartOptions.xAxis.forEach(xAxisOpt => {\r\n this.highChart.addAxis(xAxisOpt, true);\r\n });\r\n // add y axis\r\n chartOptions.yAxis.forEach(yAxisOpt => {\r\n this.highChart.addAxis(yAxisOpt, false);\r\n });\r\n // set chart series data\r\n let seriesData = [...chartOptions.seriesData];\r\n\r\n // update tooltip option by xAxisMode\r\n this.highChart.update({\r\n tooltip: chartOptions.tooltip\r\n }, false);\r\n\r\n // check if all series is empty data then return empty array (prevent show series legend on chart)\r\n if (this.baseChartService.isAllSeriesDataEmpty(seriesData)) {\r\n seriesData = [];\r\n }\r\n if (isEmpty(seriesData)) {\r\n this.setChartMessage(CHART_MESSAGES.en.noData);\r\n }\r\n\r\n seriesData.forEach(series => {\r\n this.highChart.addSeries(series, false, false);\r\n });\r\n this.highChart.redraw();\r\n\r\n return;\r\n } catch (err) {\r\n return err;\r\n }\r\n }\r\n\r\n resetChart(isRedraw?: boolean) {\r\n if (this.highChart) {\r\n this.chartOptions.xAxis = [];\r\n this.chartOptions.yAxis = [];\r\n this.chartOptions.series = [];\r\n // clear chart and reload data\r\n while (this.highChart.series.length > 0) {\r\n this.highChart.series[0].remove(false);\r\n }\r\n while (this.highChart.yAxis.length > 0) {\r\n this.highChart.yAxis[0].remove(false);\r\n }\r\n while (this.highChart.xAxis.length > 0) {\r\n this.highChart.xAxis[0].remove(false);\r\n }\r\n // reset tooltip\r\n this.highChart.update({\r\n tooltip: {\r\n formatter: undefined\r\n }\r\n }, false);\r\n\r\n if (isRedraw) {\r\n this.highChart.redraw();\r\n }\r\n }\r\n }\r\n\r\n setChartMessage(message: string) {\r\n if (typeof message === 'string' && this.highChart) {\r\n const noDataEle = document.querySelector('.highcharts-no-data');\r\n if (noDataEle && noDataEle.children[0]) {\r\n noDataEle.children[0].innerHTML = message;\r\n }\r\n }\r\n }\r\n\r\n zoomOut() {\r\n this.highChart.zoomOut();\r\n }\r\n\r\n reflow() {\r\n this.highChart.reflow();\r\n }\r\n\r\n toggleTooltip(isDisplay) {\r\n if (this.highChart) {\r\n this.highChart.update({\r\n tooltip: {\r\n enabled: isDisplay\r\n }\r\n });\r\n }\r\n }\r\n\r\n exportChart(fileName?: string, type?: string) {\r\n const chart = this.highChart;\r\n if (type === 'Save PNG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 4,\r\n type: 'image/png'\r\n });\r\n } else if (type === 'Save JPEG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 8,\r\n type: 'image/jpeg'\r\n });\r\n } else {\r\n chart.print();\r\n }\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoYXJ0cy9zaW5nbGUtd2VsbC1tdWx0aS10cmVhdG1lbnQtY2hhcnQvc2luZ2xlLXdlbGwtbXVsdGktdHJlYXRtZW50LWNoYXJ0LmNvbXBvbmVudC5zY3NzIn0= */\"","import { TIME_SETTING_TYPE, ChartTimeFormat, ENUM_THEMES } from './../../../helpers/app.constants';\r\nimport { Component, OnInit, Input, SimpleChanges, ChangeDetectionStrategy, ChangeDetectorRef, Output, EventEmitter } from '@angular/core';\r\nimport * as Highcharts from 'highcharts';\r\nimport HC_stock from 'highcharts/modules/stock';\r\nHC_stock(Highcharts);\r\nimport HC_exporting from 'highcharts/modules/exporting';\r\nimport HC_offline_exporting from 'highcharts/modules/offline-exporting';\r\nHC_exporting(Highcharts);\r\nHC_offline_exporting(Highcharts);\r\nimport { isEmpty, cloneDeep, forEach, isObject, isNumber } from 'lodash';\r\nconst noData = require('highcharts/modules/no-data-to-display');\r\nnoData(Highcharts);\r\nimport HC_boost from 'highcharts/modules/boost';\r\nHC_boost(Highcharts);\r\nconst randomColors = require('randomcolor');\r\nimport * as tinygradient from 'tinygradient';\r\nimport * as tinycolor from 'tinycolor2';\r\nimport { IChannelSettingModel, IChannelSettingItemModel } from '../../../../shared/models/channel.model';\r\nimport {\r\n BaseChartService, DATETIME_CHANNEL_NAME, TIMEFLOAT_CHANNEL_NAME, FRACPRO_TIMEFLOAT_CNAME, ISeriesDataExtraInfo,\r\n} from '../../../../shared/services/charts/base-chart.service';\r\nimport { ChannelSelectionService } from '../../../services';\r\nimport { PivotPointService, IPivotPointItem } from '../../../../shared/services/pivot-point.service';\r\nimport { of, from, forkJoin, Subscription } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\nimport { CHART_MESSAGES } from '../../../helpers/app.constants';\r\nimport { IInputDataChart } from '../../../models';\r\nimport { Helper } from '../../../helpers/helper';\r\nimport { IInputDataTreatment, SingleWellMultiTreatmentChartService } from '../../../services/charts/single-well-multi-treatment-chart.service';\r\nimport { ThemesSettingsService } from '../../../services/themes-settings.service';\r\nimport { UnitSystemService } from '../../../services/unit-system.service';\r\n\r\ninterface IInputState {\r\n channelSettings: IChannelSettingModel;\r\n filterSettings?: {\r\n type: ChartTimeFormat;\r\n startIndex: number;\r\n endIndex: number;\r\n };\r\n inputData: IInputDataTreatment[];\r\n navigatorInputData?: IInputDataTreatment[];\r\n pivotPointData?: IPivotPointItem[];\r\n}\r\n@Component({\r\n selector: 'app-single-well-multi-treatment-chart',\r\n templateUrl: './single-well-multi-treatment-chart.component.html',\r\n styleUrls: ['./single-well-multi-treatment-chart.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SingleWellMultiTreatmentChartComponent implements OnInit {\r\n subscriptions: Subscription[] = [];\r\n\r\n @Input()\r\n set inputState(state: IInputState) {\r\n if (state) {\r\n this.channelSettings = state.channelSettings;\r\n this.filterSettings = state.filterSettings;\r\n this.inputChartData = state.inputData;\r\n this.navigatorInputData = state.navigatorInputData;\r\n this.pivotPointData = state.pivotPointData;\r\n }\r\n }\r\n\r\n @Input()\r\n set inputReflow(isReflow: any) {\r\n if (this.highChart) {\r\n this.highChart.reflow();\r\n }\r\n }\r\n\r\n @Input() maxTreatmentList: number = 0;\r\n\r\n @Input() defaultTextData: string = '';\r\n\r\n @Output() onChangeXMinMax: EventEmitter = new EventEmitter();\r\n @Output() onChangeNavigatorMinMax: EventEmitter = new EventEmitter();\r\n\r\n inputChartData: IInputDataTreatment[];\r\n navigatorInputData: IInputDataTreatment[];\r\n pivotPointData: IPivotPointItem[];\r\n\r\n channelSettings: IChannelSettingModel;\r\n filterSettings: {\r\n type: ChartTimeFormat,\r\n startIndex: number,\r\n endIndex: number\r\n } = {\r\n type: TIME_SETTING_TYPE.OffsetTime,\r\n startIndex: 0,\r\n endIndex: 0\r\n };\r\n\r\n highChart: any;\r\n Highcharts = Highcharts;\r\n chartOptions: Highcharts.Options;\r\n runOutsideAngular: boolean = false;\r\n\r\n treatmentColors = [];\r\n\r\n isLoadingChart = false;\r\n messageNoData: string = CHART_MESSAGES.en.pleaseSelectChannel;\r\n chartConstructorType = 'chart';\r\n isDarkTheme: boolean;\r\n\r\n constructor(\r\n private baseChartService: BaseChartService,\r\n private channelSelectionService: ChannelSelectionService,\r\n private pivotPointService: PivotPointService,\r\n private singleWellMultiTreatmentChartService: SingleWellMultiTreatmentChartService,\r\n private ref: ChangeDetectorRef,\r\n private themesSettingsService: ThemesSettingsService,\r\n private unitSystemService: UnitSystemService\r\n ) {\r\n const localData = this.themesSettingsService.getLocalStorage();\r\n if (localData && localData.themes === ENUM_THEMES.Dark) {\r\n this.isDarkTheme = true;\r\n }\r\n Highcharts.setOptions({\r\n lang: {\r\n thousandsSep: ','\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.setupChart();\r\n this.treatmentColors = this.generateRandomTreatmentColors();\r\n\r\n // update chart series data by zoom buffer\r\n const subs = this.singleWellMultiTreatmentChartService.getZoomBufferData().subscribe((dataByTreatments: IInputDataTreatment[]) => {\r\n if (dataByTreatments) {\r\n // parse all treatment data\r\n const seriesData = this.parseMultiTreatmentSeriesData(this.channelSettings, dataByTreatments, this.filterSettings.type, this.pivotPointData);\r\n this.updateChartSeriesData(seriesData);\r\n }\r\n });\r\n this.subscriptions.push(subs);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.inputState && !changes.inputState.isFirstChange()) {\r\n this.updateChart(this.inputChartData, this.channelSettings, this.filterSettings, this.pivotPointData);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n Helper.unsubscribe(this.subscriptions);\r\n // unset zoom buffer data\r\n this.singleWellMultiTreatmentChartService.setZoomBufferData(null);\r\n }\r\n\r\n setupChart() {\r\n let options = this.baseChartService.getDefaultOptions(true, undefined, this.isDarkTheme);\r\n const xAxisOpt = this.baseChartService.getXAxisOption(this.filterSettings.type, null, null, true);\r\n const self = this;\r\n // bind set extreme event\r\n xAxisOpt.events = {\r\n setExtremes: function (e) {\r\n if (e && e.trigger === 'navigator') {\r\n self.onChangeNavigatorMinMax.emit(e);\r\n }\r\n }\r\n };\r\n options.xAxis = [xAxisOpt];\r\n options.yAxis = this.baseChartService.getYAxisOption(this.channelSettings);\r\n options.tooltip = Object.assign(options.tooltip, {\r\n headerFormat: this.baseChartService.getTooltipHeader(this.filterSettings.type),\r\n shared: false\r\n });\r\n options.legend.labelFormatter = function () {\r\n const arr = this.name.split('-');\r\n return arr[arr.length - 1].trim();\r\n }\r\n this.chartOptions = options;\r\n if (this.defaultTextData) {\r\n this.chartOptions.lang.noData = this.defaultTextData;\r\n }\r\n this.chartOptions.chart.events = {\r\n selection: function (event) {\r\n const result = { minX: null, maxX: null, isReset: false };\r\n if (event.xAxis) {\r\n result.minX = event.xAxis[0].min;\r\n result.maxX = event.xAxis[0].max;\r\n } else {\r\n const xAxisData = this.xAxis[0].getExtremes();\r\n result.minX = xAxisData.dataMin;\r\n result.maxX = xAxisData.dataMax;\r\n result.isReset = true;\r\n }\r\n self.onChangeXMinMax.emit(result);\r\n\r\n return true;\r\n }\r\n };\r\n\r\n setTimeout(() => {\r\n const timeTypeLowerCase = this.filterSettings.type ? this.filterSettings.type.toLowerCase() : '';\r\n if (timeTypeLowerCase === TIME_SETTING_TYPE.EpochTimeLowerCase) {\r\n // parse all treatment data\r\n const seriesData = this.parseMultiTreatmentSeriesData(this.channelSettings, this.inputChartData, this.filterSettings.type, this.pivotPointData);\r\n // set empty first\r\n seriesData.forEach(item => {\r\n item.data = [];\r\n });\r\n const navigatorSeriesData = this.parseNavigatorSeriesData(this.channelSettings, this.navigatorInputData, this.filterSettings.type, this.pivotPointData);\r\n\r\n options = Object.assign(options, {\r\n navigator: {\r\n adaptToUpdatedData: false,\r\n enabled: true,\r\n handles: {\r\n enabled: true\r\n },\r\n series: navigatorSeriesData,\r\n margin: 5,\r\n maskFill: !this.isDarkTheme ? 'rgba(102,133,194,0.3)' : 'rgba(51, 77, 128, 0.3)',\r\n outlineColor: !this.isDarkTheme ? '#cccccc' : '#e8e6e3',\r\n xAxis: {\r\n labels: {\r\n style: { color: !this.isDarkTheme ? '#000' : '#e8e6e3' }\r\n }\r\n }\r\n },\r\n scrollbar: {\r\n liveRedraw: false\r\n },\r\n series: seriesData\r\n });\r\n\r\n options.rangeSelector = {\r\n enabled: false,\r\n selected: 0,\r\n buttons: [{\r\n type: 'day',\r\n count: 1,\r\n text: '1d'\r\n }, {\r\n type: 'week',\r\n count: 1,\r\n text: '1w'\r\n }, {\r\n type: 'month',\r\n text: '1m'\r\n }, {\r\n type: 'all',\r\n text: 'All'\r\n }],\r\n inputEnabled: false\r\n };\r\n options.tooltip.split = false;\r\n this.highChart = Highcharts.stockChart('highstock-chart', options);\r\n } else {\r\n this.highChart = Highcharts.chart('highstock-chart', this.chartOptions);\r\n }\r\n }, 200);\r\n\r\n }\r\n\r\n loadChartData(channelSettings: IChannelSettingModel, inputData: IInputDataTreatment[], timeFormat, pivotPointData?: IPivotPointItem[], navigatorInputData?) {\r\n const observables = [of(null).pipe(delay(200))];\r\n if (this.highChart && channelSettings) {\r\n const promiseRenderChart = new Promise((resolve) => {\r\n setTimeout(() => {\r\n console.log('begin parse series: ', new Date());\r\n // parse all treatment data\r\n let seriesData = this.parseMultiTreatmentSeriesData(channelSettings, inputData, timeFormat, pivotPointData);\r\n // check if all series is empty data then return empty array (prevent show series legend on chart)\r\n if (this.baseChartService.isAllSeriesDataEmpty(seriesData)) {\r\n seriesData = [];\r\n }\r\n if (isEmpty(seriesData)) {\r\n this.setChartMessage(CHART_MESSAGES.en.noData);\r\n }\r\n this.updateChartSeriesData(seriesData);\r\n console.log('add series done: ', new Date());\r\n resolve();\r\n }, 1000);\r\n });\r\n observables.push(from(promiseRenderChart));\r\n }\r\n\r\n return forkJoin(observables);\r\n }\r\n\r\n updateChartSeriesData(seriesData) {\r\n if (!isEmpty(seriesData)) {\r\n if (!isEmpty(this.highChart.series)) {\r\n this.highChart.series.forEach(series => {\r\n const seriesItem = seriesData.find(item => {\r\n return item.id === series.options.id;\r\n });\r\n if (seriesItem) {\r\n series.setData(seriesItem.data, false);\r\n }\r\n });\r\n } else {\r\n seriesData.forEach(series => {\r\n this.highChart.addSeries(series, false, false);\r\n });\r\n }\r\n this.highChart.redraw();\r\n }\r\n }\r\n\r\n parseSeriesDataByChannels(dataInfo: IInputDataTreatment, channelSettings: IChannelSettingModel, inputData?: IInputDataChart, timeFormat?: ChartTimeFormat, dataType?: string, extraInfo?: ISeriesDataExtraInfo, masterDataInfo?: IInputDataTreatment) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n let result = [];\r\n if (channelSettings && inputData) {\r\n let yAxisIndex = 0;\r\n for (const key in channelSettings) {\r\n if (channelSettings.hasOwnProperty(key) && key !== 'autoScaleYAxis') {\r\n const setting = channelSettings[key];\r\n if (setting.channels && setting.channels.length > 0) {\r\n // set y axis's min max for filtering data series\r\n if (isNumber(setting.min) && isNumber(setting.max) && !channelSettings.autoScaleYAxis) {\r\n extraInfo.yAxisMin = setting.min;\r\n extraInfo.yAxisMax = setting.max;\r\n }\r\n const seriesData = this.getDataSeriesFromChannels(dataInfo, yAxisIndex, setting.channels, inputData, timeFormat, dataType, extraInfo, masterDataInfo);\r\n\r\n result = result.concat(seriesData);\r\n }\r\n yAxisIndex++;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getDataSeriesFromChannels(\r\n dataInfo: IInputDataTreatment,\r\n yAxisIndex: number,\r\n channels: IChannelSettingItemModel[], inputData?: IInputDataChart, timeFormat?: ChartTimeFormat, dataType?: string, extraInfo?: ISeriesDataExtraInfo,\r\n masterDataInfo?: IInputDataTreatment\r\n ) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n let result = [];\r\n if (channels && inputData) {\r\n let values = [];\r\n const columns = inputData.columns;\r\n let xAxisChannelName = DATETIME_CHANNEL_NAME;\r\n if (timeFormat && timeFormat.toLowerCase() === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n xAxisChannelName = TIMEFLOAT_CHANNEL_NAME;\r\n // set fracpro time float channel name\r\n if (dataType === 'fracproData') {\r\n xAxisChannelName = FRACPRO_TIMEFLOAT_CNAME;\r\n }\r\n }\r\n // find index of time channel\r\n const timeIndex = columns.findIndex(value => value === xAxisChannelName);\r\n\r\n result = channels.map((channelItem, index) => {\r\n const measureType = channelItem.measureType;\r\n let dataSeries = [];\r\n const dataIndex = typeof yAxisIndex === 'number' && !isNaN(yAxisIndex) ? yAxisIndex : index;\r\n // find index of channel setting\r\n const channelIndex = columns.findIndex(value => value === channelItem.cName);\r\n\r\n // filter valid value\r\n values = cloneDeep(inputData.values);\r\n values = values.filter(dataRow => {\r\n const yValue = dataRow[channelIndex];\r\n\r\n return isNumber(yValue) && !isNaN(yValue);\r\n });\r\n if (isNumber(extraInfo.yAxisMin) && isNumber(extraInfo.yAxisMax) && extraInfo.yAxisMin <= extraInfo.yAxisMax) {\r\n values = values.map(dataRow => {\r\n const yValue = dataRow[channelIndex];\r\n // y_plot = min (y_max, max (y_min, y))\r\n dataRow[channelIndex] = Math.min(extraInfo.yAxisMax, Math.max(extraInfo.yAxisMin, yValue));\r\n\r\n return dataRow;\r\n });\r\n }\r\n\r\n // parse to chart data point\r\n const seriesId = `${dataInfo.treatmentId}_${channelItem.channelName || channelItem.name}`;\r\n let masterSeriesId;\r\n if (masterDataInfo) {\r\n masterSeriesId = `${masterDataInfo.treatmentId}_${channelItem.channelName || channelItem.name}`;\r\n }\r\n values.forEach(dataRow => {\r\n let xValue = dataRow[timeIndex];\r\n if (xAxisChannelName === DATETIME_CHANNEL_NAME) {\r\n xValue = new Date(xValue).getTime();\r\n }\r\n // covert x value from second to min (time float value response from api is in second)\r\n if (xAxisChannelName === TIMEFLOAT_CHANNEL_NAME || xAxisChannelName === FRACPRO_TIMEFLOAT_CNAME) {\r\n xValue = Helper.convertSecToMin(xValue);\r\n }\r\n\r\n // const yValue = dataRow[channelIndex] * 1;\r\n const yValue = measureType && measureType.trim() ? this.unitSystemService.convert(dataRow[channelIndex], measureType) : (dataRow[channelIndex] as number);\r\n const point = { x: xValue, y: yValue, groupId: seriesId };\r\n // const point = [xValue, yValue];\r\n dataSeries.push(point);\r\n });\r\n\r\n // pre-sort data series\r\n if (dataSeries.length > 1) {\r\n dataSeries = dataSeries.sort((a, b) => {\r\n // return a[0] - b[0];\r\n return a.x - b.x;\r\n });\r\n }\r\n\r\n const unit = measureType && measureType.trim() ? this.unitSystemService.getUnit(measureType) : channelItem.unit;\r\n const channelUnit = Helper.getValidUnit(unit, true);\r\n // const seriesName = `${channelItem.channelName || channelItem.name} ${channelUnit}`;\r\n const seriesName = `${extraInfo.seriesPrefix || ''}${channelItem.channelName || channelItem.name} ${channelUnit}`;\r\n const seriesColor = extraInfo.seriesColor ? extraInfo.seriesColor : channelItem.color;\r\n\r\n return {\r\n id: seriesId,\r\n name: seriesName,\r\n type: 'line',\r\n data: dataSeries,\r\n yAxis: dataIndex,\r\n color: seriesColor,\r\n boostThreshold: 10000,\r\n connectNulls: true,\r\n linkedTo: masterSeriesId\r\n };\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n parseSingleTreatmentSeriesData(channelSettings, singleTreatmentInputData: IInputDataTreatment, timeFormat, color?: string, masterDataInfo?: IInputDataTreatment) {\r\n // parse all flow input data to chart's series data\r\n let seriesData = [];\r\n if (singleTreatmentInputData) {\r\n // generate series data name\r\n let extraSpace = ' - ';\r\n if (singleTreatmentInputData.treatmentNumber < 10) {\r\n extraSpace = ' --- ';\r\n }\r\n const treatmentName = `Treatment ${singleTreatmentInputData.treatmentNumber}${extraSpace}`;\r\n const extraInfo = {\r\n seriesPrefix: treatmentName,\r\n seriesColor: color,\r\n };\r\n const dataCollection = {\r\n realtimeData: singleTreatmentInputData.realtimeData,\r\n fracproData: singleTreatmentInputData.fracproData\r\n };\r\n for (const dataType in dataCollection) {\r\n if (dataCollection.hasOwnProperty(dataType)) {\r\n if (!isEmpty(dataCollection[dataType])) {\r\n const dataFlow = dataCollection[dataType][0];\r\n const prefixChannel = this.channelSelectionService.getPrefixChannelByDataType(dataType);\r\n const channelSettingsByDataType = this.channelSelectionService.filterChannelsByPrefixStr(channelSettings, prefixChannel);\r\n\r\n const parsedData = this.parseSeriesDataByChannels(singleTreatmentInputData, channelSettingsByDataType, dataFlow, timeFormat, dataType, extraInfo, masterDataInfo);\r\n seriesData = seriesData.concat(parsedData);\r\n }\r\n }\r\n }\r\n }\r\n return seriesData;\r\n }\r\n\r\n parseMultiTreatmentSeriesData(channelSettings, multiTreatmentInputData: IInputDataTreatment[], timeFormat, pivotPointData?) {\r\n let seriesData = [];\r\n if (!isEmpty(multiTreatmentInputData)) {\r\n let firstTreatmentAsMaster = null;\r\n multiTreatmentInputData.forEach((treatmentData, index) => {\r\n if (index !== 0) {\r\n firstTreatmentAsMaster = multiTreatmentInputData[0];\r\n }\r\n if (treatmentData && channelSettings) {\r\n let parsedData = [];\r\n // update time value by pivot point data\r\n if (!isEmpty(pivotPointData)) {\r\n const treatmentShiftedData = this.pivotPointService.handleUpdateTimeByPivotData(treatmentData, pivotPointData);\r\n // parse chart series data for each treatment\r\n parsedData = this.parseSingleTreatmentSeriesData(channelSettings, treatmentShiftedData, timeFormat, this.treatmentColors[index], firstTreatmentAsMaster);\r\n } else {\r\n // parse chart series data for each treatment\r\n parsedData = this.parseSingleTreatmentSeriesData(channelSettings, treatmentData, timeFormat, this.treatmentColors[index], firstTreatmentAsMaster);\r\n }\r\n seriesData = seriesData.concat(parsedData);\r\n }\r\n });\r\n }\r\n\r\n seriesData = this.changeColorFollowColorMode(channelSettings, seriesData);\r\n\r\n return seriesData;\r\n }\r\n\r\n changeColorFollowColorMode(channelSettings: IChannelSettingModel, seriesData) {\r\n const settings = cloneDeep(channelSettings);\r\n for (const key in settings) {\r\n if (settings.hasOwnProperty(key)) {\r\n const setting = settings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n forEach(setting.channels, item => {\r\n let treatmentData = seriesData.filter(i => i.id.includes(item.channelName));\r\n if (item.colorMode === 'Random') {\r\n treatmentData = treatmentData.map((data, index) => {\r\n data.color = this.treatmentColors[index];\r\n return data;\r\n });\r\n } else if (item.colorMode === 'Flat') {\r\n treatmentData = treatmentData.map((data, index) => {\r\n data.color = item.color;\r\n return data;\r\n });\r\n } else {\r\n let colorDarken;\r\n let colorLighten;\r\n const countTreatmentData = treatmentData.length;\r\n const colorChannelDark = new tinycolor(item.color);\r\n const colorChannelLight = new tinycolor(item.color);\r\n if (colorChannelDark.isDark()) {\r\n colorDarken = colorChannelDark.darken(20).toHexString();\r\n if (colorChannelDark.getBrightness() < 25) {\r\n colorDarken = colorChannelDark.lighten(10).toHexString();\r\n }\r\n colorLighten = colorChannelLight.lighten(40).toHexString();\r\n } else if (colorChannelLight.isLight()) {\r\n colorLighten = colorChannelLight.lighten(20).toHexString();\r\n if (colorChannelLight.getBrightness() > 240) {\r\n colorLighten = colorChannelLight.darken(10).toHexString();\r\n }\r\n colorDarken = colorChannelDark.darken(40).toHexString();\r\n }\r\n const listColor = new tinygradient([\r\n colorDarken,\r\n colorLighten\r\n ]);\r\n if (countTreatmentData >= 2) {\r\n const listColorPicker = listColor.rgb(this.maxTreatmentList).map((value) => {\r\n return value.toString();\r\n });\r\n treatmentData = treatmentData.map((data, index) => {\r\n data.color = listColorPicker[index];\r\n return data;\r\n });\r\n } else {\r\n const listColorDefault = [colorDarken, colorLighten];\r\n treatmentData = treatmentData.map((data, index) => {\r\n data.color = listColorDefault[index];\r\n return data;\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return seriesData;\r\n }\r\n\r\n updateChart(inputData, channelSettings, filterSettings, pivotPointData?: IPivotPointItem[], navigatorInputData?) {\r\n if (inputData && channelSettings && filterSettings) {\r\n this.setupChart();\r\n this.isLoadingChart = true;\r\n this.loadChartData(channelSettings, inputData, filterSettings.type, pivotPointData, navigatorInputData).subscribe(() => {\r\n this.isLoadingChart = false;\r\n this.highChart.redraw();\r\n this.highChart.setSize(this.highChart.chartWidth, this.highChart.chartHeight);\r\n this.highChart.options.chart.width = null;\r\n this.highChart.options.chart.height = null;\r\n this.ref.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n resetChart(isRedraw?: boolean) {\r\n if (this.highChart) {\r\n this.chartOptions.xAxis = [];\r\n this.chartOptions.yAxis = [];\r\n this.chartOptions.series = [];\r\n // clear chart and reload data\r\n while (this.highChart.series.length > 0) {\r\n this.highChart.series[0].remove(false);\r\n }\r\n while (this.highChart.yAxis.length > 0) {\r\n this.highChart.yAxis[0].remove(false);\r\n }\r\n while (this.highChart.xAxis.length > 0) {\r\n this.highChart.xAxis[0].remove(false);\r\n }\r\n\r\n if (isRedraw) {\r\n this.highChart.redraw();\r\n }\r\n }\r\n }\r\n\r\n setChartMessage(message: string) {\r\n if (typeof message === 'string' && this.highChart) {\r\n const noDataEle = document.querySelector('.highcharts-no-data');\r\n if (noDataEle && noDataEle.children[0]) {\r\n noDataEle.children[0].innerHTML = message;\r\n this.messageNoData = message;\r\n }\r\n }\r\n }\r\n\r\n zoomOut() {\r\n this.highChart.zoomOut();\r\n }\r\n\r\n reflow() {\r\n this.highChart.reflow();\r\n }\r\n\r\n toggleTooltip(isDisplay) {\r\n if (this.highChart) {\r\n this.highChart.update({\r\n tooltip: {\r\n enabled: isDisplay\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleDragDropSeries() {\r\n if (this.highChart) {\r\n this.highChart.update({\r\n plotOptions: {\r\n series: {\r\n dragDrop: {\r\n draggableX: true,\r\n groupBy: 'groupId'\r\n },\r\n stickyTracking: false\r\n }\r\n },\r\n tooltip: {\r\n shared: false\r\n }\r\n }, false);\r\n }\r\n }\r\n\r\n generateRandomTreatmentColors() {\r\n const colors = randomColors({\r\n luminosity: 'bright',\r\n count: 200\r\n });\r\n return colors;\r\n }\r\n\r\n exportChart(fileName?: string, type?: string) {\r\n const chart = this.highChart;\r\n if (type === 'Save PNG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 4,\r\n type: 'image/png'\r\n }, {\r\n lang: {\r\n noData: `${this.messageNoData}`\r\n },\r\n });\r\n } else if (type === 'Save JPEG') {\r\n chart.exportChartLocal({\r\n filename: `${fileName}`,\r\n sourceWidth: chart.chartWidth,\r\n sourceHeight: chart.chartHeight,\r\n scale: 8,\r\n type: 'image/jpeg'\r\n }, {\r\n lang: {\r\n noData: `${this.messageNoData}`\r\n },\r\n });\r\n } else {\r\n chart.print();\r\n }\r\n }\r\n\r\n parseNavigatorSeriesData(channelSettings, navigatorInputData, timeFormat?, pivotPointData?) {\r\n let seriesData = [];\r\n seriesData = this.parseMultiTreatmentSeriesData(channelSettings, navigatorInputData, timeFormat, pivotPointData);\r\n seriesData = seriesData.map(series => {\r\n let firstDataPoint;\r\n let verticalLineData = [];\r\n if (!isEmpty(series.data)) {\r\n firstDataPoint = series.data[0];\r\n verticalLineData = [{ x: firstDataPoint.x, y: 0 }, { x: firstDataPoint.x, y: 10 }];\r\n }\r\n\r\n return {\r\n type: 'line',\r\n fillOpacity: 0.5,\r\n dataGrouping: {\r\n groupPixelWidth: 10\r\n },\r\n data: verticalLineData,\r\n color: 'red'\r\n };\r\n });\r\n\r\n return seriesData;\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n Carbo Company\\r\\n {{company.name}}\\r\\n \\r\\n
\\r\\n\"","module.exports = \".app-company-selector {\\n display: inline-block; }\\n\\n.ng-select.custom-company-select ::ng-deep .ng-select-container {\\n vertical-align: middle;\\n height: 30px;\\n min-height: 30px;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 159px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tcGFueS1zZWxlY3Rvci9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvc3JjXFxhcHBcXHNoYXJlZFxcY29tcG9uZW50c1xcY29tcGFueS1zZWxlY3RvclxcY29tcGFueS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNFLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLHNCQUFzQjtFQUN0QixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsdUJBQXVCO0VBQ3ZCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NvbXBhbnktc2VsZWN0b3IvY29tcGFueS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4uYXBwLWNvbXBhbnktc2VsZWN0b3Ige1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5cclxuLm5nLXNlbGVjdC5jdXN0b20tY29tcGFueS1zZWxlY3QgOjpuZy1kZWVwIC5uZy1zZWxlY3QtY29udGFpbmVyICB7ICAgICAgICAgICAgXHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICBoZWlnaHQ6IDMwcHg7XHJcbiAgbWluLWhlaWdodDogMzBweDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2lkdGg6IDE1OXB4O1xyXG59Il19 */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-company-selector',\r\n templateUrl: './company-selector.component.html',\r\n styleUrls: ['./company-selector.component.scss']\r\n})\r\nexport class CompanySelectorComponent implements OnInit {\r\n @Input() selected = '';\r\n @Input() companies = [];\r\n @Output() changed = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onChange(id) {\r\n let result = null;\r\n if (id) {\r\n result = this.companies.find(item => item.id * 1 === id * 1);\r\n }\r\n this.changed.emit(result);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Well Color\\r\\n
\\r\\n
\\r\\n Auto Load\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".compare-wells-time-control {\\n background-color: #fff; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tcGFyZS13ZWxscy10aW1lLWNvbnRyb2wvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXGNvbXBhcmUtd2VsbHMtdGltZS1jb250cm9sXFxjb21wYXJlLXdlbGxzLXRpbWUtY29udHJvbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNFLHNCQUFzQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY29tcGFyZS13ZWxscy10aW1lLWNvbnRyb2wvY29tcGFyZS13ZWxscy10aW1lLWNvbnRyb2wuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLmNvbXBhcmUtd2VsbHMtdGltZS1jb250cm9sIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG59XHJcbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, Output, OnDestroy } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { Helper } from '../../helpers/helper';\r\nimport { ICompareWellsTimeControl } from './compare-wells-time-control.model';\r\nimport { CompareWellsTimeControlService } from './compare-wells-time-control.service';\r\n\r\n@Component({\r\n selector: 'app-compare-wells-time-control',\r\n templateUrl: './compare-wells-time-control.component.html',\r\n styleUrls: ['./compare-wells-time-control.component.scss']\r\n})\r\nexport class CompareWellsTimeControlComponent implements OnInit, OnDestroy {\r\n listDaysOptions: string[] = ['None', 'All', '1', '2', '3', '4', '7', '15', '30'];\r\n form: FormGroup;\r\n dateRange: { startTime: string; endTime: string } = null;\r\n minDate;\r\n maxDate;\r\n isShowAlias: boolean = true;\r\n isCompareMultiWells: boolean = false;\r\n\r\n @Input()\r\n set compareMultiple(value: boolean) {\r\n this.isCompareMultiWells = value;\r\n // disable well color mode in compare single well\r\n if (this.isCompareMultiWells === false && this.form) {\r\n this.isWellColor.setValue(false);\r\n const formValue = this.form.getRawValue();\r\n this.compareWellsTimeControlService.setDataState(formValue);\r\n }\r\n }\r\n\r\n @Output() refreshWellTreatments: EventEmitter = new EventEmitter();\r\n @Output() stateChange: EventEmitter = new EventEmitter();\r\n @Output() loadForm: EventEmitter = new EventEmitter();\r\n @Output() toggleAlias: EventEmitter = new EventEmitter();\r\n @Output() stateReset: EventEmitter = new EventEmitter();\r\n subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private compareWellsTimeControlService: CompareWellsTimeControlService\r\n ) { }\r\n\r\n get startTime() {\r\n return this.form.controls.startTime;\r\n }\r\n\r\n get endTime() {\r\n return this.form.controls.endTime;\r\n }\r\n\r\n get isAutoLoad() {\r\n return this.form.controls.isAutoLoad;\r\n }\r\n\r\n get isWellColor() {\r\n return this.form.controls.isWellColor;\r\n }\r\n\r\n get lastDays() {\r\n return this.form.controls.lastDays;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createForm();\r\n // listen wells'data end time\r\n const subs = this.compareWellsTimeControlService.dataRangeDateTime.asObservable().subscribe(dateRange => {\r\n if (dateRange.startTime) dateRange.startTime = dateRange.startTime.substring(0, 10) + 'T00:00:00.000Z';\r\n if (dateRange.endTime) dateRange.endTime = dateRange.endTime.substring(0, 10) + 'T00:00:00.000Z';\r\n this.dateRange = dateRange;\r\n });\r\n this.subscriptions.push(subs);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.compareWellsTimeControlService.restDataState();\r\n Helper.unsubscribe(this.subscriptions);\r\n }\r\n\r\n private createForm(): void {\r\n const initState = this.compareWellsTimeControlService.getInitialState();\r\n this.form = new FormGroup({\r\n lastDays: new FormControl(initState.lastDays),\r\n startTime: new FormControl({ value: initState.startTime, disabled: false }),\r\n endTime: new FormControl({ value: initState.endTime, disabled: false }),\r\n isAutoLoad: new FormControl({ value: initState.isAutoLoad, disabled: false }),\r\n isWellColor: new FormControl({ value: initState.isWellColor, disabled: false }),\r\n });\r\n }\r\n\r\n public onChangeDayOption(eventData): void {\r\n if (eventData && eventData.id) {\r\n this.lastDays.setValue(eventData.id);\r\n if (eventData.id === 'None') {\r\n this.resetTime();\r\n } else {\r\n if (this.dateRange) {\r\n this.minDate = this.dateRange.startTime;\r\n this.maxDate = this.dateRange.endTime;\r\n this.endTime.setValue(this.dateRange.endTime);\r\n if (eventData.id === 'All') {\r\n this.startTime.setValue(this.dateRange.startTime);\r\n } else {\r\n const lastDaysVal = eventData.id * 1;\r\n const startTimeStr = new Date(new Date(this.dateRange.endTime).getTime() - lastDaysVal * 8.64e+7).toISOString();\r\n this.startTime.setValue(startTimeStr);\r\n }\r\n }\r\n }\r\n }\r\n this.emitState();\r\n }\r\n\r\n private resetTime(): void {\r\n this.startTime.setValue('');\r\n this.endTime.setValue('');\r\n if (this.form) {\r\n const formValue = this.form.getRawValue();\r\n this.stateReset.emit(formValue);\r\n }\r\n }\r\n\r\n public toggleAutoLoad(event): void {\r\n this.emitState();\r\n }\r\n\r\n public toggleWellColor(event): void {\r\n const formValue = this.form.getRawValue();\r\n this.compareWellsTimeControlService.setDataState(formValue);\r\n }\r\n\r\n public changeDate(event): void {\r\n this.lastDays.setValue('None');\r\n if (event.isAutoLoad === false) return;\r\n this.emitState();\r\n }\r\n\r\n private emitState(): void {\r\n if (this.form) {\r\n const formValue = this.form.getRawValue();\r\n this.stateChange.emit(formValue);\r\n }\r\n }\r\n\r\n public load(): void {\r\n const formValue = this.form.getRawValue();\r\n this.loadForm.emit(formValue);\r\n }\r\n\r\n public onChangeAlias(value): void {\r\n this.isShowAlias = value;\r\n this.toggleAlias.emit(value);\r\n }\r\n\r\n public onRefreshWellTreatments(): void {\r\n this.refreshWellTreatments.emit();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { ICompareWellsTimeControl } from './compare-wells-time-control.model';\r\n\r\n@Injectable()\r\nexport class CompareWellsTimeControlService {\r\n private dataState: BehaviorSubject = new BehaviorSubject(this.getInitialState());\r\n\r\n public dataRangeDateTime: Subject<{startTime: string; endTime: string}> = new Subject();\r\n\r\n constructor() { }\r\n\r\n getInitialState(): ICompareWellsTimeControl {\r\n return {\r\n startTime: '',\r\n endTime: '',\r\n isAutoLoad: false,\r\n isWellColor: true,\r\n lastDays: 'None'\r\n }\r\n }\r\n\r\n setDataState(data: ICompareWellsTimeControl) {\r\n this.dataState.next(data);\r\n }\r\n\r\n getDataState(): Observable {\r\n return this.dataState.asObservable();\r\n }\r\n\r\n restDataState() {\r\n this.dataState.next(this.getInitialState());\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ViewCell } from 'ng2-smart-table';\r\n\r\n@Component({\r\n selector: 'app-custom-channels-select',\r\n template: `\r\n {{renderValue}}\r\n `,\r\n})\r\nexport class CustomChannelsSelectComponent implements ViewCell, OnInit {\r\n renderValue: string;\r\n\r\n @Input() value: any;\r\n @Input() rowData: any;\r\n\r\n ngOnInit() {\r\n if (this.value && this.value.name) {\r\n this.renderValue = this.value.name;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n template: `\r\n \r\n `,\r\n})\r\nexport class CustomColorComponent implements OnInit {\r\n @Input() value: string | number;\r\n @Input() rowData: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n template: `\r\n {{value ? (value | date: 'HH:mm, dd MMM yyyy') : ''}}\r\n `,\r\n})\r\nexport class CustomDateComponent implements OnInit {\r\n @Input() value: string | number;\r\n @Input() rowData: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { formatNumber } from '@angular/common';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { isNaN } from 'lodash';\r\n\r\n@Component({\r\n template: `\r\n {{ value }}\r\n `,\r\n})\r\nexport class CustomNumberDecimal1Component implements OnInit {\r\n renderValue: string;\r\n\r\n @Input() value: string | number;\r\n @Input() rowData: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.value && this.value) {\r\n if (!this.value) {\r\n this.renderValue = '0';\r\n } else if (typeof this.value === 'string' && isNaN(Number(this.value))) {\r\n this.renderValue = this.value;\r\n } else {\r\n this.renderValue = formatNumber(Number(this.value), 'en-US', `1.1-1`);\r\n }\r\n }\r\n }\r\n}\r\n","import { formatNumber } from '@angular/common';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { isNaN } from 'lodash';\r\n\r\n@Component({\r\n template: `\r\n {{ value }}\r\n `,\r\n})\r\nexport class CustomNumberDecimal3Component implements OnInit {\r\n renderValue: string;\r\n\r\n @Input() value: string | number;\r\n @Input() rowData: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.value && this.value) {\r\n if (!this.value) {\r\n this.renderValue = '0';\r\n } else if (typeof this.value === 'string' && isNaN(Number(this.value))) {\r\n this.renderValue = this.value;\r\n } else {\r\n this.renderValue = formatNumber(Number(this.value), 'en-US', `1.3-3`);\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n template: `\r\n {{value ? (value | number) : 0}}\r\n `,\r\n})\r\nexport class CustomNumberComponent implements OnInit {\r\n @Input() value: string | number;\r\n @Input() rowData: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ViewCell } from 'ng2-smart-table';\r\n\r\n@Component({\r\n selector: 'app-custom-related-column',\r\n template: `\r\n {{renderValue}}\r\n `,\r\n})\r\nexport class CustomRelatedColumnComponent implements ViewCell, OnInit {\r\n renderValue: string;\r\n color: string;\r\n background: string;\r\n\r\n @Input() value: any;\r\n @Input() rowData: any;\r\n @Output() columnClick: EventEmitter = new EventEmitter();\r\n\r\n ngOnInit() {\r\n if (this.value && this.value) {\r\n if (typeof this.value === 'object') {\r\n this.renderValue = this.value.text;\r\n this.color = this.value.color;\r\n this.background = this.value.background;\r\n } else {\r\n this.renderValue = this.value.toString();\r\n }\r\n }\r\n }\r\n\r\n onClick() {\r\n this.columnClick.emit({ rowData: this.rowData, cellValue: this.value });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-custom-switch-column',\r\n template: `\r\n
\r\n \r\n
`,\r\n})\r\n\r\nexport class CustomSwitchColumnComponent implements OnInit {\r\n renderValue: any;\r\n\r\n @Input() value: any;\r\n @Input() rowData: any;\r\n @Output() onEdited: EventEmitter = new EventEmitter();\r\n @Output() columnClick: EventEmitter = new EventEmitter();\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onChange(eventData) {\r\n console.log(eventData)\r\n this.value = eventData;\r\n this.onEdited.emit({ rowData: this.rowData, cellValue: this.value });\r\n }\r\n\r\n}\r\n","module.exports = \"\\r\\n\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\nimport { DefaultEditor } from 'ng2-smart-table';\r\n\r\n@Component({\r\n selector: 'app-edit-custom-channels-select',\r\n templateUrl: './edit-custom-channels-select.component.html',\r\n styleUrls: []\r\n})\r\nexport class EditCustomChannelsSelectComponent extends DefaultEditor implements OnInit {\r\n selected: any = null;\r\n items = [];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.cell.getColumn().getConfig()) {\r\n this.items = this.cell.getColumn().getConfig().list;\r\n }\r\n if (this.cell.newValue) {\r\n this.selected = this.cell.newValue.cName;\r\n }\r\n }\r\n\r\n onChange(selected) {\r\n this.cell.newValue = this.items.find(item => item.cName === selected);\r\n this.items = this.items.filter(item => item.cName !== selected);\r\n }\r\n\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {DefaultEditor} from 'ng2-smart-table';\r\nimport { Helper } from '../../helpers/helper';\r\n\r\n@Component({\r\n template: `\r\n \r\n `,\r\n})\r\nexport class EditCustomColorComponent extends DefaultEditor implements OnInit {\r\n\r\n colorPicker: string = Helper.randomHexColor();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.cell.newValue !== '') {\r\n this.colorPicker = this.cell.getValue();\r\n }\r\n if (!this.colorPicker) {\r\n this.colorPicker = Helper.randomHexColor();\r\n }\r\n this.cell.setValue(this.colorPicker);\r\n }\r\n\r\n updateValue(e: any) {\r\n this.cell.newValue = e;\r\n }\r\n}\r\n","import { Component, OnInit, Input} from '@angular/core';\r\nimport {DefaultEditor} from 'ng2-smart-table';\r\n\r\n@Component({\r\n template: `\r\n `,\r\n})\r\n\r\nexport class EditCustomInputNumberComponent extends DefaultEditor implements OnInit {\r\n @Input() value: string | number;\r\n @Input() rowData: any;\r\n\r\n data: number = null;\r\n placeHolder: string = '';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.cell.newValue !== '') {\r\n this.data = this.cell.getValue();\r\n }\r\n this.placeHolder = this.cell.getColumn().class;\r\n }\r\n\r\n updateValue(e: any) {\r\n this.cell.newValue = e.target.value;\r\n }\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".button-select-dropdown .ul-select-dropdown .dropdown-menu {\\n width: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvZGlhZ25vc3RpYy1wb2ludHMtc2VsZWN0L0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxkaWFnbm9zdGljLXBvaW50cy1zZWxlY3RcXGRpYWdub3N0aWMtcG9pbnRzLXNlbGVjdC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVcsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2RpYWdub3N0aWMtcG9pbnRzLXNlbGVjdC9kaWFnbm9zdGljLXBvaW50cy1zZWxlY3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnV0dG9uLXNlbGVjdC1kcm9wZG93biAudWwtc2VsZWN0LWRyb3Bkb3duIC5kcm9wZG93bi1tZW51IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG4iXX0= */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IDiagnosticPoint } from '../../models/diagnostic-points.model';\r\n\r\n@Component({\r\n selector: 'app-diagnostic-points-select',\r\n templateUrl: './diagnostic-points-select.component.html',\r\n styleUrls: ['./diagnostic-points-select.component.scss']\r\n})\r\nexport class DiagnosticPointsSelectComponent implements OnInit {\r\n isOpen: boolean = false;\r\n listDiagnosticPoints: IDiagnosticPoint[] = [];\r\n\r\n @Input()\r\n set listItems(value: IDiagnosticPoint[]) {\r\n this.listDiagnosticPoints = value;\r\n }\r\n\r\n @Output()\r\n onSelectPoint: EventEmitter = new EventEmitter();\r\n\r\n @Output()\r\n onlistItemsChange: EventEmitter = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n openDropdown() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n isSelected(item): boolean {\r\n return item && item.selected;\r\n }\r\n\r\n selectPoint(point) {\r\n if (point) {\r\n point.selected = !point.selected;\r\n\r\n this.onSelectPoint.emit({...point});\r\n }\r\n }\r\n\r\n clickOutside() {\r\n this.isOpen = false;\r\n }\r\n\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {AbstractControl} from '@angular/forms';\r\nimport {CPATTERN} from '../../helpers/app.constants';\r\n\r\n@Component({\r\n selector: 'error-message',\r\n template: `
\r\n
{{getErrorMessage()}}
\r\n
`,\r\n})\r\nexport class ErrorMessageComponent {\r\n\r\n cvalidate = CPATTERN;\r\n formControl: any;\r\n @Input()\r\n set fc(control: AbstractControl) {\r\n if (control) {\r\n this.formControl = control;\r\n }\r\n }\r\n @Input() txtName: string = '';\r\n @Input() txtRequired: string = '';\r\n @Input() txtMinMax: string = '';\r\n @Input() txtLength: string = '';\r\n @Input() emailPattern: boolean = false;\r\n @Input() passwordPattern: boolean = false;\r\n @Input() textPattern: boolean = false;\r\n @Input() textNumberPattern: boolean = false;\r\n @Input() pattern: string = '';\r\n @Input() errorPattern: string = '';\r\n\r\n getErrorMessage() {\r\n let errorText = '';\r\n if (this.formControl.errors) {\r\n if (this.formControl.errors.required || this.formControl.errors.requiredTrue) {\r\n if (this.txtRequired) {\r\n errorText = this.txtRequired;\r\n } else if (this.formControl.errors.required) {\r\n errorText = `${this.txtName} is required.`;\r\n } else {\r\n errorText = `${this.txtName} is required true.`;\r\n }\r\n } else if (this.formControl.errors.min || this.formControl.errors.max) {\r\n if (this.txtMinMax) {\r\n errorText = this.txtMinMax;\r\n } else if (this.formControl.errors.min) {\r\n errorText = `${this.txtName} must be at least than ${this.formControl.errors.min.min}.`;\r\n } else {\r\n errorText = `${this.txtName} must be at less than or equal to ${this.formControl.errors.max.max}.`;\r\n }\r\n } else if (this.formControl.errors.minlength || this.formControl.errors.maxlength) {\r\n if (this.txtLength) {\r\n errorText = this.txtLength;\r\n } else if (this.formControl.errors.minlength) {\r\n errorText = `${this.txtName} must be at least than ${this.formControl.errors.minlength.requiredLength} characters long.`;\r\n } else {\r\n errorText = `${this.txtName} must be at less than or equal to ${this.formControl.errors.maxlength.requiredLength} characters long.`;\r\n }\r\n } else if (this.formControl.errors.pattern) {\r\n const requiredParent = this.formControl.errors.pattern.requiredPattern;\r\n if (!!this.emailPattern) {\r\n const regex = this.cvalidate.EMAIL.toString();\r\n if (requiredParent === regex) {\r\n errorText = `${this.txtName} has to be a valid email address.`;\r\n }\r\n } else if (!!this.passwordPattern) {\r\n const regex = this.cvalidate.PASSWORD.toString();\r\n if (requiredParent === regex) {\r\n errorText = `Please choose a stronger password. Try a mix of upper/lowercase letters, numbers and symbols.`;\r\n }\r\n } else if (!!this.textPattern) {\r\n const regex = this.cvalidate.TEXT.toString();\r\n if (requiredParent === regex) {\r\n errorText = `${this.txtName} does not contain special chars, numbers and decimal digits (except for space).`;\r\n }\r\n } else if (!!this.textNumberPattern) {\r\n const regex = this.cvalidate.TEXTNUMBER.toString();\r\n if (requiredParent === regex) {\r\n errorText = `${this.txtName} does not contain special characters, decimal digits (except for space).`;\r\n }\r\n } else {\r\n const regex = this.pattern.toString();\r\n if (requiredParent === regex) {\r\n errorText = this.errorPattern;\r\n }\r\n }\r\n } else if (this.formControl.errors.minNumber) {\r\n errorText = `${this.txtName} must be later than Start time.`;\r\n } else if (this.formControl.errors.invalidMinimum) {\r\n errorText = `${this.txtName} must be larger than or equal ${this.formControl.errors.invalidMinimum.minimumValue}.`;\r\n }\r\n }\r\n return errorText;\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2V4cG9ydC1jaGFydC1kcm9wZG93bi9leHBvcnQtY2hhcnQtZHJvcGRvd24uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\n\r\nexport const EXPORT_CHART_TYPE = {\r\n PNG: 'Save PNG',\r\n JPEG: 'Save JPEG',\r\n PRINT: 'Print Chart',\r\n RAW: 'Raw Data',\r\n};\r\n\r\n@Component({\r\n selector: 'app-export-chart-dropdown',\r\n templateUrl: './export-chart-dropdown.component.html',\r\n styleUrls: ['./export-chart-dropdown.component.scss']\r\n})\r\nexport class ExportChartDropdownComponent implements OnInit {\r\n @Input() hideRawData = false;\r\n @Output() exportEvent = new EventEmitter();\r\n\r\n optionsExportOpened: boolean = false;\r\n exportList: string[] = [EXPORT_CHART_TYPE.PNG, EXPORT_CHART_TYPE.JPEG, EXPORT_CHART_TYPE.PRINT, EXPORT_CHART_TYPE.RAW];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.hideRawData) this.exportList = this.exportList.filter(x => x !== EXPORT_CHART_TYPE.RAW);\r\n }\r\n\r\n clickOutsideExport() {\r\n this.optionsExportOpened = false;\r\n }\r\n\r\n openButtonExportDropdown() {\r\n this.optionsExportOpened = !this.optionsExportOpened;\r\n }\r\n\r\n exportChart(option) {\r\n this.clickOutsideExport();\r\n this.exportEvent.emit(option);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\\"\\\"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • {{ menu.title }}
  • \\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.app-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n position: relative; }\\n\\n.app-header .logo-container {\\n position: relative;\\n width: 13rem;\\n padding-left: 35px;\\n font-weight: bold;\\n font-size: 1.5rem;\\n color: #007ea3; }\\n\\n.app-header .logo-container.minimized {\\n width: 3.5rem; }\\n\\n.app-header .logo-container .logo-img {\\n width: 140px; }\\n\\n.app-header .logo-container .toggle-menu-button {\\n position: absolute;\\n right: -25px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n\\n.app-header .user-container {\\n cursor: pointer;\\n margin-right: 40px;\\n position: relative; }\\n\\n.app-header .user-container .user-avatar-name {\\n font-size: 14px; }\\n\\n.app-header .user-container .arrow-item {\\n position: absolute;\\n font-size: 8px;\\n right: 0;\\n top: 50%;\\n transform: translate(0, -50%); }\\n\\n.user-dropdown {\\n position: absolute;\\n top: 35px;\\n right: 35px;\\n font-size: 14px; }\\n\\n.user-dropdown li.list-group-item {\\n cursor: pointer;\\n padding: 10px 20px; }\\n\\n.user-dropdown li.color-danger {\\n color: #d0021b; }\\n\\n.hamburger {\\n position: absolute;\\n top: 5px;\\n left: 10px; }\\n\\n.hamburger .hamburger-box {\\n position: relative;\\n width: 25px;\\n height: 15px;\\n display: inline-block; }\\n\\n.hamburger .hamburger-box .hamburger-inner {\\n position: absolute;\\n width: 25px;\\n height: 3px;\\n background-color: #aaaaaa;\\n border-radius: 4px;\\n display: block;\\n transition-timing-function: ease;\\n transition-duration: .15s;\\n transition-property: transform;\\n -webkit-transition-timing-function: ease;\\n -webkit-transition-duration: .15s;\\n -webkit-transition-property: transform; }\\n\\n.hamburger .hamburger-box .hamburger-inner::before {\\n content: '';\\n position: absolute;\\n width: 25px;\\n height: 3px;\\n background-color: #aaaaaa;\\n border-radius: 4px;\\n top: -8px;\\n transition-timing-function: ease;\\n transition-duration: .15s;\\n transition-property: transform;\\n -webkit-transition-timing-function: ease;\\n -webkit-transition-duration: .15s;\\n -webkit-transition-property: transform; }\\n\\n.hamburger .hamburger-box .hamburger-inner::after {\\n content: '';\\n position: absolute;\\n width: 25px;\\n height: 3px;\\n background-color: #aaaaaa;\\n border-radius: 4px;\\n bottom: -8px;\\n transition-timing-function: ease;\\n transition-duration: .15s;\\n transition-property: transform;\\n -webkit-transition-timing-function: ease;\\n -webkit-transition-duration: .15s;\\n -webkit-transition-property: transform; }\\n\\n.hamburger .hamburger-box .hamburger-inner.active {\\n transform: rotate(225deg); }\\n\\n.hamburger .hamburger-box .hamburger-inner.active::before {\\n opacity: 0; }\\n\\n.hamburger .hamburger-box .hamburger-inner.active::after {\\n bottom: 0;\\n transform: rotate(-90deg); }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvaGVhZGVyL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxoZWFkZXJcXGhlYWRlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvaGVhZGVyL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxzdHlsZXNcXHZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYTtFQUNiLDhCQUE4QjtFQUM5QixtQkFBbUI7RUFDbkIsa0JBQWtCLEVBQUE7O0FBSnBCO0lBTUksa0JBQWtCO0lBQ2xCLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixjQ2hCYSxFQUFBOztBREtqQjtNQWFNLGFBQWEsRUFBQTs7QUFibkI7TUFnQk0sWUFBWSxFQUFBOztBQWhCbEI7TUFtQk0sa0JBQWtCO01BQ2xCLFlBQVk7TUFDWixRQUFRO01BRVIsNkJBQTZCLEVBQUE7O0FBdkJuQztJQTJCSSxlQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLGtCQUFrQixFQUFBOztBQTdCdEI7TUErQk0sZUFBZSxFQUFBOztBQS9CckI7TUFrQ00sa0JBQWtCO01BQ2xCLGNBQWM7TUFDZCxRQUFRO01BQ1IsUUFBUTtNQUVSLDZCQUE2QixFQUFBOztBQUluQztFQUNFLGtCQUFrQjtFQUNsQixTQUFTO0VBQ1QsV0FBVztFQUNYLGVBQWUsRUFBQTs7QUFKakI7SUFNSSxlQUFlO0lBQ2Ysa0JBQWtCLEVBQUE7O0FBUHRCO0lBVUksY0FDRixFQUFBOztBQUdGO0VBQ0Usa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixVQUFVLEVBQUE7O0FBSFo7SUFLSSxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLFlBQVk7SUFDWixxQkFBcUIsRUFBQTs7QUFSekI7TUFVTSxrQkFBa0I7TUFDbEIsV0FBVztNQUNYLFdBQVc7TUFDWCx5QkNsRWlCO01EbUVqQixrQkFBa0I7TUFDbEIsY0FBYztNQUNkLGdDQUFnQztNQUNoQyx5QkFBeUI7TUFDekIsOEJBQThCO01BQzlCLHdDQUF3QztNQUN4QyxpQ0FBaUM7TUFDakMsc0NBQXNDLEVBQUE7O0FBckI1QztRQXVCUSxXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLFdBQVc7UUFDWCxXQUFXO1FBQ1gseUJDaEZlO1FEaUZmLGtCQUFrQjtRQUNsQixTQUFTO1FBQ1QsZ0NBQWdDO1FBQ2hDLHlCQUF5QjtRQUN6Qiw4QkFBOEI7UUFDOUIsd0NBQXdDO1FBQ3hDLGlDQUFpQztRQUNqQyxzQ0FBc0MsRUFBQTs7QUFuQzlDO1FBc0NRLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsV0FBVztRQUNYLFdBQVc7UUFDWCx5QkMvRmU7UURnR2Ysa0JBQWtCO1FBQ2xCLFlBQVk7UUFDWixnQ0FBZ0M7UUFDaEMseUJBQXlCO1FBQ3pCLDhCQUE4QjtRQUM5Qix3Q0FBd0M7UUFDeEMsaUNBQWlDO1FBQ2pDLHNDQUFzQyxFQUFBOztBQWxEOUM7UUFxRFEseUJBQXlCLEVBQUE7O0FBckRqQztVQXVEVSxVQUFVLEVBQUE7O0FBdkRwQjtVQTBEVSxTQUFTO1VBQ1QseUJBQXlCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnfmFwcC9zaGFyZWQvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzJztcclxuXHJcbjpob3N0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmFwcC1oZWFkZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIC5sb2dvLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB3aWR0aDogMTNyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDM1cHg7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgY29sb3I6ICRtYWluLWJnO1xyXG4gICAgJi5taW5pbWl6ZWQge1xyXG4gICAgICB3aWR0aDogMy41cmVtO1xyXG4gICAgfVxyXG4gICAgLmxvZ28taW1nIHtcclxuICAgICAgd2lkdGg6IDE0MHB4O1xyXG4gICAgfVxyXG4gICAgLnRvZ2dsZS1tZW51LWJ1dHRvbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IC0yNXB4O1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC51c2VyLWNvbnRhaW5lciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAudXNlci1hdmF0YXItbmFtZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIH1cclxuICAgIC5hcnJvdy1pdGVtIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBmb250LXNpemU6IDhweDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuLnVzZXItZHJvcGRvd24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDM1cHg7XHJcbiAgcmlnaHQ6IDM1cHg7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGxpLmxpc3QtZ3JvdXAtaXRlbSB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XHJcbiAgfVxyXG4gIGxpLmNvbG9yLWRhbmdlciB7XHJcbiAgICBjb2xvcjogI2QwMDIxYlxyXG4gIH1cclxufVxyXG5cclxuLmhhbWJ1cmdlciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNXB4O1xyXG4gIGxlZnQ6IDEwcHg7XHJcbiAgLmhhbWJ1cmdlci1ib3gge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgd2lkdGg6IDI1cHg7XHJcbiAgICBoZWlnaHQ6IDE1cHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAuaGFtYnVyZ2VyLWlubmVye1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHdpZHRoOiAyNXB4O1xyXG4gICAgICBoZWlnaHQ6IDNweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvcm0tbGFiZWwtZmc7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlO1xyXG4gICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTVzO1xyXG4gICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XHJcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XHJcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1cztcclxuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XHJcbiAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHdpZHRoOiAyNXB4O1xyXG4gICAgICAgIGhlaWdodDogM3B4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JtLWxhYmVsLWZnO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICB0b3A6IC04cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XHJcbiAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1cztcclxuICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IC4xNXM7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XHJcbiAgICAgIH1cclxuICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB3aWR0aDogMjVweDtcclxuICAgICAgICBoZWlnaHQ6IDNweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9ybS1sYWJlbC1mZztcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgYm90dG9tOiAtOHB4O1xyXG4gICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlO1xyXG4gICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC4xNXM7XHJcbiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTVzO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xyXG4gICAgICB9XHJcbiAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMjVkZWcpO1xyXG4gICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJcclxuJG1haW4tYmc6ICMwMDdlYTM7XHJcbiRsYXlvdXQtYmc6ICNmNWY2ZjY7XHJcbiRkYW5nZXItY29sb3I6ICNlYjVhNTI7XHJcbiRlcnJvci1jb2xvcjogI2U5NTg1YTtcclxuJGZvbnQtZGVmYXVsdDogIzMyM2M0NztcclxuJGZvbnQtdGFibGUtZGVmYXVsdDogIzM2NDA0YjtcclxuXHJcbiRhcHAtc2lkZWJhci1iZzogJG1haW4tYmc7XHJcblxyXG4kZm9ybS1sYWJlbC1mZzogI2FhYWFhYTtcclxuJHRhYmxlLWhlYWRlci1iZzogI2UzZTdlODtcclxuJGNhbmNlbC1jb2xvcjogI2JmY2VkMztcclxuJGJnLWRlbGV0ZS1jb2xvcjogI2U4ZThlODtcclxuJHdoaXRlLWNvbG9yOiAjZmZmZmZmO1xyXG4kc2xhdGUtY29sb3I6ICM0ODU0NjU7XHJcbi8vPT09PT09PT09PSBEQVJLIFRIRU1FUyA9PT09PT09PT09PT09PT0vL1xyXG4kZGFyay10aGVtZXMtd3JhcF9iZzogIzIzMjMyMztcclxuJGRhcmstdGhlbWVzLWJveC1iZzogIzEzMTUxNjtcclxuJGRhcmstdGhlbWVzLWJhc2UtY29sb3I6ICNlOGU2ZTM7XHJcbiRkYXJrLXRoZW1lcy10aGVhZC1iYWNrZ3JvdW5kOiAjMjYyYTJiO1xyXG4kZGFyay10aGVtZXMtdGhlYWQtY29sb3I6ICM1YWRhZmY7XHJcbiRkYXJrLXRoZW1lcy1hY3RpdmU6ICM1YWRhZmY7XHJcbiRkYXJrLXRoZW1lcy10ci1iYWNrZ3JvdW5kOiAjMTgxYTFiO1xyXG4kZGFyay10aGVtZXMtdHItYmFja2dyb3VuZC0yOiAjMGQyOTM2O1xyXG4kZGFyay10aGVtZXMtYm94LXNoYWRvdzogIzFmMjIyMztcclxuLy8tLVxyXG4kZGFyay1tYWluLWJnOiAjNWFkYWZmO1xyXG4kZGFyay1sYXlvdXQtYmc6ICMzMzM3Mzk7XHJcbiRkYXJrLWRhbmdlci1jb2xvcjogI2VjNjA1ODtcclxuJGRhcmstZXJyb3ItY29sb3I6ICNlYTVkNWY7XHJcbiRkYXJrLWZvbnQtZGVmYXVsdDogI2MyYmNiNDtcclxuJGRhcmstZm9udC10YWJsZS1kZWZhdWx0OiAjYmZiYWIxO1xyXG4kZGFyay1mb3JtLWxhYmVsLWZnOiAjYjJhY2EyO1xyXG5cclxuIl19 */\"","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UserAuthService, NavbarScaleChartService } from '../../services';\r\nimport { NbSidebarService, NbMenuService } from '@nebular/theme';\r\nimport { MsalService } from \"@azure/msal-angular\";\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n active: boolean = true;\r\n userFullName = 'Anonymous';\r\n userMenu = [\r\n { title: 'User Profile' },\r\n { title: 'Request Support' },\r\n { title: 'Change Password' },\r\n { title: 'Log out' }\r\n ];\r\n isShowUserMenu = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private userAuthService: UserAuthService,\r\n private sideBarService: NbSidebarService,\r\n private nbMenuService: NbMenuService,\r\n private navbarScaleChartService: NavbarScaleChartService,\r\n private authService: MsalService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.userAuthService.currentUser.subscribe((user) => {\r\n if (user && user.firstName && user.lastName) {\r\n this.userFullName = `${user.firstName} ${user.lastName}`;\r\n }\r\n });\r\n\r\n this.nbMenuService.onSubmenuToggle().subscribe(item => {\r\n if (this.active === false) {\r\n this.active = true;\r\n }\r\n });\r\n }\r\n\r\n navigate(title) {\r\n if (title === 'User Profile') {\r\n this.router.navigate(['/pages/user']);\r\n } else if (title === 'Log out') {\r\n // this.router.navigate(['/pages/user/logout']);\r\n this.userAuthService.logout();\r\n } else if (title === 'Request Support') {\r\n this.router.navigate(['/pages/user/supportRequest']);\r\n } else if (title === 'Change Password') {\r\n this.authService.loginRedirect({\r\n authority: 'https://prodlinqx.b2clogin.com/prodlinqx.onmicrosoft.com/B2C_1_PROD',\r\n scopes: ['https://prodlinqx.onmicrosoft.com/PROD_WebApi_Scope/prod_scp_rw'],\r\n })\r\n // this.router.navigate(['/pages/user/changePassword']);\r\n }\r\n this.isShowUserMenu = false;\r\n }\r\n\r\n isActive() {\r\n this.active = !this.active;\r\n if (this.active) {\r\n this.sideBarService.expand('menu-sidebar');\r\n } else {\r\n this.sideBarService.toggle(true, 'menu-sidebar');\r\n }\r\n this.navbarScaleChartService.setLoading(this.active);\r\n }\r\n\r\n}\r\n","\r\nexport * from './header/header.component';\r\nexport * from './company-selector/company-selector.component';\r\nexport * from './errorMessage/error-message.component';\r\nexport * from './input-tags/input-tags.component';\r\nexport * from './select-channels/select-channels.component';\r\nexport * from './diagnostic-points-select/diagnostic-points-select.component';\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".input-tags .tag-list {\\n list-style: none;\\n padding: 0; }\\n .input-tags .tag-list .tag-item {\\n display: inline-block;\\n position: relative;\\n border-radius: 2px;\\n border: solid 1px #e2e2e2;\\n background-color: #F1F1F1;\\n padding: 5px 16px 4px 8px;\\n margin-right: 5px;\\n margin-top: 5px;\\n line-height: 1; }\\n .input-tags .tag-list .tag-item .tag-text {\\n font-size: 10px;\\n line-height: 1; }\\n .input-tags .tag-list .tag-item i {\\n position: absolute;\\n right: 7px;\\n top: 8px;\\n font-size: 6px;\\n color: rgba(0, 0, 0, 0.2);\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvaW5wdXQtdGFncy9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvc3JjXFxhcHBcXHNoYXJlZFxcY29tcG9uZW50c1xcaW5wdXQtdGFnc1xcaW5wdXQtdGFncy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQjtFQUNoQixVQUFVLEVBQUE7RUFGWjtJQUlJLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLHlCQUF5QjtJQUN6Qix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2YsY0FBYyxFQUFBO0VBWmxCO01BY00sZUFBZTtNQUNmLGNBQWMsRUFBQTtFQWZwQjtNQWtCTSxrQkFBa0I7TUFDbEIsVUFBVTtNQUNWLFFBQVE7TUFDUixjQUFjO01BQ2QseUJBQXlCO01BQ3pCLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2lucHV0LXRhZ3MvaW5wdXQtdGFncy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5pbnB1dC10YWdzIC50YWctbGlzdCB7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxuICBwYWRkaW5nOiAwO1xyXG4gIC50YWctaXRlbSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XHJcbiAgICBib3JkZXI6IHNvbGlkIDFweCAjZTJlMmUyO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMTtcclxuICAgIHBhZGRpbmc6IDVweCAxNnB4IDRweCA4cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgLnRhZy10ZXh0IHtcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIH1cclxuICAgIGkge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA3cHg7XHJcbiAgICAgIHRvcDogOHB4O1xyXG4gICAgICBmb250LXNpemU6IDZweDtcclxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, FormBuilder, FormControl, Validators, AbstractControl, ValidatorFn } from '@angular/forms';\r\nimport { CPATTERN } from '../../helpers/app.constants';\r\nimport { ToasterService } from '../../services/toaster.service';\r\n\r\n@Component({\r\n selector: 'app-input-tags',\r\n templateUrl: './input-tags.component.html',\r\n styleUrls: ['./input-tags.component.scss']\r\n})\r\nexport class InputTagsComponent implements OnInit {\r\n form: FormGroup;\r\n tagName: AbstractControl;\r\n listTags = [];\r\n\r\n @Input() isExternalCheck: boolean;\r\n @Input()\r\n set items(values) {\r\n this.listTags = [...values];\r\n }\r\n\r\n @Output() onAdd: EventEmitter = new EventEmitter();\r\n @Output() onDelete: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private toasterService: ToasterService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.createForm();\r\n }\r\n\r\n createForm() {\r\n this.form = this.fb.group({\r\n tagName: new FormControl('', [\r\n Validators.minLength(2),\r\n Validators.maxLength(50),\r\n Validators.pattern(CPATTERN.CHANNEL_MAPPING_NAME),\r\n this.duplicateNameValidator()\r\n ])\r\n });\r\n this.tagName = this.form.controls['tagName'];\r\n }\r\n\r\n duplicateNameValidator(): ValidatorFn {\r\n return (control: AbstractControl): {[key: string]: any} | null => {\r\n const existedName = this.listTags.find(item => item.name === control.value.trim());\r\n return existedName ? {'tagName': {value: control.value}} : null;\r\n };\r\n }\r\n\r\n addTag(event, tagName) {\r\n if (this.form.valid && tagName) {\r\n if (this.isExternalCheck) {\r\n this.onAdd.emit({ items: [...this.listTags], tagName: tagName });\r\n } else {\r\n this.listTags.push({\r\n name: tagName\r\n });\r\n this.onAdd.emit([...this.listTags]);\r\n this.tagName.setValue('');\r\n }\r\n } else {\r\n if (this.tagName.errors && this.tagName.errors.tagName) {\r\n this.toasterService.showError('The mapped channel name has already been added. Please enter another name');\r\n } else if (this.tagName.errors) {\r\n this.toasterService.showError('The mapped channel name has to be between 2 and 50 characters long and not contain special characters (except for dot, space, underscore, -, %,(),[]).');\r\n }\r\n }\r\n }\r\n\r\n removeTag(event, item, index) {\r\n if (item) {\r\n this.listTags.splice(index, 1);\r\n this.onDelete.emit([...this.listTags]);\r\n }\r\n }\r\n\r\n disableInput() {\r\n if (this.tagName) {\r\n this.tagName.disable();\r\n }\r\n }\r\n\r\n enableInput() {\r\n if (this.tagName) {\r\n this.tagName.enable();\r\n }\r\n }\r\n\r\n unsetInput() {\r\n if (this.tagName) {\r\n this.tagName.setValue('');\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Offset Well
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Real Time\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Show Bourdet Der\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".modal-dialog.modal-offset-well {\\n max-width: 640px;\\n width: 480px; }\\n\\n.modal-dialog .modal-footer {\\n justify-content: center;\\n border: none; }\\n\\n.modal-dialog .button-compare {\\n font-size: 10px; }\\n\\n.modal-dialog .custom-slider {\\n margin: 0px; }\\n\\n::ng-deep .ng5-slider.animate .ng5-slider-bubble.ng5-slider-limit,\\n::ng-deep .ng5-slider-model-value {\\n font-size: 13px !important; }\\n\\n::ng-deep .ng5-slider .ng5-slider-pointer {\\n width: 20px !important;\\n height: 20px !important;\\n top: -8px !important; }\\n\\n::ng-deep .ng5-slider .ng5-slider-pointer:after {\\n width: 6px !important;\\n height: 6px !important;\\n top: 7px !important;\\n left: 7px !important; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2JvdXJkZXQtZGVyaXZhdGl2ZS9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvc3JjXFxhcHBcXHNoYXJlZFxcY29tcG9uZW50c1xcbW9kYWxzXFxib3VyZGV0LWRlcml2YXRpdmVcXGJvdXJkZXQtZGVyaXZhdGl2ZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUVRLGdCQUFnQjtFQUNoQixZQUFZLEVBQUE7O0FBSHBCO0VBTVEsdUJBQXVCO0VBQ3ZCLFlBQVksRUFBQTs7QUFQcEI7RUFVUSxlQUFlLEVBQUE7O0FBVnZCO0VBY1EsV0FBVyxFQUFBOztBQUluQjs7RUFHUSwwQkFBMEIsRUFBQTs7QUFIbEM7RUFNUSxzQkFBc0I7RUFDdEIsdUJBQXVCO0VBQ3ZCLG9CQUFvQixFQUFBOztBQVI1QjtFQVdRLHFCQUFxQjtFQUNyQixzQkFBc0I7RUFDdEIsbUJBQW1CO0VBQ25CLG9CQUFvQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2JvdXJkZXQtZGVyaXZhdGl2ZS9ib3VyZGV0LWRlcml2YXRpdmUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubW9kYWwtZGlhbG9nIHtcclxuICAgICYubW9kYWwtb2Zmc2V0LXdlbGwge1xyXG4gICAgICAgIG1heC13aWR0aDogNjQwcHg7XHJcbiAgICAgICAgd2lkdGg6IDQ4MHB4O1xyXG4gICAgfVxyXG4gICAgLm1vZGFsLWZvb3RlciB7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgfVxyXG4gICAgLmJ1dHRvbi1jb21wYXJlIHtcclxuICAgICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5jdXN0b20tc2xpZGVyIHtcclxuICAgICAgICBtYXJnaW46IDBweDtcclxuICAgIH1cclxufVxyXG5cclxuOjpuZy1kZWVwIHtcclxuICAgIC5uZzUtc2xpZGVyLmFuaW1hdGUgLm5nNS1zbGlkZXItYnViYmxlLm5nNS1zbGlkZXItbGltaXQsXHJcbiAgICAubmc1LXNsaWRlci1tb2RlbC12YWx1ZSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAubmc1LXNsaWRlciAubmc1LXNsaWRlci1wb2ludGVyIHtcclxuICAgICAgICB3aWR0aDogMjBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGhlaWdodDogMjBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIHRvcDogLThweCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgLm5nNS1zbGlkZXIgLm5nNS1zbGlkZXItcG9pbnRlcjphZnRlciB7XHJcbiAgICAgICAgd2lkdGg6IDZweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGhlaWdodDogNnB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgdG9wOiA3cHggIWltcG9ydGFudDtcclxuICAgICAgICBsZWZ0OiA3cHggIWltcG9ydGFudDtcclxuICAgIH1cclxufSJdfQ== */\"","import { formatDate } from '@angular/common';\r\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { isEmpty } from 'lodash';\r\nimport { Options } from 'ng5-slider';\r\nimport { Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Helper } from '../../../helpers/helper';\r\nimport { OffsetWellCompare } from '../../../models/offset-well-compare.model';\r\nimport { IWellItemPaging } from '../../../models/well.model';\r\nimport { TreatmentService } from '../../../services/treatment.service';\r\n\r\n@Component({\r\n selector: 'app-bourdet-derivative',\r\n templateUrl: './bourdet-derivative.component.html',\r\n styleUrls: ['./bourdet-derivative.component.scss']\r\n})\r\nexport class BourdetDerivativeComponent implements OnInit, OnDestroy {\r\n subscriptions: Subscription[] = [];\r\n form: FormGroup;\r\n isRealtime: AbstractControl;\r\n isProducingWell: AbstractControl;\r\n selectedWell: AbstractControl;\r\n selectedTreatment: AbstractControl;\r\n selectedChannel: AbstractControl;\r\n selectedProducingWell: AbstractControl;\r\n\r\n listTreatments: any[] = [];\r\n realtimeChannels: any[] = [];\r\n startTime: Date;\r\n endTime: Date;\r\n startTimeStr: any = '';\r\n endTimeStr: any = '';\r\n compStartTime: AbstractControl;\r\n compEndTime: AbstractControl;\r\n\r\n smoothRange: AbstractControl;\r\n optionsSmoothRange: Options = {\r\n floor: 30,\r\n ceil: 300,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: 'white',\r\n to: '#0DB9F0'\r\n }\r\n };\r\n\r\n bourdetDerRange: AbstractControl;\r\n optionsBourdetDerRange: Options = {\r\n floor: 30,\r\n ceil: 600,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: 'white',\r\n to: '#0DB9F0'\r\n }\r\n };\r\n\r\n listProducingWell: any = [\r\n {\r\n id: 1,\r\n name: 'Parent Well',\r\n value: true\r\n },\r\n {\r\n id: 2,\r\n name: 'Child Well',\r\n value: false\r\n }\r\n ];\r\n\r\n offsetTimeZone: number = new Date().getTimezoneOffset() * 60 * 1000; // in milliseconds\r\n isEnableSmoothData = true;\r\n isShowBourdetDer = true;\r\n isEnabledFeature = true;\r\n\r\n @Input() modelSetting: OffsetWellCompare;\r\n @Input() curWellId: number;\r\n @Input() curTreatmentId: number;\r\n @Input() listWells: IWellItemPaging[] = [];\r\n\r\n constructor(\r\n private treatmentService: TreatmentService,\r\n protected dialogRef: NbDialogRef\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.modelSetting) {\r\n const selectedWell = this.listWells.find(item => item.wellId === this.modelSetting.wellId);\r\n if (selectedWell) {\r\n this.selectedWell.setValue(selectedWell);\r\n this.onChangeWell(selectedWell);\r\n }\r\n } else {\r\n if (!isEmpty(this.listWells)) {\r\n // default select current well\r\n if (this.curWellId) {\r\n const selectedWell = this.listWells.find(item => item.wellId === this.curWellId * 1);\r\n if (selectedWell) {\r\n this.selectedWell.setValue(selectedWell);\r\n this.onChangeWell(selectedWell);\r\n }\r\n } else { // default set first item\r\n this.selectedWell.setValue(this.listWells[0]);\r\n this.onChangeWell(this.listWells[0]);\r\n }\r\n }\r\n }\r\n\r\n if (!isEmpty(this.selectedProducingWell)) {\r\n this.selectedProducingWell.setValue(this.listProducingWell[0]);\r\n }\r\n }\r\n\r\n private onChangeWell(selectedWell) {\r\n this.selectedWell.setValue(selectedWell);\r\n this.treatmentService.getListTreatment(selectedWell.wellId).subscribe(res => {\r\n this.listTreatments = res.result;\r\n const selectedTreatment = !this.modelSetting || !this.modelSetting.treatmentId ?\r\n this.listTreatments[0] :\r\n this.listTreatments.find(item => item.id === this.modelSetting.treatmentId);\r\n if (selectedTreatment) {\r\n this.selectedTreatment.setValue(selectedTreatment);\r\n this.onChangeTreatment();\r\n }\r\n });\r\n }\r\n\r\n private onChangeTreatment() {\r\n if (!this.selectedWell.value.wellId || !this.selectedTreatment.value.id) return;\r\n this.getTreatmentTimeRange(this.selectedWell.value.wellId, this.selectedTreatment.value.id);\r\n this.getChannels(this.selectedWell.value.wellId, this.selectedTreatment.value.id).subscribe(res => {\r\n this.setRealtimeChannels(res);\r\n this.selectedChannel.setValue('');\r\n });\r\n }\r\n\r\n private setRealtimeChannels(list: any[]): void {\r\n this.realtimeChannels = list.filter(item => {\r\n // cName format: C + \r\n if (!item || !item.cName || !item.cName.length) return false;\r\n const temp = item.cName.slice(1);\r\n return Number.isInteger(parseInt(temp)) && parseInt(temp).toString() === temp;\r\n });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n getTreatmentTimeRange(wellId, treatmentId) {\r\n if (wellId && treatmentId) {\r\n this.treatmentService.getTreatmentDetailWebApi(wellId, treatmentId).toPromise().then(res => {\r\n if (res && res.result) {\r\n this.startTimeStr = formatDate(res.result.timeStart * 1000, 'M/d/yyyy, h:mm aaa', 'en-US', 'UTC');\r\n this.endTimeStr = formatDate(res.result.timeEnd * 1000, 'M/d/yyyy, h:mm aaa', 'en-US', 'UTC');\r\n this.startTime = Helper.convertDateToUTC(new Date(res.result.timeStart * 1000));\r\n this.endTime = Helper.convertDateToUTC(new Date(res.result.timeEnd * 1000));\r\n // set time range model\r\n this.compStartTime.setValue(Helper.convertDateToUTC(new Date(res.result.timeStart * 1000)));\r\n if (res.result.timeEnd >= res.result.timeStart) {\r\n this.compEndTime.setValue(Helper.convertDateToUTC(new Date(res.result.timeEnd * 1000)));\r\n } else {\r\n this.compEndTime.setValue(Helper.convertDateToUTC(new Date(res.result.timeStart * 1000)));\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getChannels(wellId, treatmentId) {\r\n return this.treatmentService.getRealtimeChannels(wellId, treatmentId).pipe(map(response => {\r\n return Helper.getList(response, 'result.items');\r\n }));\r\n }\r\n\r\n onSelectProducingWell(eventData) {\r\n if (eventData && eventData.id) {\r\n const selectedProducing = this.listProducingWell.find(item => item.id === eventData.id);\r\n if (selectedProducing) {\r\n this.selectedProducingWell.setValue(selectedProducing);\r\n }\r\n }\r\n }\r\n\r\n onSelectWell(eventData) {\r\n if (!eventData || !eventData.id) return;\r\n const selectedWell = this.listWells.find(item => item.wellId === eventData.id);\r\n if (!selectedWell) return;\r\n this.onChangeWell(selectedWell);\r\n }\r\n\r\n onSelectTreatment(eventData) {\r\n const treatment = this.listTreatments.find(item => item.id === eventData.id);\r\n if (treatment) {\r\n this.selectedTreatment.setValue(treatment);\r\n }\r\n if (this.selectedWell.value.wellId && treatment.id) {\r\n // get list channels\r\n this.getTreatmentTimeRange(this.selectedWell.value.wellId, treatment.id);\r\n const subRes = this.getChannels(this.selectedWell.value.wellId, treatment.id).subscribe(res => {\r\n this.setRealtimeChannels(res);\r\n this.selectedChannel.setValue('');\r\n });\r\n this.subscriptions.push(subRes);\r\n }\r\n }\r\n\r\n selectChannel(eventData: { id: string; text: string }) {\r\n if (eventData && eventData.text) {\r\n const channel = this.realtimeChannels.find(item => item.name === eventData.text);\r\n if (channel) {\r\n this.selectedChannel.setValue([channel]);\r\n }\r\n }\r\n }\r\n\r\n createForm() {\r\n this.form = new FormGroup({\r\n selectedWell: new FormControl(null, [Validators.required]),\r\n selectedTreatment: new FormControl(null, [Validators.required]),\r\n compStartTime: new FormControl('', [Validators.required]),\r\n compEndTime: new FormControl('', [Validators.required]),\r\n axisType: new FormControl('Left', [Validators.required]),\r\n selectedChannel: new FormControl([], [Validators.required]),\r\n isRealtime: new FormControl(true, [Validators.required]),\r\n selectedProducingWell: new FormControl(null, [Validators.required]),\r\n select: new FormControl(false, [Validators.required]),\r\n smoothRange: new FormControl(60),\r\n bourdetDerRange: new FormControl(300)\r\n });\r\n\r\n this.selectedWell = this.form.controls['selectedWell'];\r\n this.selectedTreatment = this.form.controls['selectedTreatment'];\r\n this.compStartTime = this.form.controls['compStartTime'];\r\n this.compEndTime = this.form.controls['compEndTime'];\r\n this.selectedChannel = this.form.controls['selectedChannel'];\r\n this.isRealtime = this.form.controls['isRealtime'];\r\n this.selectedProducingWell = this.form.controls['selectedProducingWell'];\r\n this.smoothRange = this.form.controls['smoothRange'];\r\n this.bourdetDerRange = this.form.controls['bourdetDerRange'];\r\n }\r\n\r\n submitForm() {\r\n if (this.form.valid) {\r\n const startTime = new Date(this.compStartTime.value).getTime() - this.offsetTimeZone;\r\n const endTime = new Date(this.compEndTime.value).getTime() - this.offsetTimeZone;\r\n const bourdetDerivative = new OffsetWellCompare(\r\n this.selectedWell.value.wellId,\r\n this.selectedWell.value.wellName,\r\n this.selectedTreatment.value.id,\r\n startTime,\r\n endTime,\r\n 'Leftmost',\r\n this.selectedChannel.value,\r\n this.isRealtime.value,\r\n this.selectedTreatment.value.treatmentNumber,\r\n this.selectedTreatment.value.dataType,\r\n this.selectedProducingWell.value.value,\r\n this.selectedTreatment.value.treatmentName,\r\n this.isEnableSmoothData,\r\n this.smoothRange.value,\r\n this.isShowBourdetDer,\r\n this.bourdetDerRange.value\r\n );\r\n\r\n this.dialogRef.close(bourdetDerivative);\r\n }\r\n }\r\n\r\n smoothChanged() {\r\n this.isEnableSmoothData = !this.isEnableSmoothData;\r\n if (this.isEnableSmoothData === false) {\r\n this.smoothRange = new FormControl(60);\r\n }\r\n }\r\n\r\n changedShowBourdetDer() {\r\n this.isShowBourdetDer = !this.isShowBourdetDer;\r\n if (this.isShowBourdetDer === false) {\r\n this.bourdetDerRange = new FormControl(300);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n Helper.unsubscribe(this.subscriptions);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
{{ titleHeader }}
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Auto Scale Y Axis\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \".modal-dialog .modal-body {\\n max-height: 660px;\\n overflow: auto; }\\n\\n.modal-dialog .modal-footer {\\n justify-content: center;\\n border: none; }\\n\\n.modal-dialog .button-compare {\\n font-size: 10px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2NoYW5uZWwtc2VsZWN0aW9uL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxtb2RhbHNcXGNoYW5uZWwtc2VsZWN0aW9uXFxjaGFubmVsLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUVJLGlCQUFpQjtFQUNqQixjQUFjLEVBQUE7O0FBSGxCO0VBTUksdUJBQXVCO0VBQ3ZCLFlBQVksRUFBQTs7QUFQaEI7RUFXSSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9tb2RhbHMvY2hhbm5lbC1zZWxlY3Rpb24vY2hhbm5lbC1zZWxlY3Rpb24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubW9kYWwtZGlhbG9nIHtcclxuICAubW9kYWwtYm9keSB7XHJcbiAgICBtYXgtaGVpZ2h0OiA2NjBweDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuICAubW9kYWwtZm9vdGVyIHtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gIH1cclxuXHJcbiAgLmJ1dHRvbi1jb21wYXJlIHtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICB9XHJcbn1cclxuIl19 */\"","import { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { NbDialogRef, NbDialogService } from '@nebular/theme';\r\nimport { cloneDeep, forEach, isEmpty } from 'lodash';\r\nimport { forkJoin } from 'rxjs';\r\nimport { finalize, map, tap } from 'rxjs/operators';\r\nimport { LIMIT_CHANNELS_SELECTION, YAXIS_KEYS } from '../../../helpers/app.constants';\r\nimport { IChannelItem, IChannelSettingModel } from '../../../models/channel.model';\r\nimport { OffsetWellCompare } from '../../../models/offset-well-compare.model';\r\nimport { IWellItemPaging } from '../../../models/well.model';\r\nimport { ChannelSelectionService, DIGITS_AFTER_DECIMAL_DEFAULT } from '../../../services';\r\nimport { CompareOffsetChannelsService } from '../../../services/compare-offset-channels.service';\r\nimport { TreatmentService } from '../../../services/treatment.service';\r\nimport { BourdetDerivativeComponent } from '../bourdet-derivative/bourdet-derivative.component';\r\nimport { OffsetWellCompareComponent } from '../offset-well-compare/offset-well-compare.component';\r\n\r\n@Component({\r\n selector: 'app-channel-selection',\r\n templateUrl: './channel-selection.component.html',\r\n styleUrls: ['./channel-selection.component.scss']\r\n})\r\nexport class ChannelSelectionComponent implements OnInit, OnDestroy {\r\n\r\n // realtime channels\r\n realtimeChannelMapping: IChannelItem[] = [];\r\n // fracpro channels\r\n fracProChannelsMapping: IChannelItem[] = [];\r\n\r\n titleHeader: string = 'Channel Selection';\r\n isAutoScaleYAxis: boolean;\r\n\r\n settingsModel: IChannelSettingModel = {\r\n autoScaleYAxis: true,\r\n firstLeft: {\r\n min: 0,\r\n max: 1000,\r\n channels: []\r\n },\r\n secondLeft: {\r\n min: 0,\r\n max: 1000,\r\n channels: []\r\n },\r\n firstRight: {\r\n min: 0,\r\n max: 1000,\r\n channels: []\r\n },\r\n secondRight: {\r\n min: 0,\r\n max: 1000,\r\n channels: []\r\n }\r\n };\r\n\r\n firstLoadedSettingsModel: IChannelSettingModel;\r\n resultChannelsWithMinMax: {cName: string; channelName: string; min: number; max: number}[];\r\n compareChannelsSelected: { cName: string, name: string, min: number, max: number }[];\r\n disabledEditColorMode: boolean = false;\r\n\r\n @Input()\r\n set title(value) {\r\n if (value) {\r\n this.titleHeader = value;\r\n }\r\n }\r\n\r\n digitsAfterDecimaDefault: string = DIGITS_AFTER_DECIMAL_DEFAULT;\r\n @Input()\r\n set realtimeChannels(channelMapping) {\r\n if (channelMapping && channelMapping.length > 0) {\r\n this.realtimeChannelMapping = channelMapping.map(item => {\r\n if (item) item.digits !== undefined && item.digits !== null ? item.digits : this.digitsAfterDecimaDefault;\r\n return item;\r\n });\r\n }\r\n }\r\n\r\n @Input()\r\n set fracProChannels(channelMapping) {\r\n if (channelMapping && channelMapping.length > 0) {\r\n this.fracProChannelsMapping = channelMapping.map(item => {\r\n if (item) item.digits !== undefined && item.digits !== null ? item.digits : this.digitsAfterDecimaDefault;\r\n return item;\r\n });\r\n }\r\n }\r\n\r\n @Input()\r\n set timeMode(mode: string) {\r\n if (mode === 'hh:mm' && this.compareChannel) {\r\n this.disabledEditColorMode = true;\r\n }\r\n }\r\n\r\n @Input() compareChannel: boolean = false;\r\n @Input() compareWellCount: number = 1;\r\n @Input() equipmentChart: boolean = false;\r\n @Input() showAutoScale: boolean = false;\r\n @Input() showChannelMinMax: boolean = true;\r\n @Input() wellId: number;\r\n @Input() treatmentId: number;\r\n @Input() flowPathType: number;\r\n @Input() equipmentId: number;\r\n @Input() uniqueKey: string = 'name';\r\n @Input() hideCompareBtn: boolean = false;\r\n @Input() maxChannelSelect: number = 12; // set 0 for unlimited\r\n\r\n @Input() compareWellsInfo: { wellId: number; treatmentId: number; flowPathType: number }[] = [];\r\n @Input() channelsSelected: { cName: string; name: string; prefix?: string }[];\r\n @Input()\r\n set autoScaleYAxis(value: boolean) {\r\n this.isAutoScaleYAxis = value;\r\n }\r\n\r\n set settings(data) {\r\n if (data) {\r\n this.settingsModel = data;\r\n } else {\r\n this.settingsModel = this.channelSelectionService.getDefaultSettings(this.realtimeChannelMapping);\r\n }\r\n setTimeout(() => {\r\n this.checkMaxItem();\r\n });\r\n }\r\n\r\n @Input()\r\n offsetWellCompareSetting: OffsetWellCompare[] = [];\r\n\r\n @Input()\r\n bourdetSetting: OffsetWellCompare[] = [];\r\n\r\n @Input()\r\n listWells: IWellItemPaging[];\r\n\r\n @Input()\r\n simpleMode: boolean = false;\r\n\r\n constructor(\r\n protected dialogRef: NbDialogRef,\r\n private dialogService: NbDialogService,\r\n private channelSelectionService: ChannelSelectionService,\r\n private compareOffsetChannelsService: CompareOffsetChannelsService,\r\n private treatmentService: TreatmentService,\r\n private element: ElementRef,\r\n private renderer: Renderer2,\r\n private ref: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n // get min max of selected channels\r\n const listChannels = this.channelSelectionService.getListChannels(this.settingsModel);\r\n if (!!this.simpleMode) {\r\n YAXIS_KEYS.forEach(key => {\r\n if (this.settingsModel.hasOwnProperty(key)) {\r\n const setting = this.settingsModel[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n // update channels\r\n setting.channels = setting.channels.map(curChannel => {\r\n curChannel.digits = curChannel.digits !== undefined && curChannel.digits !== null ? curChannel.digits : this.digitsAfterDecimaDefault;\r\n curChannel.channel.digits = curChannel.digits;\r\n curChannel.min = curChannel.channel.min = null;\r\n curChannel.max = curChannel.channel.max = null;\r\n return curChannel;\r\n });\r\n }\r\n }\r\n });\r\n this.settings = this.settingsModel;\r\n } else {\r\n if (!this.compareChannel) {\r\n const cNames = listChannels.map(item => item.cName);\r\n if (this.wellId && this.treatmentId && !isEmpty(cNames)) {\r\n this.treatmentService.getChannelsMinMax(this.wellId, this.treatmentId, this.flowPathType, cNames).subscribe(response => {\r\n if (response && !isEmpty(response.result)) {\r\n this.settings = this.channelSelectionService.updateMinMaxChannels(this.settingsModel, response.result);\r\n }\r\n }, err => err);\r\n } else if (this.equipmentChart && this.equipmentId && !isEmpty(cNames)) {\r\n this.treatmentService.getChannelsMinMaxEquipment(this.equipmentId, cNames).subscribe(response => {\r\n if (response && !isEmpty(response.result)) {\r\n this.settings = this.channelSelectionService.updateMinMaxChannels(this.settingsModel, response.result);\r\n }\r\n }, err => err);\r\n }\r\n // get min max offset channels\r\n const listOffsetChannels = this.channelSelectionService.getListChannels(this.settingsModel, true);\r\n if (!isEmpty(listOffsetChannels)) {\r\n const requests = listOffsetChannels.filter(x => !x.isBourdetDer).map(channel => {\r\n return this.treatmentService.getChannelsMinMax(channel.wellId, channel.treatmentId, this.flowPathType, [channel.cName])\r\n .pipe(map(res => {\r\n const offsetInfo = {\r\n wellId: channel.wellId,\r\n treatmentId: channel.treatmentId,\r\n cName: channel.cName\r\n };\r\n if (!isEmpty(res.result)) {\r\n return Object.assign(res.result[0], offsetInfo);\r\n }\r\n return offsetInfo;\r\n }));\r\n });\r\n forkJoin(requests).subscribe(result => {\r\n this.settings = this.channelSelectionService.updateMinMaxChannels(this.settingsModel, result, true);\r\n });\r\n }\r\n } else {\r\n if (!isEmpty(this.compareWellsInfo)) {\r\n const channelNames = this.channelsSelected.map(item => item.name);\r\n const wellsItems = this.compareWellsInfo.map(item => {\r\n return {\r\n treatmentId: item.treatmentId,\r\n wellId: item.wellId,\r\n flowPathType: 0\r\n };\r\n });\r\n if (!isEmpty(channelNames) && !isEmpty(wellsItems.filter(item => !!item.treatmentId))) {\r\n this.treatmentService.getCompareChannelsMinMax(channelNames, wellsItems).subscribe(response => {\r\n if (response && !isEmpty(response.result)) {\r\n this.resultChannelsWithMinMax = response.result;\r\n this.compareChannelsSelected = this.channelSelectionService.setMinMaxChannels(this.channelsSelected, this.resultChannelsWithMinMax, true);\r\n this.firstLoadedSettingsModel = this.channelSelectionService.updateMinMaxChannelsByName(this.settingsModel, response.result);\r\n const newSettings = cloneDeep(this.firstLoadedSettingsModel);\r\n this.settings = this.channelSelectionService.updateAxisScaleByMinMaxChannels(newSettings, true);\r\n }\r\n }, err => err);\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.ref.detach();\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n submitForm() {\r\n this.dialogRef.close(this.settingsModel);\r\n }\r\n\r\n selectColor(item, event) {\r\n item.color = event;\r\n }\r\n\r\n checkMaxItem() {\r\n if (!this.maxChannelSelect) return;\r\n const countData = this.countAllChannels();\r\n const listButton = this.element.nativeElement.querySelectorAll('.btn-action-create');\r\n if (countData >= this.maxChannelSelect) {\r\n forEach(listButton, item => {\r\n this.renderer.setAttribute(item, 'disabled', 'true');\r\n });\r\n } else {\r\n forEach(listButton, item => {\r\n this.renderer.removeAttribute(item, 'disabled');\r\n });\r\n }\r\n }\r\n\r\n countAllChannels() {\r\n const selectedChannels = [\r\n ...this.settingsModel.firstLeft.channels,\r\n ...this.settingsModel.secondLeft.channels,\r\n ...this.settingsModel.firstRight.channels,\r\n ...this.settingsModel.secondRight.channels\r\n ];\r\n const countData = selectedChannels.length;\r\n return countData;\r\n }\r\n\r\n onCreateChannel(channel) {\r\n this.checkMaxItem();\r\n }\r\n\r\n onDeleteChannel(channel) {\r\n this.checkMaxItem();\r\n }\r\n\r\n onChangeChannel(channel) {\r\n // in case something else\r\n // console.log(channel);\r\n }\r\n\r\n onChangeAutoScaleYAxis(value) {\r\n this.settingsModel.autoScaleYAxis = value;\r\n }\r\n\r\n compareOffsetWell() {\r\n this.dialogService.open(OffsetWellCompareComponent, {\r\n context: {\r\n // modelSetting: this.offsetWellCompareSetting,\r\n curWellId: this.wellId,\r\n curTreatmentId: this.treatmentId,\r\n listWells: this.listWells\r\n }\r\n }).onClose.subscribe(offsetWellSetting => {\r\n if (offsetWellSetting) {\r\n this.offsetWellCompareSetting = [...this.offsetWellCompareSetting, offsetWellSetting];\r\n // get offset channel min max\r\n if (!isEmpty(offsetWellSetting.realtimeChannels)) {\r\n const selectedChannel = offsetWellSetting.realtimeChannels[0];\r\n this.treatmentService.getChannelsMinMax(offsetWellSetting.wellId, offsetWellSetting.treatmentId, this.flowPathType, [selectedChannel.cName])\r\n .pipe(tap(response => {\r\n if (response && !isEmpty(response.result)) {\r\n selectedChannel.min = response.result[0].min;\r\n selectedChannel.max = response.result[0].max;\r\n }\r\n }))\r\n .pipe(finalize(() => {\r\n this.realtimeChannelMapping = this.compareOffsetChannelsService.mergeOffsetChannels(this.realtimeChannelMapping, this.offsetWellCompareSetting);\r\n this.settings = this.compareOffsetChannelsService.mergeSettingsOffsetChannels(this.settingsModel, offsetWellSetting, this.realtimeChannelMapping);\r\n })).subscribe();\r\n }\r\n }\r\n });\r\n }\r\n\r\n bourdetDerivative() {\r\n this.dialogService.open(BourdetDerivativeComponent, {\r\n context: {\r\n curWellId: this.wellId,\r\n curTreatmentId: this.treatmentId,\r\n listWells: this.listWells\r\n }\r\n }).onClose.subscribe(bourdetSetting => {\r\n if (bourdetSetting) {\r\n this.bourdetSetting = [...this.bourdetSetting, bourdetSetting];\r\n // get offset channel min max\r\n if (!isEmpty(bourdetSetting.realtimeChannels)) {\r\n const selectedChannel = bourdetSetting.realtimeChannels[0];\r\n this.treatmentService.getChannelsMinMax(bourdetSetting.wellId, bourdetSetting.treatmentId, this.flowPathType, [selectedChannel.cName])\r\n .pipe(tap(response => {\r\n if (response && !isEmpty(response.result)) {\r\n selectedChannel.min = response.result[0].min;\r\n selectedChannel.max = response.result[0].max;\r\n }\r\n }))\r\n .pipe(finalize(() => {\r\n this.realtimeChannelMapping = this.compareOffsetChannelsService.mergeOffsetChannels(this.realtimeChannelMapping, this.bourdetSetting);\r\n this.settings = this.compareOffsetChannelsService.mergeSettingsOffsetChannels(this.settingsModel, bourdetSetting, this.realtimeChannelMapping);\r\n })).subscribe();\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{title}}
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{message}}\\r\\n
\\r\\n All Wells\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".modal-dialog .modal-body .content-body {\\n word-break: break-word;\\n word-wrap: break-word;\\n display: block; }\\n\\n.form-group input {\\n border: none; }\\n\\n.ul-select-container {\\n position: relative; }\\n\\n.ul-select-container:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\\n border-radius: 0.25rem; }\\n\\n.ul-select-toggle {\\n width: 100%;\\n display: inline-block;\\n overflow: hidden;\\n text-align: left;\\n vertical-align: middle;\\n color: #36404b;\\n background-color: #ffffff;\\n padding-right: 20px;\\n padding-left: 10px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n border: 1px solid #e2e2e2;\\n position: relative;\\n font-size: 12px;\\n height: 30px;\\n font-weight: normal;\\n line-height: normal; }\\n\\n.ul-select-toggle .ui-select-placeholder {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n\\n.ul-select-toggle .ul-select-match-text {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: block; }\\n\\n.ul-select-toggle i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n\\n.ul-select-remove .ul-select-remove-all {\\n display: inline-block;\\n position: relative;\\n border-radius: 3px;\\n border: solid 1px #f8ebeb;\\n background-color: #f8ebeb;\\n padding: 7px 35px 7px 10px;\\n line-height: 1;\\n cursor: pointer; }\\n\\n.ul-select-remove .ul-select-remove-all .ul-select-remove-text {\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.17;\\n color: #eb5a52; }\\n\\n.ul-select-remove .ul-select-remove-all i {\\n position: absolute;\\n right: 15px;\\n top: 50%;\\n transform: translate(0, -50%);\\n font-size: 13px;\\n color: #eb5a52; }\\n\\n.ul-select-remove .ul-select-remove-all:active {\\n opacity: 0.5; }\\n\\n.ul-select-dropdown {\\n color: #323c47; }\\n\\n.ul-select-dropdown.multiple-row {\\n margin-right: 40px; }\\n\\n.ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0; }\\n\\n.ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n\\n.ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n\\n.ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n\\n.ul-select-dropdown .ul-select-add-new-container {\\n position: relative;\\n cursor: pointer; }\\n\\n.ul-select-dropdown .ul-select-add-new-container .ui-select-add-new {\\n border-top: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n border-bottom: 0;\\n border-right: 0;\\n border-left: 0;\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.5;\\n color: #007ea3;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n padding-right: 26px;\\n height: auto;\\n background-color: #e1ecef; }\\n\\n.ul-select-dropdown .ul-select-add-new-container .icon-plus {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n\\n.ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 120px;\\n overflow: auto; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 10px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n\\n.ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n\\n.ul-select-dropdown .ul-select-group-title {\\n height: 19px;\\n background-color: #eaf5fa;\\n padding: 0 10px;\\n border-top: solid 1px #e2e2e2;\\n line-height: 1; }\\n\\n.ul-select-dropdown .ul-select-group-title small {\\n color: #007ea3;\\n font-size: 10px;\\n font-weight: bold; }\\n\\n.ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n\\n.ul-select-realtime, .ul-select-fracpro {\\n position: relative; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2NvbmZpcm0tdGVtcGxhdGUtbW9kYWwvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXG1vZGFsc1xcY29uZmlybS10ZW1wbGF0ZS1tb2RhbFxcY29uZmlybS10ZW1wbGF0ZS1tb2RhbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUdNLHNCQUFzQjtFQUN0QixxQkFBcUI7RUFDckIsY0FBYyxFQUFBOztBQUtwQjtFQUNFLFlBQVksRUFBQTs7QUFHZDtFQUNFLGtCQUFpQixFQUFBOztBQURuQjtJQUdJLFVBQVU7SUFDVixnREFBZ0Q7SUFDaEQsc0JBQXNCLEVBQUE7O0FBRzFCO0VBQ0UsV0FBVztFQUNYLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtFQUN0QixjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLG1CQUFtQixFQUFBOztBQWpCckI7SUFtQkksWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLFdBQVc7SUFDWCxxQkFBcUIsRUFBQTs7QUF4QnpCO0lBMkJJLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLFdBQVc7SUFDWCxjQUFjLEVBQUE7O0FBL0JsQjtJQWtDSSxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLGNBQWM7SUFDZCxRQUFRO0lBRVIsNkJBQTZCLEVBQUE7O0FBSWpDO0VBRUkscUJBQXFCO0VBQ3JCLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qiww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dkI7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osVUFBVTtFQUNWLFlBQVk7RUFDWixNQUFNO0VBQ04sT0FBTztFQUNQLG1CQUFtQixFQUFBOztBQUVyQjtFQUNFLGtCQUFrQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2NvbmZpcm0tdGVtcGxhdGUtbW9kYWwvY29uZmlybS10ZW1wbGF0ZS1tb2RhbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tb2RhbC1kaWFsb2cge1xyXG4gIC5tb2RhbC1ib2R5IHtcclxuICAgIC5jb250ZW50LWJvZHkge1xyXG4gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xyXG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmZvcm0tZ3JvdXAgaW5wdXQge1xyXG4gIGJvcmRlcjogbm9uZTtcclxufVxyXG5cclxuLnVsLXNlbGVjdC1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xyXG4gICY6Zm9jdXMge1xyXG4gICAgb3V0bGluZTogMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbiAgfVxyXG59XHJcbi51bC1zZWxlY3QtdG9nZ2xlIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgY29sb3I6ICMzNjQwNGI7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gIHBhZGRpbmctbGVmdDogMTBweDtcclxuICBwYWRkaW5nLXRvcDogOHB4O1xyXG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHJcbiAgLnVpLXNlbGVjdC1wbGFjZWhvbGRlciB7XHJcbiAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG4gIC51bC1zZWxlY3QtbWF0Y2gtdGV4dCB7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcbiAgaSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICByaWdodDogMTBweDtcclxuICAgIGZvbnQtc2l6ZTogOHB4O1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgfVxyXG59XHJcblxyXG4udWwtc2VsZWN0LXJlbW92ZSB7XHJcbiAgLnVsLXNlbGVjdC1yZW1vdmUtYWxsIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGJvcmRlcjogc29saWQgMXB4ICNmOGViZWI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhlYmViO1xyXG4gICAgcGFkZGluZzogN3B4IDM1cHggN3B4IDEwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIC51bC1zZWxlY3QtcmVtb3ZlLXRleHQge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS4xNztcclxuICAgICAgY29sb3I6ICNlYjVhNTI7XHJcbiAgICB9XHJcbiAgICBpIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogMTVweDtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICBmb250LXNpemU6IDEzcHg7XHJcbiAgICAgIGNvbG9yOiAjZWI1YTUyO1xyXG4gICAgfVxyXG4gICAgJjphY3RpdmUge1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udWwtc2VsZWN0LWRyb3Bkb3duIHtcclxuICBjb2xvcjogIzMyM2M0NztcclxuICAmLm11bHRpcGxlLXJvdyB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XHJcbiAgfVxyXG4gIC5kcm9wZG93bi1tZW51IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMDtcclxuICB9XHJcbiAgLnVsLXNlbGVjdC1zZWFyY2gtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGlucHV0IHtcclxuICAgICAgYm9yZGVyOiAwO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGNvbG9yOiAjMzIzYzQ3O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4O1xyXG4gICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICB9XHJcbiAgICAuaWNvbi1zZWFyY2gge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1hZGQtbmV3LWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAudWktc2VsZWN0LWFkZC1uZXcge1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xyXG4gICAgICBib3JkZXItbGVmdDogMDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA4cHg7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDI2cHg7XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UxZWNlZjtcclxuICAgIH1cclxuICAgIC5pY29uLXBsdXMge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1jaG9pY2Uge1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAudWwtc2VsZWN0LWNob2ljZS1hbGwge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgICBwYWRkaW5nOiA2cHggMTBweDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgID4gZGl2IHtcclxuICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgICAgICByaWdodDogMTJweDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAudWwtc2VsZWN0LWNob2ljZS1yb3cge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxOHB4IDZweCAxMHB4O1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZTJlMjtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgID4gZGl2IHtcclxuICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDtcclxuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGkge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIHJpZ2h0OiA4cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgICAgYTpob3ZlciB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgfVxyXG4gICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZjVmYTtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAudWwtc2VsZWN0LWdyb3VwLXRpdGxlIHtcclxuICAgIGhlaWdodDogMTlweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICBwYWRkaW5nOiAwIDEwcHg7XHJcbiAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggI2UyZTJlMjtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgc21hbGwge1xyXG4gICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi51aS1kaXNhYmxlZCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgei1pbmRleDogNTtcclxuICBvcGFjaXR5OiAwLjY7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG4udWwtc2VsZWN0LXJlYWx0aW1lLCAudWwtc2VsZWN0LWZyYWNwcm8ge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG4iXX0= */\"","import { ITreatmentLogTemplate, ITreatmentLogTemplateResponse } from './../../../models/treatment-log-template.model';\r\nimport { IPlotTemplate, IPlotTemplateResponse } from './../../../models/plot-template.model';\r\nimport { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { UserAuthService } from '../../../services/user-auth.service';\r\n\r\ninterface IFormData { isAllWells: boolean; name: string; }\r\n\r\n@Component({\r\n selector: 'app-confirm-template-modal',\r\n templateUrl: './confirm-template-modal.component.html',\r\n styleUrls: ['./confirm-template-modal.component.scss']\r\n})\r\nexport class ConfirmTemplateModalComponent implements OnInit {\r\n\r\n @Output()\r\n confirm: EventEmitter = new EventEmitter();\r\n @Input()\r\n className: string = 'pop-delete';\r\n @Input()\r\n title: string = 'Confirm';\r\n @Input()\r\n message: string = 'Plot Template should be available to';\r\n @Input()\r\n hideMessage: boolean = false;\r\n @Input()\r\n showAllWellsCheckbox: boolean = true;\r\n @Input()\r\n defaultIsAllWells: boolean = false;\r\n @Input()\r\n templateRes?: IPlotTemplate | ITreatmentLogTemplateResponse;\r\n @Input()\r\n templates: any[];\r\n @Input()\r\n isScatterPlot: boolean = false;\r\n\r\n optionsOpened: boolean = false;\r\n submitLabel: string = 'OK';\r\n canSubmit: boolean = true;\r\n form: FormGroup;\r\n search: string = '';\r\n isAllWellsDisabled = false;\r\n userId = 0;\r\n\r\n constructor(\r\n private dialogRef: NbDialogRef,\r\n private userAuthService: UserAuthService\r\n ) {\r\n const user = this.userAuthService.getUserInfo();\r\n this.userId = user.userId;\r\n }\r\n\r\n get name() {\r\n return this.form.controls.name;\r\n }\r\n\r\n setName(value) {\r\n this.form.controls.name.setValue(value);\r\n }\r\n\r\n get isAllWells() {\r\n return this.form.controls.isAllWells;\r\n }\r\n\r\n setIsAllWells(value) {\r\n this.form.controls.isAllWells.setValue(value);\r\n }\r\n\r\n get filterTemplates() {\r\n if (!this.templates || !this.templates.length) return [];\r\n if (this.isScatterPlot) return this.templates.filter(x => x.name.toLowerCase().includes(this.search.toLowerCase()));\r\n return this.templates.filter(x => x.type !== 0).filter(x => x.name.toLowerCase().includes(this.search.toLowerCase()));\r\n }\r\n\r\n ngOnInit() {\r\n const name = this.templateRes && this.templateRes.id ? this.templateRes.name : '';\r\n this.form = new FormGroup(\r\n {\r\n name: new FormControl(name, [Validators.required]),\r\n isAllWells: new FormControl(this.defaultIsAllWells)\r\n }\r\n );\r\n }\r\n\r\n submit() {\r\n if (!this.canSubmit) return;\r\n if (this.form.valid) {\r\n const formData = this.form.value;\r\n this.confirm.emit(formData);\r\n this.dialogRef.close(formData);\r\n }\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n allWellsChange(val) {\r\n // this.allWells = val;\r\n }\r\n\r\n selectMatch(template, event) {\r\n this.setName(template.name);\r\n this.setIsAllWells(template.isAll);\r\n this.search = template.name;\r\n this.optionsOpened = false;\r\n this.setButtonLabel();\r\n }\r\n\r\n inputEvent($e) {\r\n this.search = $e.target.value;\r\n this.setButtonLabel();\r\n }\r\n\r\n private setButtonLabel = () => {\r\n if (!this.templates || !this.templates.length) return;\r\n this.canSubmit = true;\r\n const template = this.templates.find(x => x.name === this.search);\r\n if (template) {\r\n this.setName(template.name);\r\n this.setIsAllWells(template.isAll);\r\n if (this.isScatterPlot || template.type !== 0) {\r\n this.submitLabel = 'Overwrite';\r\n } else {\r\n this.canSubmit = false;\r\n }\r\n this.isAllWellsDisabled = template.creatorUserId && template.creatorUserId !== this.userId;\r\n }\r\n else {\r\n this.submitLabel = 'OK';\r\n this.isAllWellsDisabled = false;\r\n }\r\n }\r\n\r\n focusOut() {\r\n setTimeout(e => {\r\n this.optionsOpened = false;\r\n }, 200);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{title}}
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".modal-dialog .modal-body .content-body {\\n word-break: break-word;\\n word-wrap: break-word;\\n display: block; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2NvbmZpcm0vRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXG1vZGFsc1xcY29uZmlybVxcbW9kYWwtY29uZmlybS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUdNLHNCQUFzQjtFQUN0QixxQkFBcUI7RUFDckIsY0FBYyxFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL2NvbmZpcm0vbW9kYWwtY29uZmlybS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tb2RhbC1kaWFsb2cge1xyXG4gIC5tb2RhbC1ib2R5IHtcclxuICAgIC5jb250ZW50LWJvZHkge1xyXG4gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xyXG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ== */\"","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\r\nimport {NbDialogRef} from '@nebular/theme';\r\n\r\ninterface IModalConfirmResponse {\r\n confirm: boolean;\r\n data: any;\r\n}\r\n\r\n@Component({\r\n selector: 'app-modal-confirm',\r\n templateUrl: './modal-confirm.component.html',\r\n styleUrls: ['./modal-confirm.component.scss']\r\n})\r\nexport class ModalConfirmComponent implements OnInit {\r\n @Output() confirm: EventEmitter = new EventEmitter();\r\n @Output() cancel: EventEmitter = new EventEmitter();\r\n @Output() openChange: EventEmitter = new EventEmitter();\r\n title: string = 'Delete';\r\n message: string = 'Are you sure you want to delete?';\r\n className: string = 'pop-delete';\r\n btnTxtConfirm: string = 'Yes';\r\n btnTxtCancel: string = 'No';\r\n btnTxtClose: string = null;\r\n image: string = 'assets/img/img-delete.png';\r\n noAction: boolean = false;\r\n showNameInput: boolean = false;\r\n nameData: string = '';\r\n\r\n data: any = null;\r\n\r\n @Input()\r\n set config(config: any) {\r\n // Config Dialog\r\n this.noAction = false;\r\n if (config.noAction) {\r\n this.noAction = true;\r\n }\r\n this.title = '';\r\n if (config.title) {\r\n this.title = config.title;\r\n }\r\n this.message = '';\r\n if (config.message) {\r\n this.message = config.message;\r\n }\r\n this.className = '';\r\n if (config.className) {\r\n this.className = config.className;\r\n }\r\n this.btnTxtConfirm = 'Yes';\r\n if (config.btnTxtConfirm) {\r\n this.btnTxtConfirm = config.btnTxtConfirm;\r\n }\r\n this.btnTxtCancel = 'No';\r\n if (config.btnTxtCancel) {\r\n this.btnTxtCancel = config.btnTxtCancel;\r\n }\r\n this.image = 'assets/img/img-delete.png';\r\n if (config.image || config.image === '') {\r\n this.image = config.image;\r\n }\r\n if (config.showNameInput) {\r\n this.showNameInput = !!config.showNameInput;\r\n }\r\n if (config.btnTxtClose) {\r\n this.btnTxtClose = config.btnTxtClose;\r\n }\r\n\r\n // Data return\r\n this.data = null;\r\n if (config.data) {\r\n this.data = config.data;\r\n } else {\r\n this.data = null;\r\n }\r\n }\r\n\r\n\r\n constructor(private dialogRef: NbDialogRef) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n hide(response: IModalConfirmResponse): void {\r\n if (this.showNameInput) {\r\n response.data = response.data || {};\r\n response.data.name = this.nameData;\r\n }\r\n this.dialogRef.close(response);\r\n this.openChange.emit(false);\r\n }\r\n\r\n onConfirm() {\r\n this.confirm.emit(this.data);\r\n this.hide({ confirm: true, data: this.data });\r\n }\r\n\r\n onCancel() {\r\n this.cancel.emit(this.data);\r\n this.hide({ confirm: false, data: this.data });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Select FDI parameter
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
FDI Start
\\r\\n
FDI End
\\r\\n
Net Pressure Gain
\\r\\n
Gross Pressure Gain
\\r\\n
VFR
\\r\\n
VFR%
\\r\\n
Pre FDI Pressure Trend
\\r\\n
Avg FDI Pressure Trend
\\r\\n
Max FDI Pressure Trend
\\r\\n
Avg FDI Intensity
\\r\\n
Max FDI Intensity
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy9mZGktcGFyYW1ldGVyLXNlbGVjdC9mZGktcGFyYW1ldGVyLXNlbGVjdC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { cloneDeep } from 'lodash';\r\nimport { TreatmentPlotFDIParam } from '../../treatment-plot/treatment-plot-fdi.model';\r\n\r\n\r\n@Component({\r\n selector: 'app-fdi-parameter-select',\r\n templateUrl: './fdi-parameter-select.component.html',\r\n styleUrls: ['./fdi-parameter-select.component.scss']\r\n})\r\nexport class FDIParameterSelectComponent implements OnInit {\r\n form: FormGroup;\r\n inputParam: TreatmentPlotFDIParam;\r\n\r\n @Input()\r\n set selectedParam(param: TreatmentPlotFDIParam) {\r\n this.inputParam = cloneDeep(param);\r\n if (!param) return;\r\n if (!param.fdiStart) this.fdiStart.setValue(false);\r\n if (!param.fdiEnd) this.fdiEnd.setValue(false);\r\n if (!param.netGainPress) this.netGainPress.setValue(false);\r\n if (!param.grossGainPress) this.grossGainPress.setValue(false);\r\n if (!param.volToFrstResp) this.volToFrstResp.setValue(false);\r\n if (!param.volToFrstRespPercent) this.volToFrstRespPercent.setValue(false);\r\n if (!param.avgSlope) this.avgSlope.setValue(false);\r\n if (!param.maxSlope) this.maxSlope.setValue(false);\r\n if (!param.preFDIPressure) this.preFDIPressure.setValue(false);\r\n if (!param.avgFDIPressure) this.avgFDIPressure.setValue(false);\r\n if (!param.maxFDIPressure) this.maxFDIPressure.setValue(false);\r\n }\r\n\r\n constructor(\r\n protected dialogRef: NbDialogRef,\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n fdiStart: AbstractControl;\r\n fdiEnd: AbstractControl;\r\n netGainPress: AbstractControl;\r\n grossGainPress: AbstractControl;\r\n volToFrstResp: AbstractControl;\r\n volToFrstRespPercent: AbstractControl;\r\n avgSlope: AbstractControl;\r\n maxSlope: AbstractControl;\r\n preFDIPressure: AbstractControl;\r\n avgFDIPressure: AbstractControl;\r\n maxFDIPressure: AbstractControl;\r\n\r\n createForm() {\r\n this.form = new FormGroup({\r\n fdiStart: new FormControl(true),\r\n fdiEnd: new FormControl(true),\r\n netGainPress: new FormControl(true),\r\n grossGainPress: new FormControl(true),\r\n volToFrstResp: new FormControl(true),\r\n volToFrstRespPercent: new FormControl(true),\r\n avgSlope: new FormControl(true),\r\n maxSlope: new FormControl(true),\r\n preFDIPressure: new FormControl(true),\r\n avgFDIPressure: new FormControl(true),\r\n maxFDIPressure: new FormControl(true),\r\n }, []);\r\n\r\n this.fdiStart = this.form.controls['fdiStart'];\r\n this.fdiEnd = this.form.controls['fdiEnd'];\r\n this.netGainPress = this.form.controls['netGainPress'];\r\n this.grossGainPress = this.form.controls['grossGainPress'];\r\n this.volToFrstResp = this.form.controls['volToFrstResp'];\r\n this.volToFrstRespPercent = this.form.controls['volToFrstRespPercent'];\r\n this.avgSlope = this.form.controls['avgSlope'];\r\n this.maxSlope = this.form.controls['maxSlope'];\r\n this.preFDIPressure = this.form.controls['preFDIPressure'];\r\n this.avgFDIPressure = this.form.controls['avgFDIPressure'];\r\n this.maxFDIPressure = this.form.controls['maxFDIPressure'];\r\n }\r\n\r\n submitForm() {\r\n if (!this.inputParam) this.inputParam = {};\r\n this.inputParam.fdiStart = this.fdiStart.value;\r\n this.inputParam.fdiEnd = this.fdiEnd.value;\r\n this.inputParam.netGainPress = this.netGainPress.value;\r\n this.inputParam.grossGainPress = this.grossGainPress.value;\r\n this.inputParam.volToFrstResp = this.volToFrstResp.value;\r\n this.inputParam.volToFrstRespPercent = this.volToFrstRespPercent.value;\r\n this.inputParam.avgSlope = this.avgSlope.value;\r\n this.inputParam.maxSlope = this.maxSlope.value;\r\n this.inputParam.preFDIPressure = this.preFDIPressure.value;\r\n this.inputParam.avgFDIPressure = this.avgFDIPressure.value;\r\n this.inputParam.maxFDIPressure = this.maxFDIPressure.value;\r\n this.dialogRef.close(this.inputParam);\r\n }\r\n\r\n close() {\r\n this.dialogRef.close(this.inputParam);\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
{{title}}
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy9mZGktd2VsbC1zZWxlY3Rpb24tbW9kYWwvZmRpLXdlbGwtc2VsZWN0aW9uLW1vZGFsLmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { FormGroup, FormControl } from '@angular/forms';\r\nimport { isEmpty } from 'lodash';\r\n\r\n@Component({\r\n selector: 'app-fdi-well-selection-modal',\r\n templateUrl: './fdi-well-selection-modal.component.html',\r\n styleUrls: ['./fdi-well-selection-modal.component.scss']\r\n})\r\nexport class FdiWellSelectionModalComponent implements OnInit {\r\n form: FormGroup;\r\n\r\n @Input() listWells: any[] = [];\r\n @Input() activeWellIds: number[] = [];\r\n @Input() title: string = 'Observation Well';\r\n\r\n get selectedWell() {\r\n return this.form.controls.selectedWell;\r\n }\r\n\r\n constructor(\r\n private dialogRef: NbDialogRef,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.listWells = this.listWells.filter(well => this.activeWellIds.includes(well.wellId));\r\n this.form = new FormGroup({\r\n selectedWell: !isEmpty(this.listWells) ? new FormControl(this.listWells[0]) : undefined\r\n });\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n submit() {\r\n this.dialogRef.close(this.selectedWell.value);\r\n }\r\n\r\n onSelectWell(eventData) {\r\n if (eventData && eventData.id) {\r\n const well = this.listWells.find(item => item.wellId === eventData.id);\r\n this.selectedWell.setValue(well);\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Compare Channel
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Real Time\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".modal-dialog.modal-offset-well {\\n max-width: 640px;\\n width: 480px; }\\n\\n.modal-dialog .modal-footer {\\n justify-content: center;\\n border: none; }\\n\\n.modal-dialog .button-compare {\\n font-size: 10px; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL29mZnNldC13ZWxsLWNvbXBhcmUvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXG1vZGFsc1xcb2Zmc2V0LXdlbGwtY29tcGFyZVxcb2Zmc2V0LXdlbGwtY29tcGFyZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUVJLGdCQUFnQjtFQUNoQixZQUFZLEVBQUE7O0FBSGhCO0VBTUksdUJBQXVCO0VBQ3ZCLFlBQVksRUFBQTs7QUFQaEI7RUFXSSxlQUFlLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9tb2RhbHMvb2Zmc2V0LXdlbGwtY29tcGFyZS9vZmZzZXQtd2VsbC1jb21wYXJlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm1vZGFsLWRpYWxvZyB7XHJcbiAgJi5tb2RhbC1vZmZzZXQtd2VsbCB7XHJcbiAgICBtYXgtd2lkdGg6IDY0MHB4O1xyXG4gICAgd2lkdGg6IDQ4MHB4O1xyXG4gIH1cclxuICAubW9kYWwtZm9vdGVyIHtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gIH1cclxuXHJcbiAgLmJ1dHRvbi1jb21wYXJlIHtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICB9XHJcbn1cclxuIl19 */\"","import { formatDate } from '@angular/common';\r\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { isEmpty } from 'lodash';\r\nimport { Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Helper } from '../../../helpers/helper';\r\nimport { IOffsetWellCompare, OffsetWellCompare } from '../../../models/offset-well-compare.model';\r\nimport { IWellItemPaging } from '../../../models/well.model';\r\nimport { TreatmentService } from '../../../services/treatment.service';\r\n\r\n@Component({\r\n selector: 'app-offset-well-compare',\r\n templateUrl: './offset-well-compare.component.html',\r\n styleUrls: ['./offset-well-compare.component.scss']\r\n})\r\nexport class OffsetWellCompareComponent implements OnInit, OnDestroy {\r\n\r\n subscriptions: Subscription[] = [];\r\n form: FormGroup;\r\n selectedWell: AbstractControl;\r\n selectedTreatment: AbstractControl;\r\n selectedAxis: AbstractControl;\r\n compStartTime: AbstractControl;\r\n compEndTime: AbstractControl;\r\n selectedChannel: AbstractControl;\r\n isRealtime: AbstractControl;\r\n startTime: Date;\r\n endTime: Date;\r\n startTimeStr: any = '';\r\n endTimeStr: any = '';\r\n offsetTimeZone: number = new Date().getTimezoneOffset() * 60 * 1000; // in milliseconds\r\n isProducingWell: AbstractControl;\r\n\r\n listTreatments: any[] = [];\r\n realtimeChannels: any[] = [];\r\n\r\n axisOptions = [\r\n { id: 'Leftmost', text: 'Left 1' },\r\n { id: 'Left', text: 'Left 2' },\r\n { id: 'Right', text: 'Right 1' },\r\n { id: 'Rightmost', text: 'Right 2' },\r\n ];\r\n\r\n @Input()\r\n modelSetting: IOffsetWellCompare;\r\n @Input()\r\n curWellId: number;\r\n @Input()\r\n curTreatmentId: number;\r\n @Input()\r\n listWells: IWellItemPaging[] = [];\r\n\r\n constructor(\r\n private treatmentService: TreatmentService,\r\n protected dialogRef: NbDialogRef,\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.modelSetting) {\r\n const selectedWell = this.listWells.find(item => item.wellId === this.modelSetting.wellId);\r\n if (selectedWell) {\r\n this.selectedWell.setValue(selectedWell);\r\n this.onChangeWell(selectedWell);\r\n }\r\n } else {\r\n if (!isEmpty(this.listWells)) {\r\n // default select current well\r\n if (this.curWellId) {\r\n const selectedWell = this.listWells.find(item => item.wellId === this.curWellId * 1);\r\n if (selectedWell) {\r\n this.selectedWell.setValue(selectedWell);\r\n this.onChangeWell(selectedWell);\r\n }\r\n } else { // default set first item\r\n this.selectedWell.setValue(this.listWells[0]);\r\n this.onChangeWell(this.listWells[0]);\r\n }\r\n }\r\n }\r\n\r\n if (!isEmpty(this.axisOptions)) {\r\n this.selectedAxis.setValue(this.axisOptions[0]);\r\n }\r\n }\r\n\r\n private onChangeWell(selectedWell) {\r\n this.selectedWell.setValue(selectedWell);\r\n this.treatmentService.getListTreatment(selectedWell.wellId).subscribe(res => {\r\n this.listTreatments = res.result;\r\n const selectedTreatment = !this.modelSetting || !this.modelSetting.treatmentId ?\r\n this.listTreatments[0] :\r\n this.listTreatments.find(item => item.id === this.modelSetting.treatmentId);\r\n if (selectedTreatment) {\r\n this.selectedTreatment.setValue(selectedTreatment);\r\n this.onChangeTreatment();\r\n }\r\n });\r\n }\r\n\r\n private onChangeTreatment() {\r\n if (!this.selectedWell.value.wellId || !this.selectedTreatment.value.id) return;\r\n this.getTreatmentTimeRange(this.selectedWell.value.wellId, this.selectedTreatment.value.id);\r\n this.getChannels(this.selectedWell.value.wellId, this.selectedTreatment.value.id).subscribe(res => {\r\n this.realtimeChannels = res;\r\n this.selectedChannel.setValue('');\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n Helper.unsubscribe(this.subscriptions);\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n createForm() {\r\n this.form = new FormGroup({\r\n selectedWell: new FormControl(null, [Validators.required]),\r\n selectedTreatment: new FormControl(null, [Validators.required]),\r\n selectedAxis: new FormControl('', [Validators.required]),\r\n compStartTime: new FormControl('', [Validators.required]),\r\n compEndTime: new FormControl('', [Validators.required]),\r\n selectedChannel: new FormControl([], [Validators.required]),\r\n isRealtime: new FormControl(false, [Validators.required]),\r\n isProducingWell: new FormControl(false, [Validators.required])\r\n });\r\n this.selectedWell = this.form.controls['selectedWell'];\r\n this.selectedTreatment = this.form.controls['selectedTreatment'];\r\n this.selectedAxis = this.form.controls['selectedAxis'];\r\n this.compStartTime = this.form.controls['compStartTime'];\r\n this.compEndTime = this.form.controls['compEndTime'];\r\n this.selectedChannel = this.form.controls['selectedChannel'];\r\n this.isRealtime = this.form.controls['isRealtime'];\r\n this.isProducingWell = this.form.controls['isProducingWell'];\r\n }\r\n\r\n submitForm() {\r\n // submit form\r\n if (this.form.valid) {\r\n\r\n const startTime = new Date(this.compStartTime.value).getTime() - this.offsetTimeZone;\r\n const endTime = new Date(this.compEndTime.value).getTime() - this.offsetTimeZone;\r\n const offwetWellCompare = new OffsetWellCompare(\r\n this.selectedWell.value.wellId,\r\n this.selectedWell.value.wellName,\r\n this.selectedTreatment.value.id,\r\n startTime,\r\n endTime,\r\n this.selectedAxis.value.id,\r\n this.selectedChannel.value,\r\n this.isRealtime.value,\r\n this.selectedTreatment.value.treatmentNumber,\r\n this.selectedTreatment.value.dataType,\r\n this.isProducingWell.value,\r\n this.selectedTreatment.value.treatmentName,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n true\r\n );\r\n this.dialogRef.close(offwetWellCompare);\r\n }\r\n }\r\n\r\n onSelectWell(eventData) {\r\n if (!eventData || !eventData.id) return;\r\n const selectedWell = this.listWells.find(item => item.wellId === eventData.id);\r\n if (!selectedWell) return;\r\n this.onChangeWell(selectedWell);\r\n }\r\n\r\n onSelectTreatment(eventData) {\r\n const treatment = this.listTreatments.find(item => item.id === eventData.id);\r\n if (treatment) {\r\n this.selectedTreatment.setValue(treatment);\r\n }\r\n if (this.selectedWell.value.wellId && treatment.id) {\r\n // get list channels\r\n this.getTreatmentTimeRange(this.selectedWell.value.wellId, treatment.id);\r\n const subRes = this.getChannels(this.selectedWell.value.wellId, treatment.id).subscribe(res => {\r\n this.realtimeChannels = res;\r\n });\r\n this.subscriptions.push(subRes);\r\n }\r\n }\r\n\r\n onSelectAxis(eventData) {\r\n if (eventData.id) {\r\n this.selectedAxis.setValue(eventData);\r\n }\r\n }\r\n\r\n getTreatmentTimeRange(wellId, treatmentId) {\r\n if (wellId && treatmentId) {\r\n this.treatmentService.getTreatmentDetailWebApi(wellId, treatmentId).toPromise().then(res => {\r\n if (res && res.result) {\r\n this.startTimeStr = formatDate(res.result.timeStart * 1000, 'M/d/yyyy, h:mm aaa', 'en-US', 'UTC');\r\n this.endTimeStr = formatDate(res.result.timeEnd * 1000, 'M/d/yyyy, h:mm aaa', 'en-US', 'UTC');\r\n this.startTime = Helper.convertDateToUTC(new Date(res.result.timeStart * 1000));\r\n this.endTime = Helper.convertDateToUTC(new Date(res.result.timeEnd * 1000));\r\n // set time range model\r\n this.compStartTime.setValue(Helper.convertDateToUTC(new Date(res.result.timeStart * 1000)));\r\n if (res.result.timeEnd >= res.result.timeStart) {\r\n this.compEndTime.setValue(Helper.convertDateToUTC(new Date(res.result.timeEnd * 1000)));\r\n } else {\r\n this.compEndTime.setValue(Helper.convertDateToUTC(new Date(res.result.timeStart * 1000)));\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getChannels(wellId, treatmentId) {\r\n return this.treatmentService.getRealtimeChannels(wellId, treatmentId).pipe(map(response => {\r\n return Helper.getList(response, 'result.items');\r\n }));\r\n }\r\n\r\n selectChannel(eventData: { id: string; text: string }) {\r\n if (eventData && eventData.text) {\r\n const channel = this.realtimeChannels.find(item => item.name === eventData.text);\r\n if (channel) {\r\n this.selectedChannel.setValue([channel]);\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Pivot point
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy9waXZvdC1wb2ludC9waXZvdC1wb2ludC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit, Input } from '@angular/core';\r\nimport {NbDialogRef} from '@nebular/theme';\r\nimport {FormGroup, Validators, AbstractControl, FormControl} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-pivot-point',\r\n templateUrl: './pivot-point.component.html',\r\n styleUrls: ['./pivot-point.component.scss']\r\n})\r\nexport class PivotPointComponent implements OnInit {\r\n\r\n pivotPointOptions = [\r\n { id: \"JobTime\", text: \"Job time\" },\r\n { id: \"TimeStart\", text: \"Start Stage1\" },\r\n { id: \"BreakDownTime\", text: \"Breakdown\" },\r\n { id: \"InitialShutinPresTime\", text: \"ISIP\" },\r\n { id: \"WellOpenTime\", text: \"Well Open\" },\r\n { id: \"WellClose\", text: \"Well Close\" },\r\n { id: \"BallSeatTime\", text: \"BallSeat\" },\r\n ];\r\n\r\n form: FormGroup;\r\n pivotPoint: AbstractControl;\r\n\r\n @Input()\r\n set selectedOption(opt) {\r\n if (opt && this.pivotPoint) {\r\n this.pivotPoint.setValue(opt);\r\n }\r\n }\r\n\r\n constructor(\r\n protected dialogRef: NbDialogRef,\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n createForm() {\r\n this.form = new FormGroup({\r\n pivotPoint: new FormControl('Start Stage1', [Validators.required]),\r\n });\r\n this.pivotPoint = this.form.controls['pivotPoint'];\r\n this.pivotPoint.setValue(this.pivotPointOptions[0]);\r\n }\r\n\r\n submitForm() {\r\n // submit form\r\n if (this.pivotPoint && this.pivotPoint.value) {\r\n this.dialogRef.close(this.pivotPoint.value);\r\n }\r\n }\r\n\r\n onSelectPivotPoint(e: any) {\r\n this.pivotPoint.setValue(e);\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Settings
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Name\\r\\n Shape\\r\\n Color\\r\\n \\r\\n Min\\r\\n \\r\\n Max\\r\\n
\\r\\n \\r\\n
{{item.name}}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Design\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
Actual\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \"/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n.color-input {\\n border: 0;\\n border-radius: 50%;\\n width: 16px;\\n height: 16px;\\n color: transparent;\\n cursor: pointer;\\n padding: 8px; }\\n.modal-dialog .modal-body {\\n max-height: 660px; }\\n.modal-dialog .modal-footer {\\n justify-content: center;\\n border: none; }\\n.modal-dialog.modal-scatter-plot {\\n max-width: 260px;\\n width: 260px; }\\n.modal-dialog.modal-scatter-plot .modal-body {\\n padding-top: 0;\\n overflow: visible; }\\n.modal-dialog.modal-scatter-plot .modal-body .app-table-container {\\n overflow: visible; }\\n@media (max-width: 767.98px) {\\n .modal-dialog.modal-scatter-plot .modal-content {\\n width: 100%; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL3NjYXR0ZXItcGxvdC1wYXJhbWV0ZXItc2V0dGluZ3MvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGdsb2JhbFxcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy9zY2F0dGVyLXBsb3QtcGFyYW1ldGVyLXNldHRpbmdzL3NjYXR0ZXItcGxvdC1wYXJhbWV0ZXItc2V0dGluZ3MuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy9zY2F0dGVyLXBsb3QtcGFyYW1ldGVyLXNldHRpbmdzL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxtb2RhbHNcXHNjYXR0ZXItcGxvdC1wYXJhbWV0ZXItc2V0dGluZ3NcXHNjYXR0ZXItcGxvdC1wYXJhbWV0ZXItc2V0dGluZ3MuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7RUNJRTtBQ0RGO0VBQ0ksU0FBUztFQUNULGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsWUFBWSxFQUFBO0FBR2hCO0VBRVEsaUJBQWlCLEVBQUE7QUFGekI7RUFNUSx1QkFBdUI7RUFDdkIsWUFBWSxFQUFBO0FBUHBCO0VBVVEsZ0JBQWdCO0VBQ2hCLFlBQVksRUFBQTtBQVhwQjtJQWFZLGNBQWM7SUFFZCxpQkFBaUIsRUFBQTtBQWY3QjtNQWlCZ0IsaUJBQWlCLEVBQUE7QUYwQjdCO0VFbkJBO0lBQ0ksV0FBVyxFQUFBLEVBQ2QiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9tb2RhbHMvc2NhdHRlci1wbG90LXBhcmFtZXRlci1zZXR0aW5ncy9zY2F0dGVyLXBsb3QtcGFyYW1ldGVyLXNldHRpbmdzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG4kZ3JpZC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aC1iYXNlOiAyNHB4ICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoczogKFxuICB4czogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIHNtOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgbWQ6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBsZzogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIHhsOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZVxuKSAhZGVmYXVsdDtcblxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICB4czogMCxcbiAgaXM6IDQwMHB4LFxuICBzbTogNTc2cHgsXG4gIG1kOiA3NjhweCxcbiAgbGc6IDk5MnB4LFxuICB4bDogMTIwMHB4LFxuICB4eGw6IDE0MDBweCxcbiAgeHh4bDogMTYwMHB4XG4pO1xuXG4kY29udGFpbmVyLW1heC13aWR0aHM6IChcbiAgaXM6IDM4MHB4LFxuICBzbTogNTQwcHgsXG4gIG1kOiA3MjBweCxcbiAgbGc6IDk2MHB4LFxuICB4bDogMTE0MHB4LFxuICB4eGw6IDEzMjBweCxcbiAgeHh4bDogMTUwMHB4XG4pO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAcmV0dXJuIGlmKCRuZXh0LCBicmVha3BvaW50LW1pbigkbmV4dCwgJGJyZWFrcG9pbnRzKSAtIDAuMDJweCwgbnVsbCk7XG59XG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4uY29sb3ItaW5wdXQge1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHBhZGRpbmc6IDhweDsgfVxuXG4ubW9kYWwtZGlhbG9nIC5tb2RhbC1ib2R5IHtcbiAgbWF4LWhlaWdodDogNjYwcHg7IH1cblxuLm1vZGFsLWRpYWxvZyAubW9kYWwtZm9vdGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4ubW9kYWwtZGlhbG9nLm1vZGFsLXNjYXR0ZXItcGxvdCB7XG4gIG1heC13aWR0aDogMjYwcHg7XG4gIHdpZHRoOiAyNjBweDsgfVxuICAubW9kYWwtZGlhbG9nLm1vZGFsLXNjYXR0ZXItcGxvdCAubW9kYWwtYm9keSB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7IH1cbiAgICAubW9kYWwtZGlhbG9nLm1vZGFsLXNjYXR0ZXItcGxvdCAubW9kYWwtYm9keSAuYXBwLXRhYmxlLWNvbnRhaW5lciB7XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcbiAgLm1vZGFsLWRpYWxvZy5tb2RhbC1zY2F0dGVyLXBsb3QgLm1vZGFsLWNvbnRlbnQge1xuICAgIHdpZHRoOiAxMDAlOyB9IH1cbiIsIkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMvYnJlYWtwb2ludHMnO1xyXG5AaW1wb3J0ICd+QG5lYnVsYXIvdGhlbWUvc3R5bGVzL2dsb2JhbC9icmVha3BvaW50cyc7XHJcblxyXG4uY29sb3ItaW5wdXQge1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgd2lkdGg6IDE2cHg7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbn1cclxuXHJcbi5tb2RhbC1kaWFsb2cge1xyXG4gICAgLm1vZGFsLWJvZHkge1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDY2MHB4O1xyXG4gICAgICAgIC8vb3ZlcmZsb3c6IGF1dG87XHJcbiAgICB9XHJcbiAgICAubW9kYWwtZm9vdGVyIHtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAmLm1vZGFsLXNjYXR0ZXItcGxvdCB7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAyNjBweDtcclxuICAgICAgICB3aWR0aDogMjYwcHg7XHJcbiAgICAgICAgLm1vZGFsLWJvZHkge1xyXG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcclxuICAgICAgICAgICAgLy9wYWRkaW5nLWJvdHRvbTogNTBweDtcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICAgICAgICAgIC5hcHAtdGFibGUtY29udGFpbmVyIHtcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oc20pIHtcclxuICAgIC5tb2RhbC1kaWFsb2cubW9kYWwtc2NhdHRlci1wbG90IC5tb2RhbC1jb250ZW50IHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxufVxyXG4iXX0= */\"","import { Component, OnInit, Input } from '@angular/core';\r\nimport { DefaultColor, LIST_SHAPES } from '../../../helpers/app.constants';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { cloneDeep, isEmpty } from 'lodash';\r\nimport { IScatterPlotChartSetting, ENUM_AXIS_TYPE } from '../../../services/charts';\r\n\r\n@Component({\r\n selector: 'app-scatter-plot-parameter-settings',\r\n templateUrl: './scatter-plot-parameter-settings.component.html',\r\n styleUrls: ['./scatter-plot-parameter-settings.component.scss']\r\n})\r\nexport class ScatterPlotParameterSettingsComponent implements OnInit {\r\n\r\n defaultColor: any[] = DefaultColor;\r\n\r\n listShapes: any[] = LIST_SHAPES;\r\n listDesignActualShapes: any[] = [\r\n { id: 'Bar', name: 'Bar' },\r\n { id: 'Line', name: 'Line' }\r\n ];\r\n settings = [];\r\n\r\n form: FormGroup;\r\n shape: AbstractControl;\r\n color: AbstractControl;\r\n\r\n isXAxisParam: boolean = false;\r\n cloneChartSetting: IScatterPlotChartSetting;\r\n xYAxis = [];\r\n designActualYAxis = [];\r\n\r\n @Input()\r\n set chartSettings(data: IScatterPlotChartSetting) {\r\n if (data) {\r\n this.cloneChartSetting = cloneDeep(data);\r\n if (data.xAxis) {\r\n if (data.xAxis.id !== 'time' && data.xAxis.id !== 'well') {\r\n this.xYAxis.push(data.xAxis);\r\n this.isXAxisParam = true;\r\n }\r\n }\r\n this.xYAxis = this.xYAxis.concat(data.yAxis.map(item => {\r\n return Object.assign(item, { isYAxis: true });\r\n }));\r\n if (!isEmpty(data.curveYAxis)) {\r\n this.xYAxis = this.xYAxis.concat(data.curveYAxis.map(item => {\r\n return Object.assign(item, { isCurve: true });\r\n }));\r\n }\r\n if (!isEmpty(data.fdiYAxis)) {\r\n this.xYAxis = this.xYAxis.concat(data.fdiYAxis.map(item => {\r\n return Object.assign(item, { isFDIYAxis: true });\r\n }));\r\n }\r\n if (!isEmpty(data.designActualYAxis)) {\r\n this.designActualYAxis = data.designActualYAxis;\r\n }\r\n this.xYAxis.map(item => item.shapeTemp = [{ id: item.shape, name: item.shape }]);\r\n }\r\n }\r\n\r\n get designShapeActive() {\r\n if (!isEmpty(this.designActualYAxis)) {\r\n return [{ id: this.designActualYAxis[0].designShape, name: this.designActualYAxis[0].designShape }]\r\n }\r\n return;\r\n }\r\n\r\n get actualShapeActive() {\r\n if (!isEmpty(this.designActualYAxis)) {\r\n return [{ id: this.designActualYAxis[0].actualShape, name: this.designActualYAxis[0].actualShape }]\r\n }\r\n return;\r\n }\r\n\r\n constructor(\r\n private dialogRef: NbDialogRef,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onSelectShape(item, event) {\r\n item.shape = event.id;\r\n item.shapeTemp = [{ id: event.id, name: event.text }];\r\n }\r\n\r\n onSelectDesignShape(item, event) {\r\n item.designShape = event.id;\r\n }\r\n onSelectActualShape(item, event) {\r\n item.actualShape = event.id;\r\n }\r\n\r\n selectColor(item, event) {\r\n item.color = event;\r\n }\r\n\r\n selectDesignColor(item, event) {\r\n item.designColor = event;\r\n }\r\n\r\n selectActualColor(item, event) {\r\n item.actualColor = event;\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n submitForm() {\r\n if (this.isXAxisParam) {\r\n this.cloneChartSetting.xAxis = this.xYAxis[0];\r\n }\r\n this.cloneChartSetting.yAxis = this.xYAxis.filter(item => item.isYAxis);\r\n this.cloneChartSetting.curveYAxis = this.xYAxis.filter(item => item.isCurve);\r\n this.cloneChartSetting.fdiYAxis = this.xYAxis.filter(item => item.isFDIYAxis);\r\n this.cloneChartSetting.designActualYAxis = [...this.designActualYAxis];\r\n\r\n this.dialogRef.close(this.cloneChartSetting);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Settings
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Auto\\r\\n Scale Time\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy90aW1lLXNldHRpbmdzL3RpbWUtc2V0dGluZ3MuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { cloneDeep } from 'lodash';\r\nimport {\r\n TIME_SETTINGS_TIME_OPTIONS, TIME_SETTING_TYPE, DEFAULT_LAST_MIN_FILTER, TREATMENT_MONITOR_NUMBER, DEFAULT_MONITOR_LAST_MIN_FILTER\r\n} from '../../../helpers/app.constants';\r\nimport { Helper } from '../../../helpers/helper';\r\nimport { ITimeSetting } from '../../../models/time-setting.model';\r\nimport { ITreatmentItem } from '../../../models/treatment.model';\r\nimport { ITimeRangeFilter } from '../../../services/charts/base-chart.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-time-settings',\r\n templateUrl: './time-settings.component.html',\r\n styleUrls: ['./time-settings.component.scss']\r\n})\r\nexport class TimeSettingsComponent implements OnInit {\r\n public mask = [/\\d/, /\\d/, ':', /\\d/, /\\d/];\r\n\r\n TIME_SETTING_TYPE = TIME_SETTING_TYPE;\r\n originTimeRange: ITimeRangeFilter;\r\n timeRangeFilterValues: ITimeRangeFilter;\r\n listType: any[] = [TIME_SETTING_TYPE.OffsetTime, TIME_SETTING_TYPE.EpochTime];\r\n form: FormGroup;\r\n type: AbstractControl;\r\n autoScaleTime: AbstractControl;\r\n startTime: AbstractControl;\r\n endTime: AbstractControl;\r\n commentType: AbstractControl;\r\n lastMin: AbstractControl;\r\n startTimeFloat: AbstractControl;\r\n endTimeFloat: AbstractControl;\r\n\r\n modelData: { type: string; startIndex: number; endIndex: number };\r\n\r\n @Input() compareChannel: boolean = false;\r\n @Input()\r\n set timeRangeFilter(time: ITimeRangeFilter) {\r\n this.originTimeRange = cloneDeep(time);\r\n if (time) {\r\n this.originTimeRange.timestamp.start = Helper.floorTimestamp(time.timestamp.start);\r\n this.originTimeRange.timestamp.end = Helper.ceilTimestamp(time.timestamp.end);\r\n if (this.modelData) {\r\n if (this.modelData.type && this.modelData.type.toLowerCase() === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n time.timefloat.start = this.modelData.startIndex;\r\n time.timefloat.end = this.modelData.endIndex;\r\n } else {\r\n time.timestamp.start = this.modelData.startIndex;\r\n time.timestamp.end = this.modelData.endIndex;\r\n }\r\n }\r\n }\r\n this.timeRangeFilterValues = time;\r\n }\r\n\r\n @Input()\r\n set model(param: ITimeSetting) {\r\n if (param) {\r\n this.modelData = param;\r\n this.type.setValue(param.type);\r\n const isFloatFormat = param.type && param.type.toLowerCase() === TIME_SETTING_TYPE.OffsetTimeLower;\r\n if (!isFloatFormat) {\r\n let startValue = null;\r\n if (!this.wellItem || !this.wellItem.tzTimeZone) {\r\n startValue = Helper.floorTimestampToString(param.startIndex);\r\n } else {\r\n const startIndexSec = Math.round(param.startIndex / 1000);\r\n startValue = Helper.floorTimestampToString(startIndexSec, this.wellItem.tzTimeZone);\r\n }\r\n\r\n let endValue = null;\r\n if (!this.wellItem || !this.wellItem.tzTimeZone) {\r\n endValue = Helper.ceilTimestampToString(param.endIndex);\r\n } else {\r\n const endIndexSec = Math.round(param.endIndex / 1000);\r\n endValue = Helper.ceilTimestampToString(endIndexSec, this.wellItem.tzTimeZone);\r\n }\r\n\r\n this.startTime.setValue(startValue);\r\n this.endTime.setValue(endValue);\r\n } else {\r\n const startTime = Helper.convertSecToMin(param.startIndex);\r\n const endTime = Helper.convertSecToMin(param.endIndex);\r\n this.startTimeFloat.setValue(Math.floor(startTime));\r\n this.endTimeFloat.setValue(Math.ceil(endTime));\r\n }\r\n }\r\n }\r\n\r\n @Input() treatmentItem: ITreatmentItem = null;\r\n @Input() wellItem = null;\r\n @Input() realTime: boolean = false;\r\n\r\n @Input()\r\n set lastMinFilter(lastMin: number) {\r\n if (lastMin === 0) this.lastMin.setValue('All');\r\n else if (!lastMin) this.lastMin.setValue(this.lastMinOptionsDefault);\r\n else {\r\n const optSelected = (value: number, values: number[], options: string[], defaultLabel: string, isRealtime: boolean) => {\r\n let i = values.findIndex(x => x === value);\r\n if (i > -1) return options[i];\r\n\r\n if (!!this.realTime) {\r\n i = TIME_SETTINGS_TIME_OPTIONS.realtimeExtends.findIndex(x => x === value);\r\n if (i > -1) return TIME_SETTINGS_TIME_OPTIONS.realtimeExtendsLabel[i];\r\n }\r\n return defaultLabel;\r\n }\r\n let result: string;\r\n if (this.treatmentItem && this.treatmentItem.number === TREATMENT_MONITOR_NUMBER) {\r\n result = optSelected(lastMin, TIME_SETTINGS_TIME_OPTIONS.monitor, TIME_SETTINGS_TIME_OPTIONS.monitorLabel, TIME_SETTINGS_TIME_OPTIONS.defaultMonitor, this.realTime);\r\n } else {\r\n result = optSelected(lastMin, TIME_SETTINGS_TIME_OPTIONS.treatment, TIME_SETTINGS_TIME_OPTIONS.treatmentLabel, TIME_SETTINGS_TIME_OPTIONS.defaultTreatment, this.realTime);\r\n }\r\n this.lastMin.setValue(result);\r\n }\r\n }\r\n\r\n @Input()\r\n set autoScale(auto: boolean) {\r\n this.autoScaleTime.setValue(auto);\r\n }\r\n\r\n @Input() showCommentOption: boolean = false;\r\n @Input() disableCommentOption: boolean = false;\r\n @Input() listCommentsOptions: boolean = false;\r\n @Input()\r\n set selectedCommentType(value: string) {\r\n if (value) {\r\n this.commentType.setValue(value);\r\n }\r\n }\r\n\r\n constructor(\r\n protected dialogRef: NbDialogRef,\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.compareChannel) {\r\n // Set Validators\r\n this.startTime.setValidators([]);\r\n this.endTime.setValidators([]);\r\n // Reset Form\r\n this.startTime.reset();\r\n this.endTime.reset();\r\n }\r\n if (this.realTime && this.autoScaleTime.value) {\r\n this.autoTimeChange();\r\n }\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n createForm() {\r\n this.form = new FormGroup({\r\n type: new FormControl(TIME_SETTING_TYPE.OffsetTime, [Validators.required]),\r\n commentType: new FormControl('List', [Validators.required]),\r\n autoScaleTime: new FormControl(true),\r\n startTime: new FormControl('', []),\r\n endTime: new FormControl('', []),\r\n startTimeFloat: new FormControl(null, []),\r\n endTimeFloat: new FormControl(null, []),\r\n lastMin: new FormControl('', [])\r\n }, [/*NumberValidator.compareNumber('startTime', 'endTime')*/]);\r\n this.type = this.form.controls['type'];\r\n this.autoScaleTime = this.form.controls['autoScaleTime'];\r\n this.startTime = this.form.controls['startTime'];\r\n this.endTime = this.form.controls['endTime'];\r\n this.startTimeFloat = this.form.controls['startTimeFloat'];\r\n this.endTimeFloat = this.form.controls['endTimeFloat'];\r\n this.commentType = this.form.controls['commentType'];\r\n this.lastMin = this.form.controls['lastMin'];\r\n }\r\n\r\n submitForm() {\r\n const values = cloneDeep(this.form.value);\r\n if (!this.compareChannel) {\r\n // map lastMin\r\n values.lastMin = this.mapSelectedLastMin(values.lastMin);\r\n // map startTime and endTime\r\n if (this.type.value === TIME_SETTING_TYPE.EpochTime || this.type.value === TIME_SETTING_TYPE.EpochTimeLowerCase) {\r\n // get timestamp default\r\n let timestampStart: number;\r\n let timestampEnd: number;\r\n if (this.originTimeRange && this.originTimeRange.timestamp) {\r\n timestampStart = this.originTimeRange.timestamp.start;\r\n timestampEnd = this.originTimeRange.timestamp.end;\r\n }\r\n // set value\r\n if (!this.wellItem || !this.wellItem.tzTimeZone) {\r\n values.startTime = values.startTime ? Helper.mapDateTimeString(values.startTime, 0) :\r\n Helper.toTimeString(timestampStart);\r\n values.endTime = values.endTime ? Helper.mapDateTimeString(values.endTime, 0) :\r\n Helper.toTimeString(timestampEnd);\r\n } else {\r\n values.startTime = values.startTime ?\r\n Helper.mapDateTimeUTCString(values.startTime, this.wellItem.tzTimeZone) :\r\n Helper.toTimeString(timestampStart);\r\n values.endTime = values.endTime ?\r\n Helper.mapDateTimeUTCString(values.endTime, this.wellItem.tzTimeZone) :\r\n Helper.toTimeString(timestampEnd);\r\n }\r\n }\r\n // map startTimeFloat and endTimeFloat\r\n if (this.type.value === TIME_SETTING_TYPE.OffsetTime) {\r\n // get timefloat default\r\n let timefloatStart: number;\r\n let timefloatEnd: number;\r\n if (this.originTimeRange && this.originTimeRange.timefloat) {\r\n timefloatStart = this.originTimeRange.timefloat.start;\r\n timefloatEnd = this.originTimeRange.timefloat.end;\r\n }\r\n // set value\r\n if (values.startTimeFloat === '' || values.startTimeFloat === null) values.startTimeFloat = timefloatStart;\r\n if (values.endTimeFloat === '' || values.startTimeFloat === null) values.endTimeFloat = timefloatEnd;\r\n }\r\n }\r\n this.dialogRef.close(values);\r\n }\r\n\r\n get lastMinOptionsDefault(): string {\r\n if (this.treatmentItem && this.treatmentItem.number === TREATMENT_MONITOR_NUMBER) {\r\n return TIME_SETTINGS_TIME_OPTIONS.defaultMonitor;\r\n } else {\r\n return TIME_SETTINGS_TIME_OPTIONS.defaultTreatment;\r\n }\r\n }\r\n\r\n get lastMinOptions(): string[] {\r\n if (this.lastMin.value === '') {\r\n this.lastMin.setValue(this.lastMinOptionsDefault);\r\n }\r\n const handleListOptions = (list, realtime) => {\r\n if (!list || !realtime) return list;\r\n return [list[0]].concat(TIME_SETTINGS_TIME_OPTIONS.realtimeExtendsLabel).concat(list.filter(item => item !== 'All'));\r\n };\r\n if (this.treatmentItem && this.treatmentItem.number === TREATMENT_MONITOR_NUMBER) {\r\n return handleListOptions(TIME_SETTINGS_TIME_OPTIONS.monitorLabel, this.realTime);\r\n } else {\r\n return handleListOptions(TIME_SETTINGS_TIME_OPTIONS.treatmentLabel, this.realTime);\r\n }\r\n }\r\n\r\n private lastMinMapped = (value: string, labels: string[], values: number[], defaultVal: number, isRealtime: boolean) => {\r\n let index = labels.findIndex(x => x === value);\r\n if (index > -1) return values[index];\r\n if (!!isRealtime) {\r\n index = TIME_SETTINGS_TIME_OPTIONS.realtimeExtendsLabel.findIndex(x => x === value);\r\n if (index > -1) return TIME_SETTINGS_TIME_OPTIONS.realtimeExtends[index];\r\n }\r\n return defaultVal;\r\n }\r\n\r\n mapSelectedLastMin(value): number {\r\n if (value === 'All') return 0;\r\n if (this.treatmentItem && this.treatmentItem.number === TREATMENT_MONITOR_NUMBER) {\r\n return this.lastMinMapped(value, TIME_SETTINGS_TIME_OPTIONS.monitorLabel, TIME_SETTINGS_TIME_OPTIONS.monitor, DEFAULT_MONITOR_LAST_MIN_FILTER, this.realTime);\r\n } else {\r\n return this.lastMinMapped(value, TIME_SETTINGS_TIME_OPTIONS.treatmentLabel, TIME_SETTINGS_TIME_OPTIONS.treatment, DEFAULT_LAST_MIN_FILTER, this.realTime);\r\n }\r\n }\r\n\r\n selectedType(e: any) {\r\n if (this.type.value === e) return;\r\n this.type.setValue(e);\r\n\r\n if (this.compareChannel) return;\r\n // if set to EpochTime: get the OffsetTime startTimeFloat and endTimeFloat value\r\n if (this.type.value === TIME_SETTING_TYPE.EpochTime) {\r\n // if startTime or endTime is blank (exclude 0): use the originTimeRange.timefloat\r\n const mapTimeFloat = (data: string | number, originData: number): number => data === '' ? originData : Helper.convertMinToSec(data);\r\n if (this.timeRangeFilterValues && this.timeRangeFilterValues.timefloat && this.originTimeRange && this.originTimeRange.timefloat) {\r\n this.timeRangeFilterValues.timefloat.start = mapTimeFloat(this.startTimeFloat.value, this.originTimeRange.timefloat.start);\r\n this.timeRangeFilterValues.timefloat.end = mapTimeFloat(this.endTimeFloat.value, this.originTimeRange.timefloat.end);\r\n }\r\n }\r\n // else: get the EpochTime startTime and endTime value\r\n else {\r\n // if startTime or endTime is blank (exclude 0): use the originTimeRange.timestamp\r\n const mapTimestamp = (data: string, originData: number) => data === '' ? originData : Helper.mapDateTimeTimestamp(data);\r\n if (this.timeRangeFilterValues && this.timeRangeFilterValues.timestamp && this.originTimeRange && this.originTimeRange.timestamp) {\r\n this.timeRangeFilterValues.timestamp.start = mapTimestamp(this.startTime.value, this.originTimeRange.timestamp.start);\r\n this.timeRangeFilterValues.timestamp.end = mapTimestamp(this.endTime.value, this.originTimeRange.timestamp.end);\r\n }\r\n }\r\n this.setTimeRangeFilter(this.type.value, this.timeRangeFilterValues);\r\n\r\n }\r\n\r\n setTimeRangeFilter(timeFormat: string, timeRangeFilterValues: ITimeRangeFilter) {\r\n if (!timeRangeFilterValues) return;\r\n\r\n const getMismatchTimefloat = (timefloat, originTimestamp) => {\r\n if (!this.wellItem || !this.wellItem.tzTimeZone) return 0;\r\n const a = Helper.getTimezoneOffset(timefloat + originTimestamp, this.wellItem.tzTimeZone);\r\n const b = Helper.getTimezoneOffset(originTimestamp, this.wellItem.tzTimeZone);\r\n return a - b;\r\n };\r\n\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime) {\r\n const mapTimestamp = (data: number, originData: number): string => {\r\n if (this.wellItem && this.wellItem.tzTimeZone) data = Helper.addTimezoneTime(originData, data, this.wellItem.tzTimeZone);\r\n return Helper.toDateTimeString(data + originData);\r\n };\r\n\r\n const startTime = mapTimestamp(timeRangeFilterValues.timefloat.start * 1000, this.originTimeRange.timestamp.start);\r\n const endTime = mapTimestamp(timeRangeFilterValues.timefloat.end * 1000, this.originTimeRange.timestamp.start);\r\n this.startTime.setValue(startTime);\r\n this.endTime.setValue(endTime);\r\n } else {\r\n const mapTimeFloat = (data: number, originData: number): number => {\r\n if (this.wellItem && this.wellItem.tzTimeZone) data = Helper.removeTimezoneTime(data, this.wellItem.tzTimeZone);\r\n const time = Helper.convertSecToMin((data - originData) / 1000);\r\n const mismatch = getMismatchTimefloat(time * 1000, originData);\r\n return time - mismatch;\r\n };\r\n\r\n const startTime = mapTimeFloat(timeRangeFilterValues.timestamp.start, this.originTimeRange.timestamp.start);\r\n const endTime = mapTimeFloat(timeRangeFilterValues.timestamp.end, this.originTimeRange.timestamp.start);\r\n\r\n this.startTimeFloat.setValue(Math.floor(startTime));\r\n this.endTimeFloat.setValue(Math.ceil(endTime));\r\n }\r\n }\r\n\r\n autoTimeChange(e?: any) {\r\n // if (this.autoScaleTime.value) {\r\n // // this.startTime.setValue(null);\r\n // // this.endTime.setValue(null);\r\n // this.setTimeRangeFilter(this.type.value, this.originTimeRange);\r\n // } else {\r\n // this.setTimeRangeFilter(this.type.value, this.timeRangeFilterValues);\r\n // }\r\n }\r\n\r\n selectedCommentOption(eventData: string) {\r\n if (eventData) {\r\n this.commentType.setValue(eventData);\r\n }\r\n }\r\n\r\n onChangeLastMin(eventData) {\r\n if (!eventData || !eventData.id) return;\r\n this.lastMin.setValue(eventData.id);\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Settings
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n.color-input {\\n border: 0;\\n border-radius: 50%;\\n width: 16px;\\n height: 16px;\\n color: transparent;\\n cursor: pointer;\\n padding: 8px; }\\n.modal-dialog .modal-body {\\n max-height: 660px;\\n overflow: auto; }\\n.modal-dialog .modal-body .subtitle {\\n font-size: 15px;\\n color: #323c47; }\\n.modal-dialog .modal-footer {\\n justify-content: center;\\n border: none; }\\n.modal-dialog.modal-scatter-plot {\\n max-width: 460px;\\n width: 460px; }\\n.modal-dialog.modal-scatter-plot .modal-body {\\n padding-top: 0;\\n overflow: visible; }\\n.modal-dialog.modal-scatter-plot .modal-body .app-table-container {\\n overflow: visible; }\\n@media (max-width: 767.98px) {\\n .modal-dialog.modal-scatter-plot .modal-content {\\n width: 100%; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbW9kYWxzL3RyZWF0bWVudC1sb2ctY2hhcnQtc2V0dGluZ3MvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXGdsb2JhbFxcX2JyZWFrcG9pbnRzLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy90cmVhdG1lbnQtbG9nLWNoYXJ0LXNldHRpbmdzL3RyZWF0bWVudC1sb2ctY2hhcnQtc2V0dGluZ3MuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy90cmVhdG1lbnQtbG9nLWNoYXJ0LXNldHRpbmdzL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxtb2RhbHNcXHRyZWF0bWVudC1sb2ctY2hhcnQtc2V0dGluZ3NcXHRyZWF0bWVudC1sb2ctY2hhcnQtc2V0dGluZ3MuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy90cmVhdG1lbnQtbG9nLWNoYXJ0LXNldHRpbmdzL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxzdHlsZXNcXHZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0VDSUU7QUNBRjtFQUNJLFNBQVM7RUFDVCxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsZUFBZTtFQUNmLFlBQVksRUFBQTtBQUdoQjtFQUVRLGlCQUFpQjtFQUNqQixjQUFjLEVBQUE7QUFIdEI7SUFLVSxlQUFlO0lBQ2YsY0NmWSxFQUFBO0FEU3RCO0VBVVEsdUJBQXVCO0VBQ3ZCLFlBQVksRUFBQTtBQVhwQjtFQWNRLGdCQUFnQjtFQUNoQixZQUFZLEVBQUE7QUFmcEI7SUFpQlksY0FBYztJQUVkLGlCQUFpQixFQUFBO0FBbkI3QjtNQXFCZ0IsaUJBQWlCLEVBQUE7QUZxQjdCO0VFZEE7SUFDSSxXQUFXLEVBQUEsRUFDZCIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy90cmVhdG1lbnQtbG9nLWNoYXJ0LXNldHRpbmdzL3RyZWF0bWVudC1sb2ctY2hhcnQtc2V0dGluZ3MuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2U6IDI0cHggIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGhzOiAoXG4gIHhzOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgc206ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBtZDogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIGxnOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgeGw6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlXG4pICFkZWZhdWx0O1xuXG5cbiRncmlkLWJyZWFrcG9pbnRzOiAoXG4gIHhzOiAwLFxuICBpczogNDAwcHgsXG4gIHNtOiA1NzZweCxcbiAgbWQ6IDc2OHB4LFxuICBsZzogOTkycHgsXG4gIHhsOiAxMjAwcHgsXG4gIHh4bDogMTQwMHB4LFxuICB4eHhsOiAxNjAwcHhcbik7XG5cbiRjb250YWluZXItbWF4LXdpZHRoczogKFxuICBpczogMzgwcHgsXG4gIHNtOiA1NDBweCxcbiAgbWQ6IDcyMHB4LFxuICBsZzogOTYwcHgsXG4gIHhsOiAxMTQwcHgsXG4gIHh4bDogMTMyMHB4LFxuICB4eHhsOiAxNTAwcHhcbik7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEByZXR1cm4gaWYoJG5leHQsIGJyZWFrcG9pbnQtbWluKCRuZXh0LCAkYnJlYWtwb2ludHMpIC0gMC4wMnB4LCBudWxsKTtcbn1cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi5jb2xvci1pbnB1dCB7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogOHB4OyB9XG5cbi5tb2RhbC1kaWFsb2cgLm1vZGFsLWJvZHkge1xuICBtYXgtaGVpZ2h0OiA2NjBweDtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cbiAgLm1vZGFsLWRpYWxvZyAubW9kYWwtYm9keSAuc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBjb2xvcjogIzMyM2M0NzsgfVxuXG4ubW9kYWwtZGlhbG9nIC5tb2RhbC1mb290ZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi5tb2RhbC1kaWFsb2cubW9kYWwtc2NhdHRlci1wbG90IHtcbiAgbWF4LXdpZHRoOiA0NjBweDtcbiAgd2lkdGg6IDQ2MHB4OyB9XG4gIC5tb2RhbC1kaWFsb2cubW9kYWwtc2NhdHRlci1wbG90IC5tb2RhbC1ib2R5IHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuICAgIC5tb2RhbC1kaWFsb2cubW9kYWwtc2NhdHRlci1wbG90IC5tb2RhbC1ib2R5IC5hcHAtdGFibGUtY29udGFpbmVyIHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAubW9kYWwtZGlhbG9nLm1vZGFsLXNjYXR0ZXItcGxvdCAubW9kYWwtY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7IH0gfVxuIiwiQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucy9icmVha3BvaW50cyc7XHJcbkBpbXBvcnQgJ35AbmVidWxhci90aGVtZS9zdHlsZXMvZ2xvYmFsL2JyZWFrcG9pbnRzJztcclxuQGltcG9ydCAnfmFwcC9zaGFyZWQvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzJztcclxuXHJcbi5jb2xvci1pbnB1dCB7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICB3aWR0aDogMTZweDtcclxuICAgIGhlaWdodDogMTZweDtcclxuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBhZGRpbmc6IDhweDtcclxufVxyXG5cclxuLm1vZGFsLWRpYWxvZyB7XHJcbiAgICAubW9kYWwtYm9keSB7XHJcbiAgICAgICAgbWF4LWhlaWdodDogNjYwcHg7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAgICAgLnN1YnRpdGxlIHtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcclxuICAgICAgICAgIGNvbG9yOiAkZm9udC1kZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5tb2RhbC1mb290ZXIge1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgIH1cclxuICAgICYubW9kYWwtc2NhdHRlci1wbG90IHtcclxuICAgICAgICBtYXgtd2lkdGg6IDQ2MHB4O1xyXG4gICAgICAgIHdpZHRoOiA0NjBweDtcclxuICAgICAgICAubW9kYWwtYm9keSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgICAgICAvL3BhZGRpbmctYm90dG9tOiA1MHB4O1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgICAgICAgICAgLmFwcC10YWJsZS1jb250YWluZXIge1xyXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihzbSkge1xyXG4gICAgLm1vZGFsLWRpYWxvZy5tb2RhbC1zY2F0dGVyLXBsb3QgLm1vZGFsLWNvbnRlbnQge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG59XHJcbiIsIlxyXG4kbWFpbi1iZzogIzAwN2VhMztcclxuJGxheW91dC1iZzogI2Y1ZjZmNjtcclxuJGRhbmdlci1jb2xvcjogI2ViNWE1MjtcclxuJGVycm9yLWNvbG9yOiAjZTk1ODVhO1xyXG4kZm9udC1kZWZhdWx0OiAjMzIzYzQ3O1xyXG4kZm9udC10YWJsZS1kZWZhdWx0OiAjMzY0MDRiO1xyXG5cclxuJGFwcC1zaWRlYmFyLWJnOiAkbWFpbi1iZztcclxuXHJcbiRmb3JtLWxhYmVsLWZnOiAjYWFhYWFhO1xyXG4kdGFibGUtaGVhZGVyLWJnOiAjZTNlN2U4O1xyXG4kY2FuY2VsLWNvbG9yOiAjYmZjZWQzO1xyXG4kYmctZGVsZXRlLWNvbG9yOiAjZThlOGU4O1xyXG4kd2hpdGUtY29sb3I6ICNmZmZmZmY7XHJcbiRzbGF0ZS1jb2xvcjogIzQ4NTQ2NTtcclxuLy89PT09PT09PT09IERBUksgVEhFTUVTID09PT09PT09PT09PT09PS8vXHJcbiRkYXJrLXRoZW1lcy13cmFwX2JnOiAjMjMyMzIzO1xyXG4kZGFyay10aGVtZXMtYm94LWJnOiAjMTMxNTE2O1xyXG4kZGFyay10aGVtZXMtYmFzZS1jb2xvcjogI2U4ZTZlMztcclxuJGRhcmstdGhlbWVzLXRoZWFkLWJhY2tncm91bmQ6ICMyNjJhMmI7XHJcbiRkYXJrLXRoZW1lcy10aGVhZC1jb2xvcjogIzVhZGFmZjtcclxuJGRhcmstdGhlbWVzLWFjdGl2ZTogIzVhZGFmZjtcclxuJGRhcmstdGhlbWVzLXRyLWJhY2tncm91bmQ6ICMxODFhMWI7XHJcbiRkYXJrLXRoZW1lcy10ci1iYWNrZ3JvdW5kLTI6ICMwZDI5MzY7XHJcbiRkYXJrLXRoZW1lcy1ib3gtc2hhZG93OiAjMWYyMjIzO1xyXG4vLy0tXHJcbiRkYXJrLW1haW4tYmc6ICM1YWRhZmY7XHJcbiRkYXJrLWxheW91dC1iZzogIzMzMzczOTtcclxuJGRhcmstZGFuZ2VyLWNvbG9yOiAjZWM2MDU4O1xyXG4kZGFyay1lcnJvci1jb2xvcjogI2VhNWQ1ZjtcclxuJGRhcmstZm9udC1kZWZhdWx0OiAjYzJiY2I0O1xyXG4kZGFyay1mb250LXRhYmxlLWRlZmF1bHQ6ICNiZmJhYjE7XHJcbiRkYXJrLWZvcm0tbGFiZWwtZmc6ICNiMmFjYTI7XHJcblxyXG4iXX0= */\"","import { Component, OnInit, Input } from '@angular/core';\r\nimport { DefaultColor, LIST_SHAPES } from '../../../helpers/app.constants';\r\nimport { NbDialogRef } from '@nebular/theme';\r\nimport { AbstractControl, FormControl, FormGroup, Validators, FormBuilder, FormArray } from '@angular/forms';\r\nimport { IScatterPlotChartSetting, IAxisSetting } from '../../../services/charts';\r\nimport { isEmpty } from 'lodash';\r\n\r\n@Component({\r\n selector: 'app-treatment-log-chart-settings',\r\n templateUrl: './treatment-log-chart-settings.component.html',\r\n styleUrls: ['./treatment-log-chart-settings.component.scss']\r\n})\r\nexport class TreatmentLogChartSettingsComponent implements OnInit {\r\n\r\n defaultColor: any[] = DefaultColor;\r\n\r\n listShapes: any[] = LIST_SHAPES.map(item => item.name);\r\n\r\n form: FormGroup;\r\n\r\n xAxisSetting: Partial = {};\r\n yAxisSetting: Partial = {};\r\n curveYAxisSetting: Partial = {};\r\n\r\n axisSettings: IAxisSetting[] = [];\r\n\r\n @Input()\r\n set chartSettings(data: IScatterPlotChartSetting) {\r\n if (data) {\r\n console.log(data);\r\n if (data.xAxis) {\r\n this.axisSettings.push(Object.assign(data.xAxis, {dataKey: 'xAxis'}));\r\n }\r\n if (data.yAxis) {\r\n data.yAxis.forEach(setting => {\r\n this.axisSettings.push(Object.assign(setting, {dataKey: 'yAxis'}));\r\n })\r\n }\r\n if (data.curveYAxis) {\r\n data.curveYAxis.forEach(setting => {\r\n this.axisSettings.push(Object.assign(setting, {dataKey: 'curveYAxis'}));\r\n })\r\n }\r\n }\r\n }\r\n\r\n get formControls() { return this.form.controls; }\r\n get formSettings() { return this.formControls.settings as FormArray; }\r\n\r\n constructor(\r\n private dialogRef: NbDialogRef,\r\n private formBuilder: FormBuilder\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() {\r\n this.addFormGroups(this.axisSettings);\r\n }\r\n\r\n createForm() {\r\n this.form = this.formBuilder.group({\r\n settings: new FormArray([])\r\n });\r\n }\r\n\r\n addFormGroups(settings: IAxisSetting[]) {\r\n settings.forEach(setting => {\r\n this.formSettings.push(this.formBuilder.group({\r\n name: [setting.name, Validators.required],\r\n shape: [setting.shape, Validators.required],\r\n color: [setting.color, [Validators.required]],\r\n min: [setting.min, []],\r\n max: [setting.max, []],\r\n dataKey: [setting.dataKey, []],\r\n }));\r\n })\r\n }\r\n\r\n onSelectShape(event, formControl) {\r\n formControl.setValue(event.text);\r\n }\r\n\r\n selectColor(event, formControl) {\r\n formControl.setValue(event);\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n submitForm() {\r\n console.log(this.form.value);\r\n const result: IScatterPlotChartSetting = {\r\n xAxis: null,\r\n yAxis: null,\r\n curveYAxis: null\r\n };\r\n if (this.form.value && !isEmpty(this.form.value.settings)) {\r\n this.form.value.settings.forEach(item => {\r\n result[item.dataKey] = Object.assign({}, item);\r\n });\r\n }\r\n this.dialogRef.close(result);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
Add Wells
\\r\\n
\\r\\n ×\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
5\\\">\\r\\n \\r\\n <<\\r\\n <\\r\\n >\\r\\n >>\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL21vZGFscy93ZWxscy1zZWxlY3Rpb24tbW9kYWwvd2VsbHMtc2VsZWN0aW9uLW1vZGFsLmNvbXBvbmVudC5zY3NzIn0= */\"","import {Component, Input, OnDestroy, OnInit, ViewChild, SimpleChanges, OnChanges} from '@angular/core';\r\nimport {NbDialogRef} from '@nebular/theme';\r\nimport {Subscription} from 'rxjs';\r\nimport {Helper} from '../../../../shared/helpers/helper';\r\nimport {AbstractControl, FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {TreatmentService} from '../../../../shared/services/treatment.service';\r\nimport {UserAuthService} from '../../../../shared/services/user-auth.service';\r\nimport {User} from '../../../../shared/models/user.model';\r\nimport {CPATTERN} from '../../../../shared/helpers/app.constants';\r\nimport { TableWellsSelectionComponent } from '../../table-wells-selection/table-wells-selection.component';\r\nimport { HistoricalWellsService } from '../../../../pages/manage/historical-wells/historical-wells.service';\r\nimport { CompareWellsService } from '../../../services/compare-wells.service';\r\nimport { forEach, orderBy, some, cloneDeep, isEmpty, remove } from 'lodash';\r\nimport { map, finalize } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-wells-selection-modal',\r\n templateUrl: './wells-selection-modal.component.html',\r\n styleUrls: ['./wells-selection-modal.component.scss']\r\n})\r\nexport class WellsSelectionModalComponent implements OnInit {\r\n\r\n @ViewChild(TableWellsSelectionComponent) wellTable: TableWellsSelectionComponent;\r\n subscriptions: Subscription[] = [];\r\n cvalidate = CPATTERN;\r\n countWells: number = 0;\r\n wellItems: any[] = [];\r\n\r\n user: User;\r\n listSelectWells: any[] = [];\r\n listStates: any[] = [];\r\n listConties: any[] = [];\r\n listServiceCompanies: any[] = [];\r\n listOperatorCompanies: any[] = [];\r\n listPads: any[] = [];\r\n listFormations: any[] = [];\r\n // Form\r\n form: FormGroup;\r\n state: AbstractControl;\r\n county: AbstractControl;\r\n serviceCompanyId: AbstractControl;\r\n operatorId: AbstractControl;\r\n pad: AbstractControl;\r\n formation: AbstractControl;\r\n\r\n // Paging\r\n pagingState = {\r\n page: 1,\r\n pageSize: 10,\r\n collectionSize: 10\r\n };\r\n\r\n isLoading: boolean = false;\r\n\r\n @Input()\r\n set listWells(list: any) {\r\n if (list) {\r\n this.listSelectWells = list;\r\n forEach(this.listSelectWells, item => {\r\n if (some(this.selectedListWells, {wellId: item.wellId})) {\r\n item.selected = true;\r\n } else {\r\n item.selected = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Input() selectedListWells: any[] = [];\r\n\r\n @Input() maxWells: number;\r\n @Input() countItemWells: number;\r\n\r\n constructor(\r\n private dialogRef: NbDialogRef,\r\n private userAuthService: UserAuthService,\r\n private historicalWellsService: HistoricalWellsService,\r\n private compareWellsService: CompareWellsService,\r\n private treatmentService: TreatmentService\r\n ) {\r\n this.createForm();\r\n this.user = this.userAuthService.getUserInfo();\r\n }\r\n\r\n ngOnInit() {\r\n this.getPads();\r\n this.getFormations();\r\n this.getStates();\r\n this.getCounties();\r\n if (this.user && this.user.companyType !== 'Service') {\r\n this.getServiceCompanies();\r\n }\r\n if (this.user && this.user.companyType !== 'Operator') {\r\n this.getOperatorCompanies();\r\n }\r\n this.isLoading = true;\r\n const subs = this.getListWells(this.form.value, this.pagingState.page, this.pagingState.pageSize)\r\n .pipe(finalize(() => {\r\n this.isLoading = false;\r\n }))\r\n .subscribe(result => {\r\n this.listWells = result.items;\r\n this.pagingState.collectionSize = result.totalCount;\r\n });\r\n this.subscriptions.push(subs);\r\n this.countWells = this.selectedListWells.length;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n Helper.unsubscribe(this.subscriptions);\r\n }\r\n\r\n createForm() {\r\n this.form = new FormGroup({\r\n state: new FormControl(''),\r\n county: new FormControl(''),\r\n pad: new FormControl(''),\r\n formation: new FormControl(''),\r\n serviceCompanyId: new FormControl(''),\r\n operatorId: new FormControl(''),\r\n });\r\n this.state = this.form.controls['state'];\r\n this.county = this.form.controls['county'];\r\n this.pad = this.form.controls['pad'];\r\n this.formation = this.form.controls['formation'];\r\n this.serviceCompanyId = this.form.controls['serviceCompanyId'];\r\n this.operatorId = this.form.controls['operatorId'];\r\n }\r\n\r\n getListWells(params, page, pageSize) {\r\n return this.compareWellsService.getListWell(params, page, pageSize)\r\n .pipe(map(res => {\r\n if (res && res.result) {\r\n forEach(res.result.items, item => {\r\n // Sort treatment by treatment number\r\n item.treatmentList = orderBy(item.treatmentList, i => i.treatmentNumber);\r\n item.treatmentIdDefault = item.treatmentList.length > 0 ? item.treatmentList[0].id : null;\r\n });\r\n return res.result;\r\n }\r\n return res;\r\n }));\r\n }\r\n\r\n loadWells() {\r\n this.isLoading = true;\r\n const subs = this.getListWells(this.form.value, this.pagingState.page, this.pagingState.pageSize)\r\n .pipe(finalize(() => {\r\n this.isLoading = false;\r\n }))\r\n .subscribe(result => {\r\n this.listWells = result.items;\r\n this.pagingState.collectionSize = result.totalCount;\r\n });\r\n this.subscriptions.push(subs);\r\n }\r\n\r\n onPageChange(page) {\r\n this.pagingState.page = page;\r\n this.loadWells();\r\n }\r\n\r\n hide(data?: any): void {\r\n this.dialogRef.close(data);\r\n }\r\n\r\n submit(): void {\r\n this.hide(this.selectedListWells);\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n selectedWellsChange(event) {\r\n if (event && !isEmpty(event.selected)) {\r\n // add selected wells\r\n forEach(event.selected, item => {\r\n const selectedItem = this.selectedListWells.find(selected => selected.wellId === item.wellId);\r\n if (selectedItem) {\r\n if (item.selected === false) {\r\n remove(this.selectedListWells, (selected => selected.wellId === item.wellId));\r\n }\r\n } else {\r\n if (item.selected) {\r\n this.selectedListWells.push(item);\r\n }\r\n }\r\n });\r\n this.countWells = this.selectedListWells.length;\r\n }\r\n }\r\n\r\n getPads() {\r\n this.subscriptions.push(\r\n this.historicalWellsService.getPads().subscribe(\r\n (res) => {\r\n this.listPads = res.result;\r\n }\r\n )\r\n );\r\n }\r\n\r\n getFormations() {\r\n this.subscriptions.push(\r\n this.historicalWellsService.getFormations().subscribe(\r\n (res) => {\r\n this.listFormations = res.result;\r\n }\r\n )\r\n );\r\n }\r\n\r\n getStates() {\r\n this.subscriptions.push(\r\n this.historicalWellsService.getStates().subscribe(\r\n (res) => {\r\n this.listStates = res.result;\r\n }\r\n )\r\n );\r\n }\r\n\r\n getCounties() {\r\n this.subscriptions.push(\r\n this.historicalWellsService.getCounties().subscribe(\r\n (res) => {\r\n this.listConties = res.result;\r\n }\r\n )\r\n );\r\n }\r\n\r\n getServiceCompanies() {\r\n this.subscriptions.push(\r\n this.treatmentService.getListCompanyByType(1).subscribe(\r\n (res) => {\r\n this.listServiceCompanies = res.result.items;\r\n }\r\n )\r\n );\r\n }\r\n\r\n getOperatorCompanies() {\r\n this.subscriptions.push(\r\n this.treatmentService.getListCompanyByType(0).subscribe(\r\n (res) => {\r\n this.listOperatorCompanies = res.result.items;\r\n }\r\n )\r\n );\r\n }\r\n\r\n searchWells() {\r\n if (this.form.valid) {\r\n this.loadWells();\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \".ul-select-multiple .ul-select-match-item {\\n display: inline-block;\\n position: relative;\\n border-radius: 2px;\\n border: solid 1px #e2e2e2;\\n background-color: #F1F1F1;\\n padding: 3px 16px 3px 8px;\\n margin-right: 5px;\\n margin-top: 10px;\\n line-height: 1; }\\n .ul-select-multiple .ul-select-match-item .ul-select-match-text {\\n font-size: 12px;\\n line-height: 1; }\\n .ul-select-multiple .ul-select-match-item i {\\n position: absolute;\\n right: 7px;\\n top: 6px;\\n font-size: 6px;\\n color: rgba(0, 0, 0, 0.2);\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvbXVsdGlwbGUtaW5wdXQvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXG11bHRpcGxlLWlucHV0XFxtdWx0aXBsZS1pbnB1dC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUVJLHFCQUFxQjtFQUNyQixrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsY0FBYyxFQUFBO0VBVmxCO0lBWU0sZUFBZTtJQUNmLGNBQWMsRUFBQTtFQWJwQjtJQWdCTSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLFFBQVE7SUFDUixjQUFjO0lBQ2QseUJBQXlCO0lBQ3pCLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL211bHRpcGxlLWlucHV0L211bHRpcGxlLWlucHV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnVsLXNlbGVjdC1tdWx0aXBsZSB7XHJcbiAgLnVsLXNlbGVjdC1tYXRjaC1pdGVtIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcclxuICAgIGJvcmRlcjogc29saWQgMXB4ICNlMmUyZTI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjFGMUYxO1xyXG4gICAgcGFkZGluZzogM3B4IDE2cHggM3B4IDhweDtcclxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgLnVsLXNlbGVjdC1tYXRjaC10ZXh0IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIH1cclxuICAgIGkge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA3cHg7XHJcbiAgICAgIHRvcDogNnB4O1xyXG4gICAgICBmb250LXNpemU6IDZweDtcclxuICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ== */\"","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'multiple-input',\r\n template: `
\r\n \r\n \r\n \r\n \r\n
`,\r\n styleUrls: ['./multiple-input.component.scss']\r\n})\r\nexport class MultipleInputComponent {\r\n\r\n itemList: {id: number, text: string}[] = [];\r\n\r\n @Input()\r\n set items(list: any) {\r\n this.itemList = list;\r\n }\r\n\r\n @Output() remove: EventEmitter = new EventEmitter();\r\n\r\n removeClick(item: any) {\r\n this.remove.emit(item);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3Bpdm90LXBvaW50LXNlbGVjdC9waXZvdC1wb2ludC1zZWxlY3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { CompareWellsService } from '../../services/compare-wells.service';\r\nimport { isEmpty, minBy, isEqual, forEach } from 'lodash';\r\nimport { forkJoin, Subscription, Subject, of, Observable } from 'rxjs';\r\nimport { IPivotPointItem } from '../../services/pivot-point.service';\r\nimport { DiagnosticPointsService } from '../../services';\r\nimport { Helper } from '../../helpers/helper';\r\nimport { DIAGNOSTIC_DEFAULTS } from '../../helpers/app.constants';\r\nimport { takeUntil, map } from 'rxjs/operators';\r\n\r\nexport interface IResSelectPivotPoint { selected: IPivotPointItem; data: IPivotPointItem[] }\r\n\r\n@Component({\r\n selector: 'app-pivot-point-select',\r\n templateUrl: './pivot-point-select.component.html',\r\n styleUrls: ['./pivot-point-select.component.scss']\r\n})\r\nexport class PivotPointSelectComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n subscriptions: Subscription[] = [];\r\n optionsPivotOpened: boolean = false;\r\n pivotPointSetting: any = { id: 'JobTime', text: 'Job time' };\r\n pivotPointData: IPivotPointItem[] = [];\r\n initPivotList = [\r\n { id: 'JobTime', text: 'Job time' },\r\n { id: 'TimeStart', text: 'Start Stage1' }\r\n ];\r\n pivotList: any[] = [];\r\n\r\n private prevCompany: number | string;\r\n private _companyId: number | string;\r\n @Input() set companyId(id: number | string) {\r\n if (this.prevCompany === undefined && this._companyId === undefined) this.prevCompany = id;\r\n else this.prevCompany = this._companyId;\r\n this._companyId = id;\r\n }\r\n get companyId(): number | string {\r\n return this._companyId;\r\n }\r\n\r\n selectedTreatments: any[] = [];\r\n @Input()\r\n set treatments(treatments: any[]) {\r\n if (treatments && treatments.length) {\r\n this.selectedTreatments = treatments.filter(item => !!item.id);\r\n const treatmentIds = this.selectedTreatments.map(item => item.id);\r\n if (this.pivotPointSetting && treatmentIds.length) this.getPivotPoints(this.pivotPointSetting, treatmentIds);\r\n }\r\n }\r\n _wellId: number;\r\n @Input()\r\n set wellId(id: number) {\r\n if (this._wellId !== id || this.companyId !== this.prevCompany) {\r\n this._wellId = id;\r\n this.updatePivotList(this._wellId, this.companyId);\r\n }\r\n }\r\n @Input()\r\n set singleWell(well) {\r\n if (well && well.wellId) {\r\n if (this._wellId !== well.wellId || this.companyId !== this.prevCompany) {\r\n this._wellId = well.wellId;\r\n this.updatePivotList(this._wellId, this.companyId);\r\n }\r\n }\r\n }\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Output()\r\n onSelectItem: EventEmitter = new EventEmitter();\r\n @Output()\r\n onPivotDataChange: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private compareWellsService: CompareWellsService,\r\n private diagnosticPointsService: DiagnosticPointsService,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.pivotList = this.initPivotList.concat(DIAGNOSTIC_DEFAULTS);\r\n this.updatePivotList(this._wellId, this.companyId);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.destroy$.unsubscribe();\r\n Helper.unsubscribe(this.subscriptions);\r\n }\r\n\r\n private updatePivotList(wellId, companyId): void {\r\n if (wellId && companyId !== null) {\r\n this.subscriptions.push(\r\n this.diagnosticPointsService.getByCompanyAndWell(companyId, wellId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n res => {\r\n if (!isEmpty(res)) {\r\n const diagPoints = res.map(item => ({ id: item.name, text: item.name }));\r\n this.pivotList = [...this.initPivotList, ...DIAGNOSTIC_DEFAULTS, ...diagPoints];\r\n } else {\r\n this.pivotList = this.initPivotList.concat(DIAGNOSTIC_DEFAULTS);\r\n }\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n public isActivePivot(value): boolean {\r\n return this.pivotPointSetting.id === value.id;\r\n }\r\n\r\n public openButtonPivotDropdown(): void {\r\n this.optionsPivotOpened = !this.optionsPivotOpened;\r\n }\r\n\r\n public clickOutsidePivot(): void {\r\n this.optionsPivotOpened = false;\r\n }\r\n\r\n public selectPivotPoint(pivotPointOpt: any): void {\r\n this.clickOutsidePivot();\r\n if (!pivotPointOpt || !pivotPointOpt.id) return;\r\n if (this.pivotPointSetting && this.pivotPointSetting.id === pivotPointOpt.id) return;\r\n if (!this.selectedTreatments || !this.selectedTreatments.length) return;\r\n const treatmentIds = this.selectedTreatments.filter(item => !!item.id).map(item => item.id);\r\n if (!treatmentIds.length) return;\r\n\r\n this.pivotPointSetting = pivotPointOpt;\r\n this.getPivotPoints(pivotPointOpt, treatmentIds);\r\n }\r\n\r\n private getPivotPoints(pivotPointOpt: any, treatmentIds: number[]): void {\r\n this.subscriptions.push(\r\n this.handlePivotData(pivotPointOpt, treatmentIds)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((response: IPivotPointItem[]) => {\r\n this.pivotPointData = response ? response.map(data => {\r\n data.color = pivotPointOpt.color;\r\n data.paramNameDisplay = pivotPointOpt.text;\r\n return data;\r\n }) : response;\r\n this.onSelectItem.emit({\r\n selected: pivotPointOpt,\r\n data: this.pivotPointData\r\n });\r\n })\r\n );\r\n }\r\n\r\n private handlePivotData(pivotPointOpt: any, treatmentIds: number[]): Observable {\r\n if (!pivotPointOpt || !treatmentIds || !treatmentIds.length) return of([]);\r\n if (pivotPointOpt.id === 'JobTime') return of([]);\r\n\r\n const requestBody: { treatmentIds: number[], paramNames: string[] } = {\r\n treatmentIds: treatmentIds ? treatmentIds : [],\r\n paramNames: [pivotPointOpt.id]\r\n };\r\n // case Start Stage1\r\n if (pivotPointOpt.id === 'TimeStart') requestBody.paramNames = requestBody.paramNames.concat(['BaseTreatmentDateTime']);\r\n\r\n return this.compareWellsService.getDataForPivotPoints(requestBody)\r\n .pipe(map(res => {\r\n if (!res || !res.result.length) return []; \r\n if (pivotPointOpt.id !== 'TimeStart') return res.result;\r\n\r\n const listTimeStartData: any[] = res.result.filter(data => data.paramName !== 'BaseTreatmentDateTime');\r\n const listBaseTreatmentDateTimeData: any[] = res.result.filter(data => data.paramName === 'BaseTreatmentDateTime');\r\n\r\n const baseTimeStart = minBy(listTimeStartData, (item: IPivotPointItem) => item.paramValue);\r\n const baseTreatmentDateTime = minBy(listTimeStartData, (item: IPivotPointItem) => item.paramValue);\r\n // conver time start to offset value\r\n return listTimeStartData.map(timeStartData => {\r\n const curBaseTreatmentDateTime = listBaseTreatmentDateTimeData.find(item => item.treatmentId === timeStartData.treatmentId);\r\n if (curBaseTreatmentDateTime) {\r\n timeStartData.paramValue = (timeStartData.paramValue - curBaseTreatmentDateTime.paramValue) - (baseTimeStart.paramValue - baseTreatmentDateTime.paramValue);\r\n }\r\n return timeStartData;\r\n });\r\n }));\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n {{ group.name }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0; }\\n .ul-select-dropdown .dropdown-menu.wd-115 {\\n width: 115px; }\\n .ul-select-dropdown .dropdown-menu.wd-130 {\\n width: 130px; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 120px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n height: auto;\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 20px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.has-act {\\n padding-left: 35px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i.icon-edit {\\n display: block;\\n left: 5px;\\n right: unset; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i.icon-cancel {\\n display: block;\\n left: 20px;\\n right: unset; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-group-title {\\n height: 19px;\\n background-color: #eaf5fa;\\n padding: 0 10px;\\n border-top: solid 1px #e2e2e2;\\n line-height: 1; }\\n .ul-select-dropdown .ul-select-group-title small {\\n color: #007ea3;\\n font-size: 10px;\\n font-weight: bold; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n .ul-select-realtime,\\n.ul-select-fracpro {\\n position: relative; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGxvdC10ZW1wbGF0ZS1kcm9wZG93bi9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvc3JjXFxhcHBcXHNoYXJlZFxcY29tcG9uZW50c1xccGxvdC10ZW1wbGF0ZS1kcm9wZG93blxccGxvdC10ZW1wbGF0ZS1kcm9wZG93bi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGNBQWMsRUFBQTtFQURoQjtJQUlJLFdBQVc7SUFDWCxVQUFVLEVBQUE7RUFMZDtNQVFNLFlBQVksRUFBQTtFQVJsQjtNQVlNLFlBQVksRUFBQTtFQVpsQjtJQWlCSSxrQkFBa0IsRUFBQTtFQWpCdEI7TUFvQk0sU0FBUztNQUNULGVBQWU7TUFDZixnQkFBZ0I7TUFDaEIsY0FBYztNQUNkLG1CQUFtQjtNQUNuQixZQUFZLEVBQUE7RUF6QmxCO01BNkJNLGtCQUFrQjtNQUNsQixlQUFlO01BQ2YsV0FBVztNQUNYLFFBQVE7TUFFUiw2QkFBNkIsRUFBQTtFQWxDbkM7SUF1Q0kscUJBQXFCO0lBQ3JCLFVBQVU7SUFDVixTQUFTO0lBQ1QsaUJBQWlCO0lBQ2pCLGNBQWMsRUFBQTtFQTNDbEI7TUE4Q00sZUFBZTtNQUNmLGdCQUFnQjtNQUNoQiw2QkFBNkI7TUFDN0IsaUJBQWlCO01BQ2pCLGtCQUFrQixFQUFBO0VBbER4QjtRQXFEUSxjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLFVBQVU7UUFDVixVQUFVLEVBQUE7RUF4RGxCO1VBMkRVLHlCQUF5QixFQUFBO0VBM0RuQztVQStEVSxVQUFVO1VBQ1YscUJBQXFCO1VBQ3JCLG1CQUFtQjtVQUNuQixxQkFBcUIsRUFBQTtFQWxFL0I7WUFxRVksa0JBQWtCO1lBQ2xCLFFBQVE7WUFFUiw2QkFBNkI7WUFDN0IsV0FBVztZQUNYLGVBQWUsRUFBQTtFQTFFM0I7WUE4RVkseUJBQXlCLEVBQUE7RUE5RXJDO1lBa0ZZLHlCQUF5QixFQUFBO0VBbEZyQztNQXlGTSxZQUFZO01BQ1osZUFBZTtNQUNmLGdCQUFnQjtNQUNoQiwwQkFBMEI7TUFDMUIsNkJBQTZCO01BQzdCLGtCQUFrQixFQUFBO0VBOUZ4QjtRQWlHUSxrQkFBa0IsRUFBQTtFQWpHMUI7UUFxR1EsY0FBYztRQUNkLFVBQVU7UUFDVixVQUFVLEVBQUE7RUF2R2xCO1VBMEdVLFVBQVU7VUFDVixvQkFBb0I7VUFDcEIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBO0VBN0cvQjtVQWlIVSxjQUFjO1VBQ2QsaUJBQWlCO1VBQ2pCLHlCQUF5QixFQUFBO0VBbkhuQztVQXdIVSx5QkFBeUIsRUFBQTtFQXhIbkM7UUE2SFEsa0JBQWtCO1FBQ2xCLFFBQVE7UUFFUiw2QkFBNkI7UUFDN0IsVUFBVTtRQUNWLGVBQWU7UUFDZixhQUFhLEVBQUE7RUFuSXJCO1VBc0lVLGNBQWM7VUFDZCxTQUFTO1VBQ1QsWUFBWSxFQUFBO0VBeEl0QjtVQTRJVSxjQUFjO1VBQ2QsVUFBVTtVQUNWLFlBQVksRUFBQTtFQTlJdEI7UUFtSlEsVUFBVSxFQUFBO0VBbkpsQjtRQXVKUSxjQUFjO1FBQ2QsaUJBQWlCLEVBQUE7RUF4SnpCO1VBMkpVLGNBQWM7VUFDZCxpQkFBaUIsRUFBQTtFQTVKM0I7WUFnS1kseUJBQXlCLEVBQUE7RUFoS3JDO1VBcUtVLGNBQWMsRUFBQTtFQXJLeEI7UUEwS1EsZUFBZTtRQUNmLGNBQWM7UUFDZCx5QkFBeUI7UUFDekIsaUJBQWlCLEVBQUE7RUE3S3pCO0lBbUxJLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsZUFBZTtJQUNmLDZCQUE2QjtJQUM3QixjQUFjLEVBQUE7RUF2TGxCO01BMExNLGNBQWM7TUFDZCxlQUFlO01BQ2YsaUJBQWlCLEVBQUE7RUFLdkI7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osVUFBVTtFQUNWLFlBQVk7RUFDWixNQUFNO0VBQ04sT0FBTztFQUNQLG1CQUFtQixFQUFBO0VBR3JCOztFQUVFLGtCQUFrQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcGxvdC10ZW1wbGF0ZS1kcm9wZG93bi9wbG90LXRlbXBsYXRlLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnVsLXNlbGVjdC1kcm9wZG93biB7XHJcbiAgY29sb3I6ICMzMjNjNDc7XHJcblxyXG4gIC5kcm9wZG93bi1tZW51IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMDtcclxuXHJcbiAgICAmLndkLTExNSB7XHJcbiAgICAgIHdpZHRoOiAxMTVweDtcclxuICAgIH1cclxuXHJcbiAgICAmLndkLTEzMCB7XHJcbiAgICAgIHdpZHRoOiAxMzBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC51bC1zZWxlY3Qtc2VhcmNoLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gICAgaW5wdXQge1xyXG4gICAgICBib3JkZXI6IDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDI2cHg7XHJcbiAgICAgIGhlaWdodDogMzBweDtcclxuICAgIH1cclxuXHJcbiAgICAuaWNvbi1zZWFyY2gge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC51bC1zZWxlY3QtY2hvaWNlIHtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMjBweDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG5cclxuICAgIC51bC1zZWxlY3QtY2hvaWNlLWFsbCB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XHJcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBvdXRsaW5lOiAwO1xyXG5cclxuICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPmRpdiB7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuXHJcbiAgICAgICAgICBpIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICAgIHJpZ2h0OiAxMnB4O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC51bC1zZWxlY3QtY2hvaWNlLXJvdyB7XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICBwYWRkaW5nOiA1cHggMThweCA2cHggMjBweDtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICAgICYuaGFzLWFjdCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzNXB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBvdXRsaW5lOiAwO1xyXG5cclxuICAgICAgICA+ZGl2IHtcclxuICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDtcclxuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXIsXHJcbiAgICAgICAgJjpmb2N1cyB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaSB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgcmlnaHQ6IDhweDtcclxuICAgICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAgICAgJi5pY29uLWVkaXQge1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICBsZWZ0OiA1cHg7XHJcbiAgICAgICAgICByaWdodDogdW5zZXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmljb24tY2FuY2VsIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgbGVmdDogMjBweDtcclxuICAgICAgICAgIHJpZ2h0OiB1bnNldDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGE6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgICAgICAgICAmOmhvdmVyLFxyXG4gICAgICAgICAgJjpmb2N1cyB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC51bC1zZWxlY3QtZ3JvdXAtdGl0bGUge1xyXG4gICAgaGVpZ2h0OiAxOXB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZjVmYTtcclxuICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAjZTJlMmUyO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcblxyXG4gICAgc21hbGwge1xyXG4gICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi51aS1kaXNhYmxlZCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgei1pbmRleDogNTtcclxuICBvcGFjaXR5OiAwLjY7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG5cclxuLnVsLXNlbGVjdC1yZWFsdGltZSxcclxuLnVsLXNlbGVjdC1mcmFjcHJvIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuIl19 */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IGroupPlotTemplate, IPlotTemplate, IPlotTemplateResponse } from '../../models/plot-template.model';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { PlotTemplateService } from '../../services';\r\nimport { IChannelSettingModel } from '../../models';\r\nimport { PLOT_TEMPLATE_TYPE, ChartTimeFormat } from '../../helpers/app.constants';\r\nimport { Subscription } from 'rxjs';\r\nimport { isEmpty, each } from 'lodash';\r\nimport { ConfirmTemplateModalComponent } from '../modals/confirm-template-modal/confirm-template-modal.component';\r\n\r\n@Component({\r\n selector: 'app-plot-template-dropdown',\r\n templateUrl: './plot-template-dropdown.component.html',\r\n styleUrls: ['./plot-template-dropdown.component.scss']\r\n})\r\nexport class PlotTemplateDropdownComponent implements OnInit {\r\n PLOT_TEMPLATE_TYPE = PLOT_TEMPLATE_TYPE;\r\n isOpen: boolean = false;\r\n isTemplateAction: boolean = false;\r\n plotTemplateToSave: IPlotTemplate;\r\n\r\n groupTemplates: IGroupPlotTemplate[] = [];\r\n templates: IPlotTemplateResponse[] = [];\r\n\r\n subscriptions: Subscription[] = [];\r\n\r\n @Input()\r\n set dataTemplates(templates: IPlotTemplateResponse[]) {\r\n if (!isEmpty(templates)) {\r\n this.templates = [];\r\n const groupsTpls = [];\r\n let flag = 0;\r\n let templateSelected: any;\r\n each(PLOT_TEMPLATE_TYPE, (value, key) => {\r\n // get templates by type\r\n const templatesByType = templates\r\n .filter(item => item.type === PLOT_TEMPLATE_TYPE[key])\r\n .map(item => {\r\n const result = { ...item };\r\n result.name = item.name ? item.name : `Template ${item.id}`;\r\n return result;\r\n });\r\n // check selected item\r\n if (this.selectedItem && flag === 0) {\r\n templateSelected = templatesByType.find(item => item.id === this.selectedItem.id);\r\n if (templateSelected) {\r\n flag++;\r\n }\r\n }\r\n // appends group template\r\n groupsTpls.push({\r\n name: key,\r\n templates: templatesByType\r\n });\r\n this.templates = this.templates.concat(templatesByType);\r\n });\r\n this.selectedItem = (flag !== 0) ? templateSelected : null;\r\n this.onEmitItemSelected(this.selectedItem);\r\n\r\n this.groupTemplates = groupsTpls;\r\n this.isTemplateAction = this.groupTemplates.filter(group => {\r\n return group.templates.findIndex(template => template.type === PLOT_TEMPLATE_TYPE.User || template.type === PLOT_TEMPLATE_TYPE.Company) !== -1;\r\n }).length > 0;\r\n } else {\r\n this.selectedItem = null;\r\n this.groupTemplates = [];\r\n this.isTemplateAction = false;\r\n }\r\n }\r\n\r\n @Input()\r\n set channelSettings(settings: IChannelSettingModel) {\r\n this.plotTemplateToSave = this.plotTemplateService.channelSettingsToPlotTemplate(settings);\r\n }\r\n @Input() companyId: number;\r\n @Input() wellId: number;\r\n @Input() timeFormat: ChartTimeFormat;\r\n @Input() commentType: string;\r\n @Input() isShowComments: boolean;\r\n @Input() isShowTooltip: boolean;\r\n\r\n @Input()\r\n onlySaveTemplateByCompany: boolean = false;\r\n\r\n @Input() loading: boolean;\r\n\r\n @Input()\r\n selectedItem: IPlotTemplateResponse;\r\n\r\n @Input()\r\n hideSaveButton: boolean = false;\r\n\r\n @Output() itemSelected: EventEmitter = new EventEmitter();\r\n @Output() templatesChange: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private dialogService: NbDialogService,\r\n private plotTemplateService: PlotTemplateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onEmitItemSelected(data): void {\r\n this.itemSelected.emit(data);\r\n }\r\n\r\n onEmitTemplatesChange(): void {\r\n this.templatesChange.emit();\r\n }\r\n\r\n openDropdown() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n isSelected(item): boolean {\r\n if (this.selectedItem && this.selectedItem.id) {\r\n return item.id === this.selectedItem.id;\r\n }\r\n return false;\r\n }\r\n\r\n selectItem(event: Event, templateRes) {\r\n event.stopPropagation();\r\n if (!this.selectedItem || templateRes.id !== this.selectedItem.id) {\r\n const data = { ...templateRes };\r\n this.selectedItem = data;\r\n\r\n this.onEmitItemSelected(data);\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n deleteItem(event: Event, templateRes) {\r\n event.stopPropagation();\r\n if (templateRes && templateRes.id) {\r\n this.subscriptions.push(\r\n this.plotTemplateService\r\n .deleteByWell(this.wellId, templateRes.id)\r\n .subscribe(\r\n item => {\r\n this.onEmitTemplatesChange();\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n clickOutside() {\r\n this.isOpen = false;\r\n }\r\n\r\n saveTemplate() {\r\n\r\n this.dialogService.open(\r\n ConfirmTemplateModalComponent,\r\n {\r\n context: {\r\n hideMessage: this.onlySaveTemplateByCompany ? true : false,\r\n showAllWellsCheckbox: this.onlySaveTemplateByCompany ? false : true,\r\n defaultIsAllWells: this.onlySaveTemplateByCompany ? true : false,\r\n templates: this.templates,\r\n isScatterPlot: false\r\n }\r\n }\r\n )\r\n .onClose\r\n .subscribe(\r\n res => {\r\n if (res) {\r\n this.plotTemplateToSave.timeFormat = this.timeFormat;\r\n this.plotTemplateToSave.commentType = this.commentType;\r\n this.plotTemplateToSave.isShowComments = this.isShowComments;\r\n this.plotTemplateToSave.isShowTooltip = this.isShowTooltip;\r\n const payload: any = {\r\n name: res.name,\r\n type: PLOT_TEMPLATE_TYPE.User,\r\n isAll: res.isAllWells,\r\n content: this.plotTemplateToSave\r\n };\r\n if (res.isAllWells) {\r\n payload.type = PLOT_TEMPLATE_TYPE.Company;\r\n }\r\n const templateRes = this.templates.find(template => template.name === res.name);\r\n if (templateRes && templateRes.id) {\r\n this.updatePlotTempateByWeel(this.wellId, templateRes.id, payload);\r\n } else {\r\n this.createPlotTempateByWeel(this.wellId, payload);\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n private createPlotTempateByWeel(wellId, payload): void {\r\n this.subscriptions.push(\r\n this.plotTemplateService\r\n .createByWell(wellId, payload)\r\n .subscribe(\r\n item => {\r\n this.onEmitTemplatesChange();\r\n }\r\n )\r\n );\r\n }\r\n\r\n private updatePlotTempateByWeel(wellId, plotTemplateId, payload): void {\r\n this.subscriptions.push(\r\n this.plotTemplateService\r\n .updateByWell(wellId, plotTemplateId, payload)\r\n .subscribe(\r\n item => {\r\n this.onEmitTemplatesChange();\r\n }\r\n )\r\n );\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
Rename Channel
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Original Channel Name
{{originalName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Existing Channel Name
{{item}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
New Channel Name
\\r\\n
\\r\\n {{item.channelName}}\\r\\n Channel Name\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".app-rename-channel .header .content-header .icon-arrow-left {\\n cursor: pointer;\\n color: #3c8dbc;\\n font-size: 16px; }\\n\\n.app-rename-channel .header .content-header .title-header {\\n display: inline-block;\\n margin-left: 12px; }\\n\\n.app-rename-channel .app-table-container {\\n overflow: visible; }\\n\\n.app-rename-channel .ng-select-fake {\\n height: 24px;\\n border: 0;\\n padding-left: 12px;\\n padding-top: 5px;\\n padding-bottom: 5px;\\n font-size: 12px;\\n position: relative;\\n cursor: pointer; }\\n\\n.app-rename-channel .ng-select-fake:active {\\n color: #fff;\\n background-color: #545b62;\\n border-color: #4e555b;\\n box-shadow: none; }\\n\\n.app-rename-channel .ng-select-fake:focus {\\n box-shadow: none; }\\n\\n.app-rename-channel .ng-select-fake > span {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n\\n.app-rename-channel .ng-select-fake > span.fake-name {\\n opacity: 1; }\\n\\n.app-rename-channel .ng-select-fake > i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcmVuYW1lLWNoYW5uZWwvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHJlbmFtZS1jaGFubmVsXFxyZW5hbWUtY2hhbm5lbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUlRLGVBQWU7RUFDZixjQUFjO0VBQ2QsZUFBZSxFQUFBOztBQU52QjtFQVNRLHFCQUFxQjtFQUNyQixpQkFBaUIsRUFBQTs7QUFWekI7RUFlSSxpQkFBaUIsRUFBQTs7QUFmckI7RUFrQkksWUFBWTtFQUNaLFNBQVM7RUFDVCxrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLGVBQWUsRUFBQTs7QUF6Qm5CO0lBMkJNLFdBQVc7SUFDWCx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGdCQUFnQixFQUFBOztBQTlCdEI7SUFpQ00sZ0JBQWdCLEVBQUE7O0FBakN0QjtJQW9DTSxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLHFCQUFxQixFQUFBOztBQXpDM0I7TUEyQ1EsVUFBVSxFQUFBOztBQTNDbEI7SUErQ00sa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxjQUFjO0lBQ2QsUUFBUTtJQUVSLDZCQUE2QixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvcmVuYW1lLWNoYW5uZWwvcmVuYW1lLWNoYW5uZWwuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYXBwLXJlbmFtZS1jaGFubmVsIHtcclxuICAuaGVhZGVyIHtcclxuICAgIC5jb250ZW50LWhlYWRlciB7XHJcbiAgICAgIC5pY29uLWFycm93LWxlZnQge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBjb2xvcjogIzNjOGRiYztcclxuICAgICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgIH1cclxuICAgICAgLnRpdGxlLWhlYWRlciB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5hcHAtdGFibGUtY29udGFpbmVyIHtcclxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gIH1cclxuICAubmctc2VsZWN0LWZha2Uge1xyXG4gICAgaGVpZ2h0OiAyNHB4O1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xyXG4gICAgcGFkZGluZy10b3A6IDVweDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAmOmFjdGl2ZSB7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyO1xyXG4gICAgICBib3JkZXItY29sb3I6ICM0ZTU1NWI7XHJcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgIH1cclxuICAgID4gc3BhbiB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICYuZmFrZS1uYW1lIHtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICA+IGkge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgICBmb250LXNpemU6IDhweDtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ== */\"","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { Subscription } from 'rxjs';\r\nimport { Helper } from '../../helpers/helper';\r\nimport { ChannelMappingService } from '../../services/channel-mapping.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { remove, findIndex, forEach, isNil } from 'lodash';\r\nimport { LoadingOverlayService } from '../../services/loading-overlay.service';\r\nimport { UserAuthService } from '../../services/user-auth.service';\r\nimport { UserRolesService } from '../../services/user-roles.service';\r\nimport { ToasterService } from '../../services/toaster.service';\r\nimport { IRenameChannel } from '../../models';\r\n\r\n@Component({\r\n selector: 'app-rename-channel',\r\n templateUrl: './rename-channel.component.html',\r\n styleUrls: ['./rename-channel.component.scss']\r\n})\r\nexport class RenameChannelComponent implements OnInit, OnDestroy {\r\n\r\n subscriptions: Subscription[] = [];\r\n submitted: boolean = false;\r\n loading: boolean = false;\r\n pattern: any = /^[_A-Za-z0-9\\s\\-[\\]()%]*$/;\r\n\r\n wellId: number;\r\n treatmentId: number;\r\n\r\n companyId: number;\r\n isCarboAdmin: boolean = false;\r\n\r\n // Original Channel\r\n originalNameList: string[] = [];\r\n // Existing Channel\r\n existingChannelList: string[] = [];\r\n // New Channel\r\n channelList: any[] = [];\r\n newChannelList: any[] = [];\r\n\r\n paramChannel: IRenameChannel[] = [];\r\n\r\n constructor(private location: Location,\r\n private route: ActivatedRoute,\r\n private channelMappingService: ChannelMappingService,\r\n private loadingOverlayService: LoadingOverlayService,\r\n private userAuthService: UserAuthService,\r\n private userRolesService: UserRolesService,\r\n private toasterService: ToasterService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.route.queryParams\r\n .pipe(filter(params => params.wellId))\r\n .subscribe((param: any) => {\r\n if (param) {\r\n this.wellId = param.wellId;\r\n this.treatmentId = param.treatmentId;\r\n this.getAllChannel(param.wellId, param.treatmentId);\r\n this.getChannelNameList();\r\n }\r\n });\r\n const userInfo = this.userAuthService.getUserInfo();\r\n const userRole = this.userRolesService.toUserRole(userInfo);\r\n this.isCarboAdmin = this.userRolesService.isCarboAdmin(userRole);\r\n this.companyId = userInfo.companyId;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n Helper.unsubscribe(this.subscriptions);\r\n }\r\n\r\n backClicked() {\r\n this.location.back();\r\n }\r\n\r\n getAllChannel(wellId: any, treatmentId: any) {\r\n this.newChannelList = [];\r\n this.subscriptions.push(\r\n this.channelMappingService.getOriginalName(wellId, treatmentId)\r\n .subscribe((res: {result: {listExistName: string[], listOriginalName: string[]}}) => {\r\n if (res && res.result) {\r\n this.originalNameList = res.result.listOriginalName;\r\n if (!res.result.listExistName || !res.result.listExistName.length) this.existingChannelList = this.originalNameList;\r\n else {\r\n this.existingChannelList = res.result.listExistName.map((value: string, index: number) => {\r\n if (!value || !value.trim()) return this.originalNameList[index];\r\n else return value;\r\n });\r\n }\r\n forEach(this.originalNameList, (item, index) => {\r\n this.newChannelList.push({\r\n id: index,\r\n channelName: null,\r\n isEditable: false\r\n });\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n getChannelNameList() {\r\n this.subscriptions.push(\r\n this.channelMappingService.getChannelName()\r\n .subscribe((res) => {\r\n if (res) {\r\n this.channelList = res.result;\r\n }\r\n })\r\n );\r\n }\r\n\r\n channelsSelector(index: number): any[] {\r\n const curNewItem = this.newChannelList[index];\r\n const newListExisting = this.newChannelList.filter(item => item.channelName !== null && item.channelName !== undefined && curNewItem.channelName !== item.channelName);\r\n if (!newListExisting.length) return this.channelList;\r\n return this.channelList.filter(channelName => {\r\n return newListExisting.findIndex(item => item.channelName === channelName) === -1;\r\n });\r\n }\r\n\r\n selectChannel(event: any, index: number) {\r\n if (event) {\r\n const indexParam = findIndex(this.paramChannel, { originalName: this.originalNameList[index] });\r\n if (indexParam !== -1) {\r\n this.paramChannel[indexParam].mappedName = event;\r\n } else {\r\n const param = {\r\n originalName: this.originalNameList[index],\r\n mappedName: event\r\n };\r\n this.paramChannel.push(param);\r\n }\r\n this.newChannelList[index].channelName = event;\r\n this.newChannelList[index].isEditable = false;\r\n } else {\r\n remove(this.paramChannel, { originalName: this.originalNameList[index] });\r\n this.newChannelList[index].channelName = null;\r\n this.newChannelList[index].isEditable = false;\r\n }\r\n }\r\n\r\n onSubmit(param: IRenameChannel[], renameLater?: boolean) {\r\n this.loadingOverlayService.show();\r\n this.submitted = true;\r\n this.loading = true;\r\n\r\n const finalizeFunc = () => {\r\n forEach(this.newChannelList, i => {\r\n i.channelName = null;\r\n i.isEditable = false;\r\n });\r\n this.paramChannel = [];\r\n this.getChannelNameList();\r\n this.getAllChannel(this.wellId, this.treatmentId);\r\n this.submitted = false;\r\n this.loading = false;\r\n this.loadingOverlayService.hide();\r\n };\r\n const observable$ = !renameLater\r\n ? this.channelMappingService.renameChannel(this.treatmentId, param, finalizeFunc)\r\n : this.channelMappingService.renameChannelLater(this.treatmentId, param, finalizeFunc);\r\n this.subscriptions.push(observable$.subscribe());\r\n }\r\n\r\n trackByFn(index, item) {\r\n return index; // or item.id\r\n }\r\n\r\n addNewChannel(event: any, index: number) {\r\n if (event) {\r\n event = event.replace(/\\s+/g, ' ');\r\n const name = event.trim();\r\n if (name.length >= 2 && name.length <= 50 && this.pattern.test(name)) {\r\n const param: any = {\r\n companyId: this.isCarboAdmin ? null : this.companyId,\r\n channelMappedName: name\r\n };\r\n this.subscriptions.push(\r\n this.channelMappingService.create(param, () => {\r\n })\r\n .subscribe((res) => {\r\n this.toasterService.showSuccess('Created Channel Success');\r\n this.selectChannel(name, index);\r\n this.getChannelNameList();\r\n }, (error) => {\r\n })\r\n );\r\n } else {\r\n this.toasterService.showError('The channel name has to be between 2 and 50 characters long and not contain decimal digits and special characters (except for: space, -, %, underscore, (), []).');\r\n }\r\n }\r\n }\r\n\r\n findIndexParam(index: number) {\r\n const indexParam = findIndex(this.paramChannel, { originalName: this.originalNameList[index] });\r\n return indexParam;\r\n }\r\n\r\n onChangeSelect(item: any) {\r\n forEach(this.newChannelList, i => {\r\n i.isEditable = false;\r\n });\r\n setTimeout(() => {\r\n item.isEditable = true;\r\n });\r\n }\r\n resetChannel(index: number) {\r\n if (index > -1 && !isNil(this.originalNameList[index])) {\r\n this.selectChannel(this.originalNameList[index], index);\r\n }\r\n }\r\n isNotResetChannel(index: number): boolean {\r\n if (!this.originalNameList || !this.existingChannelList) return true;\r\n else if (isNil(this.existingChannelList[index])) return false;\r\n return this.originalNameList[index] === this.existingChannelList[index];\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NlYXJjaC1wYWQtbGlzdC9zZWFyY2gtcGFkLWxpc3QuY29tcG9uZW50LnNjc3MifQ== */\"","import { User } from './../../models/user.model';\r\nimport { UserAuthService } from './../../services/user-auth.service';\r\nimport { SearchPadPadOptionsStorageService } from './../../services/storage/search-pad-options-storage.service';\r\nimport { Component, OnInit, Output, EventEmitter, Input, OnDestroy } from '@angular/core';\r\nimport { FormGroup, AbstractControl } from '@angular/forms';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { SearchPadListControlService } from './shared/services/search-pad-list-control.service';\r\nimport { SearchPadListService } from './shared/services/search-pad-list.service';\r\nimport { SearchPadListBase } from './shared/models/search-pad-list-base';\r\nimport { isEmpty } from 'lodash';\r\nimport { PAD_SEARCH_OPTIONS } from '../../helpers/app.constants';\r\n\r\n@Component({\r\n selector: 'app-search-pad-list',\r\n templateUrl: './search-pad-list.component.html',\r\n styleUrls: ['./search-pad-list.component.scss']\r\n})\r\nexport class SearchPadListComponent implements OnInit, OnDestroy {\r\n destroy$: Subject = new Subject();\r\n form: FormGroup;\r\n country: AbstractControl;\r\n state: AbstractControl;\r\n county: AbstractControl;\r\n serviceCompanyId: AbstractControl;\r\n operatorId: AbstractControl;\r\n prospect: AbstractControl;\r\n pad: AbstractControl;\r\n formation: AbstractControl;\r\n\r\n @Output() searchChange: EventEmitter = new EventEmitter();\r\n\r\n listContries$: Observable;\r\n listStates$: Observable;\r\n listConties$: Observable;\r\n listPads$: Observable;\r\n listFormations$: Observable;\r\n listServiceCompanies$: Observable;\r\n listOperatorCompanies$: Observable;\r\n defaultOptions: any[] = PAD_SEARCH_OPTIONS;\r\n selectedOptions: any[] = [];\r\n listOptions: SearchPadListBase[] = [];\r\n listOptionsStorage: object = {};\r\n\r\n user: User;\r\n userId: number;\r\n isCarbo: boolean = false;\r\n isService: boolean = false;\r\n isOperator: boolean = false;\r\n\r\n @Input() selectedSearchParams;\r\n\r\n constructor(\r\n private userAuthService: UserAuthService,\r\n private searchPadListControlService: SearchPadListControlService,\r\n private searchPadListService: SearchPadListService,\r\n private searchPadPadOptionsStorageService: SearchPadPadOptionsStorageService\r\n ) {\r\n this.user = this.userAuthService.getUserInfo();\r\n if (this.user) {\r\n if (this.user.companyType === 'Carbo') {\r\n this.isCarbo = true;\r\n this.isService = false;\r\n this.isOperator = false;\r\n } else if (this.user.companyType === 'Service') {\r\n this.isCarbo = false;\r\n this.isService = true;\r\n this.isOperator = false;\r\n } else if (this.user.companyType === 'Operator') {\r\n this.isCarbo = false;\r\n this.isService = false;\r\n this.isOperator = true;\r\n }\r\n this.userId = this.user.userId;\r\n }\r\n this.getListOptionsStorage();\r\n }\r\n\r\n get filterlistOptions() {\r\n const filterOptions = (list: any[], selected: any[], isNumber?: boolean) => {\r\n const res: any[] = [];\r\n for (const item of list) {\r\n if (!item) res.push(null);\r\n const find = isNumber ? selected.find(x => x === item.id) : selected.find(x => x === item);\r\n if (!find) continue;\r\n res.push(item);\r\n }\r\n return res;\r\n }\r\n\r\n const mapOptions = (list: any[], selected: any[], label: string, isNumber?: boolean) => {\r\n if (selected && selected.length) {\r\n const findIndex = list.findIndex(x => x.label === label)\r\n if (findIndex >= 0) list[findIndex].options = filterOptions(list[findIndex].options, selected, isNumber);\r\n }\r\n return list;\r\n }\r\n\r\n let list = this.listOptions;\r\n list = mapOptions(list, this.selectedSearchParams.countries, 'Country', false);\r\n list = mapOptions(list, this.selectedSearchParams.counties, 'County', false);\r\n list = mapOptions(list, this.selectedSearchParams.states, 'State', false);\r\n list = mapOptions(list, this.selectedSearchParams.formations, 'Formation', false);\r\n list = mapOptions(list, this.selectedSearchParams.services, 'Service', true);\r\n list = mapOptions(list, this.selectedSearchParams.operators, 'Operator', true);\r\n return list;\r\n }\r\n\r\n private getListOptionsStorage(): void {\r\n this.listOptionsStorage = this.searchPadPadOptionsStorageService.getListOptions(this.userId);\r\n }\r\n\r\n private setListOptionsStorage(): void {\r\n this.searchPadPadOptionsStorageService.setListOptions(this.listOptionsStorage, this.userId);\r\n }\r\n\r\n private removeListOptionsStorage(): void {\r\n this.listOptionsStorage = {};\r\n this.searchPadPadOptionsStorageService.removeListOptions();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.selectedOptions = this.defaultOptions;\r\n this.getSearchPadListOptions();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n private getSearchPadListOptions(): void {\r\n let paramOptions: { id: any; name: string }[];\r\n if (!this.listOptionsStorage) {\r\n this.listOptionsStorage = {};\r\n paramOptions = this.selectedOptions;\r\n } else {\r\n paramOptions = this.selectedOptions.filter(item => {\r\n return this.listOptionsStorage[item.id] === null || this.listOptionsStorage[item.id] === undefined;\r\n });\r\n }\r\n if (paramOptions && paramOptions.length > 0) {\r\n this.searchPadListService.getSearchPadListOptions(paramOptions)\r\n .subscribe(\r\n options => {\r\n paramOptions.forEach(opt => {\r\n const option = options ? options.find(item => item.key === opt.id) : null;\r\n if (option) {\r\n this.listOptionsStorage[option.key] = option;\r\n }\r\n });\r\n this.setListOptionsStorage();\r\n this.createForm();\r\n }\r\n );\r\n } else {\r\n this.createForm();\r\n }\r\n }\r\n\r\n private createForm(): void {\r\n const options: any[] = [];\r\n this.selectedOptions.forEach(item => {\r\n if (this.listOptionsStorage[item.id]) {\r\n if (this.listOptionsStorage[item.id].key === 'serviceCompanyId') {\r\n if (this.isCarbo || this.isOperator) {\r\n options.push(this.listOptionsStorage[item.id]);\r\n }\r\n } else if (this.listOptionsStorage[item.id].key === 'operatorId') {\r\n if (this.isCarbo || this.isService) {\r\n options.push(this.listOptionsStorage[item.id]);\r\n }\r\n } else {\r\n options.push(this.listOptionsStorage[item.id]);\r\n }\r\n }\r\n });\r\n this.listOptions = options;\r\n if (!this.form) {\r\n this.form = this.searchPadListControlService.toFormGroup(options);\r\n }\r\n }\r\n\r\n onSearch(): void {\r\n const formData = this.form.value;\r\n if (formData && !isEmpty(formData.state)) {\r\n formData.state = formData.state.map(item => item.id).join(',');\r\n if (formData.state === \"\") formData.state = \",\";\r\n }\r\n if (formData && !isEmpty(formData.county)) {\r\n formData.county = formData.county.map(item => item.id).join(',');\r\n if (formData.county === \"\") formData.county = \",\";\r\n }\r\n if (formData && !isEmpty(formData.pad)) {\r\n formData.pad = formData.pad.map(item => item.id).join(',');\r\n if (formData.pad === \"\") formData.pad = \",\";\r\n }\r\n if (formData && !isEmpty(formData.formation)) {\r\n formData.formation = formData.formation.map(item => item.id).join(',');\r\n if (formData.formation === \"\") formData.formation = \",\";\r\n }\r\n if (formData && !isEmpty(formData.operatorId)) {\r\n formData.operatorId = formData.operatorId.map(item => item.id).join(',');\r\n if (formData.operatorId === \"\") formData.operatorId = \",\";\r\n }\r\n if (formData && !isEmpty(formData.serviceId)) {\r\n formData.serviceId = formData.serviceId.map(item => item.id).join(',');\r\n if (formData.serviceId === \"\") formData.serviceId = \",\";\r\n }\r\n this.searchChange.emit(formData);\r\n }\r\n\r\n reset(): void {\r\n this.form.reset();\r\n this.removeListOptionsStorage();\r\n this.searchChange.emit(this.form.value);\r\n this.getSearchPadListOptions();\r\n }\r\n\r\n}\r\n","\r\nexport class SearchPadListBase {\r\n value: T;\r\n key: string;\r\n label: string;\r\n controlType: string;\r\n type: string;\r\n options: {key: string, value: string}[];\r\n order: number;\r\n\r\n constructor(options: {\r\n value?: T,\r\n key?: string,\r\n label?: string,\r\n required?: boolean,\r\n order?: number,\r\n controlType?: string,\r\n type?: string\r\n } = {}) {\r\n this.value = options.value;\r\n this.key = options.key || '';\r\n this.label = options.label || '';\r\n this.order = options.order === undefined ? 1 : options.order;\r\n this.controlType = options.controlType || '';\r\n this.type = options.type || '';\r\n }\r\n}\r\n","import { SearchPadListBase } from './search-pad-list-base';\r\n\r\n\r\nexport class SearchPadListDropdown extends SearchPadListBase {\r\n controlType = 'dropdown';\r\n options: {key: string, value: string}[] = [];\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.options = options['options'] || [];\r\n }\r\n}\r\n","import { SearchPadListBase } from './search-pad-list-base';\r\n\r\n\r\nexport class SearchPadListTextBox extends SearchPadListBase {\r\n controlType = 'textbox';\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = options['type'] || '';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SearchPadListBase } from '../models/search-pad-list-base';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class SearchPadListControlService {\r\n\r\n constructor() { }\r\n\r\n toFormGroup(searchOptions: SearchPadListBase[] ) {\r\n const group: any = {};\r\n\r\n searchOptions.forEach(opt => {\r\n group[opt.key] = opt.key === 'pad' ? new FormControl(opt.value || []) : new FormControl(opt.value || '');\r\n });\r\n return new FormGroup(group);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SearchPadListDropdown } from '../models/search-pad-list-dropdown';\r\nimport { SearchPadListTextBox } from '../models/search-pad-list-textbox';\r\nimport { of, forkJoin } from 'rxjs';\r\nimport { HistoricalWellsService } from '../../../../../pages/manage/historical-wells/historical-wells.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { TreatmentService } from '../../../../services/treatment.service';\r\nimport { isArray } from 'lodash';\r\n\r\n@Injectable()\r\nexport class SearchPadListService {\r\n\r\n constructor(\r\n private historicalWellsService: HistoricalWellsService,\r\n private treatmentService: TreatmentService,\r\n ) { }\r\n\r\n getSearchPadListOptions(paramOptions: {id: any; name: string}[]) {\r\n const req$ = paramOptions.map(opt => {\r\n return this.getDataByKey(opt.id).pipe(map(res => {\r\n if (res && isArray(res)) {\r\n return new SearchPadListDropdown({\r\n key: opt.id,\r\n label: opt.name,\r\n options: res,\r\n });\r\n } else {\r\n return new SearchPadListTextBox({\r\n key: opt.id,\r\n label: opt.name,\r\n });\r\n }\r\n }));\r\n });\r\n\r\n return forkJoin(req$);\r\n }\r\n\r\n getDataByKey(key) {\r\n if (key === 'country') {\r\n return this.getCountries$();\r\n } else if (key === 'state') {\r\n return this.getStates$();\r\n } else if (key === 'county') {\r\n return this.getCounties$();\r\n } else if (key === 'formation') {\r\n return this.getFormations$();\r\n } else if (key === 'serviceId') {\r\n return this.getServiceCompanies$();\r\n } else if (key === 'operatorId') {\r\n return this.getOperatorCompanies$();\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n getCountries$() {\r\n return this.historicalWellsService.getCountries().pipe(map(res => res.result));\r\n }\r\n\r\n getStates$() {\r\n return this.historicalWellsService.getStates().pipe(map(res => res.result));\r\n }\r\n\r\n getCounties$() {\r\n return this.historicalWellsService.getCounties().pipe(map(res => res.result));\r\n }\r\n\r\n getServiceCompanies$() {\r\n return this.treatmentService.getListCompanyByType(1).pipe(map(res => res.result.items));\r\n }\r\n\r\n getOperatorCompanies$() {\r\n return this.treatmentService.getListCompanyByType(0).pipe(map(res => res.result.items));\r\n }\r\n\r\n getFormations$() {\r\n return this.historicalWellsService.getFormations().pipe(map(res => res.result));\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
    \\r\\n
  • \\r\\n

    {{ item.label }}

    \\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n\"","module.exports = \".app-search-well-api {\\n position: absolute;\\n width: 100%;\\n background: #fff;\\n z-index: 5; }\\n .app-search-well-api .item-selected {\\n color: #007ea3;\\n font-weight: bold; }\\n .app-search-well-api .list-container {\\n max-height: 540px;\\n overflow: auto; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2VhcmNoLXdlbGwtYXBpL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxzZWFyY2gtd2VsbC1hcGlcXHNlYXJjaC13ZWxsLWFwaS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUpaO0lBTUksY0FBYztJQUNkLGlCQUFpQixFQUFBO0VBUHJCO0lBVUksaUJBQWlCO0lBQ2pCLGNBQWMsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NlYXJjaC13ZWxsLWFwaS9zZWFyY2gtd2VsbC1hcGkuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYXBwLXNlYXJjaC13ZWxsLWFwaSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgei1pbmRleDogNTtcclxuICAuaXRlbS1zZWxlY3RlZCB7XHJcbiAgICBjb2xvcjogIzAwN2VhMztcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIH1cclxuICAubGlzdC1jb250YWluZXIge1xyXG4gICAgbWF4LWhlaWdodDogNTQwcHg7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcbn0iXX0= */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-search-well-api',\r\n templateUrl: './search-well-api.component.html',\r\n styleUrls: ['./search-well-api.component.scss']\r\n})\r\nexport class SearchWellApiComponent implements OnInit {\r\n @Input() listItems: any[];\r\n @Input() isOpen: boolean = false;\r\n @Output() selectItem: EventEmitter = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n toggleSelect(event, item, itemIndex) {\r\n event.preventDefault();\r\n if (item) {\r\n this.isOpen = true;\r\n item.selected = !item.selected;\r\n this.deselectItems(itemIndex);\r\n\r\n this.selectItem.emit(item);\r\n }\r\n }\r\n\r\n deselectItems(itemIndex) {\r\n this.listItems.forEach((value, index) => {\r\n if (index !== itemIndex) {\r\n value.selected = false;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","\r\nexport class SearchWellListBase {\r\n value: T;\r\n key: string;\r\n label: string;\r\n controlType: string;\r\n type: string;\r\n options: {key: string, value: string}[];\r\n order: number;\r\n\r\n constructor(options: {\r\n value?: T,\r\n key?: string,\r\n label?: string,\r\n required?: boolean,\r\n order?: number,\r\n controlType?: string,\r\n type?: string\r\n } = {}) {\r\n this.value = options.value;\r\n this.key = options.key || '';\r\n this.label = options.label || '';\r\n this.order = options.order === undefined ? 1 : options.order;\r\n this.controlType = options.controlType || '';\r\n this.type = options.type || '';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SearchWellListBase } from './search-well-list-base';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\n\r\n@Injectable()\r\nexport class SearchWellListControlService {\r\n\r\n constructor() { }\r\n\r\n toFormGroup(searchOptions: SearchWellListBase[] ) {\r\n let group: any = {};\r\n\r\n searchOptions.forEach(opt => {\r\n group[opt.key] = opt.key === 'pad' ? new FormControl(opt.value || []) : new FormControl(opt.value || '');\r\n });\r\n return new FormGroup(group);\r\n }\r\n}\r\n","import { SearchWellListBase } from './search-well-list-base';\r\n\r\n\r\nexport class SearchWellListDropdown extends SearchWellListBase {\r\n controlType = 'dropdown';\r\n options: {key: string, value: string}[] = [];\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.options = options['options'] || [];\r\n }\r\n}\r\n","import { SearchWellListBase } from \"./search-well-list-base\";\r\n\r\n\r\nexport class SearchWellListTextBox extends SearchWellListBase {\r\n controlType = 'textbox';\r\n type: string;\r\n\r\n constructor(options: {} = {}) {\r\n super(options);\r\n this.type = options['type'] || '';\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NlYXJjaC13ZWxsLWxpc3Qvc2VhcmNoLXdlbGwtbGlzdC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit, Output, EventEmitter, Input, OnDestroy } from '@angular/core';\r\nimport { FormGroup, AbstractControl } from '@angular/forms';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { SearchWellListControlService } from './search-well-list-control.service';\r\nimport { SearchWellListService } from './search-well-list.service';\r\nimport { SearchWellListBase } from './search-well-list-base';\r\nimport { uniqBy, isEmpty, each } from 'lodash';\r\nimport { WellSearchSettingsService } from '../../services/well-search-settings.service';\r\nimport { takeUntil, finalize, tap } from 'rxjs/operators';\r\nimport { WELL_SEARCH_OPTIONS } from '../../helpers/app.constants';\r\nimport { SearchWellOptionsStorageService, UserAuthService } from '../../services';\r\n\r\n@Component({\r\n selector: 'app-search-well-list',\r\n templateUrl: './search-well-list.component.html',\r\n styleUrls: ['./search-well-list.component.scss']\r\n})\r\nexport class SearchWellListComponent implements OnInit, OnDestroy {\r\n destroy$: Subject = new Subject();\r\n form: FormGroup;\r\n country: AbstractControl;\r\n state: AbstractControl;\r\n county: AbstractControl;\r\n serviceCompanyId: AbstractControl;\r\n operatorId: AbstractControl;\r\n prospect: AbstractControl;\r\n pad: AbstractControl;\r\n formation: AbstractControl;\r\n\r\n @Input() isService: boolean = false;\r\n @Input() isOperator: boolean = false;\r\n @Output()\r\n onSearch: EventEmitter = new EventEmitter();\r\n\r\n listContries$: Observable;\r\n listStates$: Observable;\r\n listConties$: Observable;\r\n listPads$: Observable;\r\n listFormations$: Observable;\r\n listServiceCompanies$: Observable;\r\n listOperatorCompanies$: Observable;\r\n defaultOptions: any[] = [\r\n {\r\n id: 'state',\r\n name: 'State',\r\n },\r\n {\r\n id: 'county',\r\n name: 'County',\r\n },\r\n {\r\n id: 'pad',\r\n name: 'Pad',\r\n },\r\n {\r\n id: 'formation',\r\n name: 'Formation',\r\n },\r\n {\r\n id: 'serviceCompanyId',\r\n name: 'Service Company',\r\n },\r\n {\r\n id: 'operatorId',\r\n name: 'Operator',\r\n }\r\n ];\r\n selectedOptions: any[] = [];\r\n listOptions: SearchWellListBase[] = [];\r\n listOptionsStorage: object = {};\r\n\r\n userId: number;\r\n\r\n constructor(\r\n private userAuthService: UserAuthService,\r\n private searchWellListControlService: SearchWellListControlService,\r\n private searchWellListService: SearchWellListService,\r\n private wellSearchSettingsService: WellSearchSettingsService,\r\n private searchWellOptionsStorageService: SearchWellOptionsStorageService\r\n ) {\r\n const user = this.userAuthService.getUserInfo();\r\n if (user) this.userId = user.userId;\r\n this.getListOptionsStorage();\r\n }\r\n\r\n private getListOptionsStorage(): void {\r\n this.listOptionsStorage = this.searchWellOptionsStorageService.getListOptions(this.userId);\r\n }\r\n\r\n private setListOptionsStorage(): void {\r\n this.searchWellOptionsStorageService.setListOptions(this.listOptionsStorage, this.userId);\r\n }\r\n\r\n private removeListOptionsStorage(): void {\r\n this.listOptionsStorage = {};\r\n this.searchWellOptionsStorageService.removeListOptions();\r\n }\r\n\r\n ngOnInit() {\r\n this.wellSearchSettingsService\r\n .getSettings()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(items => {\r\n if (!isEmpty(items)) {\r\n // map selected options\r\n this.selectedOptions = items.map(item => {\r\n return WELL_SEARCH_OPTIONS.find(opt => opt.name === item.name);\r\n });\r\n this.selectedOptions = uniqBy(this.selectedOptions, 'id');\r\n } else {\r\n this.selectedOptions = this.defaultOptions;\r\n }\r\n this.getSearchWellListOptions();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n getSearchWellListOptions() {\r\n let paramOptions: { id: any; name: string }[];\r\n if (!this.listOptionsStorage) {\r\n this.listOptionsStorage = {};\r\n paramOptions = this.selectedOptions;\r\n } else {\r\n paramOptions = this.selectedOptions.filter(item => {\r\n return this.listOptionsStorage[item.id] === null || this.listOptionsStorage[item.id] === undefined;\r\n });\r\n }\r\n if (paramOptions && paramOptions.length > 0) {\r\n this.searchWellListService.getSearchWellListOptions(paramOptions)\r\n .subscribe(\r\n options => {\r\n paramOptions.forEach(opt => {\r\n const option = options ? options.find(item => item.key === opt.id) : null;\r\n if (option) {\r\n this.listOptionsStorage[option.key] = option;\r\n }\r\n });\r\n this.setListOptionsStorage();\r\n this.createForm();\r\n }\r\n )\r\n } else {\r\n this.createForm();\r\n }\r\n\r\n }\r\n\r\n private createForm(): void {\r\n const options: any[] = [];\r\n this.selectedOptions.forEach(item => {\r\n if (this.listOptionsStorage[item.id]) {\r\n options.push(this.listOptionsStorage[item.id]);\r\n }\r\n });\r\n this.listOptions = options;\r\n if (!this.form) {\r\n this.form = this.searchWellListControlService.toFormGroup(options);\r\n }\r\n }\r\n\r\n search() {\r\n const formData = this.form.value;\r\n if (formData && !isEmpty(formData.state)) {\r\n formData.state = formData.state.map(item => item.id).join(',');\r\n }\r\n if (formData && !isEmpty(formData.county)) {\r\n formData.county = formData.county.map(item => item.id).join(',');\r\n }\r\n if (formData && !isEmpty(formData.pad)) {\r\n formData.pad = formData.pad.map(item => item.id).join(',');\r\n }\r\n if (formData && !isEmpty(formData.formation)) {\r\n formData.formation = formData.formation.map(item => item.id).join(',');\r\n }\r\n if (formData && !isEmpty(formData.operatorId)) {\r\n formData.operatorId = formData.operatorId.map(item => item.id).join(',');\r\n }\r\n if (formData && !isEmpty(formData.serviceCompanyId)) {\r\n formData.serviceCompanyId = formData.serviceCompanyId.map(item => item.id).join(',');\r\n }\r\n this.onSearch.emit(formData);\r\n }\r\n\r\n reset() {\r\n this.form.reset();\r\n this.removeListOptionsStorage();\r\n this.onSearch.emit(this.form.value);\r\n this.getSearchWellListOptions();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SearchWellListDropdown } from './search-well-list-dropdown';\r\nimport { SearchWellListTextBox } from './search-well-list-textbox';\r\nimport { of, forkJoin } from 'rxjs';\r\nimport { HistoricalWellsService } from '../../../pages/manage/historical-wells/historical-wells.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { TreatmentService } from '../../services/treatment.service';\r\nimport { isArray } from 'lodash';\r\n\r\n@Injectable()\r\nexport class SearchWellListService {\r\n\r\n constructor(\r\n private historicalWellsService: HistoricalWellsService,\r\n private treatmentService: TreatmentService,\r\n ) { }\r\n\r\n getSearchWellListOptions(paramOptions: {id: any; name: string}[]) {\r\n const req$ = paramOptions.map(opt => {\r\n return this.getDataByKey(opt.id).pipe(map(res => {\r\n if (res && isArray(res)) {\r\n return new SearchWellListDropdown({\r\n key: opt.id,\r\n label: opt.name,\r\n options: res,\r\n });\r\n } else {\r\n return new SearchWellListTextBox({\r\n key: opt.id,\r\n label: opt.name,\r\n });\r\n }\r\n }))\r\n });\r\n\r\n return forkJoin(req$);\r\n }\r\n\r\n getDataByKey(key) {\r\n if (key === 'state') {\r\n return this.getStates$();\r\n } else if (key === 'county') {\r\n return this.getCounties$();\r\n } else if (key === 'pad') {\r\n return this.getPads$();\r\n } else if (key === 'formation') {\r\n return this.getFormations$();\r\n } else if (key === 'serviceCompanyId') {\r\n return this.getServiceCompanies$();\r\n } else if (key === 'operatorId') {\r\n return this.getOperatorCompanies$();\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n\r\n getCountries$() {\r\n return this.historicalWellsService.getCountries().pipe(map(res => res.result));\r\n }\r\n\r\n getStates$() {\r\n return this.historicalWellsService.getStates().pipe(map(res => res.result));\r\n }\r\n\r\n getCounties$() {\r\n return this.historicalWellsService.getCounties().pipe(map(res => res.result));\r\n }\r\n\r\n getServiceCompanies$() {\r\n return this.treatmentService.getListCompanyByType(1).pipe(map(res => res.result.items));\r\n }\r\n\r\n getOperatorCompanies$() {\r\n return this.treatmentService.getListCompanyByType(0).pipe(map(res => res.result.items));\r\n }\r\n\r\n getPads$() {\r\n return this.historicalWellsService.getPads().pipe(map(res => res.result));\r\n }\r\n\r\n getFormations$() {\r\n return this.historicalWellsService.getFormations().pipe(map(res => res.result));\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n 0\\\" class=\\\"ul-select-match-text\\\" [innerHTML]=\\\"active[0].text\\\">\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n 0 && curActiveItemIndex >= 0 && active[curActiveItemIndex]\\\" class=\\\"ul-select-match-text\\\" [innerHTML]=\\\"active[curActiveItemIndex].text\\\">\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Realtime Channel\\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Fracpro Channel\\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".ul-select-container {\\n position: relative; }\\n .ul-select-container:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\\n border-radius: 0.25rem; }\\n .ul-select-toggle {\\n width: 100%;\\n display: inline-block;\\n overflow: hidden;\\n text-align: left;\\n vertical-align: middle;\\n color: #36404b;\\n background-color: #ffffff;\\n padding-right: 20px;\\n padding-left: 10px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n border: 1px solid #e2e2e2;\\n position: relative;\\n font-size: 12px;\\n height: 30px;\\n font-weight: normal;\\n line-height: normal; }\\n .ul-select-toggle .ui-select-placeholder {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n .ul-select-toggle .ul-select-match-text {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: block; }\\n .ul-select-toggle i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-remove .ul-select-remove-all {\\n display: inline-block;\\n position: relative;\\n border-radius: 3px;\\n border: solid 1px #f8ebeb;\\n background-color: #f8ebeb;\\n padding: 7px 35px 7px 10px;\\n line-height: 1;\\n cursor: pointer; }\\n .ul-select-remove .ul-select-remove-all .ul-select-remove-text {\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.17;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all i {\\n position: absolute;\\n right: 15px;\\n top: 50%;\\n transform: translate(0, -50%);\\n font-size: 13px;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all:active {\\n opacity: 0.5; }\\n .ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown.multiple-row {\\n margin-right: 40px; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-add-new-container {\\n position: relative;\\n cursor: pointer; }\\n .ul-select-dropdown .ul-select-add-new-container .ui-select-add-new {\\n border-top: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n border-bottom: 0;\\n border-right: 0;\\n border-left: 0;\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.5;\\n color: #007ea3;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n padding-right: 26px;\\n height: auto;\\n background-color: #e1ecef; }\\n .ul-select-dropdown .ul-select-add-new-container .icon-plus {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 120px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 10px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-group-title {\\n height: 19px;\\n background-color: #eaf5fa;\\n padding: 0 10px;\\n border-top: solid 1px #e2e2e2;\\n line-height: 1; }\\n .ul-select-dropdown .ul-select-group-title small {\\n color: #007ea3;\\n font-size: 10px;\\n font-weight: bold; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n .ul-select-realtime, .ul-select-fracpro {\\n position: relative; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWNoYW5uZWxzL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxzZWxlY3QtY2hhbm5lbHNcXHNlbGVjdC1jaGFubmVscy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFpQixFQUFBO0VBRG5CO0lBR0ksVUFBVTtJQUNWLGdEQUFnRDtJQUNoRCxzQkFBc0IsRUFBQTtFQUcxQjtFQUNFLFdBQVc7RUFDWCxxQkFBcUI7RUFDckIsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixzQkFBc0I7RUFDdEIsY0FBYztFQUNkLHlCQUF5QjtFQUN6QixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQixtQkFBbUIsRUFBQTtFQWpCckI7SUFtQkksWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLFdBQVc7SUFDWCxxQkFBcUIsRUFBQTtFQXhCekI7SUEyQkksbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLGNBQWMsRUFBQTtFQS9CbEI7SUFrQ0ksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxjQUFjO0lBQ2QsUUFBUTtJQUVSLDZCQUE2QixFQUFBO0VBSWpDO0VBRUkscUJBQXFCO0VBQ3JCLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QiwwQkFBMEI7RUFDMUIsY0FBYztFQUNkLGVBQWUsRUFBQTtFQVRuQjtJQVdNLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGNBQWMsRUFBQTtFQWRwQjtJQWlCTSxrQkFBa0I7SUFD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c2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWNoYW5uZWxzL3NlbGVjdC1jaGFubmVscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi51bC1zZWxlY3QtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICAmOmZvY3VzIHtcclxuICAgIG91dGxpbmU6IDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xyXG4gIH1cclxufVxyXG4udWwtc2VsZWN0LXRvZ2dsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIGNvbG9yOiAjMzY0MDRiO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgcGFkZGluZy10b3A6IDhweDtcclxuICBwYWRkaW5nLWJvdHRvbTogOHB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBoZWlnaHQ6IDMwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG4gIC51aS1zZWxlY3QtcGxhY2Vob2xkZXIge1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1cclxuICAudWwtc2VsZWN0LW1hdGNoLXRleHQge1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG4gIGkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDEwcHg7XHJcbiAgICBmb250LXNpemU6IDhweDtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gIH1cclxufVxyXG5cclxuLnVsLXNlbGVjdC1yZW1vdmUge1xyXG4gIC51bC1zZWxlY3QtcmVtb3ZlLWFsbCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBib3JkZXI6IHNvbGlkIDFweCAjZjhlYmViO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZWJlYjtcclxuICAgIHBhZGRpbmc6IDdweCAzNXB4IDdweCAxMHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAudWwtc2VsZWN0LXJlbW92ZS10ZXh0IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTc7XHJcbiAgICAgIGNvbG9yOiAjZWI1YTUyO1xyXG4gICAgfVxyXG4gICAgaSB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IDE1cHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgICBjb2xvcjogI2ViNWE1MjtcclxuICAgIH1cclxuICAgICY6YWN0aXZlIHtcclxuICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnVsLXNlbGVjdC1kcm9wZG93biB7XHJcbiAgY29sb3I6ICMzMjNjNDc7XHJcbiAgJi5tdWx0aXBsZS1yb3cge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xyXG4gIH1cclxuICAuZHJvcGRvd24tbWVudSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG4gIC51bC1zZWxlY3Qtc2VhcmNoLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBpbnB1dCB7XHJcbiAgICAgIGJvcmRlcjogMDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICBjb2xvcjogIzMyM2M0NztcclxuICAgICAgcGFkZGluZy1yaWdodDogMjZweDtcclxuICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgfVxyXG4gICAgLmljb24tc2VhcmNoIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC51bC1zZWxlY3QtYWRkLW5ldy1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgLnVpLXNlbGVjdC1hZGQtbmV3IHtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDA7XHJcbiAgICAgIGJvcmRlci1yaWdodDogMDtcclxuICAgICAgYm9yZGVyLWxlZnQ6IDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICBwYWRkaW5nLXRvcDogOHB4O1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4O1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMWVjZWY7XHJcbiAgICB9XHJcbiAgICAuaWNvbi1wbHVzIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC51bC1zZWxlY3QtY2hvaWNlIHtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBtYXgtaGVpZ2h0OiAxMjBweDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgLnVsLXNlbGVjdC1jaG9pY2UtYWxsIHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZTJlMjtcclxuICAgICAgcGFkZGluZzogNnB4IDEwcHg7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuICAgICAgICA+IGRpdiB7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgICAgICAgIGkge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICAgICAgcmlnaHQ6IDEycHg7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLnVsLXNlbGVjdC1jaG9pY2Utcm93IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICBwYWRkaW5nOiA1cHggMThweCA2cHggMTBweDtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgIGNvbG9yOiAjMzIzYzQ3O1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICA+IGRpdiB7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgd29yZC1icmVhazoga2VlcC1hbGw7XHJcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICByaWdodDogOHB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgIGE6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIH1cclxuICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIC5kcm9wZG93bi1pdGVtIHtcclxuICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaSB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1ncm91cC10aXRsZSB7XHJcbiAgICBoZWlnaHQ6IDE5cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFmNWZhO1xyXG4gICAgcGFkZGluZzogMCAxMHB4O1xyXG4gICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNlMmUyZTI7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIHNtYWxsIHtcclxuICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udWktZGlzYWJsZWQge1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHotaW5kZXg6IDU7XHJcbiAgb3BhY2l0eTogMC42O1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuLnVsLXNlbGVjdC1yZWFsdGltZSwgLnVsLXNlbGVjdC1mcmFjcHJvIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn0iXX0= */\"","import {ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ChangeDetectionStrategy} from '@angular/core';\r\nimport {SelectItem} from '../select/select-item';\r\nimport {compact, orderBy, findIndex} from 'lodash';\r\nimport {ToasterService} from '../../services/toaster.service';\r\n\r\n@Component({\r\n selector: 'app-select-channels',\r\n templateUrl: './select-channels.component.html',\r\n styleUrls: ['./select-channels.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SelectChannelsComponent {\r\n inputMode: boolean = false;\r\n optionsOpened: boolean = false;\r\n\r\n public options: Array = [];\r\n public fracProOptions: Array = [];\r\n public itemObjects: Array = [];\r\n public fracProItemObjects: Array = [];\r\n private _active: Array = [];\r\n private _disabled: boolean = false;\r\n public activeOption: SelectItem = new SelectItem('object');\r\n\r\n public itemEmpty: SelectItem = new SelectItem('');\r\n\r\n searchVal: string = '';\r\n\r\n @ViewChild('searchInput') searchElement: ElementRef;\r\n\r\n @Input() public idField: string = 'id';\r\n @Input() public textField: string = 'text';\r\n @Input() public childrenField: string = 'children';\r\n @Input() public allowEmpty: boolean = true;\r\n @Input() public placeholder: string = '';\r\n @Input() public multiple: boolean = false;\r\n @Input() public maxItems: number;\r\n @Input() public addNewItem: boolean = false;\r\n @Input() public isFullWidth: boolean = false;\r\n @Input() public sortSelect: boolean = true;\r\n @Input() public autoClose: boolean = true;\r\n\r\n @Input()\r\n set item(value: Array) {\r\n if (!value) {\r\n this.itemObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.itemObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.itemObjects = orderBy(this.itemObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set fracproItem(value: Array) {\r\n if (!value) {\r\n this.fracProItemObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.fracProItemObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.fracProItemObjects = orderBy(this.fracProItemObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n public set active(selectedItems: Array) {\r\n if (!selectedItems || selectedItems.length === 0) {\r\n this._active = [];\r\n this.activeOption = new SelectItem('');\r\n } else {\r\n selectedItems = compact(selectedItems);\r\n\r\n const areItemsStrings = typeof selectedItems[0] === 'string';\r\n this._active = selectedItems.map((item: any) => {\r\n const data = areItemsStrings ? item : { id: item[this.idField], text: item[this.textField], prefix: item.prefix };\r\n this.activeOption = new SelectItem(data);\r\n return new SelectItem(data);\r\n });\r\n }\r\n }\r\n\r\n public get active(): Array {\r\n return this._active;\r\n }\r\n\r\n @Input() curActiveItemIndex: number;\r\n\r\n @Input()\r\n public set fakeOpen(open: boolean) {\r\n if (!!open) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n @Input()\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n if (this._disabled === true) {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n public get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Output() public selected: EventEmitter = new EventEmitter();\r\n @Output() public removed: EventEmitter = new EventEmitter();\r\n\r\n constructor(private toasterService: ToasterService,\r\n private ref: ChangeDetectorRef,\r\n private element: ElementRef) {\r\n }\r\n\r\n protected isActive(value: SelectItem): boolean {\r\n if (!value) {\r\n return false;\r\n }\r\n let isActive = this.activeOption && this.activeOption.id === value.id;\r\n if (!!this.multiple) isActive = isActive || this.active.findIndex(item => item.id === value.id) !== -1;\r\n return isActive;\r\n }\r\n\r\n protected matchClick(e: any) {\r\n if (this._disabled === true) {\r\n return;\r\n }\r\n this.inputMode = !this.inputMode;\r\n if (!!this.inputMode) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n open() {\r\n this.options = this.itemObjects.filter((item: any) => !this.multiple || !this.autoClose || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.fracProOptions = this.fracProItemObjects.filter((item: any) => !this.multiple || !this.autoClose || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.optionsOpened = true;\r\n this.ref.detectChanges();\r\n if (!this.multiple) {\r\n const itemActive = this.element.nativeElement.querySelector('.ul-select-choice .ul-select-choice-row.active .dropdown-item');\r\n if (itemActive) {\r\n itemActive.focus();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.searchElement.nativeElement.focus();\r\n });\r\n }\r\n\r\n public clickOutside(): void {\r\n this.inputMode = false;\r\n this.optionsOpened = false;\r\n }\r\n\r\n public inputEvent(e: any) {\r\n this.searchVal = e.target.value.trim();\r\n if (this.searchVal) {\r\n this.options = this.itemObjects.filter((item: any) => (!this.multiple || !this.autoClose || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.fracProOptions = this.fracProItemObjects.filter((item: any) => (!this.multiple || !this.autoClose || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n } else {\r\n this.options = this.itemObjects.filter((item: any) => !this.multiple || !this.autoClose || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.fracProOptions = this.fracProItemObjects.filter((item: any) => !this.multiple || !this.autoClose || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n }\r\n }\r\n\r\n private selectMatch(value: SelectItem, e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n if (this.multiple) {\r\n if (this.maxItems) {\r\n if (this.active.length < this.maxItems) {\r\n this.active.push(value);\r\n this.selected.emit(value);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n } else {\r\n this.active.push(value);\r\n this.selected.emit(value);\r\n }\r\n } else {\r\n this.active[0] = value;\r\n this.activeOption = value;\r\n this.selected.emit(value);\r\n }\r\n if (!!this.autoClose) {\r\n this.clickOutside();\r\n }\r\n\r\n }\r\n\r\n elementFocus(realtime: boolean) {\r\n let element: any;\r\n if (realtime) {\r\n element = this.element.nativeElement.querySelector('.ul-select-realtime .ul-select-choice');\r\n } else {\r\n element = this.element.nativeElement.querySelector('.ul-select-fracpro .ul-select-choice');\r\n }\r\n this.ref.detectChanges();\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n mainClickKeyDown(event: any, realtime: boolean) {\r\n let index: number;\r\n // Up\r\n if (event.keyCode === 38) {\r\n event.preventDefault();\r\n if (realtime) {\r\n index = findIndex(this.options, {id: this.activeOption.id, text: this.activeOption.text});\r\n this.activeOption = index > 0 ? this.options[index - 1] : this.options[0];\r\n } else {\r\n index = findIndex(this.fracProOptions, {id: this.activeOption.id, text: this.activeOption.text});\r\n this.activeOption = index > 0 ? this.fracProOptions[index - 1] : this.fracProOptions[0];\r\n }\r\n this.ensureActiveValue((index > 0 ? (index - 1) : -1), realtime);\r\n return;\r\n }\r\n // Down\r\n if (event.keyCode === 40) {\r\n event.preventDefault();\r\n if (realtime) {\r\n index = findIndex(this.options, {id: this.activeOption.id, text: this.activeOption.text});\r\n if (index < (this.options.length - 1)) {\r\n this.activeOption = index >= 0 ? this.options[index + 1] : this.options[0];\r\n }\r\n } else {\r\n index = findIndex(this.fracProOptions, {id: this.activeOption.id, text: this.activeOption.text});\r\n if (index < (this.fracProOptions.length - 1)) {\r\n this.activeOption = index >= 0 ? this.fracProOptions[index + 1] : this.fracProOptions[0];\r\n }\r\n }\r\n this.ensureActiveValue((index + 1), realtime);\r\n return;\r\n }\r\n // End\r\n if (event.keyCode === 35) {\r\n if (realtime) {\r\n if (this.options.length > 0) {\r\n this.activeOption = this.options[this.options.length - 1];\r\n }\r\n } else {\r\n if (this.fracProOptions.length > 0) {\r\n this.activeOption = this.fracProOptions[this.fracProOptions.length - 1];\r\n }\r\n }\r\n return;\r\n }\r\n // Home\r\n if (event.keyCode === 36) {\r\n if (realtime) {\r\n if (this.options.length > 0) {\r\n this.activeOption = this.options[0];\r\n }\r\n } else {\r\n if (this.fracProOptions.length > 0) {\r\n this.activeOption = this.fracProOptions[0];\r\n }\r\n }\r\n return;\r\n }\r\n if (event.keyCode === 13) {\r\n if (this.active.indexOf(this.activeOption) === -1) {\r\n this.selectMatch(this.activeOption, event);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n public ensureActiveValue(indexActive, realtime) {\r\n let container: any;\r\n if (realtime) {\r\n container = this.element.nativeElement.querySelector('.ul-select-realtime .ul-select-choice');\r\n } else {\r\n container = this.element.nativeElement.querySelector('.ul-select-fracpro .ul-select-choice');\r\n }\r\n let posY: number;\r\n if (!container) {\r\n return;\r\n }\r\n const choices = container.querySelectorAll('.ul-select-choice-row');\r\n if (choices.length < 1) {\r\n return;\r\n }\r\n const active = choices[indexActive];\r\n if (!active) {\r\n return;\r\n }\r\n // 19px is group title height\r\n posY = active.offsetTop + active.clientHeight - container.scrollTop - 19;\r\n const height: number = container.offsetHeight;\r\n if (posY > height) {\r\n container.scrollTop += posY - height;\r\n } else if (posY <= active.clientHeight) {\r\n container.scrollTop -= active.clientHeight - posY;\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n \\r\\n 1\\\" class=\\\"ul-select-match-text\\\">{{activeOption.length}} item(s) selected\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n Groups\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".ul-select-container {\\n position: relative; }\\n .ul-select-container:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\\n border-radius: 0.25rem; }\\n .ul-select-container.ul-inline {\\n display: inline-block; }\\n .ul-select-toggle {\\n width: 100%;\\n display: inline-block;\\n overflow: hidden;\\n text-align: left;\\n vertical-align: middle;\\n color: #36404b;\\n background-color: #ffffff;\\n padding-right: 20px;\\n padding-left: 10px;\\n padding-top: 5px;\\n padding-bottom: 5px;\\n border: 1px solid #e2e2e2;\\n position: relative;\\n font-size: 12px;\\n height: 30px;\\n font-weight: normal;\\n line-height: normal; }\\n .ul-select-toggle .ui-select-placeholder {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n .ul-select-toggle .ul-select-match-text {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: block; }\\n .ul-select-toggle i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown.multiple-row {\\n margin-right: 40px; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0;\\n min-width: 5rem; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 180px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice.ul-select-choice-height {\\n max-height: 270px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 10px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-group-title {\\n height: 19px;\\n background-color: #eaf5fa;\\n padding: 0 10px;\\n border-top: solid 1px #e2e2e2;\\n line-height: 1; }\\n .ul-select-dropdown .ul-select-group-title small {\\n color: #007ea3;\\n font-size: 10px;\\n font-weight: bold; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n .ul-select-group {\\n position: relative; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWRlc2lnbi1hY3R1YWwvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHNlbGVjdC1kZXNpZ24tYWN0dWFsXFxzZWxlY3QtZGVzaWduLWFjdHVhbC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFpQixFQUFBO0VBRG5CO0lBR0ksVUFBVTtJQUNWLGdEQUFnRDtJQUNoRCxzQkFBc0IsRUFBQTtFQUwxQjtJQVFJLHFCQUFxQixFQUFBO0VBR3pCO0VBQ0UsV0FBVztFQUNYLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtFQUN0QixjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLG1CQUFtQixFQUFBO0VBakJyQjtJQW1CSSxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLHFCQUFxQixFQUFBO0VBeEJ6QjtJQTJCSSxtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsY0FBYyxFQUFBO0VBL0JsQjtJQWtDSSxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLGNBQWM7SUFDZCxRQUFRO0lBRVIsNkJBQTZCLEVBQUE7RUFHakM7RUFDRSxjQUFjLEVBQUE7RUFEaEI7SUFHSSxrQkFBa0IsRUFBQTtFQUh0QjtJQU1JLFdBQVc7SUFDWCxVQUFVO0lBQ1YsZUFBZSxFQUFBO0VBUm5CO0lBV0ksa0JBQWtCLEVBQUE7RUFYdEI7TUFhTSxTQUFTO01BQ1QsZUFBZTtNQUNmLGdCQUFnQjtNQUNoQixjQUFjO01BQ2QsbUJBQW1CO01BQ25CLFlBQVksRUFBQTtFQWxCbEI7TUFxQk0sa0JBQWtCO01BQ2xCLGVBQWU7TUFDZixXQUFXO01BQ1gsUUFBUTtNQUVSLDZCQUE2QixFQUFBO0VBMUJuQztJQThCSSxxQkFBcUI7SUFDckIsVUFBVTtJQUNWLFNBQVM7SUFDVCxpQkFBaUI7SUFDakIsY0FBYyxFQUFBO0VBbENsQjtNQW9DTSxpQkFBaUIsRUFBQTtFQXBDdkI7TUF3Q00sZUFBZTtNQUNmLGdCQUFnQjtNQUNoQiwwQkFBMEI7TUFDMUIsNkJBQTZCO01BQzdCLGtCQUFrQixFQUFBO0VBNUN4QjtRQThDUSxjQUFjO1FBQ2QsVUFBVTtRQUNWLFVBQVUsRUFBQTtFQWhEbEI7VUFrRFUsVUFBVTtVQUNWLG9CQUFvQjtVQUNwQixtQkFBbUI7VUFDbkIscUJBQXFCLEVBQUE7RUFyRC9CO1VBd0RVLGNBQWM7VUFDZCxpQkFBaUI7VUFDakIseUJBQXlCLEVBQUE7RUExRG5DO1VBNkRVLHlCQUF5QixFQUFBO0VBN0RuQztRQWlFUSxrQkFBa0I7UUFDbEIsUUFBUTtRQUVSLDZCQUE2QjtRQUM3QixVQUFVO1FBQ1YsZUFBZTtRQUNmLGFBQWEsRUFBQTtFQXZFckI7UUEwRVEsVUFBVSxFQUFBO0VBMUVsQjtRQTZFUSxjQUFjO1FBQ2QsaUJBQWlCLEVBQUE7RUE5RXpCO1VBZ0ZVLGNBQWM7VUFDZCxpQkFBaUIsRUFBQTtFQWpGM0I7WUFtRlkseUJBQXlCLEVBQUE7RUFuRnJDO1VBdUZVLGNBQWMsRUFBQTtFQXZGeEI7UUEyRlEsZUFBZTtRQUNmLGNBQWM7UUFDZCx5QkFBeUI7UUFDekIsaUJBQWlCLEVBQUE7RUE5RnpCO0lBbUdJLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsZUFBZTtJQUNmLDZCQUE2QjtJQUM3QixjQUFjLEVBQUE7RUF2R2xCO01BeUdNLGNBQWM7TUFDZCxlQUFlO01BQ2YsaUJBQWlCLEVBQUE7RUFJdkI7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osVUFBVTtFQUNWLFlBQVk7RUFDWixNQUFNO0VBQ04sT0FBTztFQUNQLG1CQUFtQixFQUFBO0VBRXJCO0VBQ0Usa0JBQWtCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zZWxlY3QtZGVzaWduLWFjdHVhbC9zZWxlY3QtZGVzaWduLWFjdHVhbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi51bC1zZWxlY3QtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICAmOmZvY3VzIHtcclxuICAgIG91dGxpbmU6IDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7XHJcbiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xyXG4gIH1cclxuICAmLnVsLWlubGluZXtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcbn1cclxuLnVsLXNlbGVjdC10b2dnbGUge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICBjb2xvcjogIzM2NDA0YjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gIHBhZGRpbmctdG9wOiA1cHg7XHJcbiAgcGFkZGluZy1ib3R0b206IDVweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxuICAudWktc2VsZWN0LXBsYWNlaG9sZGVyIHtcclxuICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcbiAgLnVsLXNlbGVjdC1tYXRjaC10ZXh0IHtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuICBpIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgZm9udC1zaXplOiA4cHg7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICB9XHJcbn1cclxuLnVsLXNlbGVjdC1kcm9wZG93biB7XHJcbiAgY29sb3I6ICMzMjNjNDc7XHJcbiAgJi5tdWx0aXBsZS1yb3cge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xyXG4gIH1cclxuICAuZHJvcGRvd24tbWVudSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtaW4td2lkdGg6IDVyZW07XHJcbiAgfVxyXG4gIC51bC1zZWxlY3Qtc2VhcmNoLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBpbnB1dCB7XHJcbiAgICAgIGJvcmRlcjogMDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICBjb2xvcjogIzMyM2M0NztcclxuICAgICAgcGFkZGluZy1yaWdodDogMjZweDtcclxuICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgfVxyXG4gICAgLmljb24tc2VhcmNoIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC51bC1zZWxlY3QtY2hvaWNlIHtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBtYXgtaGVpZ2h0OiAxODBweDtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgJi51bC1zZWxlY3QtY2hvaWNlLWhlaWdodHtcclxuICAgICAgbWF4LWhlaWdodDogMjcwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnVsLXNlbGVjdC1jaG9pY2Utcm93IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICBwYWRkaW5nOiA1cHggMThweCA2cHggMTBweDtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMmUyZTI7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgIGNvbG9yOiAjMzIzYzQ3O1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICA+IGRpdiB7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgd29yZC1icmVhazoga2VlcC1hbGw7XHJcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICByaWdodDogOHB4O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgIGE6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIH1cclxuICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIC5kcm9wZG93bi1pdGVtIHtcclxuICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaSB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1ncm91cC10aXRsZSB7XHJcbiAgICBoZWlnaHQ6IDE5cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFmNWZhO1xyXG4gICAgcGFkZGluZzogMCAxMHB4O1xyXG4gICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNlMmUyZTI7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIHNtYWxsIHtcclxuICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi51aS1kaXNhYmxlZCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgei1pbmRleDogNTtcclxuICBvcGFjaXR5OiAwLjY7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxufVxyXG4udWwtc2VsZWN0LWdyb3VwIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuIl19 */\"","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild, OnInit } from '@angular/core';\r\nimport { compact, orderBy, cloneDeep, isEmpty, remove } from 'lodash';\r\nimport { ToasterService } from '../../services/toaster.service';\r\nimport { SelectItem } from '../select-items/select-item';\r\n\r\ninterface IDesignActionItem {\r\n id: string;\r\n text: string;\r\n designValue: string;\r\n actualValue: string;\r\n}\r\n\r\ninterface IModelValue {\r\n groupOption: string;\r\n selected: IDesignActionItem[]\r\n}\r\n\r\n@Component({\r\n selector: 'app-select-design-actual',\r\n templateUrl: './select-design-actual.component.html',\r\n styleUrls: ['./select-design-actual.component.scss']\r\n})\r\nexport class SelectDesignActualComponent implements OnDestroy {\r\n\r\n optionsOpened: boolean = false;\r\n\r\n private _disabled: boolean = false;\r\n public activeOption: IDesignActionItem[] = [];\r\n\r\n searchVal: string = '';\r\n\r\n public options: IDesignActionItem[] = [\r\n { designValue: 'desPumpTime', actualValue: 'totalPumpTime', text: 'Pump Time', id: 'Pump Time' },\r\n { designValue: 'desCleanVol', actualValue: 'baseFluidVol', text: 'Clean Vol', id: 'Clean Vol' },\r\n { designValue: 'desSlurryVol', actualValue: 'totalVolume', text: 'Slurry Vol', id: 'Slurry Vol' },\r\n ];\r\n\r\n modelValue: IModelValue = {\r\n groupOption: 'well',\r\n selected: []\r\n };\r\n\r\n @Input() public maxShowedItem: boolean = false;\r\n @Input() public placeholder: string = '';\r\n @Input() public multiple: boolean = false;\r\n @Input() public maxItems: number;\r\n @Input() public isFullWidth: boolean = false;\r\n @Input() public sortSelect: boolean = true;\r\n\r\n @Input()\r\n public set active(selectedItems: IDesignActionItem[]) {\r\n if (isEmpty(this.activeOption) && !isEmpty(selectedItems)) {\r\n selectedItems = compact(selectedItems);\r\n const areItemsStrings = typeof selectedItems[0] === 'string';\r\n this.activeOption = selectedItems;\r\n }\r\n }\r\n\r\n public get active(): IDesignActionItem[] {\r\n return this.activeOption;\r\n }\r\n\r\n @Input()\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n if (this._disabled === true) {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n public get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Output() public selected: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private toasterService: ToasterService,\r\n private ref: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.ref.detach();\r\n }\r\n\r\n isActive(value: SelectItem): boolean {\r\n const item = this.activeOption.find(i => i.id === value.id);\r\n return !!item;\r\n }\r\n\r\n matchClick(e: any) {\r\n if (this._disabled === true) {\r\n return;\r\n }\r\n this.open();\r\n }\r\n\r\n open() {\r\n this.optionsOpened = true;\r\n }\r\n\r\n public clickOutside(): void {\r\n this.optionsOpened = false;\r\n }\r\n\r\n selectMatch(value, e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n const isSelectedItem = this.activeOption.find(item => item.id === value.id);\r\n if (this.multiple) {\r\n if (isSelectedItem) {\r\n remove(this.activeOption, (item => item.id === value.id));\r\n } else {\r\n if (this.maxItems) {\r\n if (this.activeOption.length < this.maxItems) {\r\n this.activeOption.push(value);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n } else {\r\n this.activeOption.push(value);\r\n }\r\n }\r\n } else {\r\n if (isSelectedItem) {\r\n this.activeOption = [];\r\n } else {\r\n this.activeOption = [value];\r\n }\r\n }\r\n // emit selected items\r\n this.modelValue.selected = this.activeOption;\r\n this.selected.emit(this.modelValue);\r\n }\r\n\r\n}\r\n\r\n","export class SelectItem {\r\n public id: string;\r\n public text: string;\r\n public children: Array;\r\n public parent: SelectItem;\r\n public prefix: string;\r\n\r\n public constructor(source: any) {\r\n if (typeof source === 'string') {\r\n this.id = this.text = source;\r\n }\r\n if (typeof source === 'object') {\r\n if (source.id || source.id === 0) {\r\n this.id = source.id;\r\n } else {\r\n this.id = source.text;\r\n }\r\n this.text = source.text;\r\n if (source.children && source.text) {\r\n this.children = source.children.map((c: any) => {\r\n const r: SelectItem = new SelectItem(c);\r\n r.parent = this;\r\n return r;\r\n });\r\n this.text = source.text;\r\n }\r\n if (source.prefix) {\r\n this.prefix = source.prefix;\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n \\r\\n 1\\\" class=\\\"ul-select-match-text\\\">{{activeOption.length}} item(s) selected\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","module.exports = \".ul-select-container {\\n position: relative; }\\n .ul-select-container:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\\n border-radius: 0.25rem; }\\n .ul-select-container.ul-inline {\\n display: inline-block; }\\n .ul-select-toggle {\\n width: 100%;\\n display: inline-block;\\n overflow: hidden;\\n text-align: left;\\n vertical-align: middle;\\n color: #36404b;\\n background-color: #ffffff;\\n padding-right: 20px;\\n padding-left: 10px;\\n padding-top: 5px;\\n padding-bottom: 5px;\\n border: 1px solid #e2e2e2;\\n position: relative;\\n font-size: 12px;\\n height: 30px;\\n font-weight: normal;\\n line-height: normal; }\\n .ul-select-toggle .ui-select-placeholder {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n .ul-select-toggle .ul-select-match-text {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: block; }\\n .ul-select-toggle i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-remove .ul-select-remove-all {\\n display: inline-block;\\n position: relative;\\n border-radius: 3px;\\n border: solid 1px #f8ebeb;\\n background-color: #f8ebeb;\\n padding: 3px 20px 3px 7px;\\n line-height: 1;\\n cursor: pointer; }\\n .ul-select-remove .ul-select-remove-all .ul-select-remove-text {\\n font-size: 12px;\\n font-weight: normal;\\n line-height: normal;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all i {\\n position: absolute;\\n right: 5px;\\n top: 50%;\\n transform: translate(0, -50%);\\n font-size: 10px;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all:active {\\n opacity: 0.5; }\\n .ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown.multiple-row {\\n margin-right: 40px; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0;\\n min-width: 5rem; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-add-new-container {\\n position: relative;\\n cursor: pointer; }\\n .ul-select-dropdown .ul-select-add-new-container .ui-select-add-new {\\n border-top: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n border-bottom: 0;\\n border-right: 0;\\n border-left: 0;\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.5;\\n color: #007ea3;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n padding-right: 26px;\\n height: auto;\\n background-color: #e1ecef; }\\n .ul-select-dropdown .ul-select-add-new-container .icon-plus {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 180px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice.ul-select-choice-height {\\n max-height: 270px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 10px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px;\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LWl0ZW1zL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxzZWxlY3QtaXRlbXNcXHNlbGVjdC1pdGVtcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFpQixFQUFBO0VBRG5CO0lBR0ksVUFBVTtJQUNWLGdEQUFnRDtJQUNoRCxzQkFBc0IsRUFBQTtFQUwxQjtJQVFJLHFCQUFxQixFQUFBO0VBR3pCO0VBQ0UsV0FBVztFQUNYLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtFQUN0QixjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLG1CQUFtQixFQUFBO0VBakJyQjtJQW1CSSxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLHFCQUFxQixFQUFBO0VBeEJ6QjtJQTJCSSxtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsY0FBYyxFQUFBO0VBL0JsQjtJQWtDSSxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLGNBQWM7SUFDZCxRQUFRO0lBRVIsNkJBQTZCLEVBQUE7RUFHakM7RUFFSSxxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixjQUFjO0VBQ2QsZUFBZSxFQUFBO0VBVG5CO0lBV00sZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsY0FBYyxFQUFBO0VBZHBCO0lBaUJNLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsUUFBUTtJQUVSLDZCQUE2QjtJQUM3QixlQUFlO0lBQ2YsY0FBYyxFQUFBO0VBdkJwQjtJQTBCTSxZQUFZLEVBQUE7RUFJbEI7RUFDRSxjQUFjLEVBQUE7RUFEaEI7SUFHSSxrQkFBa0IsRUFBQTtFQUh0QjtJQU1JLFdBQVc7SUFDWCxVQUFVO0lBQ1YsZUFBZSxFQUFBO0VBUm5CO0lBV0ksa0JBQWtCLEVBQUE7RUFYdEI7TUFhTSxTQUFTO01BQ1QsZUFBZTtNQUNmLGdCQUFnQjtNQUNoQixjQUFjO01BQ2QsbUJBQW1CO01BQ25CLFlBQVksRUFBQTtFQWxCbEI7TUFxQk0sa0JBQWtCO01BQ2xCLGVBQWU7TUFDZixXQUFXO01BQ1gsUUFBUTtNQUVSLDZCQUE2QixFQUFBO0VBMUJuQztJQThCSSxrQkFBa0I7SUFDbEIsZUFBZSxFQUFBO0VBL0JuQjtNQWlDTSx5Q0FBeUM7TUFDekMsZ0JBQWdCO01BQ2hCLGdCQUFnQjtNQUNoQixlQUFlO01BQ2YsY0FBYztNQUNkLGVBQWU7TUFDZixpQkFBaUI7TUFDakIsZ0JBQWdCO01BQ2hCLGNBQWM7TUFDZCxnQkFBZ0I7TUFDaEIsbUJBQW1CO01BQ25CLG1CQUFtQjtNQUNuQixZQUFZO01BQ1oseUJBQXlCLEVBQUE7RUE5Qy9CO01BaURNLGtCQUFrQjtNQUNsQixlQUFlO01BQ2YsV0FBVztNQUNYLFFBQVE7TUFFUiw2QkFBNkIsRUFBQTtFQXREbkM7SUEwREkscUJBQXFCO0lBQ3JCLFVBQVU7SUFDVixTQUFTO0lBQ1QsaUJBQWlCO0lBQ2pCLGNBQWMsRUFBQTtFQTlEbEI7TUFnRU0saUJBQWlCLEVBQUE7RUFoRXZCO01Bb0VNLGVBQWU7TUFDZixnQkFBZ0I7TUFDaEIsMEJBQTBCO01BQzFCLDZCQUE2QjtNQUM3QixrQkFBa0IsRUFBQTtFQXhFeEI7UUEwRVEsY0FBYztRQUNkLFVBQVU7UUFDVixVQUFVLEVBQUE7RUE1RWxCO1VBOEVVLFVBQVU7VUFDVixvQkFBb0I7VUFDcEIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBO0VBakYvQjtVQW9GVSxjQUFjO1VBQ2QsaUJBQWlCO1VBQ2pCLHlCQUF5QixFQUFBO0VBdEZuQztVQXlGVSx5QkFBeUIsRUFBQTtFQXpGbkM7UUE2RlEsa0JBQWtCO1FBQ2xCLFFBQVE7UUFFUiw2QkFBNkI7UUFDN0IsVUFBVTtRQUNWLGVBQWU7UUFDZixhQUFhLEVBQUE7RUFuR3JCO1FBc0dRLFVBQVUsRUFBQTtFQXRHbEI7UUF5R1EsY0FBYztRQUNkLGlCQUFpQixFQUFBO0VBMUd6QjtVQTRHVSxjQUFjO1VBQ2QsaUJBQWlCLEVBQUE7RUE3RzNCO1lBK0dZLHlCQUF5QixFQUFBO0VBL0dyQztVQW1IVSxjQUFjLEVBQUE7RUFuSHhCO1FBdUhRLGVBQWU7UUFDZixjQUFjO1FBQ2QseUJBQXlCO1FBQ3pCLGlCQUFpQixFQUFBO0VBMUh6QjtNQThITSxlQUFlO01BQ2YsZ0JBQWdCO01BQ2hCLDZCQUE2QjtNQUM3QixpQkFBaUI7TUFDakIsa0JBQWtCLEVBQUE7RUFsSXhCO1FBb0lRLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIsVUFBVTtRQUNWLFVBQVUsRUFBQTtFQXZJbEI7VUF5SVUseUJBQXlCLEVBQUE7RUF6SW5DO1VBNElVLFVBQVU7VUFDVixxQkFBcUI7VUFDckIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBO0VBL0kvQjtZQWlKWSxrQkFBa0I7WUFDbEIsUUFBUTtZQUVSLDZCQUE2QjtZQUM3QixXQUFXO1lBQ1gsZUFBZTtZQUNmLGNBQWMsRUFBQTtFQXZKMUI7WUEwSlkseUJBQXlCLEVBQUE7RUExSnJDO1lBNkpZLHlCQUF5QixFQUFBO0VBT3JDO0VBQ0Usa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtFQUNaLFVBQVU7RUFDVixZQUFZO0VBQ1osTUFBTTtFQUNOLE9BQU87RUFDUCxtQkFBbUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NlbGVjdC1pdGVtcy9zZWxlY3QtaXRlbXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudWwtc2VsZWN0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246cmVsYXRpdmU7XHJcbiAgJjpmb2N1cyB7XHJcbiAgICBvdXRsaW5lOiAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcclxuICB9XHJcbiAgJi51bC1pbmxpbmV7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG59XHJcbi51bC1zZWxlY3QtdG9nZ2xlIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgY29sb3I6ICMzNjQwNGI7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gIHBhZGRpbmctbGVmdDogMTBweDtcclxuICBwYWRkaW5nLXRvcDogNXB4O1xyXG4gIHBhZGRpbmctYm90dG9tOiA1cHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHJcbiAgLnVpLXNlbGVjdC1wbGFjZWhvbGRlciB7XHJcbiAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgfVxyXG4gIC51bC1zZWxlY3QtbWF0Y2gtdGV4dCB7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcbiAgaSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICByaWdodDogMTBweDtcclxuICAgIGZvbnQtc2l6ZTogOHB4O1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgfVxyXG59XHJcbi51bC1zZWxlY3QtcmVtb3ZlIHtcclxuICAudWwtc2VsZWN0LXJlbW92ZS1hbGwge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYm9yZGVyOiBzb2xpZCAxcHggI2Y4ZWJlYjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGViZWI7XHJcbiAgICBwYWRkaW5nOiAzcHggMjBweCAzcHggN3B4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAudWwtc2VsZWN0LXJlbW92ZS10ZXh0IHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG4gICAgICBjb2xvcjogI2ViNWE1MjtcclxuICAgIH1cclxuICAgIGkge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiA1cHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICBjb2xvcjogI2ViNWE1MjtcclxuICAgIH1cclxuICAgICY6YWN0aXZlIHtcclxuICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4udWwtc2VsZWN0LWRyb3Bkb3duIHtcclxuICBjb2xvcjogIzMyM2M0NztcclxuICAmLm11bHRpcGxlLXJvdyB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XHJcbiAgfVxyXG4gIC5kcm9wZG93bi1tZW51IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1pbi13aWR0aDogNXJlbTtcclxuICB9XHJcbiAgLnVsLXNlbGVjdC1zZWFyY2gtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGlucHV0IHtcclxuICAgICAgYm9yZGVyOiAwO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGNvbG9yOiAjMzIzYzQ3O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4O1xyXG4gICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICB9XHJcbiAgICAuaWNvbi1zZWFyY2gge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1hZGQtbmV3LWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAudWktc2VsZWN0LWFkZC1uZXcge1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xyXG4gICAgICBib3JkZXItbGVmdDogMDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA4cHg7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDI2cHg7XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UxZWNlZjtcclxuICAgIH1cclxuICAgIC5pY29uLXBsdXMge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1jaG9pY2Uge1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG1heC1oZWlnaHQ6IDE4MHB4O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAmLnVsLXNlbGVjdC1jaG9pY2UtaGVpZ2h0e1xyXG4gICAgICBtYXgtaGVpZ2h0OiAyNzBweDtcclxuICAgIH1cclxuXHJcbiAgICAudWwtc2VsZWN0LWNob2ljZS1yb3cge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxOHB4IDZweCAxMHB4O1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZTJlMjtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgID4gZGl2IHtcclxuICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDtcclxuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGkge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIHJpZ2h0OiA4cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgICAgYTpob3ZlciB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgfVxyXG4gICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZjVmYTtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLnVsLXNlbGVjdC1jaG9pY2UtYWxsIHtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZTJlMjtcclxuICAgICAgcGFkZGluZzogNnB4IDEwcHg7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgIH1cclxuICAgICAgICA+IGRpdiB7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgICAgICAgIGkge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICAgICAgcmlnaHQ6IDEycHg7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuLnVpLWRpc2FibGVkIHtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICB6LWluZGV4OiA1O1xyXG4gIG9wYWNpdHk6IDAuNjtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcbiJdfQ== */\"","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild, OnInit } from '@angular/core';\r\nimport { SelectItem } from './select-item';\r\nimport { compact, orderBy, cloneDeep, isEmpty, remove } from 'lodash';\r\nimport { ToasterService } from '../../services/toaster.service';\r\nimport { FormControl } from '@angular/forms';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-select-items',\r\n templateUrl: './select-items.component.html',\r\n styleUrls: ['./select-items.component.scss']\r\n})\r\nexport class SelectItemsComponent implements OnInit, OnDestroy {\r\n destroy$: Subject = new Subject();\r\n inputMode: boolean = false;\r\n optionsOpened: boolean = false;\r\n\r\n public options: Array = [];\r\n public itemObjects: Array = [];\r\n private _disabled: boolean = false;\r\n public activeOption: SelectItem[] = [];\r\n\r\n public itemEmpty: SelectItem = new SelectItem('');\r\n\r\n searchVal: string = '';\r\n maxValue: number = 50;\r\n\r\n @ViewChild('searchInput') searchElement: ElementRef;\r\n\r\n @Input() public maxShowedItem: boolean = false;\r\n @Input() public idField: string = 'id';\r\n @Input() public textField: string = 'text';\r\n @Input() public allowEmpty: boolean = true;\r\n @Input() public searchField: boolean = true;\r\n @Input() public placeholder: string = '';\r\n @Input() public multiple: boolean = false;\r\n @Input() public maxItems: number;\r\n @Input() public isFullWidth: boolean = false;\r\n @Input() public sortSelect: boolean = true;\r\n @Input()\r\n set item(value: Array) {\r\n if (!value || isEmpty(value)) {\r\n this.itemObjects = [];\r\n this.activeOption = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.itemObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n })));\r\n if (this.sortSelect) {\r\n this.itemObjects = orderBy(this.itemObjects, item => item.text.toLowerCase());\r\n }\r\n if (isEmpty(this.itemObjects)) {\r\n this.activeOption = [];\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n public set active(selectedItems: Array) {\r\n // if (isEmpty(this.activeOption) && !isEmpty(selectedItems)) {\r\n selectedItems = compact(selectedItems);\r\n const areItemsStrings = typeof selectedItems[0] === 'string';\r\n this.activeOption = selectedItems.map((item: any) => {\r\n const data = areItemsStrings ? item : { id: item[this.idField], text: item[this.textField], prefix: item.prefix };\r\n return new SelectItem(data);\r\n });\r\n // }\r\n }\r\n\r\n public get active(): Array {\r\n return this.activeOption;\r\n }\r\n\r\n @Input()\r\n public set fakeOpen(open: boolean) {\r\n if (!!open) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n @Input()\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n this.ref.detectChanges();\r\n if (this._disabled === true) {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n public get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Input()\r\n fcActive: FormControl = new FormControl([]);\r\n\r\n @Output() public selected: EventEmitter = new EventEmitter();\r\n @Output() public selectedAll: EventEmitter = new EventEmitter();\r\n @Output() public removed: EventEmitter = new EventEmitter();\r\n @Output() public removedAll: EventEmitter = new EventEmitter();\r\n @Output() public addNew: EventEmitter = new EventEmitter();\r\n @Output() public resetChannelEmit: EventEmitter = new EventEmitter();\r\n constructor(private toasterService: ToasterService,\r\n private element: ElementRef,\r\n private ref: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.fcActive.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n // unset active item\r\n console.log(value);\r\n if (!value) {\r\n this.activeOption = [];\r\n }\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.destroy$.unsubscribe();\r\n this.ref.detach();\r\n }\r\n\r\n isActive(value: SelectItem): boolean {\r\n if (!value || !this.activeOption) {\r\n return false;\r\n }\r\n const item = this.activeOption.find(i => i.id === value.id);\r\n return !!item;\r\n }\r\n\r\n matchClick(e: any) {\r\n if (this._disabled === true) {\r\n return;\r\n }\r\n this.inputMode = !this.inputMode;\r\n if (!!this.inputMode) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n open() {\r\n this.options = this.itemObjects.filter(item => item);\r\n\r\n this.optionsOpened = true;\r\n this.ref.detectChanges();\r\n if (!this.multiple) {\r\n const itemActive = this.element.nativeElement.querySelector('.ul-select-choice .ul-select-choice-row.active .dropdown-item');\r\n if (itemActive) {\r\n itemActive.focus();\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n this.searchElement.nativeElement.focus();\r\n });\r\n }\r\n\r\n public clickOutside(): void {\r\n this.inputMode = false;\r\n this.optionsOpened = false;\r\n this.maxValue = 50;\r\n this.ref.detectChanges();\r\n }\r\n\r\n public inputEvent(e: any) {\r\n this.searchVal = e.target.value.trim();\r\n if (this.searchVal) {\r\n this.options = this.itemObjects.filter(item => item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1);\r\n } else {\r\n this.options = this.itemObjects.filter(item => item);\r\n }\r\n }\r\n\r\n selectMatch(value, e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n if (this.multiple) {\r\n const isSelectedItem = this.activeOption.find(item => item.id === value.id);\r\n if (isSelectedItem) {\r\n remove(this.activeOption, (item => item.id === value.id));\r\n } else {\r\n if (this.maxItems) {\r\n if (this.activeOption.length < this.maxItems) {\r\n this.activeOption.push(value);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n } else {\r\n this.activeOption.push(value);\r\n }\r\n }\r\n // emit selected items\r\n this.selected.emit(this.activeOption);\r\n } else {\r\n this.activeOption = [value];\r\n this.selected.emit(value);\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\" [ngClass]=\\\"{'ul-select-choice-height': maxShowedItem}\\\">\\r\\n
  • \\r\\n \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\" class=\\\"d-inline-block ml-2\\\">\\r\\n
\\r\\n \\r\\n Clear All\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\"","module.exports = \".ul-select-container {\\n position: relative; }\\n .ul-select-container:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\\n border-radius: 0.25rem; }\\n .ul-select-container.ul-inline {\\n display: inline-block; }\\n .ul-select-toggle {\\n width: 100%;\\n display: inline-block;\\n overflow: hidden;\\n text-align: left;\\n vertical-align: middle;\\n color: #36404b;\\n background-color: #ffffff;\\n padding-right: 20px;\\n padding-left: 10px;\\n padding-top: 5px;\\n padding-bottom: 5px;\\n border: 1px solid #e2e2e2;\\n position: relative;\\n font-size: 12px;\\n height: 30px;\\n font-weight: normal;\\n line-height: normal; }\\n .ul-select-toggle .ui-select-placeholder {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n .ul-select-toggle .ul-select-match-text {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: block; }\\n .ul-select-toggle i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-remove .ul-select-remove-all {\\n display: inline-block;\\n position: relative;\\n border-radius: 3px;\\n border: solid 1px #f8ebeb;\\n background-color: #f8ebeb;\\n padding: 3px 20px 3px 7px;\\n line-height: 1;\\n cursor: pointer; }\\n .ul-select-remove .ul-select-remove-all .ul-select-remove-text {\\n font-size: 12px;\\n font-weight: normal;\\n line-height: normal;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all i {\\n position: absolute;\\n right: 5px;\\n top: 50%;\\n transform: translate(0, -50%);\\n font-size: 10px;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all:active {\\n opacity: 0.5; }\\n .ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown.multiple-row {\\n margin-right: 40px; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0;\\n min-width: 5rem; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-add-new-container {\\n position: relative;\\n cursor: pointer; }\\n .ul-select-dropdown .ul-select-add-new-container .ui-select-add-new {\\n border-top: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n border-bottom: 0;\\n border-right: 0;\\n border-left: 0;\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.5;\\n color: #007ea3;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n padding-right: 26px;\\n height: auto;\\n background-color: #e1ecef; }\\n .ul-select-dropdown .ul-select-add-new-container .icon-plus {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 180px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice.ul-select-choice-height {\\n max-height: 270px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 10px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px;\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LW11bHRpLXRyZWF0bWVudHMvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHNlbGVjdC1tdWx0aS10cmVhdG1lbnRzXFxzZWxlY3QtbXVsdGktdHJlYXRtZW50cy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtCQUFpQixFQUFBO0VBRHJCO0lBR00sVUFBVTtJQUNWLGdEQUFnRDtJQUNoRCxzQkFBc0IsRUFBQTtFQUw1QjtJQVFNLHFCQUFxQixFQUFBO0VBR3pCO0VBQ0UsV0FBVztFQUNYLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtFQUN0QixjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLG1CQUFtQixFQUFBO0VBakJyQjtJQW1CSSxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLHFCQUFxQixFQUFBO0VBeEJ6QjtJQTJCSSxtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsY0FBYyxFQUFBO0VBL0JsQjtJQWtDSSxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLGNBQWM7SUFDZCxRQUFRO0lBRVIsNkJBQTZCLEVBQUE7RUFHakM7RUFFSSxxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixjQUFjO0VBQ2QsZUFBZSxFQUFBO0VBVG5CO0lBV00sZUFBZTtJQUNmLG1CQUFtQjtJQUNu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bGVjdC1tdWx0aS10cmVhdG1lbnRzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnVsLXNlbGVjdC1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246cmVsYXRpdmU7XHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgb3V0bGluZTogMDtcclxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xyXG4gICAgfVxyXG4gICAgJi51bC1pbmxpbmV7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC10b2dnbGUge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBjb2xvcjogIzM2NDA0YjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gICAgcGFkZGluZy10b3A6IDVweDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHJcbiAgICAudWktc2VsZWN0LXBsYWNlaG9sZGVyIHtcclxuICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICAgIC51bC1zZWxlY3QtbWF0Y2gtdGV4dCB7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB9XHJcbiAgICBpIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogMTBweDtcclxuICAgICAgZm9udC1zaXplOiA4cHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1yZW1vdmUge1xyXG4gICAgLnVsLXNlbGVjdC1yZW1vdmUtYWxsIHtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2Y4ZWJlYjtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZWJlYjtcclxuICAgICAgcGFkZGluZzogM3B4IDIwcHggM3B4IDdweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgLnVsLXNlbGVjdC1yZW1vdmUtdGV4dCB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICBjb2xvcjogI2ViNWE1MjtcclxuICAgICAgfVxyXG4gICAgICBpIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgcmlnaHQ6IDVweDtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgICBjb2xvcjogI2ViNWE1MjtcclxuICAgICAgfVxyXG4gICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC51bC1zZWxlY3QtZHJvcGRvd24ge1xyXG4gICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAmLm11bHRpcGxlLXJvdyB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcclxuICAgIH1cclxuICAgIC5kcm9wZG93bi1tZW51IHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIG1pbi13aWR0aDogNXJlbTtcclxuICAgIH1cclxuICAgIC51bC1zZWxlY3Qtc2VhcmNoLWNvbnRhaW5lciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgaW5wdXQge1xyXG4gICAgICAgIGJvcmRlcjogMDtcclxuICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgICBjb2xvcjogIzMyM2M0NztcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4O1xyXG4gICAgICAgIGhlaWdodDogMzBweDtcclxuICAgICAgfVxyXG4gICAgICAuaWNvbi1zZWFyY2gge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLnVsLXNlbGVjdC1hZGQtbmV3LWNvbnRhaW5lciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAudWktc2VsZWN0LWFkZC1uZXcge1xyXG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICBib3JkZXItcmlnaHQ6IDA7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDI2cHg7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMWVjZWY7XHJcbiAgICAgIH1cclxuICAgICAgLmljb24tcGx1cyB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICByaWdodDogMTBweDtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAudWwtc2VsZWN0LWNob2ljZSB7XHJcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICBtYXgtaGVpZ2h0OiAxODBweDtcclxuICAgICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAgICYudWwtc2VsZWN0LWNob2ljZS1oZWlnaHR7XHJcbiAgICAgICAgbWF4LWhlaWdodDogMjcwcHg7XHJcbiAgICAgIH1cclxuICAgICAgLnVsLXNlbGVjdC1jaG9pY2Utcm93IHtcclxuICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgICBwYWRkaW5nOiA1cHggMThweCA2cHggMTBweDtcclxuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZTJlMjtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICAgID4gZGl2IHtcclxuICAgICAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICAgICAgd29yZC1icmVhazoga2VlcC1hbGw7XHJcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGkge1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICByaWdodDogOHB4O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYTpob3ZlciB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLnVsLXNlbGVjdC1jaG9pY2UtYWxsIHtcclxuICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZTJlMjtcclxuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xyXG4gICAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPiBkaXYge1xyXG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICAgICAgcmlnaHQ6IDEycHg7XHJcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLnVpLWRpc2FibGVkIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgei1pbmRleDogNTtcclxuICAgIG9wYWNpdHk6IDAuNjtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gIH1cclxuICAiXX0= */\"","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild, OnInit } from '@angular/core';\r\n\r\nimport { compact, forEach, orderBy, findIndex, cloneDeep } from 'lodash';\r\nimport { ToasterService } from '../../services/toaster.service';\r\nimport { fromEvent } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SelectItem } from '../select/select-item';\r\n\r\n\r\n@Component({\r\n selector: 'app-select-multi-treatments',\r\n templateUrl: './select-multi-treatments.component.html',\r\n styleUrls: ['./select-multi-treatments.component.scss']\r\n})\r\nexport class SelectMultiTreatmentsComponent implements OnDestroy {\r\n\r\n inputMode: boolean = false;\r\n optionsOpened: boolean = false;\r\n\r\n public options: Array = [];\r\n public itemObjects: Array = [];\r\n private _active: Array = [];\r\n private _disabled: boolean = false;\r\n public activeOption: SelectItem = new SelectItem('object');\r\n public activeMultiOption: Array=[];\r\n\r\n public itemEmpty: SelectItem = new SelectItem('');\r\n\r\n searchVal: string = '';\r\n maxValue: number = 50;\r\n lazyOptions: any;\r\n\r\n @ViewChild('searchInput') searchElement: ElementRef;\r\n\r\n @Input() public maxShowedItem: boolean = false;\r\n @Input() public idField: string = 'id';\r\n @Input() public textField: string = 'text';\r\n @Input() public childrenField: string = 'children';\r\n @Input() public allowEmpty: boolean = true;\r\n @Input() public searchField: boolean = true;\r\n @Input() public placeholder: string = '';\r\n @Input() public multiple: boolean = false;\r\n @Input() public maxItems: number;\r\n @Input() public chooseAll: boolean = false;\r\n @Input() public addNewItem: boolean = false;\r\n @Input() public isFullWidth: boolean = false;\r\n @Input() public sortSelect: boolean = true;\r\n @Input() public nestedTag: boolean;\r\n @Input() public resetChannelBtn: boolean = false;\r\n\r\n @Input()\r\n set item(value: Array) {\r\n if (!value) {\r\n this.itemObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.itemObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.itemObjects = orderBy(this.itemObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n public set active(selectedItems: Array) {\r\n if (!selectedItems || selectedItems.length === 0) {\r\n this._active = [];\r\n this.activeOption = new SelectItem('');\r\n } else {\r\n selectedItems = compact(selectedItems);\r\n\r\n const areItemsStrings = typeof selectedItems[0] === 'string';\r\n this._active = selectedItems.map((item: any) => {\r\n const data = areItemsStrings ? item : {id: item[this.idField], text: item[this.textField]};\r\n this.activeOption = new SelectItem(data);\r\n return new SelectItem(data);\r\n });\r\n }\r\n }\r\n public get active(): Array {\r\n return this._active;\r\n }\r\n\r\n @Input()\r\n public set fakeOpen(open: boolean) {\r\n if (!!open) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n @Input()\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n this.ref.detectChanges();\r\n if (this._disabled === true) {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n public get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Output() public selected: EventEmitter = new EventEmitter();\r\n @Output() public selectedAll: EventEmitter = new EventEmitter();\r\n @Output() public removed: EventEmitter = new EventEmitter();\r\n @Output() public removedAll: EventEmitter = new EventEmitter();\r\n @Output() public addNew: EventEmitter = new EventEmitter();\r\n @Output() public resetChannelEmit: EventEmitter = new EventEmitter();\r\n\r\n constructor(private toasterService: ToasterService,\r\n private element: ElementRef,\r\n private ref: ChangeDetectorRef) { }\r\n\r\n ngOnDestroy(): void {\r\n this.ref.detach();\r\n }\r\n\r\n get isChooseAll() {\r\n if (!this.options) return false;\r\n if (this.options.filter(x => x.text !== 'Monitor').length) return true;\r\n return false;\r\n }\r\n\r\n protected isActive(value: SelectItem): boolean {\r\n if(this.activeMultiOption){\r\n if(this.activeMultiOption.findIndex(t => t.id === value.id) != -1){\r\n return true;\r\n }\r\n else return false;\r\n }\r\n else{\r\n return false;\r\n }\r\n //return this.activeOption && this.activeOption.id === value.id;\r\n }\r\n protected matchClick(e: any) {\r\n if (this._disabled === true) {\r\n return;\r\n }\r\n this.inputMode = !this.inputMode;\r\n if (!!this.inputMode) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n open() {\r\n this.options = this.itemObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.id === o.id)));\r\n this.optionsOpened = true;\r\n this.lazyOptions = this.options.slice(0, 50);\r\n this.ref.detectChanges();\r\n if (this.options && this.options.length > 0) {\r\n const content = document.querySelector('.ul-select-choice');\r\n const scroll$ = fromEvent(content, 'scroll').pipe(map(() => content));\r\n const lazyContent = this.element.nativeElement.querySelector('.ul-select-choice');\r\n if (!this.multiple) {\r\n const indexItem = this.options.findIndex(item => {\r\n return item.id === this.activeOption.id;\r\n });\r\n if (indexItem > this.maxValue) {\r\n this.maxValue = this.roundMathMaxItem(indexItem);\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n this.ref.detectChanges();\r\n }\r\n const itemActive = this.element.nativeElement.querySelector('.ul-select-choice .ul-select-choice-row.active .dropdown-item');\r\n if (itemActive) {\r\n itemActive.focus();\r\n }\r\n }\r\n scroll$.subscribe(element => {\r\n if (lazyContent.offsetHeight + lazyContent.scrollTop > (30 * this.maxValue) - 10) {\r\n this.maxValue = this.maxValue + 50;\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n this.ref.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n if (this.searchElement) {\r\n setTimeout(() => {\r\n this.searchElement.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n mainClickKeyDown(event: any) {\r\n // Up\r\n if (event.keyCode === 38) {\r\n event.preventDefault();\r\n const index = findIndex(this.lazyOptions, {id: this.activeOption.id});\r\n this.activeOption = index > 0 ? this.lazyOptions[index - 1] : this.lazyOptions[0];\r\n this.ensureActiveValue(index > 0 ? (index - 1) : -1);\r\n return;\r\n }\r\n // Down\r\n if (event.keyCode === 40) {\r\n event.preventDefault();\r\n const index = findIndex(this.lazyOptions, {id: this.activeOption.id});\r\n if (index < (this.options.length - 1)) {\r\n this.activeOption = index >= 0 ? this.lazyOptions[index + 1] : this.lazyOptions[0];\r\n this.ensureActiveValue(index + 1);\r\n }\r\n return;\r\n }\r\n // End\r\n if (event.keyCode === 35) {\r\n this.lazyOptions = this.options;\r\n this.ref.detectChanges();\r\n if (this.lazyOptions.length > 0) {\r\n this.activeOption = this.lazyOptions[this.lazyOptions.length - 1];\r\n }\r\n return;\r\n }\r\n // Home\r\n if (event.keyCode === 36) {\r\n if (this.lazyOptions.length > 0) {\r\n this.activeOption = this.lazyOptions[0];\r\n }\r\n return;\r\n }\r\n if (event.keyCode === 13) {\r\n if (this.activeOption && this.active.indexOf(this.activeOption) === -1) {\r\n this.selectMatch(this.activeOption, event);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n\r\n public clickOutside(): void {\r\n this.inputMode = false;\r\n this.optionsOpened = false;\r\n this.maxValue = 50;\r\n this.ref.detectChanges();\r\n this.activeMultiOption=[];\r\n }\r\n\r\n public inputEvent(e: any) {\r\n this.searchVal = e.target.value.trim();\r\n if (this.searchVal) {\r\n this.options = this.itemObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n if (this.multiple && this.searchVal) {\r\n if (this.lazyOptions && this.lazyOptions.length === 1) {\r\n this.activeOption = cloneDeep(this.lazyOptions[0]);\r\n }\r\n }\r\n } else {\r\n this.options = this.itemObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n if (this.multiple) {\r\n this.activeOption = null;\r\n }\r\n }\r\n }\r\n\r\n private selectMatch(value: SelectItem, e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n if (!this.maxItems || this.active.length < this.maxItems) {\r\n if (this.multiple === true) {\r\n this.active.push(value);\r\n if(this.optionsOpened){\r\n let indx = this.activeMultiOption.findIndex(t => t.id === value.id);\r\n if(indx != -1){\r\n this.activeMultiOption.splice(indx, 1);\r\n }else{\r\n this.activeMultiOption.push(value);\r\n }\r\n }\r\n } else {\r\n this.active[0] = value;\r\n this.activeOption = value;\r\n }\r\n this.selected.emit(value);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n //this.clickOutside();\r\n }\r\n\r\n private selectAll(items: SelectItem[], e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n if (!this.maxItems || (this.active.length + items.length) <= this.maxItems) {\r\n forEach(items, value => {\r\n if (this.multiple === true && value.text !== 'Monitor') {\r\n this.active.push(value);\r\n }\r\n });\r\n\r\n this.selectedAll.emit(this.active);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n this.clickOutside();\r\n }\r\n\r\n public removeAll() {\r\n this.active = [];\r\n this.ref.detectChanges();\r\n this.removedAll.emit();\r\n }\r\n public addNewItemList() {\r\n this.addNew.emit(this.searchVal);\r\n this.clickOutside();\r\n }\r\n\r\n public roundMathMaxItem(num: number) {\r\n return (Math.ceil(num / 50)) * 50;\r\n }\r\n\r\n public ensureActiveValue(indexActive) {\r\n const container = this.element.nativeElement.querySelector('.ul-select-choice');\r\n let posY: number;\r\n if (!container) {\r\n return;\r\n }\r\n const choices = container.querySelectorAll('.ul-select-choice-row');\r\n if (choices.length < 1) {\r\n return;\r\n }\r\n if (this.allowEmpty || this.chooseAll) {\r\n indexActive = indexActive + 1;\r\n }\r\n const active = choices[indexActive];\r\n if (!active) {\r\n return;\r\n }\r\n if (this.multiple) {\r\n posY = active.offsetTop + active.clientHeight - container.scrollTop;\r\n } else {\r\n posY = active.offsetTop - container.scrollTop;\r\n }\r\n const height: number = container.offsetHeight;\r\n if (posY > height) {\r\n container.scrollTop += posY - height;\r\n } else if (posY <= active.clientHeight) {\r\n container.scrollTop -= active.clientHeight - posY;\r\n }\r\n }\r\n\r\n public resetChannel(){\r\n this.resetChannelEmit.emit();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n \\r\\n 1\\\" class=\\\"ul-select-match-text\\\">{{activeOption.length}} parameter(s) selected\\r\\n 0\\\" class=\\\"ul-select-match-text\\\">{{designActualModel.selected[0]?.text}}\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n ISIP\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Pressure\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Slurry Rate\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Mass\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Volume\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Proppant Conc\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n FDI\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n Time\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Treatment\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Design vs Actual\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\">\\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Groups\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".ul-select-container {\\n position: relative; }\\n .ul-select-container:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\\n border-radius: 0.25rem; }\\n .ul-select-toggle {\\n width: 100%;\\n display: inline-block;\\n overflow: hidden;\\n text-align: left;\\n vertical-align: middle;\\n color: #36404b;\\n background-color: #ffffff;\\n padding-right: 20px;\\n padding-left: 10px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n border: 1px solid #e2e2e2;\\n position: relative;\\n font-size: 12px;\\n height: 30px;\\n font-weight: normal;\\n line-height: normal; }\\n .ul-select-toggle .ui-select-placeholder {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n .ul-select-toggle .ul-select-match-text {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: block; }\\n .ul-select-toggle i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-remove .ul-select-remove-all {\\n display: inline-block;\\n position: relative;\\n border-radius: 3px;\\n border: solid 1px #f8ebeb;\\n background-color: #f8ebeb;\\n padding: 7px 35px 7px 10px;\\n line-height: 1;\\n cursor: pointer; }\\n .ul-select-remove .ul-select-remove-all .ul-select-remove-text {\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.17;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all i {\\n position: absolute;\\n right: 15px;\\n top: 50%;\\n transform: translate(0, -50%);\\n font-size: 13px;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all:active {\\n opacity: 0.5; }\\n .ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown.multiple-row {\\n margin-right: 40px; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-add-new-container {\\n position: relative;\\n cursor: pointer; }\\n .ul-select-dropdown .ul-select-add-new-container .ui-select-add-new {\\n border-top: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n border-bottom: 0;\\n border-right: 0;\\n border-left: 0;\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.5;\\n color: #007ea3;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n padding-right: 26px;\\n height: auto;\\n background-color: #e1ecef; }\\n .ul-select-dropdown .ul-select-add-new-container .icon-plus {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 120px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 10px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-group-title {\\n height: 19px;\\n background-color: #eaf5fa;\\n padding: 0 10px;\\n border-top: solid 1px #e2e2e2;\\n line-height: 1; }\\n .ul-select-dropdown .ul-select-group-title small {\\n color: #007ea3;\\n font-size: 10px;\\n font-weight: bold; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n .ul-select-realtime, .ul-select-fracpro {\\n position: relative; }\\n ::ng-deep .card-header {\\n padding: 0px;\\n height: 19px;\\n background-color: #eaf5fa;\\n padding: 0 10px;\\n border-top: solid 1px #e2e2e2;\\n line-height: 1; }\\n ::ng-deep .card-body {\\n padding: 0px; }\\n ::ng-deep .card .card-header.active > a > span {\\n color: #1d2124; }\\n ::ng-deep .card .card-header .btn {\\n padding: 0px; }\\n .title-accordion {\\n color: #007ea3;\\n font-size: 10px;\\n font-weight: bold; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0LXBhcmFtZXRlcnMvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHNlbGVjdC1wYXJhbWV0ZXJzXFxzZWxlY3QtcGFyYW1ldGVycy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtCQUFpQixFQUFBO0VBRHJCO0lBR00sVUFBVTtJQUNWLGdEQUFnRDtJQUNoRCxzQkFBc0IsRUFBQTtFQUcxQjtFQUNFLFdBQVc7RUFDWCxxQkFBcUI7RUFDckIsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQixzQkFBc0I7RUFDdEIsY0FBYztFQUNkLHlCQUF5QjtFQUN6QixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQixtQkFBbUI7RUFDbkIseUJBQXlCO0VBQ3pCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQixtQkFBbUIsRUFBQTtFQWpCckI7SUFtQkksWUFBWTtJQUNaLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLFdBQVc7SUFDWCxxQkFBcUIsRUFBQTtFQXhCekI7SUEyQkksbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLGNBQWMsRUFBQTtFQS9CbEI7SUFrQ0ksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxjQUFjO0lBQ2QsUUFBUTtJQUVSLDZCQUE2QixFQUFBO0VBSWpDO0VBRUkscUJBQXFCO0VBQ3JCLGtCQUFrQjtFQUNsQixrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QiwwQkFBMEI7RUFDMUIsY0FBYztFQUNkLGVBQWUsRUFBQTtFQVRuQjtJQVdNLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGNBQWMsRUFBQTtFQWRwQjtJQWlCTSxrQkFB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WUFBWTtFQUNaLFlBQVk7RUFDWix5QkFBeUI7RUFDekIsZUFBZTtFQUNmLDZCQUE2QjtFQUM3QixjQUFjLEVBQUE7RUFJbEI7RUFDRSxZQUFZLEVBQUE7RUFFZDtFQUNFLGNBQWMsRUFBQTtFQUVoQjtFQUNFLFlBQVcsRUFBQTtFQUViO0VBQ0UsY0FBYztFQUNkLGVBQWU7RUFDZixpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NlbGVjdC1wYXJhbWV0ZXJzL3NlbGVjdC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnVsLXNlbGVjdC1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246cmVsYXRpdmU7XHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgb3V0bGluZTogMDtcclxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuICAudWwtc2VsZWN0LXRvZ2dsZSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIGNvbG9yOiAjMzY0MDRiO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICBwYWRkaW5nLXRvcDogOHB4O1xyXG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxuICAgIC51aS1zZWxlY3QtcGxhY2Vob2xkZXIge1xyXG4gICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gICAgLnVsLXNlbGVjdC1tYXRjaC10ZXh0IHtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICAgIGkge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgICBmb250LXNpemU6IDhweDtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICAudWwtc2VsZWN0LXJlbW92ZSB7XHJcbiAgICAudWwtc2VsZWN0LXJlbW92ZS1hbGwge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICBib3JkZXI6IHNvbGlkIDFweCAjZjhlYmViO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhlYmViO1xyXG4gICAgICBwYWRkaW5nOiA3cHggMzVweCA3cHggMTBweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgLnVsLXNlbGVjdC1yZW1vdmUtdGV4dCB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE3O1xyXG4gICAgICAgIGNvbG9yOiAjZWI1YTUyO1xyXG4gICAgICB9XHJcbiAgICAgIGkge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICByaWdodDogMTVweDtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgICAgICBjb2xvcjogI2ViNWE1MjtcclxuICAgICAgfVxyXG4gICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIC51bC1zZWxlY3QtZHJvcGRvd24ge1xyXG4gICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAmLm11bHRpcGxlLXJvdyB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcclxuICAgIH1cclxuICAgIC5kcm9wZG93bi1tZW51IHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcbiAgICAudWwtc2VsZWN0LXNlYXJjaC1jb250YWluZXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGlucHV0IHtcclxuICAgICAgICBib3JkZXI6IDA7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgICAgY29sb3I6ICMzMjNjNDc7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjZweDtcclxuICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgIH1cclxuICAgICAgLmljb24tc2VhcmNoIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgIHJpZ2h0OiAxMHB4O1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC51bC1zZWxlY3QtYWRkLW5ldy1jb250YWluZXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgLnVpLXNlbGVjdC1hZGQtbmV3IHtcclxuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XHJcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiAwO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiA4cHg7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4O1xyXG4gICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFlY2VmO1xyXG4gICAgICB9XHJcbiAgICAgIC5pY29uLXBsdXMge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLnVsLXNlbGVjdC1jaG9pY2Uge1xyXG4gICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgICAgbWF4LWhlaWdodDogMTIwcHg7XHJcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICAudWwtc2VsZWN0LWNob2ljZS1hbGwge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICAmOmFjdGl2ZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA+IGRpdiB7XHJcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgICAgICBpIHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICAgICAgICByaWdodDogMTJweDtcclxuICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAudWwtc2VsZWN0LWNob2ljZS1yb3cge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICAgIHBhZGRpbmc6IDVweCAxOHB4IDZweCAxMHB4O1xyXG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgICBjb2xvcjogIzMyM2M0NztcclxuICAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgPiBkaXYge1xyXG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDtcclxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaSB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgICAgIHJpZ2h0OiA4cHg7XHJcbiAgICAgICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhOmhvdmVyIHtcclxuICAgICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZjVmYTtcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLnVsLXNlbGVjdC1ncm91cC10aXRsZSB7XHJcbiAgICAgIGhlaWdodDogMTlweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZjVmYTtcclxuICAgICAgcGFkZGluZzogMCAxMHB4O1xyXG4gICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggI2UyZTJlMjtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIHNtYWxsIHtcclxuICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgLnVpLWRpc2FibGVkIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgei1pbmRleDogNTtcclxuICAgIG9wYWNpdHk6IDAuNjtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gIH1cclxuICAudWwtc2VsZWN0LXJlYWx0aW1lLCAudWwtc2VsZWN0LWZyYWNwcm8ge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIH1cclxuICA6Om5nLWRlZXAgLmNhcmQtaGVhZGVye1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIGhlaWdodDogMTlweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VhZjVmYTtcclxuICAgICAgcGFkZGluZzogMCAxMHB4O1xyXG4gICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggI2UyZTJlMjtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgXHJcbiAgfVxyXG4gIFxyXG4gIDo6bmctZGVlcCAuY2FyZC1ib2R5IHtcclxuICAgIHBhZGRpbmc6IDBweDtcclxuICB9XHJcbiAgOjpuZy1kZWVwIC5jYXJkIC5jYXJkLWhlYWRlci5hY3RpdmUgPiBhID4gc3BhbiB7XHJcbiAgICBjb2xvcjogIzFkMjEyNDtcclxuICB9XHJcbiAgOjpuZy1kZWVwIC5jYXJkIC5jYXJkLWhlYWRlciAuYnRue1xyXG4gICAgcGFkZGluZzowcHg7XHJcbiAgfVxyXG4gIC50aXRsZS1hY2NvcmRpb257XHJcbiAgICBjb2xvcjogIzAwN2VhMztcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgXHJcbiAgfSJdfQ== */\"","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ChangeDetectionStrategy, OnInit, OnDestroy } from '@angular/core';\r\nimport { SelectItem } from '../select/select-item';\r\nimport { compact, orderBy, findIndex, remove, uniq, isEmpty } from 'lodash';\r\nimport { ToasterService } from '../../services/toaster.service';\r\nimport { NgbAccordionConfig } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\ninterface IDesignActualItem {\r\n id: string;\r\n text: string;\r\n designValue: string;\r\n actualValue: string;\r\n}\r\n\r\ninterface IDesignActualModel {\r\n groupOption: string;\r\n selected: IDesignActualItem[]\r\n}\r\n\r\nexport interface IModelSelectParameters {\r\n selected: SelectItem[],\r\n designActual: IDesignActualModel\r\n}\r\n\r\n@Component({\r\n selector: 'app-select-parameters',\r\n templateUrl: './select-parameters.component.html',\r\n styleUrls: ['./select-parameters.component.scss']\r\n})\r\nexport class SelectParametersComponent implements OnInit, OnDestroy {\r\n destroy$: Subject = new Subject();\r\n inputMode: boolean = false;\r\n optionsOpened: boolean = false;\r\n\r\n public options: Array = [];\r\n public pressureOptions: Array = [];\r\n public slurryRateOptions: Array = [];\r\n public massOptions: Array = [];\r\n public volumeOptions: Array = [];\r\n public proppantConcOptions: Array = [];\r\n public fdiOptions: Array = [];\r\n public timeOptions: Array = [];\r\n public treatmentOptions: Array = [];\r\n\r\n public itemObjects: Array = [];\r\n public pressureItemObjects: Array = [];\r\n public slurryRateObjects: Array = [];\r\n public massObjects: Array = [];\r\n public volumeObjects: Array = [];\r\n public proppantConcObjects: Array = [];\r\n public fdiObjects: Array = [];\r\n public timeObjects: Array = [];\r\n public treatmentObjects: Array = [];\r\n\r\n private _disabled: boolean = false;\r\n public activeOption: SelectItem[] = [];\r\n\r\n public itemEmpty: SelectItem = new SelectItem('');\r\n\r\n public designActualOptions: IDesignActualItem[] = [\r\n { designValue: 'desPumpTime', actualValue: 'totalPumpTime', text: 'Pump Time', id: 'Pump Time' },\r\n { designValue: 'desCleanVol', actualValue: 'baseFluidVol', text: 'Clean Vol', id: 'Clean Vol' },\r\n { designValue: 'desSlurryVol', actualValue: 'totalVolume', text: 'Slurry Vol', id: 'Slurry Vol' },\r\n ];\r\n designActualModel: IDesignActualModel = {\r\n groupOption: 'treatment',\r\n selected: []\r\n };\r\n groupOptionControl: FormControl = new FormControl('treatment');\r\n\r\n alwaysActiveGroupName = ['Groups'];\r\n searchVal: string = '';\r\n groupName: string = 'Pressure';\r\n isXAxis: boolean = false;\r\n\r\n @ViewChild('searchInput') searchElement: ElementRef;\r\n\r\n @Input() public idField: string = 'id';\r\n @Input() public textField: string = 'text';\r\n @Input() public childrenField: string = 'children';\r\n @Input() public allowEmpty: boolean = true;\r\n @Input() public placeholder: string = '';\r\n @Input() public multiple: boolean = false;\r\n @Input() public maxItems: number;\r\n @Input() public addNewItem: boolean = false;\r\n @Input() public isFullWidth: boolean = false;\r\n @Input() public sortSelect: boolean = true;\r\n @Input() public isMultiCompare: boolean = true;\r\n @Input()\r\n set isXAxisPar(value) {\r\n this.isXAxis = value;\r\n if (this.isXAxis) {\r\n this.groupName = 'Order'.concat(',', this.alwaysActiveGroupName.join(','));\r\n }\r\n }\r\n\r\n @Input()\r\n set activeDesignActual(value) {\r\n if (value) {\r\n this.designActualModel.selected = [...value];\r\n }\r\n }\r\n\r\n @Input()\r\n set treatmentItem(value: Array) {\r\n if (!value) {\r\n this.treatmentObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.treatmentObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.treatmentObjects = orderBy(this.treatmentObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set isipItem(value: Array) {\r\n if (!value) {\r\n this.itemObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.itemObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.itemObjects = orderBy(this.itemObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set pressureItem(value: Array) {\r\n if (!value) {\r\n this.pressureItemObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.pressureItemObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.pressureItemObjects = orderBy(this.pressureItemObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set slurryRateItem(value: Array) {\r\n if (!value) {\r\n this.slurryRateObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.slurryRateObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.slurryRateObjects = orderBy(this.slurryRateObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set massItem(value: Array) {\r\n if (!value) {\r\n this.massObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.massObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.massObjects = orderBy(this.massObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set volumeItem(value: Array) {\r\n if (!value) {\r\n this.volumeObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.volumeObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.volumeObjects = orderBy(this.volumeObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set timeItem(value: Array) {\r\n if (!value) {\r\n this.timeObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.timeObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.timeObjects = orderBy(this.timeObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set proppantConcItem(value: Array) {\r\n if (!value) {\r\n this.proppantConcObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.proppantConcObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.proppantConcObjects = orderBy(this.proppantConcObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set fdiItem(value: Array) {\r\n if (!value) {\r\n this.fdiObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.fdiObjects = items.map((item: any) => (typeof item === 'string' ? new SelectItem(item) : new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField]\r\n })));\r\n if (this.sortSelect) {\r\n this.fdiObjects = orderBy(this.fdiObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n public set active(selectedItems: Array) {\r\n if (!isEmpty(selectedItems)) {\r\n selectedItems = compact(selectedItems);\r\n const areItemsStrings = typeof selectedItems[0] === 'string';\r\n this.activeOption = selectedItems.map((item: any) => {\r\n const data = areItemsStrings ? item : { id: item[this.idField], text: item[this.textField], prefix: item.prefix };\r\n return new SelectItem(data);\r\n });\r\n }\r\n }\r\n\r\n public get active(): Array {\r\n return this.activeOption;\r\n }\r\n\r\n @Input()\r\n public set fakeOpen(open: boolean) {\r\n if (!!open) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n @Input()\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n if (this._disabled === true) {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n public get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Output() public selected: EventEmitter = new EventEmitter();\r\n @Output() public removed: EventEmitter = new EventEmitter();\r\n @Output() public onModelChange: EventEmitter = new EventEmitter();\r\n @Output() public onGroupsChange: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private toasterService: ToasterService,\r\n private ref: ChangeDetectorRef,\r\n private element: ElementRef,\r\n private accordionConfig: NgbAccordionConfig\r\n ) {\r\n this.accordionConfig.closeOthers = false;\r\n this.groupName = this.groupName.concat(',', this.alwaysActiveGroupName.join(','));\r\n }\r\n\r\n ngOnInit(): void {\r\n this.groupOptionControl.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(val => {\r\n this.designActualModel.groupOption = val;\r\n this.onModelChange.emit({\r\n selected: this.activeOption,\r\n designActual: this.designActualModel\r\n })\r\n this.onGroupsChange.emit(val);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n isActive(value: SelectItem): boolean {\r\n const item = this.activeOption.find(i => i.id === value.id);\r\n return !!item;\r\n }\r\n\r\n matchClick(e: any) {\r\n if (this._disabled === true) {\r\n return;\r\n }\r\n this.inputMode = !this.inputMode;\r\n if (!!this.inputMode) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n open() {\r\n this.options = this.itemObjects.filter(item => item);\r\n this.pressureOptions = this.pressureItemObjects.filter(item => item);\r\n this.slurryRateOptions = this.slurryRateObjects.filter(item => item);\r\n this.massOptions = this.massObjects.filter(item => item);\r\n this.volumeOptions = this.volumeObjects.filter(item => item);\r\n this.proppantConcOptions = this.proppantConcObjects.filter(item => item);\r\n this.fdiOptions = this.fdiObjects.filter(item => item);\r\n this.timeOptions = this.timeObjects.filter(item => item);\r\n this.treatmentOptions = this.treatmentObjects.filter(item => item);\r\n\r\n this.optionsOpened = true;\r\n this.ref.detectChanges();\r\n if (!this.multiple) {\r\n const itemActive = this.element.nativeElement.querySelector('.ul-select-choice .ul-select-choice-row.active .dropdown-item');\r\n if (itemActive) {\r\n itemActive.focus();\r\n }\r\n }\r\n\r\n // find active accordion id\r\n this.groupName = this.findActiveGroups();\r\n\r\n setTimeout(() => {\r\n this.searchElement.nativeElement.focus();\r\n });\r\n }\r\n\r\n public clickOutside(): void {\r\n this.inputMode = false;\r\n this.optionsOpened = false;\r\n }\r\n\r\n public inputEvent(e: any) {\r\n this.searchVal = e.target.value.trim();\r\n if (this.searchVal) {\r\n this.options = this.itemObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.pressureOptions = this.pressureItemObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.slurryRateOptions = this.slurryRateObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.massOptions = this.massObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.volumeOptions = this.proppantConcObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.proppantConcOptions = this.proppantConcObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.fdiOptions = this.fdiObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.timeOptions = this.timeObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.treatmentOptions = this.treatmentObjects.filter((item: any) => (!this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text))) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n\r\n } else {\r\n this.options = this.itemObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.pressureOptions = this.pressureItemObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.slurryRateOptions = this.slurryRateObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.volumeOptions = this.volumeObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.massOptions = this.massObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.proppantConcOptions = this.proppantConcObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.fdiOptions = this.fdiObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.timeOptions = this.timeObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n this.treatmentOptions = this.treatmentObjects.filter((item: any) => !this.multiple || (!!this.multiple && !this.active.find((o: SelectItem) => item.text === o.text)));\r\n }\r\n }\r\n\r\n selectMatch(value, e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n if (this.multiple) {\r\n const isSelectedItem = this.activeOption.find(item => item.id === value.id);\r\n if (isSelectedItem) {\r\n remove(this.activeOption, (item => item.id === value.id));\r\n } else {\r\n if (this.maxItems) {\r\n if (this.activeOption.length < this.maxItems) {\r\n this.activeOption.push(value);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n } else {\r\n this.activeOption.push(value);\r\n }\r\n }\r\n // emit selected items\r\n this.selected.emit(this.activeOption);\r\n } else {\r\n this.activeOption = [value];\r\n this.selected.emit(value);\r\n }\r\n this.onModelChange.emit({\r\n selected: this.activeOption,\r\n designActual: this.designActualModel\r\n })\r\n }\r\n\r\n findActiveGroups() {\r\n let activeGroups = this.activeOption.map(item => {\r\n return this.checkGroupName(item.text);\r\n });\r\n activeGroups = uniq(activeGroups);\r\n activeGroups = activeGroups.concat(this.alwaysActiveGroupName);\r\n if (this.designActualModel && !isEmpty(this.designActualModel.selected)) {\r\n activeGroups = activeGroups.concat(['DesignActual']);\r\n }\r\n\r\n return activeGroups.join(',');\r\n }\r\n\r\n selectDesignActual(value, e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n const isSelectedItem = this.designActualModel.selected.find(item => item.id === value.id);\r\n if (isSelectedItem) {\r\n this.designActualModel.selected = [];\r\n } else {\r\n this.designActualModel.selected = [value];\r\n }\r\n\r\n this.onModelChange.emit({\r\n selected: this.activeOption,\r\n designActual: this.designActualModel\r\n })\r\n }\r\n\r\n private checkGroupName(value): string {\r\n if (value === 'ISIP(final)' || value === 'ISIP Gradient (Final)' || value === 'ISIP (Early)' || value === 'ISIP Gradient (Early)' || value === 'Btm Pressure (ISIP)') {\r\n return 'ISIP';\r\n } else if (value === 'Slurry Rate (Maximum)' || value === 'Slurry Rate (Average)' || value === 'Slurry Rate (Ballseat)' || value === 'Slurry Rate (Breakdown)' || value === 'Slurry Rate (Pump Down)') {\r\n return 'SlurryRate';\r\n } else if (value === 'Mass (Total Proppant)') {\r\n return 'Mass';\r\n } else if (value === 'Volume (Slurry)' || value === 'Volume (Clean)' || value === 'Volume (Ballseat)' || value === 'Volume (Breakdown)' || value === 'Volume (Pumpdown)') {\r\n return 'Volume';\r\n } else if (value === 'Proppant Conc (Average)' || value === 'Proppant Conc (Maximum)') {\r\n return 'ProppantConc';\r\n } else if (value === 'Net Gain' || value === 'Gross Gain' || value === 'VFR' || value === 'Avg FDI Intensity' || value === '%VFR' || value === 'Max FDI Intensity') {\r\n return 'FDI';\r\n } else if (value == 'Time (Pumping)') {\r\n return 'Time';\r\n } else if (value === 'Pressure (Average)' || value === 'Pressure (Maximum)' || value === 'Pressure (Ballseat)' || value === 'Pressure (Breakdown)' || value === 'Pressure (Well Opening)' || value === 'Btm Pressure Max' || value === 'Btm Pressure Avg') {\r\n return 'Pressure';\r\n } else if (value && value.indexOf('Order') === 1) {\r\n return 'Order';\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n elementFocus(realtime: boolean) {\r\n let element: any;\r\n if (realtime) {\r\n element = this.element.nativeElement.querySelector('.ul-select-realtime .ul-select-choice');\r\n } else {\r\n element = this.element.nativeElement.querySelector('.ul-select-fracpro .ul-select-choice');\r\n }\r\n this.ref.detectChanges();\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n\r\n}\r\n","export class SelectItem {\r\n public id: string;\r\n public text: string;\r\n public children: Array;\r\n public parent: SelectItem;\r\n public prefix: string;\r\n public icon: string;\r\n\r\n public constructor(source: any) {\r\n if (typeof source === 'string') {\r\n this.id = this.text = source;\r\n }\r\n if (typeof source === 'object') {\r\n if (source.id || source.id === 0) {\r\n this.id = source.id;\r\n } else {\r\n this.id = source.text;\r\n }\r\n this.text = source.text;\r\n if (source.children && source.text) {\r\n this.children = source.children.map((c: any) => {\r\n const r: SelectItem = new SelectItem(c);\r\n r.parent = this;\r\n return r;\r\n });\r\n this.text = source.text;\r\n }\r\n if (source.prefix) {\r\n this.prefix = source.prefix;\r\n }\r\n if (source.icon) {\r\n this.icon = source.icon;\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n 0\\\" class=\\\"ul-select-match-text\\\" [innerHTML]=\\\"active[0].text\\\">\\r\\n \\r\\n \\r\\n \\r\\n {{placeholder}}\\r\\n 0\\\" class=\\\"ul-select-match-text\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{placeholder}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n {{ resetBtnLabel }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Add New {{ itemName }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
    0\\\" class=\\\"ul-select-choice\\\" [ngClass]=\\\"{'ul-select-choice-height': maxShowedItem}\\\">\\r\\n
  • \\r\\n \\r\\n
  • \\r\\n
  • \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\" class=\\\"d-inline-block ml-2\\\">\\r\\n
\\r\\n \\r\\n Clear All\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\"","module.exports = \".ul-select-container {\\n position: relative; }\\n .ul-select-container:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\\n border-radius: 0.25rem; }\\n .ul-select-container.ul-inline {\\n display: inline-block; }\\n .ul-select-toggle {\\n width: 100%;\\n display: inline-block;\\n overflow: hidden;\\n text-align: left;\\n vertical-align: middle;\\n color: #36404b;\\n background-color: #ffffff;\\n padding-right: 20px;\\n padding-left: 10px;\\n padding-top: 5px;\\n padding-bottom: 5px;\\n border: 1px solid #e2e2e2;\\n position: relative;\\n font-size: 12px;\\n height: 30px;\\n font-weight: normal;\\n line-height: normal; }\\n .ul-select-toggle .ui-select-placeholder {\\n opacity: 0.5;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: inline-block; }\\n .ul-select-toggle .ul-select-match-text {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n width: 100%;\\n display: block; }\\n .ul-select-toggle i {\\n position: absolute;\\n right: 10px;\\n font-size: 8px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-remove .ul-select-remove-all {\\n display: inline-block;\\n position: relative;\\n border-radius: 3px;\\n border: solid 1px #f8ebeb;\\n background-color: #f8ebeb;\\n padding: 3px 20px 3px 7px;\\n line-height: 1;\\n cursor: pointer; }\\n .ul-select-remove .ul-select-remove-all .ul-select-remove-text {\\n font-size: 12px;\\n font-weight: normal;\\n line-height: normal;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all i {\\n position: absolute;\\n right: 5px;\\n top: 50%;\\n transform: translate(0, -50%);\\n font-size: 10px;\\n color: #eb5a52; }\\n .ul-select-remove .ul-select-remove-all:active {\\n opacity: 0.5; }\\n .ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown.multiple-row {\\n margin-right: 40px; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0;\\n min-width: 5rem; }\\n .ul-select-dropdown .dropdown-menu.only-icon {\\n min-width: 3rem; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-add-new-container {\\n position: relative;\\n cursor: pointer; }\\n .ul-select-dropdown .ul-select-add-new-container .ui-select-add-new {\\n border-top: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0;\\n border-bottom: 0;\\n border-right: 0;\\n border-left: 0;\\n font-size: 12px;\\n font-weight: bold;\\n line-height: 1.5;\\n color: #007ea3;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n padding-right: 26px;\\n height: auto;\\n background-color: #e1ecef; }\\n .ul-select-dropdown .ul-select-add-new-container .icon-plus {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-add-new-container.disabled, .ul-select-dropdown .ul-select-add-new-container:disabled {\\n cursor: not-allowed; }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 180px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice.ul-select-choice-height {\\n max-height: 270px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 10px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px;\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n .icon-plus-line {\\n font-size: 13px;\\n font-weight: bolder; }\\n .icon-mouse-pointer {\\n font-weight: bolder; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvc2VsZWN0L0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFxzZWxlY3RcXHNlbGVjdC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFpQixFQUFBO0VBRG5CO0lBR0ksVUFBVTtJQUNWLGdEQUFnRDtJQUNoRCxzQkFBc0IsRUFBQTtFQUwxQjtJQVFJLHFCQUFxQixFQUFBO0VBR3pCO0VBQ0UsV0FBVztFQUNYLHFCQUFxQjtFQUNyQixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLHNCQUFzQjtFQUN0QixjQUFjO0VBQ2QseUJBQXlCO0VBQ3pCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixZQUFZO0VBQ1osbUJBQW1CO0VBQ25CLG1CQUFtQixFQUFBO0VBakJyQjtJQW1CSSxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLHFCQUFxQixFQUFBO0VBeEJ6QjtJQTJCSSxtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsY0FBYyxFQUFBO0VBL0JsQjtJQWtDSSxrQkFBa0I7SUFDbEIsV0FBVztJQUNYLGNBQWM7SUFDZCxRQUFRO0lBRVIsNkJBQTZCLEVBQUE7RUFHakM7RUFFSSxxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6QixjQUFjO0VBQ2QsZUFBZSxFQUFBO0VBVG5CO0lBV00sZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsY0FBYyxFQUFBO0VBZHBCO0lBaUJNLGtCQUFrQjtJQUNsQixV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c3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnVsLXNlbGVjdC1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xyXG4gICY6Zm9jdXMge1xyXG4gICAgb3V0bGluZTogMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XHJcbiAgfVxyXG4gICYudWwtaW5saW5le1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1cclxufVxyXG4udWwtc2VsZWN0LXRvZ2dsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIGNvbG9yOiAjMzY0MDRiO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgcGFkZGluZy10b3A6IDVweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNXB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMmUyZTI7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBoZWlnaHQ6IDMwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG4gIC51aS1zZWxlY3QtcGxhY2Vob2xkZXIge1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1cclxuICAudWwtc2VsZWN0LW1hdGNoLXRleHQge1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgfVxyXG4gIGkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDEwcHg7XHJcbiAgICBmb250LXNpemU6IDhweDtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gIH1cclxufVxyXG4udWwtc2VsZWN0LXJlbW92ZSB7XHJcbiAgLnVsLXNlbGVjdC1yZW1vdmUtYWxsIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIGJvcmRlcjogc29saWQgMXB4ICNmOGViZWI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhlYmViO1xyXG4gICAgcGFkZGluZzogM3B4IDIwcHggM3B4IDdweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgLnVsLXNlbGVjdC1yZW1vdmUtdGV4dCB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgY29sb3I6ICNlYjVhNTI7XHJcbiAgICB9XHJcbiAgICBpIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICByaWdodDogNXB4O1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgY29sb3I6ICNlYjVhNTI7XHJcbiAgICB9XHJcbiAgICAmOmFjdGl2ZSB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuLnVsLXNlbGVjdC1kcm9wZG93biB7XHJcbiAgY29sb3I6ICMzMjNjNDc7XHJcbiAgJi5tdWx0aXBsZS1yb3cge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xyXG4gIH1cclxuICAuZHJvcGRvd24tbWVudSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtaW4td2lkdGg6IDVyZW07XHJcbiAgICAmLm9ubHktaWNvbiB7XHJcbiAgICAgIG1pbi13aWR0aDogM3JlbTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1zZWFyY2gtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGlucHV0IHtcclxuICAgICAgYm9yZGVyOiAwO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGNvbG9yOiAjMzIzYzQ3O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4O1xyXG4gICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICB9XHJcbiAgICAuaWNvbi1zZWFyY2gge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1hZGQtbmV3LWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAudWktc2VsZWN0LWFkZC1uZXcge1xyXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xyXG4gICAgICBib3JkZXItbGVmdDogMDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA4cHg7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDI2cHg7XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UxZWNlZjtcclxuICAgIH1cclxuICAgIC5pY29uLXBsdXMge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICAgICYuZGlzYWJsZWQsICY6ZGlzYWJsZWQge1xyXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgfVxyXG4gIH1cclxuICAudWwtc2VsZWN0LWNob2ljZSB7XHJcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgbWF4LWhlaWdodDogMTgwcHg7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICAgICYudWwtc2VsZWN0LWNob2ljZS1oZWlnaHR7XHJcbiAgICAgIG1heC1oZWlnaHQ6IDI3MHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC51bC1zZWxlY3QtY2hvaWNlLXJvdyB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgcGFkZGluZzogNXB4IDE4cHggNnB4IDEwcHg7XHJcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIC5kcm9wZG93bi1pdGVtIHtcclxuICAgICAgICBjb2xvcjogIzMyM2M0NztcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgPiBkaXYge1xyXG4gICAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICAgIHdvcmQtYnJlYWs6IGtlZXAtYWxsO1xyXG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaSB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgcmlnaHQ6IDhweDtcclxuICAgICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgICBhOmhvdmVyIHtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICB9XHJcbiAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGkge1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBjb2xvcjogIzAwN2VhMztcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFmNWZhO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAudWwtc2VsZWN0LWNob2ljZS1hbGwge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgICBwYWRkaW5nOiA2cHggMTBweDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgID4gZGl2IHtcclxuICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgICAgICByaWdodDogMTJweDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4udWktZGlzYWJsZWQge1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHotaW5kZXg6IDU7XHJcbiAgb3BhY2l0eTogMC42O1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuLmljb24tcGx1cy1saW5lIHtcclxuICBmb250LXNpemU6IDEzcHg7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcclxufVxyXG4uaWNvbi1tb3VzZS1wb2ludGVyIHtcclxuICBmb250LXdlaWdodDogYm9sZGVyO1xyXG59Il19 */\"","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild, OnInit } from '@angular/core';\r\nimport { SelectItem } from './select-item';\r\nimport { compact, forEach, orderBy, findIndex, cloneDeep } from 'lodash';\r\nimport { ToasterService } from '../../services/toaster.service';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-ng-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss']\r\n})\r\nexport class SelectComponent implements OnInit, OnDestroy {\r\n destroy$: Subject = new Subject();\r\n inputMode: boolean = false;\r\n optionsOpened: boolean = false;\r\n\r\n public options: Array = [];\r\n public itemObjects: Array = [];\r\n private _active: Array = [];\r\n private _disabled: boolean = false;\r\n public activeOption: SelectItem = new SelectItem('object');\r\n\r\n public itemEmpty: SelectItem = new SelectItem('');\r\n\r\n searchVal: string = '';\r\n maxValue: number = 50;\r\n lazyOptions: any;\r\n\r\n @ViewChild('searchInput') searchElement: ElementRef;\r\n\r\n @Input() public title: string;\r\n @Input() public maxShowedItem: boolean = false;\r\n @Input() public idField: string = 'id';\r\n @Input() public textField: string = 'text';\r\n @Input() public childrenField: string = 'children';\r\n @Input() public allowEmpty: boolean = true;\r\n @Input() public searchField: boolean = true;\r\n @Input() public placeholder: string = '';\r\n @Input() public multiple: boolean = false;\r\n @Input() public autoClose: boolean = true;\r\n @Input() public maxItems: number;\r\n @Input() public itemName: string = 'Channel Name';\r\n @Input() public chooseAll: boolean = false;\r\n @Input() public addNewItem: boolean = false;\r\n @Input() public isFullWidth: boolean = false;\r\n @Input() public sortSelect: boolean = true;\r\n @Input() public nestedTag: boolean;\r\n @Input() public resetBtnLabel: string = 'Reset Channel';\r\n @Input() public isResetBtn: boolean = false;\r\n @Input() public disabledResetBtn: boolean = false;\r\n @Input() public onlyIcon: boolean = false;\r\n @Input() public isIcon: boolean = false;\r\n @Input() public iconField: string = 'icon';\r\n @Input()\r\n set item(value: Array) {\r\n if (!value) {\r\n this.itemObjects = [];\r\n } else {\r\n const items = value.filter((item: any) => {\r\n if ((typeof item === 'string') || (typeof item === 'object' && item && item[this.textField] && (item[this.idField] || item[this.idField] === 0))) {\r\n return item;\r\n }\r\n });\r\n this.itemObjects = items.map((item: any) => {\r\n if (typeof item === 'string') return new SelectItem(item);\r\n else return new SelectItem({\r\n id: item[this.idField],\r\n text: item[this.textField],\r\n children: item[this.childrenField],\r\n icon: item[this.iconField]\r\n });\r\n });\r\n if (this.sortSelect) {\r\n this.itemObjects = orderBy(this.itemObjects, item => item.text.toLowerCase());\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n public set active(selectedItems: Array) {\r\n if (!selectedItems || selectedItems.length === 0) {\r\n this._active = [];\r\n this.activeOption = new SelectItem('');\r\n } else {\r\n selectedItems = compact(selectedItems);\r\n\r\n const areItemsStrings = typeof selectedItems[0] === 'string';\r\n this._active = selectedItems.map((item: any) => {\r\n const data = areItemsStrings ? item : {id: item[this.idField], text: item[this.textField], icon: item[this.iconField]};\r\n this.activeOption = new SelectItem(data);\r\n return new SelectItem(data);\r\n });\r\n }\r\n }\r\n public get active(): Array {\r\n return this._active;\r\n }\r\n\r\n @Input()\r\n fcActive: FormControl = new FormControl([]);\r\n\r\n @Input()\r\n public set fakeOpen(open: boolean) {\r\n if (!!open) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n @Input()\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n this.ref.detectChanges();\r\n if (this._disabled === true) {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n public get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n @Output() public selected: EventEmitter = new EventEmitter();\r\n @Output() public selectedAll: EventEmitter = new EventEmitter();\r\n @Output() public removed: EventEmitter = new EventEmitter();\r\n @Output() public removedAll: EventEmitter = new EventEmitter();\r\n @Output() public addNew: EventEmitter = new EventEmitter();\r\n @Output() public resetChannelEmit: EventEmitter = new EventEmitter();\r\n constructor(private toasterService: ToasterService,\r\n private element: ElementRef,\r\n private ref: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.fcActive.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n // unset active item\r\n if (!value) {\r\n this.active = null;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.destroy$.unsubscribe();\r\n this.ref.detach();\r\n }\r\n\r\n protected isActive(value: SelectItem): boolean {\r\n if (!value) {\r\n return false;\r\n }\r\n let isActive = this.activeOption && this.activeOption.id === value.id;\r\n if (!!this.multiple) isActive = isActive || this.active.findIndex(item => item.id === value.id) !== -1;\r\n return isActive;\r\n }\r\n protected matchClick(e: any) {\r\n if (this._disabled === true) {\r\n return;\r\n }\r\n this.inputMode = !this.inputMode;\r\n if (!!this.inputMode) {\r\n this.open();\r\n } else {\r\n this.clickOutside();\r\n }\r\n }\r\n open() {\r\n this.options = this.itemObjects.filter((item: any) => !this.multiple || !this.autoClose || (!!this.multiple && this.active.findIndex((o: SelectItem) => item.id === o.id) === -1));\r\n this.optionsOpened = true;\r\n this.lazyOptions = this.options.slice(0, 50);\r\n this.ref.detectChanges();\r\n if (this.options && this.options.length > 0) {\r\n const content = document.querySelector('.ul-select-choice');\r\n const scroll$ = fromEvent(content, 'scroll').pipe(map(() => content));\r\n const lazyContent = this.element.nativeElement.querySelector('.ul-select-choice');\r\n if (!this.multiple) {\r\n const indexItem = this.options.findIndex(item => {\r\n return item.id === this.activeOption.id;\r\n });\r\n if (indexItem > this.maxValue) {\r\n this.maxValue = this.roundMathMaxItem(indexItem);\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n this.ref.detectChanges();\r\n }\r\n const itemActive = this.element.nativeElement.querySelector('.ul-select-choice .ul-select-choice-row.active .dropdown-item');\r\n if (itemActive) {\r\n itemActive.focus();\r\n }\r\n }\r\n scroll$.subscribe(element => {\r\n if (lazyContent.offsetHeight + lazyContent.scrollTop > (30 * this.maxValue) - 10) {\r\n this.maxValue = this.maxValue + 50;\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n this.ref.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n if (this.searchElement) {\r\n setTimeout(() => {\r\n this.searchElement.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n mainClickKeyDown(event: any) {\r\n // Up\r\n if (event.keyCode === 38) {\r\n event.preventDefault();\r\n const index = findIndex(this.lazyOptions, {id: this.activeOption.id});\r\n this.activeOption = index > 0 ? this.lazyOptions[index - 1] : this.lazyOptions[0];\r\n this.ensureActiveValue(index > 0 ? (index - 1) : -1);\r\n return;\r\n }\r\n // Down\r\n if (event.keyCode === 40) {\r\n event.preventDefault();\r\n const index = findIndex(this.lazyOptions, {id: this.activeOption.id});\r\n if (index < (this.options.length - 1)) {\r\n this.activeOption = index >= 0 ? this.lazyOptions[index + 1] : this.lazyOptions[0];\r\n this.ensureActiveValue(index + 1);\r\n }\r\n return;\r\n }\r\n // End\r\n if (event.keyCode === 35) {\r\n this.lazyOptions = this.options;\r\n this.ref.detectChanges();\r\n if (this.lazyOptions.length > 0) {\r\n this.activeOption = this.lazyOptions[this.lazyOptions.length - 1];\r\n }\r\n return;\r\n }\r\n // Home\r\n if (event.keyCode === 36) {\r\n if (this.lazyOptions.length > 0) {\r\n this.activeOption = this.lazyOptions[0];\r\n }\r\n return;\r\n }\r\n if (event.keyCode === 13) {\r\n if (this.activeOption && this.active.indexOf(this.activeOption) === -1) {\r\n this.selectMatch(this.activeOption, event);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n\r\n public clickOutside(): void {\r\n this.inputMode = false;\r\n this.optionsOpened = false;\r\n this.maxValue = 50;\r\n this.ref.detectChanges();\r\n }\r\n\r\n public inputEvent(e: any) {\r\n this.searchVal = e.target.value.trim();\r\n if (this.searchVal) {\r\n this.options = this.itemObjects.filter((item: any) => (!this.multiple || !this.autoClose || (!!this.multiple && this.active.findIndex((o: SelectItem) => item.text === o.text) === -1)) && (item.text.toString().toLowerCase().indexOf(this.searchVal.toLowerCase()) > -1));\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n if (this.multiple && this.searchVal) {\r\n if (this.lazyOptions && this.lazyOptions.length === 1) {\r\n this.activeOption = cloneDeep(this.lazyOptions[0]);\r\n }\r\n }\r\n } else {\r\n this.options = this.itemObjects.filter((item: any) => !this.multiple || !this.autoClose || (!!this.multiple && this.active.findIndex((o: SelectItem) => item.text === o.text) === -1));\r\n this.lazyOptions = this.options.slice(0, this.maxValue);\r\n if (this.multiple) {\r\n this.activeOption = null;\r\n }\r\n }\r\n }\r\n\r\n private selectMatch(value: SelectItem, e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n if (!this.maxItems || this.active.length < this.maxItems) {\r\n if (this.multiple === true) {\r\n this.active.push(value);\r\n } else {\r\n this.active[0] = value;\r\n this.activeOption = value;\r\n }\r\n this.selected.emit(value);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n if (!!this.autoClose) {\r\n this.clickOutside();\r\n }\r\n }\r\n\r\n private selectAll(items: SelectItem[], e: Event = void 0): void {\r\n if (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n if (!this.maxItems || (this.active.length + items.length) <= this.maxItems) {\r\n forEach(items, value => {\r\n if (this.multiple === true) {\r\n this.active.push(value);\r\n }\r\n });\r\n this.selectedAll.emit(this.active);\r\n } else {\r\n this.toasterService.showError(`The Items must be at less than or equal to ${this.maxItems}`);\r\n }\r\n this.clickOutside();\r\n }\r\n\r\n public removeAll() {\r\n this.active = [];\r\n this.ref.detectChanges();\r\n this.removedAll.emit();\r\n }\r\n public addNewItemList() {\r\n if (this.searchVal && this.searchVal.trim()) {\r\n this.addNew.emit(this.searchVal);\r\n this.clickOutside();\r\n } else {\r\n if (this.searchElement) this.searchElement.nativeElement.focus();\r\n this.toasterService.showError(`Please enter New ${this.itemName}!`);\r\n }\r\n }\r\n\r\n public roundMathMaxItem(num: number) {\r\n return (Math.ceil(num / 50)) * 50;\r\n }\r\n\r\n public ensureActiveValue(indexActive) {\r\n const container = this.element.nativeElement.querySelector('.ul-select-choice');\r\n let posY: number;\r\n if (!container) {\r\n return;\r\n }\r\n const choices = container.querySelectorAll('.ul-select-choice-row');\r\n if (choices.length < 1) {\r\n return;\r\n }\r\n if (this.allowEmpty || this.chooseAll) {\r\n indexActive = indexActive + 1;\r\n }\r\n const active = choices[indexActive];\r\n if (!active) {\r\n return;\r\n }\r\n if (this.multiple) {\r\n posY = active.offsetTop + active.clientHeight - container.scrollTop;\r\n } else {\r\n posY = active.offsetTop - container.scrollTop;\r\n }\r\n const height: number = container.offsetHeight;\r\n if (posY > height) {\r\n container.scrollTop += posY - height;\r\n } else if (posY <= active.clientHeight) {\r\n container.scrollTop -= active.clientHeight - posY;\r\n }\r\n }\r\n\r\n public resetChannel(){\r\n if (!this.disabledResetBtn) this.resetChannelEmit.emit();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Well NameWell API/UWIService CompanyOperatorPadFormationStateCounty
No data found
{{ well.wellName }}{{ well.wellUid }}{{ well.serviceCompany }}{{ well.operatorCompany }}{{ well.padName }}{{ well.formation }}{{ well.state }}{{ well.county }}
\\r\\n
\\r\\n\"","module.exports = \".app-table-wells-selection {\\n max-height: 580px;\\n overflow: auto; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdGFibGUtd2VsbHMtc2VsZWN0aW9uL0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFx0YWJsZS13ZWxscy1zZWxlY3Rpb25cXHRhYmxlLXdlbGxzLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtFQUNqQixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy90YWJsZS13ZWxscy1zZWxlY3Rpb24vdGFibGUtd2VsbHMtc2VsZWN0aW9uLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmFwcC10YWJsZS13ZWxscy1zZWxlY3Rpb24ge1xyXG4gIG1heC1oZWlnaHQ6IDU4MHB4O1xyXG4gIG92ZXJmbG93OiBhdXRvO1xyXG59XHJcbiJdfQ== */\"","import { Component, OnInit, OnChanges, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\r\nimport { countBy } from 'lodash';\r\nimport { ToasterService } from '../../services/toaster.service';\r\n\r\n@Component({\r\n selector: 'app-table-wells-selection',\r\n templateUrl: './table-wells-selection.component.html',\r\n styleUrls: ['./table-wells-selection.component.scss']\r\n})\r\nexport class TableWellsSelectionComponent implements OnInit, OnChanges {\r\n\r\n @Input() listWells: any[] = [];\r\n @Input() selectedWell: any[] = [];\r\n @Input() maxWells: number;\r\n @Input() countItemWells: number;\r\n @Input() isService: boolean = false;\r\n @Input() isOperator: boolean = false;\r\n @Output() selectedChange: EventEmitter = new EventEmitter();\r\n\r\n tableState = {\r\n selectedAll: false\r\n };\r\n constructor(private toasterService: ToasterService) { }\r\n\r\n ngOnInit() {\r\n if (this.tableState.selectedAll) {\r\n this.setSelectedWells(this.tableState.selectedAll);\r\n this.selectedChange.emit({ selected: [...this.listWells] });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.listWells && !changes.listWells.isFirstChange()) {\r\n this.listWells = changes.listWells.currentValue;\r\n // reset selected all state\r\n this.setSelectAllState();\r\n }\r\n }\r\n\r\n toggleSelectWell(event, well) {\r\n event.preventDefault();\r\n if (well) {\r\n well.selected = !well.selected;\r\n this.setSelectAllState();\r\n\r\n this.selectedChange.emit({ selected: [...this.listWells] });\r\n }\r\n }\r\n\r\n toggleClickWell(event, check: boolean) {\r\n if (!check) {\r\n const countSelected = countBy(this.listWells, 'selected').true || 0;\r\n if (this.maxWells <= (this.countItemWells + countSelected)) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toasterService.showError('Max Well have to be greater than the number of Well records');\r\n }\r\n }\r\n }\r\n\r\n setSelectAllState() {\r\n const countSelected = countBy(this.listWells, 'selected').true || 0;\r\n if (countSelected !== this.listWells.length) {\r\n this.tableState.selectedAll = false;\r\n } else {\r\n this.tableState.selectedAll = true;\r\n }\r\n }\r\n\r\n toggleSelectAll(event) {\r\n event.preventDefault();\r\n this.tableState.selectedAll = !this.tableState.selectedAll;\r\n this.setSelectedWells(this.tableState.selectedAll);\r\n this.selectedChange.emit({ selected: [...this.listWells] });\r\n }\r\n\r\n toggleClickAll(event , check: boolean) {\r\n if (!check) {\r\n const count = this.listWells.length;\r\n if (this.maxWells <= (this.countItemWells + count)) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.toasterService.showError('Max Well have to be greater than the number of Well records');\r\n }\r\n }\r\n }\r\n\r\n setSelectedWells(value) {\r\n if (this.listWells && this.listWells.length > 0) {\r\n this.listWells.forEach(well => {\r\n well.selected = value;\r\n });\r\n }\r\n }\r\n\r\n removeAllSelected() {\r\n this.tableState.selectedAll = false;\r\n this.setSelectedWells(false);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".ul-select-dropdown {\\n color: #323c47; }\\n .ul-select-dropdown .dropdown-menu {\\n width: 100%;\\n padding: 0; }\\n .ul-select-dropdown .dropdown-menu.wd-115 {\\n width: 115px; }\\n .ul-select-dropdown .dropdown-menu.wd-130 {\\n width: 130px; }\\n .ul-select-dropdown .ul-select-search-container {\\n position: relative; }\\n .ul-select-dropdown .ul-select-search-container input {\\n border: 0;\\n font-size: 12px;\\n line-height: 1.5;\\n color: #323c47;\\n padding-right: 26px;\\n height: 30px; }\\n .ul-select-dropdown .ul-select-search-container .icon-search {\\n position: absolute;\\n font-size: 14px;\\n right: 10px;\\n top: 50%;\\n transform: translate(0, -50%); }\\n .ul-select-dropdown .ul-select-choice {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n max-height: 120px;\\n overflow: auto; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all {\\n font-size: 12px;\\n line-height: 1.5;\\n border-top: 1px solid #e2e2e2;\\n padding: 6px 10px;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item {\\n color: #007ea3;\\n font-weight: bold;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div {\\n outline: 0;\\n word-break: break-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 12px;\\n font-size: 14px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:active {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-all .dropdown-item > div:hover {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row {\\n height: auto;\\n font-size: 12px;\\n line-height: 1.5;\\n padding: 5px 18px 6px 20px;\\n border-top: 1px solid #e2e2e2;\\n position: relative; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.has-act {\\n padding-left: 35px; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item {\\n color: #323c47;\\n padding: 0;\\n outline: 0; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item > div {\\n outline: 0;\\n word-break: keep-all;\\n white-space: normal;\\n word-wrap: break-word; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:active {\\n color: #007ea3;\\n font-weight: bold;\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i {\\n position: absolute;\\n top: 50%;\\n transform: translate(0, -50%);\\n right: 8px;\\n font-size: 10px;\\n display: none; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i.icon-edit {\\n display: block;\\n left: 5px;\\n right: unset; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row i.icon-cancel {\\n display: block;\\n left: 20px;\\n right: unset; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row a:hover {\\n opacity: 1; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item {\\n color: #007ea3;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:hover, .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active .dropdown-item:focus {\\n background-color: inherit; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row.active i {\\n display: block; }\\n .ul-select-dropdown .ul-select-choice .ul-select-choice-row:hover {\\n cursor: pointer;\\n color: #007ea3;\\n background-color: #eaf5fa;\\n font-weight: bold; }\\n .ul-select-dropdown .ul-select-group-title {\\n height: 19px;\\n background-color: #eaf5fa;\\n padding: 0 10px;\\n border-top: solid 1px #e2e2e2;\\n line-height: 1; }\\n .ul-select-dropdown .ul-select-group-title small {\\n color: #007ea3;\\n font-size: 10px;\\n font-weight: bold; }\\n .ui-disabled {\\n border-radius: 4px;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n z-index: 5;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n cursor: not-allowed; }\\n .ul-select-realtime, .ul-select-fracpro {\\n position: relative; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdHJlYXRtZW50LWxvZy10ZW1wbGF0ZS1kcm9wZG93bi9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvc3JjXFxhcHBcXHNoYXJlZFxcY29tcG9uZW50c1xcdHJlYXRtZW50LWxvZy10ZW1wbGF0ZS1kcm9wZG93blxcdHJlYXRtZW50LWxvZy10ZW1wbGF0ZS1kcm9wZG93bi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNFLGNBQWMsRUFBQTtFQURoQjtJQUdJLFdBQVc7SUFDWCxVQUFVLEVBQUE7RUFKZDtNQU1NLFlBQVksRUFBQTtFQU5sQjtNQVNNLFlBQVksRUFBQTtFQVRsQjtJQWFJLGtCQUFrQixFQUFBO0VBYnRCO01BZU0sU0FBUztNQUNULGVBQWU7TUFDZixnQkFBZ0I7TUFDaEIsY0FBYztNQUNkLG1CQUFtQjtNQUNuQixZQUFZLEVBQUE7RUFwQmxCO01BdUJNLGtCQUFrQjtNQUNsQixlQUFlO01BQ2YsV0FBVztNQUNYLFFBQVE7TUFFUiw2QkFBNkIsRUFBQTtFQTVCbkM7SUFnQ0kscUJBQXFCO0lBQ3JCLFVBQVU7SUFDVixTQUFTO0lBQ1QsaUJBQWlCO0lBQ2pCLGNBQWMsRUFBQTtFQXBDbEI7TUFzQ00sZUFBZTtNQUNmLGdCQUFnQjtNQUNoQiw2QkFBNkI7TUFDN0IsaUJBQWlCO01BQ2pCLGtCQUFrQixFQUFBO0VBMUN4QjtRQTRDUSxjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLFVBQVU7UUFDVixVQUFVLEVBQUE7RUEvQ2xCO1VBaURVLHlCQUF5QixFQUFBO0VBakRuQztVQW9EVSxVQUFVO1VBQ1YscUJBQXFCO1VBQ3JCLG1CQUFtQjtVQUNuQixxQkFBcUIsRUFBQTtFQXZEL0I7WUF5RFksa0JBQWtCO1lBQ2xCLFFBQVE7WUFFUiw2QkFBNkI7WUFDN0IsV0FBVztZQUNYLGVBQWUsRUFBQTtFQTlEM0I7WUFpRVkseUJBQXlCLEVBQUE7RUFqRXJDO1lBb0VZLHlCQUF5QixFQUFBO0VBcEVyQztNQTBFTSxZQUFZO01BQ1osZUFBZTtNQUNmLGdCQUFnQjtNQUNoQiwwQkFBMEI7TUFDMUIsNkJBQTZCO01BQzdCLGtCQUFrQixFQUFBO0VBL0V4QjtRQWlGUSxrQkFBa0IsRUFBQTtFQWpGMUI7UUFvRlEsY0FBYztRQUNkLFVBQVU7UUFDVixVQUFVLEVBQUE7RUF0RmxCO1VBd0ZVLFVBQVU7VUFDVixvQkFBb0I7VUFDcEIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBO0VBM0YvQjtVQThGVSxjQUFjO1VBQ2QsaUJBQWlCO1VBQ2pCLHlCQUF5QixFQUFBO0VBaEduQztVQW1HVSx5QkFBeUIsRUFBQTtFQW5HbkM7UUF1R1Esa0JBQWtCO1FBQ2xCLFFBQVE7UUFFUiw2QkFBNkI7UUFDN0IsVUFBVTtRQUNWLGVBQWU7UUFDZixhQUFhLEVBQUE7RUE3R3JCO1VBK0dVLGNBQWM7VUFDZCxTQUFTO1VBQ1QsWUFBWSxFQUFBO0VBakh0QjtVQW9IVSxjQUFjO1VBQ2QsVUFBVTtVQUNWLFlBQVksRUFBQTtFQXRIdEI7UUEwSFEsVUFBVSxFQUFBO0VBMUhsQjtRQTZIUSxjQUFjO1FBQ2QsaUJBQWlCLEVBQUE7RUE5SHpCO1VBZ0lVLGNBQWM7VUFDZCxpQkFBaUIsRUFBQTtFQWpJM0I7WUFtSVkseUJBQXlCLEVBQUE7RUFuSXJDO1VBdUlVLGNBQWMsRUFBQTtFQXZJeEI7UUEySVEsZUFBZTtRQUNmLGNBQWM7UUFDZCx5QkFBeUI7UUFDekIsaUJBQWlCLEVBQUE7RUE5SXpCO0lBbUpJLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsZUFBZTtJQUNmLDZCQUE2QjtJQUM3QixjQUFjLEVBQUE7RUF2SmxCO01BeUpNLGNBQWM7TUFDZCxlQUFlO01BQ2YsaUJBQWlCLEVBQUE7RUFLdkI7RUFDRSxrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osVUFBVTtFQUNWLFlBQVk7RUFDWixNQUFNO0VBQ04sT0FBTztFQUNQLG1CQUFtQixFQUFBO0VBRXJCO0VBQ0Usa0JBQWtCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy90cmVhdG1lbnQtbG9nLXRlbXBsYXRlLWRyb3Bkb3duL3RyZWF0bWVudC1sb2ctdGVtcGxhdGUtZHJvcGRvd24uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLnVsLXNlbGVjdC1kcm9wZG93biB7XHJcbiAgY29sb3I6ICMzMjNjNDc7XHJcbiAgLmRyb3Bkb3duLW1lbnUge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgJi53ZC0xMTUge1xyXG4gICAgICB3aWR0aDogMTE1cHg7XHJcbiAgICB9XHJcbiAgICAmLndkLTEzMCB7XHJcbiAgICAgIHdpZHRoOiAxMzBweDtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1zZWFyY2gtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGlucHV0IHtcclxuICAgICAgYm9yZGVyOiAwO1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGNvbG9yOiAjMzIzYzQ3O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyNnB4O1xyXG4gICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICB9XHJcbiAgICAuaWNvbi1zZWFyY2gge1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHRvcDogNTAlO1xyXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1jaG9pY2Uge1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAudWwtc2VsZWN0LWNob2ljZS1hbGwge1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgICBwYWRkaW5nOiA2cHggMTBweDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAuZHJvcGRvd24taXRlbSB7XHJcbiAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBvdXRsaW5lOiAwO1xyXG4gICAgICAgICY6YWN0aXZlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgID4gZGl2IHtcclxuICAgICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgICAgaSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xyXG4gICAgICAgICAgICByaWdodDogMTJweDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAudWwtc2VsZWN0LWNob2ljZS1yb3cge1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgICAgcGFkZGluZzogNXB4IDE4cHggNnB4IDIwcHg7XHJcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlMmUyO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICYuaGFzLWFjdCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzNXB4O1xyXG4gICAgICB9XHJcbiAgICAgIC5kcm9wZG93bi1pdGVtIHtcclxuICAgICAgICBjb2xvcjogIzMyM2M0NztcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgIG91dGxpbmU6IDA7XHJcbiAgICAgICAgPiBkaXYge1xyXG4gICAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICAgIHdvcmQtYnJlYWs6IGtlZXAtYWxsO1xyXG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaSB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XHJcbiAgICAgICAgcmlnaHQ6IDhweDtcclxuICAgICAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAmLmljb24tZWRpdCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIGxlZnQ6IDVweDtcclxuICAgICAgICAgIHJpZ2h0OiB1bnNldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJi5pY29uLWNhbmNlbCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIGxlZnQ6IDIwcHg7XHJcbiAgICAgICAgICByaWdodDogdW5zZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGE6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIH1cclxuICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIC5kcm9wZG93bi1pdGVtIHtcclxuICAgICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaSB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGNvbG9yOiAjMDA3ZWEzO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYWY1ZmE7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLnVsLXNlbGVjdC1ncm91cC10aXRsZSB7XHJcbiAgICBoZWlnaHQ6IDE5cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFmNWZhO1xyXG4gICAgcGFkZGluZzogMCAxMHB4O1xyXG4gICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICNlMmUyZTI7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIHNtYWxsIHtcclxuICAgICAgY29sb3I6ICMwMDdlYTM7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udWktZGlzYWJsZWQge1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHotaW5kZXg6IDU7XHJcbiAgb3BhY2l0eTogMC42O1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbn1cclxuLnVsLXNlbGVjdC1yZWFsdGltZSwgLnVsLXNlbGVjdC1mcmFjcHJvIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuIl19 */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { isEmpty } from 'lodash';\r\nimport { ITreatmentLogTemplateResponse, ITreatmentLogTemplate } from '../../models/treatment-log-template.model';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { TreatmentLogTemplateService } from '../../services/treatment-log-template.service';\r\nimport { IScatterPlotChartSetting, IAxisSetting } from '../../services/charts';\r\nimport { Subscription } from 'rxjs';\r\nimport { ConfirmTemplateModalComponent } from '../modals/confirm-template-modal/confirm-template-modal.component';\r\n\r\n@Component({\r\n selector: 'app-treatment-log-template-dropdown',\r\n templateUrl: './treatment-log-template-dropdown.component.html',\r\n styleUrls: ['./treatment-log-template-dropdown.component.scss']\r\n})\r\nexport class TreatmentLogTemplateDropdownComponent implements OnInit {\r\n listTemplates: ITreatmentLogTemplateResponse[];\r\n isOpen: boolean;\r\n @Input() selectedItem: any;\r\n plotTemplateToSave: ITreatmentLogTemplate = {\r\n xAxis: null,\r\n yAxis: [],\r\n designActualYAxis: [],\r\n curveYAxis: [],\r\n scale: []\r\n };\r\n subscriptions: Subscription[] = [];\r\n\r\n @Input() loading: boolean;\r\n\r\n @Input()\r\n set dataTemplates(templates: ITreatmentLogTemplateResponse[]) {\r\n if (!isEmpty(templates)) {\r\n this.listTemplates = templates;\r\n } else {\r\n this.listTemplates = [];\r\n }\r\n }\r\n @Input() companyId: number;\r\n @Input() wellId: number;\r\n @Input() hideSaveButton: boolean = false;\r\n @Input()\r\n set settings(settings: IScatterPlotChartSetting) {\r\n if (settings) {\r\n this.plotTemplateToSave = {\r\n xAxis: { ...settings.xAxis },\r\n yAxis: [...settings.yAxis],\r\n designActualYAxis: [...settings.designActualYAxis]\r\n };\r\n\r\n if (settings.curveYAxis) {\r\n this.plotTemplateToSave.curveYAxis = [...settings.curveYAxis];\r\n }\r\n\r\n if (settings.scale) {\r\n this.plotTemplateToSave.scale = [...settings.scale];\r\n }\r\n\r\n if (settings.fdiYAxis) {\r\n this.plotTemplateToSave.fdiYAxis = [...settings.fdiYAxis];\r\n }\r\n\r\n }\r\n }\r\n\r\n @Output() itemSelected: EventEmitter = new EventEmitter();\r\n @Output() templatesChange: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private dialogService: NbDialogService,\r\n private treatmentLogTemplateService: TreatmentLogTemplateService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n openDropdown() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n isSelected(item): boolean {\r\n if (this.selectedItem && this.selectedItem.id) {\r\n return item.id === this.selectedItem.id;\r\n }\r\n return false;\r\n }\r\n\r\n selectItem(event: Event, templateRes) {\r\n event.stopPropagation();\r\n if (!this.selectedItem || templateRes.id !== this.selectedItem.id) {\r\n const data = { ...templateRes };\r\n this.selectedItem = data;\r\n\r\n this.itemSelected.emit(data);\r\n this.isOpen = false;\r\n }\r\n }\r\n\r\n deleteItem(event: Event, templateRes) {\r\n event.stopPropagation();\r\n if (templateRes && templateRes.id) {\r\n const subs = this.treatmentLogTemplateService.deleteTemplate(templateRes.id).subscribe(item => {\r\n this.templatesChange.emit();\r\n });\r\n this.subscriptions.push(subs);\r\n }\r\n }\r\n\r\n clickOutside() {\r\n this.isOpen = false;\r\n }\r\n\r\n saveTemplate() {\r\n\r\n this.dialogService.open(\r\n ConfirmTemplateModalComponent,\r\n {\r\n context: {\r\n hideMessage: true,\r\n showAllWellsCheckbox: false,\r\n templates: this.listTemplates,\r\n isScatterPlot: true\r\n }\r\n }\r\n )\r\n .onClose\r\n .subscribe(res => {\r\n if (res) {\r\n const payload: any = {\r\n name: res.name,\r\n content: this.plotTemplateToSave\r\n };\r\n const templateRes = this.listTemplates.find(template => template.name === res.name);\r\n if (templateRes && templateRes.id) {\r\n payload.type = templateRes.type;\r\n this.updateTemplate(templateRes.id, payload);\r\n } else {\r\n this.createTemplate(payload);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private createTemplate(payload): void {\r\n this.subscriptions.push(\r\n this.treatmentLogTemplateService\r\n .createTemplate(payload)\r\n .subscribe(\r\n item => {\r\n this.templatesChange.emit();\r\n }\r\n )\r\n );\r\n }\r\n\r\n private updateTemplate(plotTemplateId, payload): void {\r\n this.subscriptions.push(\r\n this.treatmentLogTemplateService\r\n .updateTemplate(plotTemplateId, payload)\r\n .subscribe(\r\n item => {\r\n this.templatesChange.emit();\r\n }\r\n )\r\n );\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3RyZWF0bWVudC1wbG90LWZkaS1kcm9wZG93bi90cmVhdG1lbnQtcGxvdC1mZGktZHJvcGRvd24uY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { USER_STORAGE } from '../../helpers/app.constants';\r\nimport { LocalDataStorageService } from '../../services/local-data-storage.service';\r\nimport { FDIParameterSelectComponent } from '../modals/fdi-parameter-select/fdi-parameter-select.component';\r\nimport { TreatmentPlotFDIParam } from '../treatment-plot/treatment-plot-fdi.model';\r\n\r\n@Component({\r\n selector: 'app-treatment-plot-fdi-dropdown',\r\n templateUrl: './treatment-plot-fdi-dropdown.component.html',\r\n styleUrls: ['./treatment-plot-fdi-dropdown.component.scss']\r\n})\r\nexport class TreatmentPlotFdiDropdownComponent implements OnInit {\r\n listActions = [];\r\n isOpen = false;\r\n isShow = true;\r\n\r\n @Input() disabled = false;\r\n @Input() selectedParam: TreatmentPlotFDIParam;\r\n\r\n @Output() onAdd: EventEmitter = new EventEmitter();\r\n @Output() onRemoveAll: EventEmitter = new EventEmitter();\r\n @Output() onToggleShow: EventEmitter = new EventEmitter();\r\n @Output() onSelectParam: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private dialogService: NbDialogService,\r\n private localDataStorageService: LocalDataStorageService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.listActions = [\r\n { text: 'Add FDI', action: () => this.add() },\r\n { text: 'Remove All', action: () => this.removeAll() },\r\n { text: 'Show/Hide', action: () => this.toggleShow() },\r\n { text: 'Parameter', action: () => this.openParam() }\r\n ];\r\n }\r\n\r\n clickOutside() {\r\n this.isOpen = false;\r\n }\r\n\r\n toggleOpen() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n\r\n add() {\r\n this.onAdd.emit();\r\n this.clickOutside();\r\n }\r\n\r\n removeAll() {\r\n this.onRemoveAll.emit();\r\n this.clickOutside();\r\n }\r\n\r\n toggleShow() {\r\n this.isShow = !this.isShow;\r\n this.onToggleShow.emit(this.isShow);\r\n this.clickOutside();\r\n }\r\n\r\n openParam() {\r\n this.isOpen = false;\r\n this.dialogService.open(FDIParameterSelectComponent, {\r\n context: {\r\n selectedParam: this.selectedParam\r\n }\r\n }).onClose.subscribe(res => {\r\n this.selectedParam = res;\r\n this.localDataStorageService.setOption(USER_STORAGE.fdiParam, this.selectedParam);\r\n this.onSelectParam.emit(this.selectedParam);\r\n });\r\n }\r\n\r\n}\r\n","module.exports = \"
0 && hasSelectedParam && isShow\\\">\\r\\n
    \\r\\n
  • FDI Start: {{ fdiStart }}
  • \\r\\n
  • FDI End: {{ fdiEnd }}
  • \\r\\n
  • Net Gain Press (psi): {{ isNumber(fdiInfo.netGainPress) ? (fdiInfo.netGainPress | number:'1.1-2') : fdiInfo.netGainPress }}
  • \\r\\n
  • Gross Gain Press (psi): {{ isNumber(fdiInfo.grossGainPress) ? (fdiInfo.grossGainPress | number:'1.1-2') : fdiInfo.grossGainPress }}
  • \\r\\n
  • VFR (bbls): {{ isNumber(fdiInfo.volToFrstResp) ? (fdiInfo.volToFrstResp | number:'1.1-2') : fdiInfo.volToFrstResp }}
  • \\r\\n
  • %VFR (%): {{ isNumber(fdiInfo.volToFrstRespPercent) ? (fdiInfo.volToFrstRespPercent | number:'1.1-2') : fdiInfo.volToFrstRespPercent }}
  • \\r\\n
  • Pre FDI Pressure Trend (psi/min): {{ isNumber(fdiInfo.preFDIPressure) ? (fdiInfo.preFDIPressure | number:'1.1-2') : fdiInfo.preFDIPressure }}
  • \\r\\n
  • Avg FDI Pressure Trend (psi/min): {{ isNumber(fdiInfo.avgFDIPressure) ? (fdiInfo.avgFDIPressure | number:'1.1-2') : fdiInfo.avgFDIPressure }}
  • \\r\\n
  • Max FDI Pressure Trend (psi/min): {{ isNumber(fdiInfo.maxFDIPressure) ? (fdiInfo.maxFDIPressure | number:'1.1-2') : fdiInfo.maxFDIPressure }}
  • \\r\\n
  • Avg FDI Intensity (psi/min): {{ isNumber(fdiInfo.avgSlope) ? (fdiInfo.avgSlope | number:'1.1-2') : fdiInfo.avgSlope }}
  • \\r\\n
  • Max FDI Intensity (psi/min): {{ isNumber(fdiInfo.maxSlope) ? (fdiInfo.maxSlope | number:'1.1-2') : fdiInfo.maxSlope }}
  • \\r\\n
\\r\\n
\\r\\n\"","module.exports = \".fdi-tooltip-box {\\n position: absolute;\\n top: 0;\\n right: 15px;\\n width: auto;\\n height: auto;\\n border: 1px solid #000;\\n border-radius: 5px;\\n background-color: rgba(255, 255, 255, 0.75);\\n padding: 5px; }\\n .fdi-tooltip-box .list-info {\\n margin: 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdHJlYXRtZW50LXBsb3QtZmRpLWluZm8vRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHRyZWF0bWVudC1wbG90LWZkaS1pbmZvXFx0cmVhdG1lbnQtcGxvdC1mZGktaW5mby5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTtFQUNFLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sV0FBVztFQUNYLFdBQVc7RUFDWCxZQUFZO0VBQ1osc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQiwyQ0FBMEM7RUFDMUMsWUFBWSxFQUFBO0VBVGQ7SUFXSSxTQUFTLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy90cmVhdG1lbnQtcGxvdC1mZGktaW5mby90cmVhdG1lbnQtcGxvdC1mZGktaW5mby5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4uZmRpLXRvb2x0aXAtYm94IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIHJpZ2h0OiAxNXB4O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XHJcbiAgcGFkZGluZzogNXB4O1xyXG4gIC5saXN0LWluZm8ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import { Component, OnInit, OnDestroy, Input, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { TreatmentPlotFDI, IFDIPayload, TreatmentPlotFDIInfo, TreatmentPlotFDIParam } from '../treatment-plot/treatment-plot-fdi.model';\r\nimport { isEmpty, forEach, isNil } from 'lodash';\r\nimport * as moment from 'moment';\r\nimport * as momentTz from 'moment-timezone';\r\nimport { ITimeSetting } from '../../models';\r\nimport { ChartTimeFormat, TIME_SETTING_TYPE } from '../../helpers/app.constants';\r\n(window as any).moment = moment;\r\n(window as any).momentTz = momentTz;\r\n\r\n@Component({\r\n selector: 'app-treatment-plot-fdi-info',\r\n templateUrl: './treatment-plot-fdi-info.component.html',\r\n styleUrls: ['./treatment-plot-fdi-info.component.scss']\r\n})\r\nexport class TreatmentPlotFdiInfoComponent implements OnInit, OnChanges, OnDestroy {\r\n listFDIs: TreatmentPlotFDI[] = [];\r\n fdiInfo: TreatmentPlotFDIInfo = {\r\n fdiEnd: undefined,\r\n fdiStart: undefined,\r\n netGainPress: undefined,\r\n grossGainPress: undefined,\r\n volToFrstResp: undefined,\r\n volToFrstRespPercent: undefined,\r\n avgSlope: undefined,\r\n maxSlope: undefined,\r\n avgFDIPressure: undefined,\r\n maxFDIPressure: undefined,\r\n preFDIPressure: undefined\r\n };\r\n\r\n @Input() selectedParam: TreatmentPlotFDIParam;\r\n @Input() timeFormat: ChartTimeFormat;\r\n @Input() isShow = true;\r\n\r\n @Input()\r\n set currentId(id: string) {\r\n if (id && !isEmpty(this.listFDIs)) {\r\n const curFDI = this.listFDIs.find(item => item.id === id);\r\n if (curFDI) {\r\n this.setFDIInfo(Object.assign({}, curFDI));\r\n }\r\n }\r\n }\r\n @Input() fdiPayload: IFDIPayload;\r\n @Input() wellInfo: any;\r\n @Input() treatmentInfo: any;\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.fdiPayload && !changes.fdiPayload.isFirstChange()) {\r\n this.fdiPayload = changes.fdiPayload.currentValue;\r\n if (this.fdiPayload && this.fdiPayload.fdi) {\r\n this.listFDIs = this.fdiPayload.fdi;\r\n if (!isEmpty(this.listFDIs)) {\r\n const curFDI = Object.assign({}, this.listFDIs[0]);\r\n this.setFDIInfo(curFDI);\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n setFDIInfo(curFDI: TreatmentPlotFDI) {\r\n if (curFDI) {\r\n forEach(this.fdiInfo, (value, key) => {\r\n if (['fdiStart', 'fdiEnd'].indexOf(key) > -1) {\r\n curFDI[key] = curFDI[key] * 1000;\r\n }\r\n this.fdiInfo[key] = curFDI[key];\r\n });\r\n this.fdiInfo = Object.assign({}, this.fdiInfo);\r\n }\r\n }\r\n\r\n private getFDIStartEndTime(prop: string): string | number {\r\n if (!this.fdiInfo || isNil(this.fdiInfo[prop])) return 'N/A';\r\n // float time settting\r\n if (this.timeFormat === TIME_SETTING_TYPE.OffsetTime) {\r\n const dateTime = this.treatmentInfo && this.treatmentInfo.baseTreatmentDateTime ? this.fdiInfo[prop] - this.treatmentInfo.baseTreatmentDateTime * 1000 : this.fdiInfo[prop]\r\n return (dateTime / 60_000).toFixed(3) + ' min';\r\n }\r\n // hh:mm time setting\r\n else {\r\n const dateTime = Math.round(this.fdiInfo[prop] / 1000);\r\n if (!this.wellInfo) moment.unix(dateTime).utc().format('MMM DD, YYYY HH:mm:ss');\r\n return momentTz.tz(moment.unix(dateTime).utc(), this.wellInfo.tzTimeZone).format('MMM DD, YYYY HH:mm:ss');\r\n }\r\n return 'N/A';\r\n }\r\n\r\n get fdiStart() {\r\n return this.getFDIStartEndTime('fdiStart')\r\n }\r\n\r\n get fdiEnd() {\r\n return this.getFDIStartEndTime('fdiEnd')\r\n }\r\n\r\n get hasSelectedParam(): boolean {\r\n if (!this.selectedParam) return true;\r\n for (const prop in this.selectedParam) {\r\n if (this.selectedParam[prop]) return true;\r\n }\r\n return false;\r\n }\r\n\r\n isNumber(val: any): boolean {\r\n if (!isNaN(val) && typeof val === 'number') return true;\r\n return false;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { cloneDeep, isEmpty } from 'lodash';\r\nimport { IInputDataMultiFlow } from '../../models/chart-data.model';\r\nimport { FRACPRO_TIMEFLOAT_CNAME, TIMEFLOAT_CHANNEL_NAME } from '../../services/charts/base-chart.service';\r\n\r\n@Injectable()\r\nexport class TreatmentPlotDataStoreService {\r\n private chartInputData: IInputDataMultiFlow = null;\r\n\r\n constructor() { }\r\n\r\n setChartInputData(value) {\r\n this.chartInputData = cloneDeep(value);\r\n }\r\n\r\n getChartInputData() {\r\n return this.chartInputData;\r\n }\r\n\r\n getLastDataPointByType(chartData: IInputDataMultiFlow, dataType: string = 'realtimeData') {\r\n if (chartData) {\r\n if (!chartData[dataType]) return null;\r\n const dataByType = chartData[dataType][0];\r\n let lastDataPoint;\r\n if (dataByType && !isEmpty(dataByType.values)) {\r\n lastDataPoint = dataByType.values[dataByType.values.length - 1];\r\n }\r\n return lastDataPoint;\r\n }\r\n return;\r\n }\r\n\r\n getChartInputDataByLastMin(chartInputData, lastMin: number) {\r\n if (!lastMin) return chartInputData;\r\n const lastSecVal = lastMin * 60; // to sec\r\n const chartData = cloneDeep(chartInputData);\r\n if (!chartData) return chartInputData;\r\n\r\n const dataTypes = ['realtimeData', 'fracproData'];\r\n dataTypes.forEach(dataKey => {\r\n const lastPointData = this.getLastDataPointByType(chartData, dataKey);\r\n if (!isEmpty(chartData[dataKey])) {\r\n const curData = chartData[dataKey][0];\r\n const timeFloatIndex = curData.columns.findIndex(value => value === TIMEFLOAT_CHANNEL_NAME || value === FRACPRO_TIMEFLOAT_CNAME);\r\n curData.values = curData.values.filter(dataRow => {\r\n return dataRow[timeFloatIndex] >= (lastPointData[timeFloatIndex] - lastSecVal);\r\n });\r\n }\r\n });\r\n return chartData;\r\n }\r\n\r\n getChartInputDataInRange(start: string, end: string) {\r\n const chartData = cloneDeep(this.chartInputData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../../core/services/api.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { IFDIPayload } from './treatment-plot-fdi.model';\r\n\r\n@Injectable()\r\nexport class TreatmentPlotFdiApiService {\r\n prefixPath = '/treatments';\r\n\r\n constructor(\r\n private apiService: ApiService,\r\n ) { }\r\n\r\n getByTreatment(treatmentId): Observable {\r\n return this.apiService.get(`${this.prefixPath}/${treatmentId}/FDI`)\r\n .pipe(map(res => res.result));\r\n }\r\n\r\n createByTreatment(treatmentId, body, isRealtime: boolean) {\r\n const q = isRealtime ? '?isRealtime=true' : '';\r\n return this.apiService.post(`${this.prefixPath}/${treatmentId}/FDI` + q, body)\r\n .pipe(map(res => res.result[0]));\r\n }\r\n\r\n updateByTreatment(treatmentId, body, isRealtime: boolean) {\r\n const q = isRealtime ? '?isRealtime=true' : '';\r\n return this.apiService.put(`${this.prefixPath}/${treatmentId}/FDI` + q, body)\r\n .pipe(map(res => res.result));\r\n }\r\n\r\n updateFDIByTreatment(treatmentId: number, fdiId: string, fdiName: string, fdiValue: number, isRealtime: boolean) {\r\n const fdi = {id: fdiId, [fdiName]: fdiValue};\r\n const data = {fdi: [fdi]};\r\n return this.updateByTreatment(treatmentId, data, isRealtime);\r\n }\r\n\r\n updateMutiFDIByTreatment(treatmentId: number, fdiId: string, fdiNames: string[], fdiValues: number[], isRealtime: boolean) {\r\n const fdiList = [];\r\n const n = Math.min(fdiNames.length, fdiValues.length);\r\n for (let i = 0; i < n; i++) {\r\n const fdi = {id: fdiId, [fdiNames[i]]: fdiValues[i]};\r\n fdiList.push(fdi);\r\n }\r\n const data = {fdi: fdiList};\r\n return this.updateByTreatment(treatmentId, data, isRealtime);\r\n }\r\n\r\n deleteByTreatment(treatmentId) {\r\n return this.apiService.delete(`${this.prefixPath}/${treatmentId}/FDI`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { IFDIPayload, TreatmentPlotFDI } from './treatment-plot-fdi.model';\r\nimport { isEmpty } from 'lodash';\r\nimport { map, share } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class TreatmentPlotFdiStoreService {\r\n private dataPayloadSubject: BehaviorSubject = new BehaviorSubject(this.getInitialDataPayload());\r\n\r\n constructor() { }\r\n\r\n getInitialDataPayload() {\r\n return {\r\n fdi: []\r\n };\r\n }\r\n\r\n setDataPayload(payload: IFDIPayload) {\r\n this.dataPayloadSubject.next(payload);\r\n }\r\n\r\n setListFDIs(listFDIs: TreatmentPlotFDI[]) {\r\n const currentPayload = this.dataPayloadSubject.value;\r\n if (currentPayload && listFDIs) {\r\n const newPayload = {...currentPayload};\r\n newPayload.fdi = [...listFDIs];\r\n this.dataPayloadSubject.next(newPayload);\r\n }\r\n }\r\n\r\n addItemToDataPayload(item: TreatmentPlotFDI) {\r\n const currentPayload = this.dataPayloadSubject.value;\r\n if (currentPayload && !isEmpty(currentPayload.fdi)) {\r\n const newPayload = {...currentPayload};\r\n newPayload.fdi.push(item);\r\n this.dataPayloadSubject.next(newPayload);\r\n } else {\r\n this.dataPayloadSubject.next({\r\n fdi: [item]\r\n });\r\n }\r\n }\r\n\r\n getDataPayload(): Observable {\r\n return this.dataPayloadSubject.asObservable()\r\n .pipe(share())\r\n .pipe(map(res => {\r\n return Object.assign({}, res);\r\n }));\r\n }\r\n\r\n unsetDataPayload() {\r\n this.dataPayloadSubject.next(null);\r\n }\r\n\r\n resetDataPayload() {\r\n this.dataPayloadSubject.next(this.getInitialDataPayload());\r\n }\r\n}\r\n","import { Helper } from \"../../helpers/helper\";\r\nimport { Chart } from \"highcharts\";\r\nimport { ITreatmentItem } from \"../../models/treatment.model\";\r\n\r\nexport class TreatmentPlotFDI {\r\n id: string;\r\n fdiStart: any;\r\n fdiEnd: any;\r\n peakFDIStart: any;\r\n peakFDIEnd: any;\r\n leakOffStart: any;\r\n leakOffEnd: any;\r\n wellId: number;\r\n treatmentId: number;\r\n color: string;\r\n cName: string;\r\n\r\n constructor({ fdiStart, fdiEnd, peakFDIStart, peakFDIEnd, leakOffStart, leakOffEnd, wellId, treatmentId, color, cName }) {\r\n this.id = `${wellId}_${treatmentId}`;\r\n this.fdiStart = fdiStart;\r\n this.fdiEnd = fdiEnd;\r\n this.peakFDIStart = peakFDIStart;\r\n this.peakFDIEnd = peakFDIEnd;\r\n this.leakOffStart = leakOffStart;\r\n this.leakOffEnd = leakOffEnd;\r\n this.wellId = wellId;\r\n this.treatmentId = treatmentId;\r\n this.color = color || Helper.randomHexColor();\r\n this.cName = cName;\r\n }\r\n}\r\n\r\nexport interface TreatmentPlotFDIInfo {\r\n fdiEnd?: number;\r\n fdiStart?: number;\r\n netGainPress?: number;\r\n grossGainPress?: number;\r\n volToFrstResp?: number;\r\n volToFrstRespPercent?: number;\r\n avgSlope?: number;\r\n maxSlope?: number;\r\n avgFDIPressure?: number;\r\n maxFDIPressure?: number;\r\n preFDIPressure?: number;\r\n}\r\n\r\nexport interface TreatmentPlotFDIParam {\r\n fdiEnd?: boolean;\r\n fdiStart?: boolean;\r\n netGainPress?: boolean;\r\n grossGainPress?: boolean;\r\n volToFrstResp?: boolean;\r\n volToFrstRespPercent?: boolean;\r\n avgSlope?: boolean;\r\n maxSlope?: boolean;\r\n avgFDIPressure?: boolean;\r\n maxFDIPressure?: boolean;\r\n preFDIPressure?: boolean;\r\n}\r\n\r\nexport interface IInputFDIParam {\r\n highChartInstance: Chart;\r\n baseTreatmentDataTime; timeFormat; timezoneOffset;\r\n fdiInfo: TreatmentPlotFDI;\r\n yAxisIndex: number;\r\n isStaticFDI?: boolean;\r\n isAddStaticFDI?: boolean;\r\n treatmentInfo?: ITreatmentItem;\r\n startIndex: number;\r\n endIndex: number;\r\n treatmentStart: number;\r\n treatmentEnd: number;\r\n onDropHandler?: (event: any) => void;\r\n onTreatmentStartEndDropHandler?: (event: any) => void;\r\n onMouseOverHandler?: (event: any) => void;\r\n onDragHandler?: (event: any) => void;\r\n}\r\n\r\nexport interface IFDIPayload {\r\n fdi: TreatmentPlotFDI[];\r\n treatmentEnd?: number;\r\n treatmentStart?: number;\r\n}\r\n\r\nexport interface IFdiDropEventData {\r\n fdiId: string;\r\n fdiKeyValue: string;\r\n groupId: string;\r\n x: number;\r\n}\r\n\r\nexport enum FDI_TYPES {\r\n treatmentStart = 'Treatment Start',\r\n treatmentEnd = 'Treatment End',\r\n fdiStart = 'FDI Start',\r\n fdiEnd = 'FDI End',\r\n peakFDIStart = 'Peak FDI Start',\r\n peakFDIEnd = 'Peak FDI End',\r\n leakOffStart = 'Leak Off Start',\r\n leakOffEnd = 'Leak Off End',\r\n}\r\n\r\nexport const FDI_STATIC_MARKERS = {\r\n treatmentStart: 'Treatment Start',\r\n treatmentEnd: 'Treatment End'\r\n};\r\n\r\nexport const FDI_DYNAMIC_MARKERS = {\r\n fdiStart: 'FDI Start',\r\n fdiEnd: 'FDI End',\r\n peakFDIStart: 'Peak FDI Start',\r\n peakFDIEnd: 'Peak FDI End',\r\n leakOffStart: 'Leak Off Start',\r\n leakOffEnd: 'Leak Off End'\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { clone, cloneDeep, findKey, isEmpty, map as _map } from 'lodash';\r\nimport { IInputFDIParam, TreatmentPlotFDI, FDI_STATIC_MARKERS, FDI_DYNAMIC_MARKERS } from './treatment-plot-fdi.model';\r\nimport { CHART_SERIES_NAME, FDI_MARKER_RADIUS, FDI_PARAM_TENANT, FDI_PARAM_TENANTS, HexColor, TIME_SETTING_TYPE } from '../../helpers/app.constants';\r\nimport { TreatmentPlotTimeConverterService } from './treatment-plot-time-converter.service';\r\nimport { ChannelSelectionService } from '../../services';\r\nimport { ITimeSetting } from '../../models';\r\nimport { Helper, Vector } from '../../helpers/helper';\r\n\r\nexport const ID_YAXIS_FDI = 'yaxis-fdi';\r\nexport const PREFIX_FDI_SERIES = 'fdi';\r\nconst DEFAULT_LINE_WIDTH = 3;\r\nconst DEFAULT_TANGENT_LINE_STYLE = 'Dot';\r\n\r\n@Injectable()\r\nexport class TreatmentPlotFdiService {\r\n private static FDI_MARKER_COLORS = [HexColor.YELLOW, HexColor.ORANGE, HexColor.GREEN];\r\n private static FDI_TREATMENT_COLOR = HexColor.RED;\r\n\r\n constructor(\r\n private channelSelectionService: ChannelSelectionService,\r\n private treatmentPlotTimeConverterService: TreatmentPlotTimeConverterService,\r\n ) { }\r\n\r\n public getFDIMarkerColor = (countAddFDI: number, offset: number) => {\r\n const colorIndex = Math.abs(countAddFDI - offset) % TreatmentPlotFdiService.FDI_MARKER_COLORS.length;\r\n return TreatmentPlotFdiService.FDI_MARKER_COLORS[colorIndex];\r\n }\r\n\r\n addFDIHandler({\r\n highChartInstance,\r\n baseTreatmentDataTime,\r\n timeFormat,\r\n fdiInfo,\r\n yAxisIndex,\r\n isStaticFDI,\r\n treatmentInfo,\r\n startIndex,\r\n endIndex,\r\n treatmentStart,\r\n treatmentEnd,\r\n onDropHandler,\r\n onTreatmentStartEndDropHandler,\r\n onMouseOverHandler,\r\n onDragHandler\r\n }: IInputFDIParam) {\r\n let series = [];\r\n // add FDI: fdiStart, fdiEnd, leakOffStart, leakOffEnd, etc...\r\n const fdiSeries = this.parseFDIChartSeries({\r\n baseTreatmentDataTime, timeFormat, fdiInfo, yAxisIndex,\r\n onDropHandler, onMouseOverHandler, onDragHandler\r\n });\r\n series = series.concat(fdiSeries);\r\n // add tangent FDI dot lines\r\n const tangentSeries = this.parseFDITangentToChartSeries(series, FDI_PARAM_TENANT);\r\n series = series.concat(tangentSeries);\r\n // add treatmentStart and treatmentEnd\r\n if (isStaticFDI) {\r\n const staticSeries = this.parseTreatmentChartSeries({\r\n baseTreatmentDataTime, timeFormat, treatmentInfo,\r\n treatmentStart, treatmentEnd, startIndex, endIndex,\r\n yAxisIndex, onDropHandler: onTreatmentStartEndDropHandler, onDragHandler\r\n });\r\n series = series.concat(staticSeries);\r\n }\r\n // render highChart\r\n if (highChartInstance) {\r\n series.forEach(opt => {\r\n highChartInstance.addSeries(opt, false);\r\n });\r\n highChartInstance.redraw();\r\n }\r\n }\r\n\r\n addStaticFDIHandler({\r\n highChartInstance,\r\n baseTreatmentDataTime, timeFormat, treatmentInfo, startIndex, endIndex, treatmentStart, treatmentEnd,\r\n yAxisIndex, onDropHandler, onDragHandler\r\n }: IInputFDIParam) {\r\n let series = [];\r\n const staticSeries = this.parseTreatmentChartSeries({\r\n baseTreatmentDataTime, timeFormat, treatmentInfo,\r\n treatmentStart, treatmentEnd, startIndex, endIndex,\r\n yAxisIndex, onDropHandler, onDragHandler\r\n });\r\n series = series.concat(staticSeries);\r\n if (highChartInstance) {\r\n series.forEach(opt => {\r\n highChartInstance.addSeries(opt, false);\r\n });\r\n highChartInstance.redraw();\r\n }\r\n }\r\n\r\n removeFDIHandler({ highChartInstance }) {\r\n if (highChartInstance) {\r\n const fdiSeries = highChartInstance.series.filter(obj => obj.userOptions.id.indexOf(PREFIX_FDI_SERIES) === 0);\r\n fdiSeries.forEach(opt => {\r\n const seriesObj = highChartInstance.get(opt.userOptions.id);\r\n if (seriesObj) {\r\n seriesObj.remove(false);\r\n }\r\n });\r\n // highChartInstance.redraw();\r\n }\r\n }\r\n\r\n toggleShowFDIHandler({ highChartInstance, isShow }) {\r\n if (highChartInstance) {\r\n const fdiSeries = highChartInstance.series.filter(obj => obj.userOptions.id.indexOf(PREFIX_FDI_SERIES) === 0);\r\n fdiSeries.forEach(opt => {\r\n const seriesObj = highChartInstance.get(opt.userOptions.id);\r\n if (seriesObj) {\r\n seriesObj.setVisible(isShow, false);\r\n }\r\n });\r\n // highChartInstance.redraw();\r\n }\r\n }\r\n\r\n updateFDIHandler(highChartInstance, fdi: TreatmentPlotFDI, fdiStart: number, fdiEnd: number) {\r\n const setDataTimestamp = (highChart, fdiName, index) => {\r\n const filter = (data, id, name) => data.includes(id) && data.includes(name);\r\n const series = highChart.series.find(x => filter(x.userOptions.id, fdi.id, fdiName));\r\n if (!series) return;\r\n\r\n const fdiFData = series.data[0];\r\n const fdiData = this.parseFDISeriesData(index, null, fdiFData.groupId, fdiFData.name, fdiFData.fdiId, fdiFData.fdiKeyValue);\r\n series.setData(fdiData);\r\n };\r\n\r\n if (fdiStart) setDataTimestamp(highChartInstance, 'fdiStart', fdiStart);\r\n if (fdiEnd) setDataTimestamp(highChartInstance, 'fdiEnd', fdiEnd);\r\n // highChartInstance.redraw();\r\n }\r\n\r\n updateFDIDataPoint(highChartInstance, id: string, keyValue: string, xValue: number, yValue: number) {\r\n const series = highChartInstance.series.find(x => x.userOptions.id.includes(id));\r\n if (!series) return;\r\n const fdiFData = series.data[0];\r\n const fdiFName = this.parseDynamicMarkerName(fdiFData.fdiKeyValue);\r\n const fdiData = this.parseFDISeriesData(xValue, yValue, fdiFData.groupId, fdiFName, fdiFData.fdiId, fdiFData.fdiKeyValue);\r\n series.setData(fdiData);\r\n if (series.graph) series.graph.show();\r\n series.show();\r\n // highChartInstance.redraw();\r\n\r\n if (FDI_PARAM_TENANTS.includes(keyValue)) {\r\n const tangentId = id.replace('Start', 'Tangent').replace('End', 'Tangent');\r\n const tangentSeries: IFDIChartSeries = highChartInstance.series.find(x => x.userOptions.id.includes(tangentId));\r\n if (!tangentSeries) return;\r\n const fdiStart: IFDIChartSeriesData = { x: tangentSeries.data[1].x, y: tangentSeries.data[1].y };\r\n const fdiEnd: IFDIChartSeriesData = { x: tangentSeries.data[2].x, y: tangentSeries.data[2].y };\r\n const offsetTime = xValue > 1_000_000_000_000 ? 2 * 60 * 1000 : 2 * 60; // 2 min\r\n\r\n if (keyValue.includes('Start')) {\r\n fdiStart.x = xValue;\r\n fdiStart.y = yValue;\r\n } else if (keyValue.includes('End')) {\r\n fdiEnd.x = xValue;\r\n fdiEnd.y = yValue;\r\n }\r\n\r\n const fdiStartVector: Vector = new Vector(fdiStart.x, fdiStart.y);\r\n const fdiEndVector: Vector = new Vector(fdiEnd.x, fdiEnd.y);\r\n const offsetFdiStartVector = Helper.calculateVector(fdiStartVector, fdiEndVector, fdiStart.x - offsetTime);\r\n const offsetFdiEndVector = Helper.calculateVector(fdiStartVector, fdiEndVector, fdiEnd.x + offsetTime);\r\n\r\n tangentSeries.setData([offsetFdiStartVector, fdiStart, fdiEnd, offsetFdiEndVector]);\r\n // highChartInstance.redraw();\r\n }\r\n }\r\n\r\n private parseDynamicMarkerName = name => {\r\n for (const i in FDI_DYNAMIC_MARKERS) {\r\n if (name !== i) continue;\r\n return FDI_DYNAMIC_MARKERS[i];\r\n }\r\n }\r\n\r\n private parseTreatmentSeriesData = (xValue: number, groupId: string, fdiName: string, fdiId: string, fdiKeyValue: string) => {\r\n return [\r\n { x: xValue, y: 0, groupId, name: fdiName, fdiId, fdiKeyValue },\r\n { x: xValue, y: 100, groupId, name: fdiName, fdiId, fdiKeyValue }\r\n ];\r\n }\r\n\r\n private parseFDISeriesData = (xValue: number, yValue: number | null, groupId: string, fdiName: string, fdiId: string, fdiKeyValue: string) => {\r\n if (yValue === null) {\r\n return [\r\n { x: xValue, y: -100, groupId, name: fdiName, fdiId, fdiKeyValue },\r\n { x: xValue, y: 200, groupId, name: fdiName, fdiId, fdiKeyValue }\r\n ];\r\n }\r\n\r\n return [\r\n { x: xValue, y: -100, groupId, name: fdiName, fdiId, fdiKeyValue },\r\n { x: xValue, y: yValue, groupId, name: fdiName, fdiId, fdiKeyValue },\r\n { x: xValue, y: 200, groupId, name: fdiName, fdiId, fdiKeyValue }\r\n ];\r\n }\r\n\r\n private parseSeriesDragDrop = (timeFormat, startIndex, endIndex) => {\r\n const dragDrop: any = {\r\n draggableX: true,\r\n groupBy: 'groupId',\r\n dragSensitivity: 0,\r\n dragPrecisionX: timeFormat === TIME_SETTING_TYPE.EpochTime ? 1000 : 1\r\n };\r\n\r\n if (startIndex && endIndex) {\r\n dragDrop.dragMinX = startIndex;\r\n dragDrop.dragMaxX = endIndex;\r\n }\r\n\r\n return dragDrop;\r\n }\r\n\r\n parseTreatmentInfoToChartSeries({\r\n yAxisIndex, seriesGroupId, fdiId, fdiName, fdiValue, fdiKeyValue, color,\r\n timeFormat, startIndex, endIndex,\r\n onDropHandler, onDragHandler\r\n }, onMouseOverHandler?) {\r\n const dragDrop = this.parseSeriesDragDrop(timeFormat, startIndex, endIndex);\r\n const data = this.parseTreatmentSeriesData(fdiValue, seriesGroupId, fdiName, fdiId, fdiKeyValue);\r\n\r\n return {\r\n id: `${PREFIX_FDI_SERIES}_${seriesGroupId}`,\r\n name: CHART_SERIES_NAME.fdi,\r\n type: 'line',\r\n tooltip: false,\r\n data,\r\n showInLegend: false,\r\n yAxis: yAxisIndex,\r\n color,\r\n lineWidth: DEFAULT_LINE_WIDTH,\r\n dragDrop,\r\n stickyTracking: false,\r\n point: {\r\n events: {\r\n drag(e) {\r\n if (typeof onDragHandler === 'function') {\r\n onDragHandler(e);\r\n }\r\n },\r\n drop(e) {\r\n if (typeof onDropHandler === 'function') {\r\n onDropHandler(e);\r\n }\r\n this.series.update({\r\n cursor: 'grab'\r\n }, true);\r\n },\r\n dragStart(e) {\r\n this.series.update({\r\n cursor: 'grabbing'\r\n }, true);\r\n },\r\n click(e) {\r\n this.series.update({\r\n cursor: 'grab'\r\n }, true);\r\n },\r\n mouseOver(e) {\r\n if (typeof onMouseOverHandler === 'function') {\r\n onMouseOverHandler(e);\r\n }\r\n },\r\n }\r\n },\r\n cursor: 'grab'\r\n };\r\n }\r\n\r\n parseFDIInfoToChartSeries({\r\n yAxisIndex, seriesGroupId, fdiId, fdiName, fdiValue, fdiKeyValue, color, invisibleLine,\r\n timeFormat, startIndex, endIndex,\r\n onDropHandler, onDragHandler\r\n }, onMouseOverHandler?) {\r\n const lineWidth = invisibleLine ? 0 : DEFAULT_LINE_WIDTH;\r\n const seriesData = this.parseFDISeriesData(fdiValue, null, seriesGroupId, fdiName, fdiId, fdiKeyValue);\r\n const dragDrop = this.parseSeriesDragDrop(timeFormat, startIndex, endIndex);\r\n\r\n return {\r\n id: `${PREFIX_FDI_SERIES}_${seriesGroupId}`,\r\n name: CHART_SERIES_NAME.fdi,\r\n type: 'line',\r\n tooltip: false,\r\n data: seriesData,\r\n showInLegend: false,\r\n yAxis: yAxisIndex,\r\n color,\r\n lineWidth,\r\n dragDrop,\r\n stickyTracking: false,\r\n point: {\r\n events: {\r\n drag(e) {\r\n if (typeof onDragHandler === 'function') {\r\n onDragHandler(e);\r\n }\r\n this.series.update({\r\n marker: {\r\n enabled: false\r\n },\r\n lineWidth: DEFAULT_LINE_WIDTH,\r\n });\r\n },\r\n drop(e) {\r\n if (typeof onDropHandler === 'function') {\r\n onDropHandler(e);\r\n }\r\n this.series.update({\r\n cursor: 'grab',\r\n marker: {\r\n enabled: true\r\n },\r\n lineWidth,\r\n });\r\n },\r\n dragStart(e) {\r\n this.series.update({\r\n cursor: 'grabbing'\r\n }, true);\r\n },\r\n click(e) {\r\n this.series.update({\r\n cursor: 'grab'\r\n }, true);\r\n },\r\n mouseOver(e) {\r\n if (typeof onMouseOverHandler === 'function') {\r\n onMouseOverHandler(e);\r\n }\r\n },\r\n }\r\n },\r\n marker: {\r\n radius: FDI_MARKER_RADIUS,\r\n enabled: true,\r\n symbol: 'circle'\r\n },\r\n cursor: 'grab'\r\n };\r\n }\r\n\r\n parseFDITangentToChartSeries(fdiSeries: any[], fdiNames: string[]): IFDIChartSeries[] {\r\n const res: IFDIChartSeries[] = [];\r\n const replaceText = (text: string, srcText: string = 'Start', desText: string = 'Tangent'): string => text.replace(srcText, desText);\r\n\r\n for (const fdiName of fdiNames) {\r\n const fdiStart: IFDIChartSeries = fdiSeries.find(x => x.id.includes(fdiName + 'Start'));\r\n const fdiEnd: IFDIChartSeries = fdiSeries.find(x => x.id.includes(fdiName + 'End'));\r\n if (!fdiStart || !fdiEnd) continue;\r\n\r\n // init dataStart\r\n const dataStart: IFDIChartSeriesData = {\r\n fdiId: fdiStart.data[0].fdiId,\r\n fdiKeyValue: replaceText(fdiStart.data[0].fdiKeyValue),\r\n groupId: replaceText(fdiStart.data[0].groupId),\r\n x: fdiStart.data[0].x,\r\n y: fdiStart.data[0].y\r\n };\r\n // init dataEnd\r\n const dataEnd = cloneDeep(dataStart);\r\n dataEnd.x = fdiEnd.data[0].x;\r\n dataEnd.y = fdiEnd.data[0].y;\r\n // init dataSeries\r\n const dataSeries: IFDIChartSeries = {\r\n color: fdiStart.color,\r\n data: [\r\n cloneDeep(dataStart),\r\n dataStart,\r\n dataEnd,\r\n cloneDeep(dataEnd)\r\n ],\r\n id: replaceText(fdiStart.id),\r\n lineWidth: 3,\r\n marker: { enabled: false },\r\n name: PREFIX_FDI_SERIES,\r\n type: 'line',\r\n tooltip: false,\r\n showInLegend: false,\r\n stickyTracking: false,\r\n enableMouseTracking: false,\r\n dashStyle: DEFAULT_TANGENT_LINE_STYLE,\r\n yAxis: fdiStart.yAxis\r\n };\r\n\r\n res.push(dataSeries);\r\n }\r\n return res;\r\n }\r\n\r\n parseFDIValueToTreatment(timeFormat, baseTreatmentDataTime, fdiValueInSec): number {\r\n if (timeFormat === TIME_SETTING_TYPE.OffsetTime) {\r\n return this.treatmentPlotTimeConverterService.convertOffsetToEpochSec({\r\n xValue: fdiValueInSec, // in sec\r\n baseTreatmentDataTime\r\n });\r\n } else {\r\n // have to remove the timezone before update it to the database\r\n return this.treatmentPlotTimeConverterService.toEpochSecWithTimezone({ xValue: fdiValueInSec });\r\n }\r\n }\r\n\r\n parseFDIValueToChartSeries(timeFormat, baseTreatmentDataTime, fdiValueInMilliSec): number {\r\n if (timeFormat === TIME_SETTING_TYPE.OffsetTime) {\r\n return this.treatmentPlotTimeConverterService.convertEpochToOffset({\r\n xValue: fdiValueInMilliSec, baseTreatmentDataTime\r\n }); // in seconds\r\n } else {\r\n return this.treatmentPlotTimeConverterService.toEpochMillisecWithTimezone({ xValue: fdiValueInMilliSec }); // in milliseconds\r\n }\r\n }\r\n\r\n parseFDIChartSeries({\r\n baseTreatmentDataTime, timeFormat, fdiInfo,\r\n yAxisIndex, onDropHandler, onMouseOverHandler, onDragHandler\r\n }) {\r\n const seriesData = [];\r\n const listFDIs = Object.keys(FDI_DYNAMIC_MARKERS);\r\n\r\n const parseColor = (fdiKeyValue: string) => {\r\n if (fdiKeyValue.includes('leak')) return HexColor.ORANGE;\r\n if (fdiKeyValue.includes('peak')) return HexColor.RED;\r\n return HexColor.YELLOW;\r\n };\r\n\r\n if (listFDIs && !isEmpty(listFDIs)) {\r\n listFDIs.forEach((fdiKeyValue) => {\r\n let fdiValue = fdiInfo[fdiKeyValue] * 1000; // sec to millisec\r\n let fdiName = '';\r\n // for some reason countAddFDI starting at 2\r\n const color = parseColor(fdiKeyValue);\r\n const seriesGroupId = `${fdiInfo.id}_${fdiKeyValue}_${new Date().getTime()}`;\r\n const fdiId = `${fdiInfo.id}`;\r\n fdiName = FDI_DYNAMIC_MARKERS[fdiKeyValue];\r\n fdiValue = this.parseFDIValueToChartSeries(timeFormat, baseTreatmentDataTime, fdiValue);\r\n\r\n const seriesItem = this.parseFDIInfoToChartSeries({\r\n yAxisIndex, color, seriesGroupId, fdiId, fdiName, invisibleLine: true,\r\n fdiValue, fdiKeyValue, timeFormat, startIndex: null, endIndex: null, onDropHandler, onDragHandler\r\n }, onMouseOverHandler);\r\n seriesData.push(seriesItem);\r\n });\r\n }\r\n return seriesData;\r\n }\r\n\r\n parseTreatmentChartSeries({\r\n baseTreatmentDataTime, timeFormat, treatmentInfo, treatmentStart, treatmentEnd, startIndex, endIndex,\r\n yAxisIndex, onDropHandler, onDragHandler\r\n }) {\r\n const seriesData = [];\r\n if (treatmentInfo) {\r\n const listFDIs = Object.keys(FDI_STATIC_MARKERS);\r\n const color = TreatmentPlotFdiService.FDI_TREATMENT_COLOR;\r\n const objValues = {\r\n treatmentStart: treatmentStart ? treatmentStart : treatmentInfo.timeStart,\r\n treatmentEnd: treatmentEnd ? treatmentEnd : (treatmentInfo.timeEnd || treatmentInfo.timeStart + (120 * 60)),\r\n };\r\n\r\n // limit the treatmentStart and treatmentEnd in treatment range\r\n // other FDI marker can be dragged outside treatment range as long as in the chart\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime) {\r\n const treatmentStartOffset = treatmentStart * 1000;\r\n const treatmentEndOffset = treatmentEnd * 1000;\r\n if (startIndex < treatmentStartOffset) startIndex = treatmentStartOffset;\r\n if (endIndex > treatmentEndOffset) endIndex = treatmentEndOffset;\r\n } else {\r\n const durationSecond = (baseTime: string, timestamp: number): number => Math.floor((timestamp - new Date(baseTime).getTime()) / 1000);\r\n const treatmentStartOffset = durationSecond(baseTreatmentDataTime, treatmentStart * 1000);\r\n const treatmentEndOffset = durationSecond(baseTreatmentDataTime, treatmentEnd * 1000);\r\n if (startIndex < treatmentStartOffset) startIndex = treatmentStartOffset;\r\n if (endIndex > treatmentEndOffset) endIndex = treatmentEndOffset;\r\n }\r\n\r\n if (listFDIs && !isEmpty(listFDIs)) {\r\n listFDIs.forEach((fdiKeyValue, index) => {\r\n let fdiValue = objValues[fdiKeyValue] * 1000; // sec to millisec\r\n let fdiName = '';\r\n const seriesGroupId = `${index}_${fdiKeyValue}_${new Date().getTime()}`;\r\n const fdiId = `${index}`;\r\n fdiName = FDI_STATIC_MARKERS[fdiKeyValue];\r\n fdiValue = this.parseFDIValueToChartSeries(timeFormat, baseTreatmentDataTime, fdiValue);\r\n\r\n const seriesItem = this.parseTreatmentInfoToChartSeries({ yAxisIndex, color, seriesGroupId, fdiId, fdiName, fdiValue, fdiKeyValue, timeFormat, startIndex, endIndex, onDropHandler, onDragHandler });\r\n seriesData.push(seriesItem);\r\n });\r\n }\r\n }\r\n return seriesData;\r\n }\r\n\r\n setTreatmentDragMax(highChart, baseData, lastData, timeSetting: ITimeSetting, userOptionNames: string[]) {\r\n let dragMaxX: number;\r\n if (timeSetting.type === TIME_SETTING_TYPE.EpochTime) {\r\n dragMaxX = new Date(lastData[0]).getTime();\r\n } else {\r\n const offset = new Date(lastData[0]).getTime() - new Date(baseData[0]).getTime();\r\n dragMaxX = baseData[1] + Math.round(offset / 1000);\r\n }\r\n\r\n for (const series of highChart.series) {\r\n for (const names of userOptionNames) {\r\n if (!series.userOptions.id.includes('_' + names + '_')) continue;\r\n series.userOptions.dragDrop.dragMaxX = dragMaxX;\r\n }\r\n }\r\n }\r\n\r\n checkIsExistStaticFDIs(curListFDIs: TreatmentPlotFDI[]) {\r\n if (!isEmpty(curListFDIs)) {\r\n const keys = Object.keys(FDI_STATIC_MARKERS);\r\n }\r\n }\r\n\r\n filterListFDIsByOffsetChannels(localOffsetChannelSettings, curListFDIs) {\r\n let result = [];\r\n if (localOffsetChannelSettings && !isEmpty(curListFDIs)) {\r\n // get offset channels only\r\n const offsetChannels = this.channelSelectionService.getListChannels(localOffsetChannelSettings, true);\r\n const availableTreatmentIds = _map(offsetChannels, 'treatmentId');\r\n // filter list fdi by current offset channels\r\n result = curListFDIs.filter(item => availableTreatmentIds.includes(item.treatmentId));\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n\r\nexport interface IFDIChartSeriesData {\r\n x: number;\r\n y: number;\r\n fdiId?: string;\r\n fdiKeyValue?: string;\r\n groupId?: string;\r\n name?: string;\r\n [x: string]: any;\r\n}\r\n\r\nexport interface IFDIChartSeries {\r\n id: string;\r\n data: IFDIChartSeriesData[];\r\n name?: string;\r\n type?: string;\r\n tooltip?: boolean;\r\n yAxis?: number;\r\n showInLegend?: boolean;\r\n stickyTracking?: boolean;\r\n enableMouseTracking?: boolean;\r\n dashStyle?: string;\r\n [x: string]: any;\r\n}\r\n\r\nexport interface IFDIInfoToChartSeries {\r\n fdiId: string;\r\n fdiName: string;\r\n fdiValue: number;\r\n fdiKeyValue: string;\r\n yAxisIndex: number;\r\n color;\r\n timeFormat;\r\n startIndex;\r\n endIndex;\r\n invisibleLine;\r\n onDropHandler;\r\n onDragHandler;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TIME_SETTING_TYPE } from '../../helpers/app.constants';\r\n\r\nexport interface IParamConvertXValueByTimeFormat {\r\n xValue: number;\r\n timeFormat: string;\r\n baseTreatmentDataTime: string;\r\n wellTimeZoneOffset: number;\r\n}\r\n\r\n@Injectable()\r\nexport class TreatmentPlotTimeConverterService {\r\n\r\n constructor() { }\r\n\r\n convertXValueByTimeFormat({ xValue, timeFormat, baseTreatmentDataTime, wellTimeZoneOffset }: IParamConvertXValueByTimeFormat) {\r\n let timeOffset;\r\n if (xValue < 0) {\r\n xValue = 10 * 60;\r\n }\r\n if (timeFormat === TIME_SETTING_TYPE.EpochTime) {\r\n timeOffset = xValue - new Date(baseTreatmentDataTime).getTime(); // - wellTimeZoneOffset * 60 * 1000; // milliseconds\r\n timeOffset = timeOffset / 1000; // in seconds\r\n } else {\r\n if (xValue > 60000) {\r\n xValue = 200 * 60;\r\n }\r\n timeOffset = xValue; // in seconds\r\n }\r\n return timeOffset;\r\n }\r\n\r\n convertOffsetToEpochMillisec({ xValue, baseTreatmentDataTime }) {\r\n let epochInMillisec;\r\n // convert offset value to epoch value\r\n epochInMillisec = new Date(baseTreatmentDataTime).getTime() + xValue * 1000;\r\n epochInMillisec = epochInMillisec;\r\n return epochInMillisec;\r\n }\r\n\r\n convertOffsetToEpochSec({ xValue, baseTreatmentDataTime }) {\r\n const epochInMillisec = this.convertOffsetToEpochMillisec({ xValue, baseTreatmentDataTime });\r\n return Math.round(epochInMillisec / 1000);\r\n }\r\n\r\n convertEpochToOffset({ xValue, baseTreatmentDataTime }) {\r\n let offsetInSec;\r\n let epochInMillisec = xValue - (new Date(baseTreatmentDataTime).getTime()); // milliseconds\r\n if (epochInMillisec < 0) {\r\n epochInMillisec = 5000;\r\n }\r\n offsetInSec = Math.round(epochInMillisec / 1000); // in seconds\r\n return offsetInSec;\r\n }\r\n\r\n convertEpochToMin({ xValue, baseTreatmentDataTime }) {\r\n const offsetInSec = this.convertEpochToOffset({ xValue, baseTreatmentDataTime });\r\n return offsetInSec / 60;\r\n }\r\n\r\n convertMsToSec(value: number | string, timezoneOffset = 0) {\r\n const time = typeof value === 'string' ? new Date(value).getTime() : value;\r\n return Math.floor(time / 1000) - (timezoneOffset * 60);\r\n }\r\n\r\n toEpochMillisecWithTimezone({ xValue }) {\r\n const epochInMillisec = new Date(xValue).getTime(); // + wellTimeZoneOffset * 60 * 1000;\r\n return epochInMillisec;\r\n }\r\n\r\n toEpochSecWithTimezone({ xValue }) {\r\n const epochInSec = this.toEpochMillisecWithTimezone({ xValue }) / 1000;\r\n return Math.round(epochInSec);\r\n }\r\n}\r\n","module.exports = \"\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Display Tooltip\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \".fdi-tooltip-box {\\n position: absolute;\\n top: 0;\\n right: 15px;\\n width: auto;\\n height: auto;\\n border: 1px solid #000;\\n border-radius: 5px;\\n background-color: rgba(255, 255, 255, 0.75);\\n padding: 5px; }\\n .fdi-tooltip-box .list-info {\\n margin: 0; }\\n nb-card.treatment-plot-component {\\n margin-bottom: 10px; }\\n nb-card.treatment-plot-component nb-card-body.card-body-pb-0 {\\n padding-left: 0;\\n padding-right: 0; }\\n nb-card.treatment-plot-component nb-card-body.card-body-pb-0 .treatment-plot-toolbar {\\n padding-left: 5px;\\n padding-right: 5px; }\\n nb-card.treatment-plot-component nb-card-body.card-body-pb-0 .treatment-plot-chart {\\n position: relative;\\n width: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdHJlYXRtZW50LXBsb3QvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHRyZWF0bWVudC1wbG90XFx0cmVhdG1lbnQtcGxvdC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sV0FBVztFQUNYLFdBQVc7RUFDWCxZQUFZO0VBQ1osc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQiwyQ0FBMkM7RUFDM0MsWUFBWSxFQUFBO0VBVGQ7SUFZSSxTQUFTLEVBQUE7RUFJYjtFQUNFLG1CQUFtQixFQUFBO0VBRHJCO0lBSUksZUFBZTtJQUNmLGdCQUFnQixFQUFBO0VBTHBCO01BT00saUJBQWlCO01BQ2pCLGtCQUFrQixFQUFBO0VBUnhCO01BV00sa0JBQWtCO01BQ2xCLFdBQVcsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3RyZWF0bWVudC1wbG90L3RyZWF0bWVudC1wbG90LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZkaS10b29sdGlwLWJveCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICByaWdodDogMTVweDtcclxuICB3aWR0aDogYXV0bztcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTtcclxuICBwYWRkaW5nOiA1cHg7XHJcblxyXG4gIC5saXN0LWluZm8ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxufVxyXG5cclxubmItY2FyZC50cmVhdG1lbnQtcGxvdC1jb21wb25lbnQge1xyXG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcblxyXG4gIG5iLWNhcmQtYm9keS5jYXJkLWJvZHktcGItMCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgLnRyZWF0bWVudC1wbG90LXRvb2xiYXIge1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xyXG4gICAgfVxyXG4gICAgLnRyZWF0bWVudC1wbG90LWNoYXJ0IHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import { DiagnosticCompanyStorageService } from './../../services/storage/diagnostic-company-storage.service';\r\nimport { TreatmentDetailsStorageService } from './../../services/storage/treatment-details-storage.service';\r\nimport { ToasterService } from './../../services/toaster.service';\r\nimport { Observable } from 'rxjs';\r\nimport { AfterViewInit, Component, EventEmitter, HostListener, Input, NgZone, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { saveAs } from 'file-saver';\r\nimport { cloneDeep, forEach, isEmpty, isEqual, isNil, isNumber, includes, capitalize, uniq, uniqBy } from 'lodash';\r\nimport { forkJoin, of, Subject, Subscription } from 'rxjs';\r\nimport { finalize, map, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { MultiFlowDataChartComponent } from '../../../shared/components/charts';\r\nimport { ChannelSelectionComponent } from '../../../shared/components/modals/channel-selection/channel-selection.component';\r\nimport { TimeSettingsComponent } from '../../../shared/components/modals/time-settings/time-settings.component';\r\nimport {\r\n ChartTimeFormat, CHART_MESSAGES, DEFAULT_INIT_TEMPLATE_NAME, DEFAULT_LAST_MIN_FILTER, DIAGNOSTIC_DEFAULTS, ENUM_DIAGNOSTIC_DEFAULTS, ENUM_TREATMENT_TYPE,\r\n INTERVAL_CHART_REALTIME, TIME_SETTING_TYPE, TREATMENT_TYPE, YAXIS_KEYS, INTERVAL_CHART_COMMENT_REALTIME, USER_STORAGE, FDI_PARAM,\r\n TIME_SETTINGS_TIME_OPTIONS, DEFAULT_MONITOR_LAST_MIN_FILTER, TREATMENT_MONITOR_NUMBER, PREFIX_PREDICTIVE_CHANNEL, CHART_SERIES_NAME, LOS_DEFAULTS, ENUM_LOS_DEFAULTS, WELL_TOKEN_EXPIRED\r\n} from '../../../shared/helpers/app.constants';\r\nimport { Helper } from '../../../shared/helpers/helper';\r\nimport { IChartDataState, IInputDataMultiFlow, IOffsetDataState, ITimeSetting, ITreatmentComment } from '../../../shared/models';\r\nimport { IChannelItem, IChannelMappingResponse, IChannelSettingItemModel, IChannelSettingModel, isChannelSettingModel } from '../../../shared/models/channel.model';\r\nimport { IDiagnosticParam, IDiagnosticPoint, IDiagnosticPointDataChange } from '../../../shared/models/diagnostic-points.model';\r\nimport { IPlotTemplate, IPlotTemplateResponse } from '../../../shared/models/plot-template.model';\r\nimport {\r\n ChannelMappingService, ChannelSelectionService, ChannelSettingsStorageService, DiagnosticPointsService,\r\n FracproChannelsService,\r\n FracproChannelStorageService,\r\n KEY_LAST_MIN_FILTER, KEY_OFFSET_CHANNEL_SETTINGS, KEY_TEMPLATE_ID, KEY_TIME_FORMAT,\r\n LocalDataStorageService, PlotTemplateService, RealtimeTreatmentStorageService\r\n} from '../../../shared/services';\r\nimport { BaseChartService, ITimeRangeFilter, CONST_CURSOR_OPTIONS, ENUM_CURSOR_OPTS } from '../../../shared/services/charts/base-chart.service';\r\nimport { RealtimeChartService } from '../../../shared/services/charts/realtime-chart.service';\r\nimport { NavbarScaleChartService } from '../../../shared/services/navbar-scale-chart.service';\r\nimport { TreatmentService } from '../../../shared/services/treatment.service';\r\nimport { UserAuthService } from '../../../shared/services/user-auth.service';\r\nimport { IntervalTimer, TimerState } from '../../helpers/intervalTimer';\r\nimport { ITreatmentPlotDataState } from '../../models/treatment-plot.model';\r\nimport { ITreatmentItem } from '../../models/treatment.model';\r\nimport { CompareOffsetChannelsService } from '../../services/compare-offset-channels.service';\r\nimport { CompareWellsService } from '../../services/compare-wells.service';\r\nimport { DefaultDiagnosticPointsService, DEFAULT_DIAGNOSTIC_GROUP_ID, DEFAULT_FP_DIAGNOSTIC_GROUP_ID, IDefaultDiagnosticPointResponse, IDefaultDiagnosticPointResponseResult, IDefaultFpDiagnosticPointResponse, IDefaultFpDiagnosticPointResponseResult, DEFAULTS_LOS_GROUP_ID, TREATMENT_DEPENTDENT_VALUES } from '../../services/default-diagnostic-points.service';\r\nimport { DEFAULT_REALTIME_BOURDET, ScrollbarChartSettingsService } from '../../services/scrollbar-chart-settings.service';\r\nimport { FdiWellSelectionModalComponent } from '../modals/fdi-well-selection-modal/fdi-well-selection-modal.component';\r\nimport { TreatmentPlotDataStoreService } from './treatment-plot-data-store.service';\r\nimport { TreatmentPlotFdiApiService } from './treatment-plot-fdi-api.service';\r\nimport { TreatmentPlotFdiStoreService } from './treatment-plot-fdi-store.service';\r\nimport { IFdiDropEventData, IFDIPayload, TreatmentPlotFDI, TreatmentPlotFDIParam } from './treatment-plot-fdi.model';\r\nimport { TreatmentPlotFdiService } from './treatment-plot-fdi.service';\r\nimport { TreatmentPlotTimeConverterService } from './treatment-plot-time-converter.service';\r\nimport { TreatmentPlotService } from './treatment-plot.service';\r\nimport { ChannelMappingStorageService } from '../../services/storage/channel-mapping-storage.service';\r\nimport { IRealtimeDataStateSetting } from '../../../pages/treatments/realtime/realtime-treatment/realtime-treatment.component';\r\nimport { UnitSystemService } from '../../services/unit-system.service';\r\nimport { SessionService } from '../../services/session/session.service';\r\nimport { IBourdetOption } from '../../models/offset-well-compare.model';\r\n\r\nconst REALTIME_RENDER_DELAY = 100;\r\n\r\n\r\n@Component({\r\n selector: 'app-treatment-plot',\r\n templateUrl: './treatment-plot.component.html',\r\n styleUrls: ['./treatment-plot.component.scss']\r\n})\r\nexport class TreatmentPlotComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\r\n destroy$: Subject = new Subject();\r\n subscriptions: Subscription[] = [];\r\n viewChangeSubscription: Subscription;\r\n CHART_SERIES_NAME = CHART_SERIES_NAME;\r\n cursorOpt: string;\r\n cursorSelected: any = { id: ENUM_CURSOR_OPTS.Default, text: 'Default', typeCursor: ENUM_CURSOR_OPTS.VertLine, icon: 'icon-mouse-pointer' };\r\n cursorOpts = [this.cursorSelected].concat(CONST_CURSOR_OPTIONS);\r\n\r\n @Input() disabledBtn: boolean = false;\r\n\r\n _dialogOpened: boolean = false;\r\n @Input('dialogOpened')\r\n set dialogOpened(value: boolean) {\r\n if (this._dialogOpened !== value) {\r\n this._dialogOpened = !!value;\r\n this.dialogOpenedChange.emit(this.dialogOpened);\r\n }\r\n }\r\n get dialogOpened(): boolean {\r\n return this._dialogOpened;\r\n }\r\n @Output() dialogOpenedChange: EventEmitter = new EventEmitter();\r\n\r\n // Button dropdown\r\n optionsOpened: boolean = false;\r\n exportList: string[] = ['Save PNG', 'Save JPEG', 'Print Chart', 'Raw Data'];\r\n\r\n @ViewChild(MultiFlowDataChartComponent) highChart: MultiFlowDataChartComponent;\r\n chartInputState: IChartDataState = null;\r\n originalChartInputData: IInputDataMultiFlow;\r\n chartInputData: IInputDataMultiFlow;\r\n\r\n offsetChartInputData: IInputDataMultiFlow[] = [];\r\n isLoadingChartData: boolean = false;\r\n @Input() isDisplayTooltip: boolean = true;\r\n @Input() isDisplayComment: boolean;\r\n isDisplayDiagnostics: boolean = false;\r\n isDisplayLOSPoints: boolean = false;\r\n selectedCommentType: string = 'Annotation';\r\n timeFormat: ChartTimeFormat = TIME_SETTING_TYPE.OffsetTime;\r\n listTreatmentComments: ITreatmentComment[] = [];\r\n @Input() listDiagnosticPoints: IDiagnosticPoint[] = [];\r\n @Input() losPoints: IDiagnosticPoint[] = [];\r\n loadingPlotTemplates: boolean;\r\n\r\n @Input() chartWidth = '100%';\r\n @Input() chartHeight = '540px';\r\n @Input() viewChangeEvent: Observable;\r\n\r\n @Input() isFullChart: boolean = false;\r\n @Input() dataPanelBtnDisabled: boolean = false;\r\n\r\n @Input() wellId: number;\r\n @Input() treatmentId: number;\r\n @Input() chartId: string;\r\n @Input() chartIndex: number = 0;\r\n @Input()\r\n set realtime(value: boolean) {\r\n this.isRealtime = value;\r\n this.autoScaleTime = this.isRealtime;\r\n }\r\n @Input()\r\n set listWellsData(listWells) {\r\n this.listWells = listWells;\r\n }\r\n\r\n @Input()\r\n set isShowFullChart(value: boolean) {\r\n if (value && this.highChart) {\r\n this.isFullChart = value;\r\n this.highChart.reflow();\r\n }\r\n }\r\n\r\n @Input()\r\n set originalListTreatmentComments(items: ITreatmentComment[]) {\r\n if (items) this.listTreatmentComments = items;\r\n };\r\n @Input() timeFormatDefault: ChartTimeFormat;\r\n @Input() dataPlotTemplates: IPlotTemplateResponse[] = [];\r\n @Input() listRealtimeChannels: IChannelItem[] = [];\r\n @Input() listFracProChannels: IChannelItem[] = [];\r\n @Input() listPredictedChannels: IChannelItem[] = [];\r\n @Input() fracProChannelsLatestVer: any[] = [];\r\n\r\n @Input() channelSetting: IChannelSettingModel;\r\n isReloadOffsetChannels: boolean = false;\r\n\r\n wellTokenIntervalTimer: IntervalTimer;\r\n wellTokenStartTime: number;\r\n isResetTokenInterval: boolean;\r\n loadingTreatmentsToken: boolean;\r\n treatmentsToken: { wellId: number, treatmentId: number, authToken: string, startTime: number }[] = [];\r\n\r\n @Input() set setDataStateSetting(setting: IRealtimeDataStateSetting) {\r\n if (!setting) return;\r\n let isChangeChannels: boolean = false;\r\n let isChangeOffsetChannels: boolean = false;\r\n\r\n if (setting.offsetChannelSetting) {\r\n isChangeOffsetChannels = this.channelSelectionService.checkIsChangedChannels(setting.offsetChannelSetting, this.offsetChannelSetting);\r\n if (isChangeOffsetChannels) {\r\n this.offsetChannelSetting = setting.offsetChannelSetting;\r\n }\r\n }\r\n if (setting.channelSetting) {\r\n if (!this.channelSetting) {\r\n this.selectedTemplate = this.channelSelectionService.findPlotTemplate(setting.channelSetting, this.dataPlotTemplates);\r\n }\r\n isChangeChannels = this.channelSelectionService.checkIsChangedChannels(setting.channelSetting, this.channelSetting);\r\n if (isChangeChannels) this.channelSetting = setting.channelSetting;\r\n }\r\n\r\n let refresh: boolean = !!isChangeChannels && !!this.chartInputData;\r\n let typeSettingChanged: boolean;\r\n let lastMinChanged: boolean;\r\n if (setting.filterSetting) {\r\n lastMinChanged = this.lastMinFilter !== setting.filterSetting.lastMin;\r\n typeSettingChanged = (this.filterSetting && this.filterSetting.type && this.filterSetting.type !== setting.filterSetting.type);\r\n this.filterSetting = setting.filterSetting;\r\n this.lastMinFilter = setting.filterSetting.lastMin;\r\n this.timeFormat = setting.filterSetting.type || TIME_SETTING_TYPE.OffsetTime;\r\n this.autoScaleTime = setting.filterSetting.autoScale;\r\n if (!!lastMinChanged) this.chartInputData = this.handleChartInputData();\r\n }\r\n\r\n if (isChangeOffsetChannels && !!this.treatmentInfo) {\r\n this.isReloadOffsetChannels = false;\r\n this.reloadOffsetDataChart(true);\r\n } else {\r\n if (isChangeOffsetChannels) this.isReloadOffsetChannels = true;\r\n if (!!refresh || lastMinChanged || typeSettingChanged) {\r\n this.handleDataStateChange();\r\n this.isLoadingChartData = false;\r\n }\r\n }\r\n\r\n if (setting.fullChartSetting) {\r\n this.isFullChart = !setting.fullChartSetting ? false : true;\r\n }\r\n }\r\n\r\n handleChartInputData(): IInputDataMultiFlow {\r\n if (this.lastMinFilter) return this.treatmentPlotDataStoreService.getChartInputDataByLastMin(this.originalChartInputData, this.lastMinFilter);\r\n return cloneDeep(this.originalChartInputData);\r\n }\r\n\r\n @Input() isReloadDataChart: boolean;\r\n\r\n @Input()\r\n set setChartInputData(data: IInputDataMultiFlow) {\r\n // the data chart is rendered with this.handleDataStateChange and this.updateSeriesData\r\n // both are called under setTimeout(100) to ensure this.chartInputData = data is set\r\n // this also help feature in chart like diagnostic and FDI handle issues\r\n let lastMin = (this.filterSetting && this.filterSetting.lastMin !== null && this.filterSetting.lastMin !== undefined) ? this.filterSetting.lastMin : null;\r\n let lastMinChanged: boolean;\r\n if (this.lastMinFilter !== lastMin) {\r\n lastMinChanged = true;\r\n this.lastMinFilter = lastMin;\r\n }\r\n this.originalChartInputData = data;\r\n const chartData: IInputDataMultiFlow = this.handleChartInputData();\r\n if (!this.chartInputData) {\r\n this.chartInputData = chartData;\r\n this.highChart.setupChart();\r\n const hasChannel = this.channelSelectionService.hasChannelItems(this.channelSetting);\r\n if (hasChannel) this.isLoadingChartData = true;\r\n setTimeout(() => {\r\n this.handleDataStateChange();\r\n if (data) this.isLoadingChartData = false;\r\n }, REALTIME_RENDER_DELAY);\r\n } else {\r\n const isReloadDataChart = (curData, newData) => {\r\n const isNullRealtimeData = !curData.realtimeData || !curData.realtimeData.length;\r\n const isNullFracproData = !curData.fracproData || !curData.fracproData.length;\r\n let curValues: any;\r\n let newValues: any;\r\n if (isNullRealtimeData && isNullFracproData) return true;\r\n if (!newData) return false;\r\n if ((!newData.realtimeData || !newData.realtimeData.length) && (!newData.fracproData || !newData.fracproData.length)) return false;\r\n \r\n if (isNullRealtimeData) curValues = curData.fracproData[0].values;\r\n else curValues = curData.realtimeData[0].values;\r\n if (!newData.realtimeData || !newData.realtimeData.length) newValues = newData.fracproData[0].values;\r\n else newValues = newData.realtimeData[0].values;\r\n\r\n if (!curValues || !curValues.length) return true;\r\n if (!newValues || !newValues.length) return false;\r\n\r\n if (newValues[0][0] < curValues[0][0]) return true;\r\n\r\n return false;\r\n }\r\n if (lastMinChanged || isReloadDataChart(this.chartInputData, chartData)) {\r\n this.highChart.setLoadingChart(true);\r\n this.chartInputData = chartData;\r\n setTimeout(() => {\r\n this.handleDataStateChange();\r\n this.isLoadingChartData = false;\r\n }, REALTIME_RENDER_DELAY);\r\n } else {\r\n this.chartInputData = chartData;\r\n setTimeout(() => {\r\n this.updateSeriesData(true);\r\n this.isLoadingChartData = false;\r\n }, REALTIME_RENDER_DELAY);\r\n }\r\n }\r\n\r\n if (!this.timeRangeFilterValues && this.originalChartInputData && this.filterSetting) {\r\n const isNullRealtimeData = !this.originalChartInputData || !this.originalChartInputData.realtimeData || !this.originalChartInputData.realtimeData.length;\r\n const isNullFracproData = !this.originalChartInputData || !this.originalChartInputData.fracproData || !this.originalChartInputData.fracproData.length;\r\n const timeRangeRealtimeData = this.baseChartService.getTimeRangeFilter(isNullRealtimeData ? null : this.originalChartInputData.realtimeData[0]);\r\n const timeRangeFracproData = this.baseChartService.getTimeRangeFilter(isNullFracproData ? null : this.originalChartInputData.fracproData[0]);\r\n this.timeRangeFilterValues = this.baseChartService.mergeTimeRangeFilter(timeRangeRealtimeData, timeRangeFracproData);\r\n if(this.timeRangeFilterValues && this.treatmentInfo) {\r\n this.timeRangeFilterValues.timefloat.start = 0;\r\n this.timeRangeFilterValues.timestamp.start = this.treatmentInfo.timeStart * 1000;\r\n }\r\n this.filterSetting = this.baseChartService.toFilterSettings(this.filterSetting.type, this.timeRangeFilterValues, this.wellInfo.tzTimezone, undefined, undefined, this.autoScaleTime);\r\n if (this.filterSetting.type) this.timeFormat = this.filterSetting.type;\r\n this.filterSetting.lastMin = this.lastMinFilter;\r\n this.filterSettingChange.emit(this.filterSetting);\r\n }\r\n }\r\n\r\n offsetChannelSetting: IChannelSettingModel;\r\n channelSettings: IChannelSettingModel;\r\n autoScaleTime: boolean = true;\r\n @Input() filterSetting: ITimeSetting = {\r\n type: this.timeFormat,\r\n startIndex: 0,\r\n endIndex: 0,\r\n lastMin: 0,\r\n autoScale: true\r\n };\r\n lastMinFilter: number;\r\n timeRangeFilterValues: ITimeRangeFilter;\r\n wellInfo: any = {};\r\n treatmentInfo: ITreatmentItem;\r\n\r\n @Input()\r\n set setTreatmentInfo(item: ITreatmentItem) {\r\n this.initTreatmentInfo(item, this.isReloadOffsetChannels);\r\n }\r\n\r\n @Input()\r\n set setWellInfo(item: any) {\r\n this.initWellInfo(item);\r\n }\r\n\r\n minTime: any;\r\n maxTime: any;\r\n\r\n fracproGridDataCName = [];\r\n listFlowpaths: any[] = [];\r\n selectedFlowpath: any[];\r\n wellTimeZoneOffset: number = null;\r\n flagKeys = ['isDisplayTooltip', 'isDisplayComment', 'showFullChart', 'timeFormat'];\r\n userCompanyId: number = null;\r\n treatmentNumber: number;\r\n isRealtime: boolean = false;\r\n selectedTemplate: IPlotTemplateResponse;\r\n @Input()\r\n channelMappingData: IChannelMappingResponse[] = [];\r\n baseTreatmentDataTime: string;\r\n monitorOptions: IBourdetOption;\r\n\r\n timer: IntervalTimer;\r\n // commentTimer: IntervalTimer;\r\n isRefreshBourdet = DEFAULT_REALTIME_BOURDET;\r\n isShowFDIInfo: boolean = false;\r\n selectedFDIParam: TreatmentPlotFDIParam;\r\n countFDI = 1;\r\n listWells: any[] = [];\r\n originListFDIs: TreatmentPlotFDI[] = [];\r\n listFDIs: TreatmentPlotFDI[] = [];\r\n fdiDataPayload: IFDIPayload = this.treatmentPlotFdiStoreService.getInitialDataPayload();\r\n activeFDIId: string;\r\n realtimeYAxisMinMax: any[];\r\n\r\n // Output\r\n @Output()\r\n initDone: EventEmitter = new EventEmitter();\r\n @Output()\r\n dataChange: EventEmitter = new EventEmitter();\r\n @Output()\r\n toggleFullChart: EventEmitter = new EventEmitter();\r\n @Output()\r\n commentTypeChange: EventEmitter<{ isDisplayComment: boolean, commentType: string }> = new EventEmitter();\r\n @Output()\r\n defaultDiagnosticPointChange: EventEmitter = new EventEmitter();\r\n @Output()\r\n channelSettingChange: EventEmitter = new EventEmitter();\r\n @Output() offsetChannelSettingChange: EventEmitter = new EventEmitter();\r\n @Output()\r\n filterSettingChange: EventEmitter = new EventEmitter();\r\n @Output()\r\n componentClose: EventEmitter = new EventEmitter();\r\n @Output()\r\n componentTransform: EventEmitter = new EventEmitter();\r\n @Output() timerStateChange: EventEmitter = new EventEmitter();\r\n\r\n companiesDiagnostics: any[] = [];\r\n\r\n unitSetting: number;\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n private treatmentService: TreatmentService,\r\n private localDataStorageService: LocalDataStorageService,\r\n private treatmentPlotService: TreatmentPlotService,\r\n private compareWellsService: CompareWellsService,\r\n private channelMappingService: ChannelMappingService,\r\n private channelMappingStorageService: ChannelMappingStorageService,\r\n private compareOffsetChannelsService: CompareOffsetChannelsService,\r\n private defaultDiagnosticPointsService: DefaultDiagnosticPointsService,\r\n private dialogService: NbDialogService,\r\n private baseChartService: BaseChartService,\r\n private realtimeChartService: RealtimeChartService,\r\n private channelSelectionService: ChannelSelectionService,\r\n private diagnosticPointsService: DiagnosticPointsService,\r\n private plotTemplateService: PlotTemplateService,\r\n private userAuthService: UserAuthService,\r\n private treatmentDetailsStorageService: TreatmentDetailsStorageService,\r\n private channelSettingsStorageService: ChannelSettingsStorageService,\r\n private realtimeTreatmentStorageService: RealtimeTreatmentStorageService,\r\n private navbarScaleChartService: NavbarScaleChartService,\r\n private treatmentPlotDataStoreService: TreatmentPlotDataStoreService,\r\n private treatmentPlotFdiApiService: TreatmentPlotFdiApiService,\r\n private treatmentPlotTimeConverterService: TreatmentPlotTimeConverterService,\r\n private treatmentPlotFdiStoreService: TreatmentPlotFdiStoreService,\r\n private treatmentPlotFdiService: TreatmentPlotFdiService,\r\n private scrollbarChartSettingsService: ScrollbarChartSettingsService,\r\n private diagnosticCompanyStorageService: DiagnosticCompanyStorageService,\r\n private toasterService: ToasterService,\r\n private fracproChannelStorageService: FracproChannelStorageService,\r\n private fracproChannelsService: FracproChannelsService,\r\n private unitSystemService: UnitSystemService,\r\n private sessionService: SessionService\r\n ) {\r\n const userInfo = this.userAuthService.getUserInfo();\r\n if (userInfo.companyId) {\r\n this.userCompanyId = userInfo.companyId;\r\n }\r\n const companyStorage = this.diagnosticCompanyStorageService.getCompanyStorage(this.userCompanyId);\r\n if (companyStorage) {\r\n this.companiesDiagnostics = companyStorage;\r\n }\r\n\r\n this.unitSetting = this.unitSystemService.loadUnitSettings();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (\r\n (changes.listRealtimeChannels && !changes.listRealtimeChannels.firstChange) ||\r\n (changes.listFracProChannels && !changes.listFracProChannels.firstChange)\r\n ) {\r\n if (changes.listRealtimeChannels) this.listRealtimeChannels = changes.listRealtimeChannels.currentValue;\r\n if (changes.listFracProChannels) {\r\n this.listFracProChannels = this.channelSelectionService.handleChannelsColor(changes.listFracProChannels.currentValue, this.fracProChannelsLatestVer);\r\n }\r\n this.onSelectPlotTemplate(this.selectedTemplate);\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (!this.wellId || !this.treatmentId) return;\r\n if (this.isRealtime) {\r\n // this.filterSetting = {\r\n // type: this.timeFormat,\r\n // startIndex: 0,\r\n // endIndex: 0,\r\n // lastMin: 0,\r\n // autoScale: true\r\n // };\r\n this.initHighChartReflow();\r\n this.viewChangeSubscription = this.viewChangeEvent.subscribe(() => {\r\n if (this.highChart) this.highChart.reflow();\r\n });\r\n // can be performed only on the first Plot panel\r\n if (!this.chartIndex) this.runIntervalLoadData();\r\n } else {\r\n this.reloadChannelMappingStorage();\r\n if (this.timeFormatDefault) this.timeFormat = this.timeFormatDefault;\r\n const filterSettings = this.treatmentDetailsStorageService.getFilterSettings(this.treatmentId);\r\n if (filterSettings) {\r\n this.filterSetting = filterSettings;\r\n if (!this.filterSetting.type) this.filterSetting.type = this.timeFormat;\r\n if (!this.timeFormatDefault) this.timeFormat = this.filterSetting.type;\r\n }\r\n else this.filterSetting = {\r\n type: this.timeFormat,\r\n startIndex: 0,\r\n endIndex: 0,\r\n lastMin: 0,\r\n autoScale: true\r\n };\r\n this.compareWellsService.getListWellName().subscribe(res => this.listWells = res.result);\r\n this.initialize();\r\n }\r\n }\r\n\r\n private onChangeTimerState(state: number): void {\r\n if (!state) this.timerStateChange.emit(TimerState.idle);\r\n else {\r\n if (!!this.dialogOpened) {\r\n if (this.timer) this.timer.pause();\r\n if (this.wellTokenIntervalTimer) this.wellTokenIntervalTimer.pause();\r\n this.timerStateChange.emit(state);\r\n } else {\r\n if (state == TimerState.paused) {\r\n if (this.timer) this.timer.pause();\r\n if (this.wellTokenIntervalTimer) this.wellTokenIntervalTimer.pause();\r\n } else if (state == TimerState.resumed) {\r\n if (this.timer) this.timer.resume();\r\n if (this.wellTokenIntervalTimer) this.wellTokenIntervalTimer.resume();\r\n }\r\n this.timerStateChange.emit(state);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // setTimeout(() => {\r\n // this.loadPageOptions(this.wellId);\r\n // this.filterSetting.type = this.timeFormat;\r\n // });\r\n }\r\n\r\n ngOnDestroy() {\r\n Helper.unsubscribe(this.subscriptions);\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.destroy$.unsubscribe();\r\n this.treatmentPlotFdiStoreService.unsetDataPayload();\r\n this.onDestroyInterval();\r\n\r\n if (!this.isRealtime) return;\r\n if (this.viewChangeSubscription) this.viewChangeSubscription.unsubscribe();\r\n }\r\n\r\n onDestroyInterval(): void {\r\n if (this.timer) this.timer.stop();\r\n this.onDestroyTokenInterval();\r\n }\r\n\r\n private onDestroyTokenInterval(): void {\r\n if (this.wellTokenIntervalTimer) this.wellTokenIntervalTimer.stop();\r\n }\r\n\r\n private runIntervalLoadTreatmentsToken(): void {\r\n const currentTime = new Date().getTime();\r\n const wellTokenInterval = WELL_TOKEN_EXPIRED - (currentTime - this.wellTokenStartTime);\r\n\r\n this.ngZone.runOutsideAngular(() => {\r\n this.wellTokenIntervalTimer = new IntervalTimer(() => { this.getWellTreatmentsTokens(); }, wellTokenInterval);\r\n });\r\n }\r\n\r\n private getWellTreatmentsTokens(): void {\r\n if (!this.treatmentsToken || !this.treatmentsToken.length) return;\r\n if (!!this.loadingTreatmentsToken) return;\r\n const cloneData = cloneDeep(this.treatmentsToken);\r\n this.loadingTreatmentsToken = true;\r\n\r\n const requests$ = cloneData.map((item: any) => {\r\n const wellId = item.wellId;\r\n const treatmentId = item.treatmentId;\r\n const currentTime = new Date().getTime();\r\n if (!!this.isResetTokenInterval) return this.sessionService.getWellTreatmentsToken(wellId, treatmentId).pipe(map(res => res.result));\r\n else {\r\n if (item.authToken && item.startTime && currentTime - item.startTime < WELL_TOKEN_EXPIRED - 100) return of(null);\r\n else return this.sessionService.getWellTreatmentsToken(wellId, treatmentId).pipe(map(res => res.result));\r\n }\r\n });\r\n this.isResetTokenInterval = false;\r\n\r\n forkJoin(requests$)\r\n .pipe(finalize(() => this.loadingTreatmentsToken = false))\r\n .subscribe(authTokens => {\r\n if (!this.wellTokenStartTime) this.wellTokenStartTime = new Date().getTime();\r\n authTokens.forEach((value: string, index: number) => {\r\n if (value) {\r\n this.treatmentsToken[index].authToken = value;\r\n this.treatmentsToken[index].startTime = new Date().getTime();\r\n }\r\n });\r\n });\r\n }\r\n\r\n private resetTreatmentTokens(): void {\r\n this.treatmentsToken = [];\r\n this.isResetTokenInterval = true;\r\n this.wellTokenStartTime = undefined;\r\n }\r\n\r\n private initializeTreatmentTokens(): any {\r\n if (!this.getOffsetChannelList || !this.getOffsetChannelList.length) {\r\n this.resetTreatmentTokens();\r\n return;\r\n }\r\n const settings = uniqBy(this.getOffsetChannelList, ['wellId', 'treatmentId'])\r\n .filter(setting => setting.wellId !== this.wellId && setting.treatmentId !== this.treatmentId);\r\n if (!settings.length) this.resetTreatmentTokens();\r\n else {\r\n if (!this.treatmentsToken || !this.treatmentsToken.length) {\r\n this.isResetTokenInterval = true;\r\n this.wellTokenStartTime = undefined;\r\n } else {\r\n const tokensData = this.treatmentsToken;\r\n this.isResetTokenInterval = false;\r\n for (let i = 0; i < tokensData.length; i++) {\r\n const itemExist = settings.find(setting => setting.wellId === tokensData[i].wellId && setting.treatmentId === tokensData[i].treatmentId);\r\n if (!!itemExist) continue;\r\n this.isResetTokenInterval = true;\r\n this.wellTokenStartTime = undefined;\r\n break;\r\n }\r\n }\r\n if (!!this.isResetTokenInterval) {\r\n this.treatmentsToken = settings.map(item => {\r\n return { wellId: item.wellId, treatmentId: item.treatmentId, authToken: undefined, startTime: undefined };\r\n });\r\n }\r\n this.getWellTreatmentsTokens();\r\n }\r\n }\r\n \r\n private getMonitorOptionsDefault = (timeEnd: number, timeStart: number, baseTime: number, lastMin: number): IBourdetOption => {\r\n if (!lastMin) return undefined;\r\n if (!timeEnd) return undefined;\r\n\r\n const tmpTime = timeEnd - lastMin * 60;\r\n if (tmpTime >= timeStart) return { startDate: Helper.toDateTimeString(tmpTime * 1000) };\r\n else if (timeStart > baseTime) return { startDate: Helper.toDateTimeString(timeStart * 1000) };\r\n else return undefined;\r\n }\r\n private getMonitorOptions = (treatment: ITreatmentItem, filterSetting: ITimeSetting, lastMin: number): IBourdetOption => {\r\n if (!treatment) return undefined;\r\n if (treatment.number !== TREATMENT_MONITOR_NUMBER) return undefined;\r\n const baseTime = treatment.baseTreatmentDateTime;\r\n if (!filterSetting || !filterSetting.endIndex) {\r\n const timeEnd = treatment.timeEnd || 0;\r\n const timeStart = treatment.timeStart || 0;\r\n return this.getMonitorOptionsDefault(timeEnd, timeStart, baseTime, lastMin);\r\n } else {\r\n let timeEnd = filterSetting.endIndex || 0;\r\n let timeStart = 0;\r\n const timeTypeLowerCase = filterSetting.type ? filterSetting.type.toLowerCase() : '';\r\n if (timeTypeLowerCase === TIME_SETTING_TYPE.EpochTimeLowerCase) {\r\n if (!lastMin) timeStart = filterSetting.startIndex;\r\n else {\r\n timeStart = timeEnd - lastMin * 60000;\r\n if (timeStart < filterSetting.startIndex) timeStart = filterSetting.startIndex\r\n }\r\n\r\n return {\r\n startDate: Helper.toDateTimeString(timeStart),\r\n endDate: Helper.toDateTimeString(timeEnd)\r\n };\r\n } else {\r\n if (!lastMin) timeStart = filterSetting.startIndex;\r\n else {\r\n timeStart = timeEnd - lastMin * 60;\r\n if (timeStart < filterSetting.startIndex) timeStart = filterSetting.startIndex\r\n }\r\n\r\n return {\r\n startDate: Helper.toDateTimeString((baseTime + timeStart) * 1000),\r\n endDate: Helper.toDateTimeString((baseTime + timeEnd) * 1000)\r\n };\r\n }\r\n }\r\n }\r\n\r\n private initTreatmentInfo(treatment: ITreatmentItem, isReloadOffsetDataChart?: boolean): void {\r\n if (!treatment) return;\r\n this.treatmentInfo = treatment;\r\n this.treatmentNumber = this.treatmentInfo.number;\r\n // setup filter time setting\r\n if (this.lastMinFilter === undefined) {\r\n this.lastMinFilter = this.realtimeTreatmentStorageService.getOption(this.wellId, KEY_LAST_MIN_FILTER);\r\n }\r\n // token\r\n if (this.isRealtime) {\r\n this.initializeTreatmentTokens();\r\n if (!!this.isResetTokenInterval) {\r\n this.onDestroyTokenInterval();\r\n setTimeout(() => { this.runIntervalLoadTreatmentsToken(); }, 100);\r\n }\r\n }\r\n this.setLastMinFilter(this.lastMinFilter);\r\n // setup base time\r\n if (treatment.baseTreatmentDateTime) {\r\n this.wellTimeZoneOffset = Helper.getTimezoneOffset(treatment.baseTreatmentDateTime, this.wellInfo.tzTimeZone);\r\n this.baseTreatmentDataTime = Helper.toDateTimeString(treatment.baseTreatmentDateTime * 1000);\r\n } \r\n if(this.timeRangeFilterValues) {\r\n this.timeRangeFilterValues.timefloat.start = 0;\r\n this.timeRangeFilterValues.timestamp.start = treatment.timeStart * 1000;\r\n }\r\n\r\n this.monitorOptions = this.getMonitorOptions(treatment, this.filterSetting, this.lastMinFilter);\r\n if (!!isReloadOffsetDataChart) this.reloadOffsetDataChart(true);\r\n }\r\n\r\n private initWellInfo(well: any) {\r\n if (!well) return;\r\n this.wellInfo = well;\r\n }\r\n\r\n private initSideData() {\r\n this.treatmentPlotFdiApiService.getByTreatment(this.treatmentId)\r\n .subscribe(res => {\r\n if (res) {\r\n this.originListFDIs = cloneDeep(res.fdi);\r\n const fdiData = Object.assign({}, res);\r\n // filter list fdi by current offset channels\r\n fdiData.fdi = this.treatmentPlotFdiService.filterListFDIsByOffsetChannels(this.offsetChannelSetting, this.originListFDIs);\r\n // if there is fdiData.fdi data countFDI++ to init the right color on the next onAddFDI\r\n if (fdiData.fdi.length) this.setCountFDI(this.countFDI + fdiData.fdi.length);\r\n this.setFDIDataState(fdiData);\r\n }\r\n });\r\n }\r\n\r\n private reloadChannelMappingStorage() {\r\n const channelMapping = this.channelMappingStorageService.getChannelMapped(this.userCompanyId);\r\n if (!channelMapping || !channelMapping.length) return;\r\n this.channelMappingData = channelMapping;\r\n }\r\n\r\n private reloadFracProChannelsStorage(): void {\r\n const fracproChannels = this.fracproChannelStorageService.getFracproChannels();\r\n if (fracproChannels && fracproChannels.length) {\r\n this.fracProChannelsLatestVer = fracproChannels;\r\n }\r\n }\r\n\r\n private loadDataForPivotPoints(): void {\r\n const companyDiagnostics = this.getCompanyDiagnostics();\r\n const paramNames = companyDiagnostics ? companyDiagnostics.map(diagnostics => diagnostics.name) : [];\r\n this.diagnosticPointsService.getDataForPivotPoints(this.treatmentId, paramNames, this.userCompanyId)\r\n .pipe(switchMap(pivotPoints => {\r\n const result = cloneDeep(pivotPoints);\r\n if (companyDiagnostics) {\r\n forEach(companyDiagnostics, (point) => {\r\n if (pivotPoints.findIndex(x => x.id === point.id) === -1) result.push(point);\r\n });\r\n }\r\n return of(result);\r\n }))\r\n .subscribe(data => {\r\n const pivotPoints = !data ? [] : data;\r\n this.listDiagnosticPoints = pivotPoints.filter(point => point.name !== 'MinMaxStart' && point.name !== 'MinMaxEnd');\r\n this.losPoints = pivotPoints.filter(point => point.name === 'MinMaxStart' || point.name === 'MinMaxEnd');\r\n });\r\n }\r\n\r\n private initializeData() {\r\n this.isLoadingChartData = true;\r\n this.loadingPlotTemplates = true;\r\n\r\n // load data from storage first if there is\r\n this.reloadChannelMappingStorage();\r\n const loadChannelMapping = this.channelMappingData && this.channelMappingData.length ? of(true) : this.channelMappingService.getAll(this.userCompanyId);\r\n\r\n this.reloadFracProChannelsStorage();\r\n const fracProChannelsLatestVer$ = this.fracProChannelsLatestVer && this.fracProChannelsLatestVer.length ? of(true) : this.fracproChannelsService.getLatestVersion();\r\n\r\n const subs = forkJoin(\r\n this.treatmentService.getWellDetail(this.wellId),\r\n this.plotTemplateService.getByWell(this.wellId),\r\n loadChannelMapping,\r\n fracProChannelsLatestVer$\r\n ).pipe(switchMap(res => {\r\n // set well info\r\n this.wellInfo = res[0].result;\r\n this.wellInfo.diagnostics = !this.wellInfo.diagnostics ? [] : this.wellInfo.diagnostics;\r\n\r\n this.loadDataForPivotPoints();\r\n\r\n if (!this.wellInfo.tzTimeZone) this.wellInfo.tzTimeZone = Helper.lookupTimeZone(this.wellInfo.country, this.wellInfo.timeZone);\r\n\r\n this.dataPlotTemplates = res[1].result;\r\n\r\n // result from channelMappingService.getAll(this.userCompanyId)\r\n // unless the channelMappingData loaded from channelMappingStorageService\r\n if (res[2] && res[2].result) {\r\n this.channelMappingData = res[2].result.sort((a, b) => a > b);\r\n this.channelMappingStorageService.setChannelMapped(this.userCompanyId, this.channelMappingData);\r\n }\r\n\r\n if (res[3] && res[3].result) {\r\n this.fracProChannelsLatestVer = res[3].result;\r\n this.fracproChannelStorageService.setFracproChannels(this.fracProChannelsLatestVer);\r\n }\r\n\r\n // Get list flow paths\r\n // this.initDone.emit(this.getDataState);\r\n return this.treatmentService.getListFlowPaths(this.wellId, this.treatmentId);\r\n }))\r\n .pipe(switchMap(res => {\r\n if (res && !isEmpty(res.result)) {\r\n this.listFlowpaths = res.result.map(item => {\r\n return { type: item.type, name: item.name };\r\n });\r\n this.selectedFlowpath = [this.listFlowpaths[0]];\r\n }\r\n return of(\r\n this.getFlowPathType(this.selectedFlowpath)\r\n );\r\n }))\r\n .pipe(switchMap(flowPathType => {\r\n const isMonitor = (this.treatmentInfo && this.treatmentInfo.number === TREATMENT_MONITOR_NUMBER);\r\n // Get list channels\r\n return this.treatmentService.getChannelsForSettings(this.wellId, this.treatmentId, flowPathType, isMonitor);\r\n }))\r\n .pipe(switchMap(res => {\r\n // Set realtime channels, fracpro channels\r\n this.listRealtimeChannels = res.realtimeChannels;\r\n this.listFracProChannels = this.channelSelectionService.handleChannelsColor(res.fracProChannels, this.fracProChannelsLatestVer);\r\n this.listPredictedChannels = res.realtimeChannels.filter(x => x.originalName.toLowerCase().substring(0, PREFIX_PREDICTIVE_CHANNEL.length) === PREFIX_PREDICTIVE_CHANNEL);\r\n\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n // call api get chart data, init interval api call\r\n if (!this.isEmptyAllChannels()) {\r\n return this.initChannelSettings(flowPathType);\r\n } else {\r\n // do nothing if data of channels are empty\r\n // set message as no data\r\n this.highChart.resetChart(true);\r\n this.highChart.setChartMessage(CHART_MESSAGES.en.noData);\r\n this.isLoadingChartData = false;\r\n this.channelSetting = this.channelSelectionService.getDefaultSettings();\r\n return of(null);\r\n }\r\n }))\r\n .pipe(finalize(() => {\r\n // emit data to parent\r\n this.initDone.emit(this.getDataState);\r\n this.isLoadingChartData = false;\r\n this.isShowFDIInfo = true;\r\n this.loadingPlotTemplates = false;\r\n setTimeout(() => {\r\n this.toggleAnnotations();\r\n }, 200);\r\n }))\r\n .subscribe(() => {\r\n // realtime handler\r\n // if (this.isRealtime) {\r\n // this.runIntervalLoadData();\r\n // }\r\n });\r\n\r\n this.subscriptions.push(subs);\r\n }\r\n\r\n private handleNewTimeSettings(res): ITimeSetting {\r\n let newTimeSettings: ITimeSetting;\r\n if (this.autoScaleTime) {\r\n newTimeSettings = this.baseChartService.toFilterSettings(res.type, this.timeRangeFilterValues, this.wellInfo.tzTimeZone);\r\n this.minTime = this.maxTime = null;\r\n } else {\r\n const startTimeValue = res.type === TIME_SETTING_TYPE.EpochTime ? res.startTime : res.startTimeFloat;\r\n const endTimeValue = res.type === TIME_SETTING_TYPE.EpochTime ? res.endTime : res.endTimeFloat;\r\n newTimeSettings = this.baseChartService.toFilterSettings(res.type, this.timeRangeFilterValues, this.wellInfo.tzTimeZone, startTimeValue, endTimeValue, false);\r\n // update min max zoom range\r\n this.minTime = newTimeSettings.startIndex;\r\n this.maxTime = newTimeSettings.endIndex;\r\n }\r\n\r\n newTimeSettings.lastMin = res.lastMin;\r\n newTimeSettings.autoScale = res.autoScaleTime;\r\n return newTimeSettings;\r\n }\r\n\r\n private reloadOffsetDataChart(isFetchNewData?: boolean): void {\r\n if (!this.offsetChannelSetting) return;\r\n\r\n const offsetChannels = this.getOffsetChannelList;\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n\r\n // Handle realtime interval offset well\r\n if (!!isFetchNewData) {\r\n if (!isEmpty(offsetChannels)) {\r\n this.isLoadingChartData = !!isFetchNewData;\r\n const reloadChartData = this.getOffsetChartData(offsetChannels, flowPathType, true);\r\n const reloadFDIData = !this.chartIndex\r\n ? (!this.fdiDataPayload || !this.fdiDataPayload.fdi || !this.fdiDataPayload.fdi.length\r\n ? this.treatmentPlotFdiApiService.getByTreatment(this.treatmentId)\r\n : of(this.fdiDataPayload))\r\n : of(null);\r\n\r\n // reload data and FDI also\r\n forkJoin([reloadChartData, reloadFDIData])\r\n .pipe(\r\n finalize(() => {\r\n this.treatmentDetailsStorageService.removeTreatmentData();\r\n this.isLoadingChartData = false;\r\n })\r\n )\r\n .subscribe(data => {\r\n if (!this.chartIndex) { // FDI can be performed only on the first Plot panel\r\n const newListFDIs = this.treatmentPlotFdiService.filterListFDIsByOffsetChannels(this.offsetChannelSetting, data[1].fdi);\r\n this.originListFDIs = cloneDeep(newListFDIs);\r\n const fdiData = Object.assign({}, data[1]);\r\n // filter list fdi by current offset channels\r\n fdiData.fdi = this.treatmentPlotFdiService.filterListFDIsByOffsetChannels(this.offsetChannelSetting, this.originListFDIs);\r\n // if there is fdiData.fdi data countFDI++ to init the right color on the next onAddFDI\r\n if (fdiData.fdi.length) this.setCountFDI(this.countFDI + fdiData.fdi.length);\r\n this.setFDIDataState(fdiData);\r\n this.onToggleShowFDI(true);\r\n } else {\r\n this.highChart.removeAllFDIHandler();\r\n this.setFDIDataState(this.treatmentPlotFdiStoreService.getInitialDataPayload());\r\n }\r\n this.handleDataStateChange();\r\n this.isLoadingChartData = false;\r\n });\r\n } else {\r\n this.offsetChartInputData = [];\r\n this.setCountFDI();\r\n this.highChart.removeAllFDIHandler();\r\n this.setFDIDataState(this.treatmentPlotFdiStoreService.getInitialDataPayload());\r\n this.handleDataStateChange();\r\n }\r\n } else {\r\n if (!isEmpty(offsetChannels)) {\r\n if (this.channelSettings && this.channelSettings.autoScaleYAxis) {\r\n // set null for auto scale y axis\r\n this.highChart.setAxisMinMax(null, null, true, true);\r\n }\r\n // if (this.autoScaleTime) {\r\n // set null for auto scale x axis\r\n // this.highChart.setAxisMinMax(null, null, false, true);\r\n // }\r\n this.subscriptions.push(\r\n this.getOffsetChartData(offsetChannels, flowPathType, false)\r\n .pipe(\r\n finalize(() => {\r\n this.treatmentDetailsStorageService.removeTreatmentData();\r\n })\r\n )\r\n .subscribe(\r\n response => {\r\n // update chart data without reload chart\r\n // this.updateSeriesData();\r\n if (!this.chartIndex) { // FDI can be performed only on the first Plot panel\r\n // // update fdi point data\r\n this.updateFDIDataPointsRealtime(this.listFDIs);\r\n }\r\n }\r\n )\r\n );\r\n }\r\n }\r\n }\r\n\r\n private runIntervalLoadData(): void {\r\n const realtimeRequestRate = this.scrollbarChartSettingsService.getRealtimeRequestRate(this.userCompanyId) || INTERVAL_CHART_REALTIME;\r\n\r\n this.ngZone.runOutsideAngular(() => {\r\n this.timer = new IntervalTimer(() => {\r\n this.reloadOffsetDataChart();\r\n }, realtimeRequestRate);\r\n });\r\n }\r\n\r\n private loadTreatmentComments() {\r\n this.subscriptions.push(\r\n this.getTreatmentComments(this.wellId, this.treatmentId)\r\n .subscribe(\r\n treatmentComments => {\r\n if (!isEmpty(treatmentComments)) {\r\n this.listTreatmentComments = treatmentComments;\r\n this.toggleAnnotations();\r\n }\r\n },\r\n err => err\r\n )\r\n );\r\n }\r\n\r\n private getOffsetChartData(offsetChannels: IChannelSettingItemModel[], flowPathType?: number, isFetchNewData?: boolean): Observable {\r\n let isRealtimeBourdet: boolean;\r\n let offsetChartInputData: IInputDataMultiFlow[];\r\n if (!!isFetchNewData) {\r\n isRealtimeBourdet = true;\r\n } else {\r\n offsetChartInputData = this.offsetChartInputData;\r\n if (this.isRefreshBourdet) {\r\n isRealtimeBourdet = true;\r\n this.isRefreshBourdet = false;\r\n } else {\r\n isRealtimeBourdet = this.scrollbarChartSettingsService.getRealtimeBourdetStorage(0);\r\n }\r\n }\r\n\r\n const baseTreatmentDateTime = this.treatmentInfo ? this.treatmentInfo.baseTreatmentDateTime : undefined;\r\n return this.treatmentPlotService.getWellTreatmentsData(offsetChannels)\r\n .pipe(\r\n switchMap(treatmentItems => {\r\n return this.treatmentPlotService.getOffsetChartInputData(\r\n offsetChannels,\r\n this.treatmentInfo,\r\n flowPathType,\r\n offsetChartInputData,\r\n this.filterSetting,\r\n baseTreatmentDateTime,\r\n this.isRealtime,\r\n isRealtimeBourdet,\r\n this.treatmentsToken\r\n );\r\n })\r\n )\r\n .pipe(\r\n map(data => {\r\n if (data && data.length) {\r\n this.offsetChartInputData = data.filter(x => x);\r\n } else {\r\n this.offsetChartInputData = [];\r\n }\r\n })\r\n );\r\n }\r\n\r\n private updateSeriesData(isRedraw: boolean = true): void {\r\n let offsetDataState: IOffsetDataState;\r\n if (this.offsetChannelSetting && this.offsetChartInputData && this.offsetChartInputData.length) {\r\n offsetDataState = { channelSettings: this.offsetChannelSetting, channelData: this.offsetChartInputData }\r\n }\r\n // update chart data without reload chart\r\n this.highChart.updateSeriesData(this.chartInputData, this.filterSetting, isRedraw, offsetDataState);\r\n }\r\n\r\n private setLastMinFilter(lastMinFilter): void {\r\n const lastMin = (value: number, values: number[], defaultVal: number, isRealtime: boolean) => {\r\n let index = values.findIndex(x => x === value);\r\n if (index > -1) return values[index];\r\n if (!!isRealtime) {\r\n index = TIME_SETTINGS_TIME_OPTIONS.realtimeExtends.findIndex(x => x === value);\r\n if (index > -1) return TIME_SETTINGS_TIME_OPTIONS.realtimeExtends[index];\r\n }\r\n return defaultVal;\r\n }\r\n\r\n if (this.treatmentInfo && this.treatmentInfo.number === TREATMENT_MONITOR_NUMBER) {\r\n this.lastMinFilter = lastMin(lastMinFilter, TIME_SETTINGS_TIME_OPTIONS.monitor, DEFAULT_MONITOR_LAST_MIN_FILTER, this.isRealtime);\r\n } else {\r\n this.lastMinFilter = lastMin(lastMinFilter, TIME_SETTINGS_TIME_OPTIONS.treatment, DEFAULT_LAST_MIN_FILTER, this.isRealtime);\r\n }\r\n this.filterSetting.lastMin = this.lastMinFilter;\r\n }\r\n\r\n private initHighChartReflow = () => {\r\n if (!this.highChart) return;\r\n this.navbarScaleChartService.isLoading.subscribe(() => {\r\n setTimeout(() => {\r\n this.highChart.reflow();\r\n });\r\n });\r\n }\r\n\r\n initialize() { // only with treatment detail page\r\n // set selected comment type\r\n const selectedCommentType = this.treatmentDetailsStorageService.getCommentType(this.treatmentId);\r\n if (selectedCommentType && typeof selectedCommentType === 'string') {\r\n this.selectedCommentType = selectedCommentType;\r\n }\r\n // get FDI Parameter\r\n const selectedFDIParam = this.localDataStorageService.getOption(USER_STORAGE.fdiParam);\r\n this.selectedFDIParam = selectedFDIParam;\r\n\r\n this.initHighChartReflow();\r\n // init default values\r\n this.channelSetting = this.channelSelectionService.getDefaultSettings();\r\n // load offfset channel settings\r\n const localOffsetChannelSettings = this.realtimeTreatmentStorageService.getOption(this.wellId, KEY_OFFSET_CHANNEL_SETTINGS);\r\n this.offsetChannelSetting = localOffsetChannelSettings;\r\n // init side data\r\n this.initSideData();\r\n // Get well info\r\n this.initializeData();\r\n }\r\n\r\n onRefresh() {\r\n this.highChart.zoomOut();\r\n this.updateFDIDataPoints(this.fdiDataPayload.fdi);\r\n if (!this.isRealtime) return;\r\n this.isRefreshBourdet = true;\r\n }\r\n\r\n setChartInputState(channelSettings, filterSettings, inputData, offsetDataState?: IOffsetDataState) {\r\n // set los points unixTime\r\n if (!this.losPoints || this.losPoints.length === 0) {\r\n if (this.treatmentInfo && !isNil(this.treatmentInfo.timeEnd) && this.treatmentInfo.timeStart <= this.treatmentInfo.timeEnd) {\r\n this.losPoints = [];\r\n const minStart = !this.treatmentInfo.timeStart ? 0 : this.treatmentPlotTimeConverterService.convertXValueByTimeFormat({\r\n xValue: this.treatmentInfo.timeStart * 1000, timeFormat: this.timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime, wellTimeZoneOffset: this.wellTimeZoneOffset\r\n });\r\n const maxEnd = !this.treatmentInfo.timeEnd ? 0 : this.treatmentPlotTimeConverterService.convertXValueByTimeFormat({\r\n xValue: this.treatmentInfo.timeEnd * 1000, timeFormat: this.timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime, wellTimeZoneOffset: this.wellTimeZoneOffset\r\n });\r\n LOS_DEFAULTS.forEach(item => {\r\n const point = Object.assign({\r\n id: item.id,\r\n name: item.text,\r\n timeOffSet: item.id === ENUM_LOS_DEFAULTS.MinMaxStart ? minStart : maxEnd,\r\n color: item.color || Helper.randomHexColor(),\r\n isDefault: true\r\n }) as IDiagnosticPoint;\r\n this.losPoints.push(point);\r\n })\r\n }\r\n }\r\n // set up chartInputState\r\n this.chartInputState = {\r\n ...this.chartInputState,\r\n channelSettings: { ...channelSettings },\r\n filterSettings: { ...filterSettings },\r\n inputData: { ...inputData },\r\n offsetDataState,\r\n timezoneOffset: this.wellTimeZoneOffset,\r\n listDiagnosticPoints: this.listDiagnosticPoints,\r\n losPoints: this.losPoints,\r\n baseTreatmentDataTime: this.baseTreatmentDataTime,\r\n treatmentInfo: this.treatmentInfo,\r\n wellInfo: this.wellInfo,\r\n realtimeChannels: this.listRealtimeChannels,\r\n fracProChannels: this.listFracProChannels,\r\n };\r\n }\r\n\r\n private get getDataState(): ITreatmentPlotDataState {\r\n return {\r\n wellInfo: this.wellInfo,\r\n treatmentInfo: this.treatmentInfo,\r\n realtimeChannels: this.listRealtimeChannels,\r\n fracProChannels: this.listFracProChannels,\r\n listFlowpaths: this.listFlowpaths,\r\n listTreatmentComments: this.listTreatmentComments,\r\n channelSettings: this.channelSetting,\r\n filterSettings: this.filterSetting,\r\n chartInputData: this.chartInputData,\r\n offsetDataState: {\r\n channelSettings: this.offsetChannelSetting,\r\n channelData: this.offsetChartInputData,\r\n listFDIs: this.listFDIs\r\n },\r\n predictedCNames: this.listPredictedChannels.map(x => x.cName),\r\n timeRangeFilterValues: this.timeRangeFilterValues\r\n };\r\n }\r\n\r\n handleDataStateChange() {\r\n const offsetDataState: IOffsetDataState = {\r\n channelSettings: this.offsetChannelSetting,\r\n channelData: this.offsetChartInputData,\r\n listFDIs: this.listFDIs,\r\n fdiPayload: this.fdiDataPayload\r\n };\r\n\r\n this.setChartInputState(this.channelSetting, this.filterSetting, this.chartInputData, offsetDataState);\r\n }\r\n\r\n setFDIDataState(dataPayload: IFDIPayload) {\r\n if (dataPayload) {\r\n this.listFDIs = dataPayload.fdi || [];\r\n this.fdiDataPayload = dataPayload;\r\n this.treatmentPlotFdiStoreService.setDataPayload(dataPayload);\r\n }\r\n }\r\n\r\n initChannelSettings(flowPathType: number) {\r\n // get settings from local storage\r\n const settingsStored = this.channelSettingsStorageService.getByWell(this.wellId);\r\n const settings = this.channelSelectionService.updateChannels(settingsStored, this.listRealtimeChannels, this.listFracProChannels);\r\n\r\n let settingObservable$: Observable;\r\n if (isChannelSettingModel(settings)) {\r\n // this.treatmentPlotService.checkChannelAppear(settings, this.listRealtimeChannels, this.listFracProChannels);\r\n // default auto scale is always false in realtime mode\r\n // use settings.autoScaleYAxis if not\r\n settings.autoScaleYAxis = this.isRealtime ? (isNil(settings.autoScaleYAxis) ? false : settings.autoScaleYAxis) : false;\r\n settingObservable$ = of(settings);\r\n } else {\r\n settingObservable$ = this.channelSelectionService.getDefaultSettingsObservable(\r\n this.wellId,\r\n this.treatmentId,\r\n flowPathType,\r\n this.listRealtimeChannels,\r\n true,\r\n true,\r\n );\r\n }\r\n\r\n return settingObservable$\r\n .pipe(switchMap(channelSettings => {\r\n // load selected template\r\n if (!isEmpty(this.dataPlotTemplates)) {\r\n const curPlotTemplateId = this.realtimeTreatmentStorageService.getOption(this.wellId, KEY_TEMPLATE_ID);\r\n let dataPlotTemplate;\r\n if (curPlotTemplateId) {\r\n dataPlotTemplate = this.dataPlotTemplates.find(item => item.id === curPlotTemplateId);\r\n } else if (!this.channelSettingsStorageService.getByWell(this.wellId)) { // in case unset local storage\r\n dataPlotTemplate = this.dataPlotTemplates.find(item => item.name === DEFAULT_INIT_TEMPLATE_NAME);\r\n }\r\n if (dataPlotTemplate && dataPlotTemplate.content) {\r\n this.loadTemplateSettings(dataPlotTemplate.content);\r\n this.selectedTemplate = dataPlotTemplate;\r\n let templateId: number;\r\n if (this.selectedTemplate) templateId = this.selectedTemplate.id;\r\n\r\n const isAutoScaleYAxis = !!this.isRealtime;\r\n this.channelSetting = this.channelSelectionService.plotTemplateToChannelSettings(dataPlotTemplate.content, this.listRealtimeChannels, this.listFracProChannels, this.channelMappingData, isAutoScaleYAxis, undefined, this.fracProChannelsLatestVer);\r\n } else {\r\n this.channelSetting = channelSettings;\r\n }\r\n } else {\r\n this.channelSetting = channelSettings;\r\n }\r\n // in realtime mode, need to load fracpro channels in grid data\r\n if (this.isRealtime) {\r\n const gridData = this.realtimeChartService.getFracproGridData(this.listFracProChannels);\r\n this.fracproGridDataCName = this.realtimeChartService.getCNameGridData(gridData);\r\n }\r\n return this.reloadChartData(this.channelSetting, false, this.fracproGridDataCName, flowPathType, this.offsetChannelSetting);\r\n }))\r\n .pipe(switchMap(data => {\r\n this.handleDataStateChange();\r\n return of(data);\r\n }));\r\n }\r\n\r\n onToggleFullChart() {\r\n this.isFullChart = !this.isFullChart;\r\n this.toggleFullChart.emit(this.isFullChart ? 1 : 0);\r\n setTimeout(() => this.highChart.reflow());\r\n }\r\n\r\n showChannelSettings() {\r\n this.dialogOpened = true;\r\n this.onChangeTimerState(TimerState.paused);\r\n let paramSettings = cloneDeep(this.channelSetting);\r\n let realtimeChannels = [...this.listRealtimeChannels];\r\n const mergedOffsetData = this.mergeOffsetChannelSettings(paramSettings, this.offsetChannelSetting, this.listRealtimeChannels);\r\n if (mergedOffsetData.channelSettings && mergedOffsetData.realtimeChannels) {\r\n paramSettings = mergedOffsetData.channelSettings;\r\n realtimeChannels = mergedOffsetData.realtimeChannels;\r\n }\r\n this.dialogService.open(ChannelSelectionComponent, {\r\n context: {\r\n title: 'Channel Selection',\r\n realtimeChannels,\r\n fracProChannels: this.treatmentNumber < 0 ? [] : this.listFracProChannels,\r\n settings: paramSettings,\r\n wellId: this.wellId,\r\n treatmentId: this.treatmentId,\r\n flowPathType: this.getFlowPathType(this.selectedFlowpath),\r\n showAutoScale: this.isRealtime,\r\n autoScaleYAxis: this.isRealtime ? this.channelSetting.autoScaleYAxis : false,\r\n listWells: this.listWells,\r\n hideCompareBtn: this.chartIndex ? true : false\r\n }\r\n }).onClose.subscribe(res => {\r\n this.dialogOpened = false;\r\n this.onChangeTimerState(TimerState.resumed);\r\n if (!res) return;\r\n const assignChannelSetting = (curSettings, newSettings) => {\r\n const result = cloneDeep(newSettings);\r\n if (!curSettings) return result;\r\n\r\n const curOffsetChannels = this.channelSelectionService.getListChannels(curSettings, true);\r\n for (const key in newSettings) {\r\n const newSetting: any = cloneDeep(newSettings[key]);\r\n if (newSetting && !isEmpty(newSetting.channels) && curOffsetChannels) {\r\n result[key].channels = newSetting.channels.map(item => {\r\n const channelExist = curOffsetChannels.find(x => x.wellId === item.wellId && x.treatmentId === item.treatmentId && x.name === item.name);\r\n if (channelExist) {\r\n const fillData = (keys: string[], n, o) => {\r\n let data: any = {};\r\n forEach(keys, key => {\r\n if (item.hasOwnProperty(key)) data[key] = item[key];\r\n else data[key] = channelExist[key];\r\n });\r\n return data;\r\n };\r\n const keys = uniq(Object.keys(item).concat(Object.keys(channelExist)));\r\n let result = fillData(keys, item, channelExist);\r\n const channelKeys = uniq(Object.keys(item.channel).concat(Object.keys(channelExist.channel)));\r\n result.channel = fillData(channelKeys, item.channel, channelExist.channel);\r\n\r\n return result;\r\n }\r\n else return item;\r\n });\r\n }\r\n }\r\n return result;\r\n };\r\n const settings = assignChannelSetting(this.offsetChannelSetting, res);\r\n\r\n const offsetChannelSetting = this.channelSelectionService.formatChannelSettingModel(settings, true);\r\n const channelSetting = this.channelSelectionService.formatChannelSettingModel(res);\r\n if (!this.isRealtime) {\r\n channelSetting.autoScaleYAxis = false;\r\n }\r\n\r\n // compare if there is a change in either this.channelSettings or this.offsetChannelSettings\r\n const isSameChannelSettings = isEqual(this.channelSetting, channelSetting);\r\n const isSameOffsetChannelSettings = isEqual(this.offsetChannelSetting, offsetChannelSetting);\r\n if (isSameChannelSettings && isSameOffsetChannelSettings) return;\r\n\r\n // prepare param to reloadChartData\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n const isChangeChannels = this.channelSelectionService.checkIsChangedChannels(channelSetting, this.channelSetting);\r\n const isChangeOffsetChannels = this.channelSelectionService.checkIsChangedChannels(offsetChannelSetting, this.offsetChannelSetting, true);\r\n this.channelSetting = cloneDeep(channelSetting);\r\n this.offsetChannelSetting = cloneDeep(offsetChannelSetting);\r\n\r\n // remove selected template id\r\n this.realtimeTreatmentStorageService.removeOption(this.wellId, KEY_TEMPLATE_ID);\r\n this.selectedTemplate = null;\r\n // In realtime-mode: get auth token for offset channels\r\n if (this.isRealtime) {\r\n this.initializeTreatmentTokens();\r\n if (!!this.isResetTokenInterval) {\r\n this.onDestroyTokenInterval();\r\n setTimeout(() => { this.runIntervalLoadTreatmentsToken(); }, 100);\r\n }\r\n\r\n this.channelSettingChange.emit(this.channelSetting);\r\n this.offsetChannelSettingChange.emit(this.offsetChannelSetting);\r\n if (isChangeOffsetChannels) {\r\n this.isRefreshBourdet = true;\r\n this.reloadOffsetDataChart();\r\n }\r\n this.handleDataStateChange();\r\n return;\r\n // if (!this.offsetChannelSettings) return;\r\n } else {\r\n // if (!this.isRealtime || this.offsetChannelSettings) {}\r\n const reloadChartData = this.reloadChartData(channelSetting, !isChangeChannels, this.fracproGridDataCName, flowPathType, this.offsetChannelSetting);\r\n const reloadFDIData = this.treatmentPlotFdiApiService.getByTreatment(this.treatmentId);\r\n\r\n // save new channel settings for current well in local storage if isRealtime\r\n this.channelSettingsStorageService.saveByWell(this.wellId, this.channelSetting);\r\n\r\n const offsetChanelItems = this.channelSelectionService.toChannelItems(this.offsetChannelSetting, true);\r\n if (offsetChanelItems.length) this.realtimeTreatmentStorageService.setOption(this.wellId, KEY_OFFSET_CHANNEL_SETTINGS, this.offsetChannelSetting);\r\n else this.realtimeTreatmentStorageService.removeOption(this.wellId, KEY_OFFSET_CHANNEL_SETTINGS);\r\n\r\n // reload data and FDI also\r\n forkJoin([reloadChartData, reloadFDIData]).subscribe(data => {\r\n const newListFDIs = this.treatmentPlotFdiService.filterListFDIsByOffsetChannels(this.offsetChannelSetting, data[1].fdi);\r\n this.originListFDIs = cloneDeep(newListFDIs);\r\n const fdiData = Object.assign({}, data[1]);\r\n // filter list fdi by current offset channels\r\n fdiData.fdi = this.treatmentPlotFdiService.filterListFDIsByOffsetChannels(this.offsetChannelSetting, this.originListFDIs);\r\n // if there is fdiData.fdi data countFDI++ to init the right color on the next onAddFDI\r\n if (fdiData.fdi.length) this.setCountFDI(this.countFDI + fdiData.fdi.length);\r\n this.setFDIDataState(fdiData);\r\n this.handleDataStateChange();\r\n setTimeout(() => {\r\n this.toggleAnnotations();\r\n }, 200);\r\n });\r\n }\r\n\r\n });\r\n }\r\n\r\n reloadChartData(\r\n channelSettings: IChannelSettingModel,\r\n isNoFetchNewData?: boolean,\r\n fracproGridCName?: string[],\r\n flowPathType?: number,\r\n offsetChannelSettings?: IChannelSettingModel,\r\n timeSetting?: ITimeSetting\r\n ) {\r\n let offsetChannels: IChannelSettingItemModel[];\r\n if (offsetChannelSettings) {\r\n offsetChannels = this.channelSelectionService.getListChannels(offsetChannelSettings, true);\r\n }\r\n\r\n // redraw chart without call api to get data\r\n if (isNoFetchNewData) {\r\n if (!isEmpty(offsetChannels)) {\r\n this.isLoadingChartData = true;\r\n const requestTimeSetting = timeSetting ? timeSetting : this.filterSetting;\r\n return this.treatmentPlotService.getWellTreatmentsData(offsetChannels)\r\n .pipe(\r\n switchMap(treatmentItems => {\r\n return this.treatmentPlotService.getOffsetChartInputData(offsetChannels, this.treatmentInfo, flowPathType, null, requestTimeSetting, this.treatmentInfo.baseTreatmentDateTime, this.isRealtime)\r\n .pipe(switchMap(response => {\r\n if (response && response.length) {\r\n this.offsetChartInputData = response.filter(x => x);\r\n }\r\n if (this.isRealtime) {\r\n const offsetTimeRange = this.baseChartService.mergeTimeRangeOffsetChannels(this.offsetChartInputData, this.timeRangeFilterValues);\r\n if (offsetTimeRange) {\r\n this.timeRangeFilterValues = offsetTimeRange;\r\n this.timeRangeFilterValues.timefloat.start = 0;\r\n this.timeRangeFilterValues.timestamp.start = this.treatmentInfo.timeStart * 1000;\r\n }\r\n }\r\n if (this.filterSetting.startIndex === 0 && this.filterSetting.endIndex === 0) {\r\n this.filterSetting = this.baseChartService.toFilterSettings(this.filterSetting.type, this.timeRangeFilterValues, this.wellInfo.tzTimezone, undefined, undefined, this.autoScaleTime);\r\n this.filterSetting.lastMin = this.lastMinFilter;\r\n this.treatmentDetailsStorageService.setFilterSettings(this.treatmentId, this.filterSetting);\r\n }\r\n return of(null);\r\n }));\r\n })\r\n )\r\n .pipe(\r\n finalize(() => {\r\n this.isLoadingChartData = false;\r\n this.treatmentDetailsStorageService.removeTreatmentData();\r\n })\r\n );\r\n } else {\r\n return of(null);\r\n }\r\n } else {\r\n this.isLoadingChartData = true;\r\n return this.treatmentPlotService.getWellTreatmentsData(offsetChannels)\r\n .pipe(\r\n switchMap(treatmentItems => {\r\n return this.treatmentPlotService.getChartDataHandler(\r\n this.wellId,\r\n this.treatmentId,\r\n this.treatmentInfo,\r\n channelSettings,\r\n offsetChannels,\r\n fracproGridCName,\r\n flowPathType,\r\n this.baseTreatmentDataTime,\r\n timeSetting,\r\n this.isRealtime,\r\n this.monitorOptions\r\n ).pipe(\r\n switchMap(res => {\r\n this.treatmentPlotDataStoreService.setChartInputData(res.chartInputData);\r\n this.timeRangeFilterValues = res.timeRangeFilter;\r\n if (this.timeRangeFilterValues) {\r\n this.timeRangeFilterValues.timefloat.start = 0;\r\n this.timeRangeFilterValues.timestamp.start = this.treatmentInfo.timeStart * 1000;\r\n }\r\n if (!this.filterSetting.endIndex || !timeSetting) {\r\n this.filterSetting = this.baseChartService.toFilterSettings(this.filterSetting.type, this.timeRangeFilterValues, this.wellInfo.tzTimeZone, undefined, undefined, this.autoScaleTime);\r\n this.filterSetting.lastMin = this.lastMinFilter;\r\n this.treatmentDetailsStorageService.setFilterSettings(this.treatmentId, this.filterSetting);\r\n }\r\n this.chartInputData = this.treatmentPlotDataStoreService.getChartInputDataByLastMin(res.chartInputData, this.lastMinFilter);\r\n if (res.offsetChartInputData && res.offsetChartInputData.length) {\r\n this.offsetChartInputData = res.offsetChartInputData.filter(x => x);\r\n }\r\n return of(res);\r\n })\r\n );\r\n })\r\n )\r\n .pipe(\r\n finalize(() => {\r\n this.isLoadingChartData = false;\r\n this.treatmentDetailsStorageService.removeTreatmentData();\r\n })\r\n );\r\n }\r\n }\r\n\r\n showTimeSettings() {\r\n this.dialogOpened = true;\r\n this.onChangeTimerState(TimerState.paused);\r\n this.dialogService.open(TimeSettingsComponent, {\r\n context: {\r\n wellItem: this.wellInfo,\r\n treatmentItem: this.treatmentInfo,\r\n model: this.filterSetting,\r\n realTime: this.isRealtime,\r\n autoScale: this.autoScaleTime,\r\n lastMinFilter: this.lastMinFilter,\r\n timeRangeFilter: cloneDeep(this.timeRangeFilterValues),\r\n // comment input\r\n showCommentOption: this.isDisplayComment,\r\n listCommentsOptions: !this.isRealtime,\r\n selectedCommentType: this.selectedCommentType\r\n }\r\n }).onClose.subscribe(res => {\r\n this.dialogOpened = false;\r\n this.onChangeTimerState(TimerState.resumed);\r\n if (!res) return;\r\n this.autoScaleTime = this.isRealtime ? res.autoScaleTime : false;\r\n const newTimeSettings = this.handleNewTimeSettings(res);\r\n // set time format settings in local storage\r\n this.timeFormat = newTimeSettings.type;\r\n this.realtimeTreatmentStorageService.setOption(this.wellId, 'timeFormat', this.timeFormat);\r\n\r\n if (this.isRealtime) {\r\n this.filterSettingChange.emit(newTimeSettings);\r\n return;\r\n }\r\n\r\n if (!isEqual(this.filterSetting, newTimeSettings) || this.lastMinFilter !== newTimeSettings.lastMin) {\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n // set time format settings in local storage\r\n this.lastMinFilter = newTimeSettings.lastMin;\r\n this.realtimeTreatmentStorageService.setOption(this.wellId, KEY_LAST_MIN_FILTER, this.lastMinFilter);\r\n // check re-load data chart\r\n const isReloadChart = (treatmennt: any, newOpts: IBourdetOption, curOpts: IBourdetOption): boolean => {\r\n if (!treatmennt || treatmennt.number !== TREATMENT_MONITOR_NUMBER) return false;\r\n if (!curOpts) return false;\r\n if (!newOpts) return true;\r\n\r\n if (!curOpts.endDate || !newOpts.endDate) {\r\n if (newOpts.startDate < curOpts.startDate) return true;\r\n return false;\r\n }\r\n if (newOpts.startDate < curOpts.startDate) return true;\r\n if (!newOpts.endDate || !curOpts.endDate) return false;\r\n if (newOpts.endDate > curOpts.endDate) return true;\r\n\r\n return false;\r\n }\r\n const newMonitorOptions = this.getMonitorOptions(this.treatmentInfo, newTimeSettings, newTimeSettings.lastMin);\r\n if (isReloadChart(this.treatmentInfo, newMonitorOptions, this.monitorOptions) === true) {\r\n // set data base on this.filterSetting\r\n this.filterSetting = newTimeSettings;\r\n this.treatmentDetailsStorageService.setFilterSettings(this.treatmentId, this.filterSetting);\r\n this.monitorOptions = newMonitorOptions;\r\n // reload data by flowPathType\r\n this.reloadChartData(this.channelSetting, false, this.fracproGridDataCName, flowPathType, this.offsetChannelSetting, newTimeSettings)\r\n .subscribe((response) => { this.handleDataStateChange(); });\r\n } else {\r\n this.isLoadingChartData = true;\r\n // set data base on this.filterSetting\r\n this.filterSetting = newTimeSettings;\r\n this.treatmentDetailsStorageService.setFilterSettings(this.treatmentId, this.filterSetting);\r\n let chartData = this.treatmentPlotDataStoreService.getChartInputData();\r\n this.chartInputData = this.treatmentPlotDataStoreService.getChartInputDataByLastMin(chartData, this.lastMinFilter);\r\n this.treatmentPlotService.getWellTreatmentsData(this.getOffsetChannelList)\r\n .pipe(\r\n switchMap(treatmentItems => {\r\n return this.treatmentPlotService.getOffsetChartInputData(\r\n this.getOffsetChannelList, this.treatmentInfo,\r\n flowPathType, null, this.filterSetting,\r\n this.treatmentInfo.baseTreatmentDateTime,\r\n this.isRealtime\r\n )\r\n .pipe(\r\n map(data => {\r\n if (data && data.length) {\r\n this.offsetChartInputData = data.filter(x => x);\r\n }\r\n this.handleDataStateChange();\r\n this.isLoadingChartData = false;\r\n })\r\n );\r\n })\r\n )\r\n .pipe(finalize(() => this.treatmentDetailsStorageService.removeTreatmentData()))\r\n .subscribe();\r\n }\r\n }\r\n\r\n if (this.selectedCommentType !== res.commentType) {\r\n this.selectedCommentType = res.commentType;\r\n this.treatmentDetailsStorageService.setCommentType(this.treatmentId, this.selectedCommentType);\r\n const annotationsOption = this.baseChartService.parseAnnotationsOption(this.listTreatmentComments, this.filterSetting.type, this.timeRangeFilterValues, this.highChart.getChartInstance());\r\n this.highChart.toggleAnnotations(annotationsOption, this.isShowAnnotation());\r\n // emit to parent comment type\r\n this.commentTypeChange.emit({ isDisplayComment: this.isDisplayComment, commentType: this.selectedCommentType });\r\n }\r\n });\r\n }\r\n\r\n isShowAnnotation() {\r\n return this.isDisplayComment && this.selectedCommentType === 'Annotation';\r\n }\r\n\r\n selectFlowpathHandler(data) {\r\n if (data) {\r\n const selectedItem = this.listFlowpaths.find(item => item.type === data.id);\r\n this.selectedFlowpath = [selectedItem];\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n const isMonitor = (this.treatmentInfo && this.treatmentInfo.number === TREATMENT_MONITOR_NUMBER);\r\n\r\n // reload list channel by wellId, treatmentId, flowPathType\r\n this.subscriptions.push(\r\n this.treatmentService.getChannelsForSettings(this.wellId, this.treatmentId, flowPathType, isMonitor)\r\n .subscribe(\r\n res => {\r\n this.listRealtimeChannels = res.realtimeChannels;\r\n this.listFracProChannels = this.channelSelectionService.handleChannelsColor(res.fracProChannels, this.fracProChannelsLatestVer);\r\n // update fracpro channels on grid data\r\n this.fracproGridDataCName = this.realtimeChartService.getFracproCNameGridData(this.listFracProChannels);\r\n // reload data by flowPathType\r\n this.reloadChartData(this.channelSetting, false, this.fracproGridDataCName, flowPathType, this.offsetChannelSetting)\r\n .toPromise()\r\n .then(() => {\r\n this.handleDataStateChange();\r\n setTimeout(() => {\r\n this.toggleAnnotations();\r\n }, 200);\r\n });\r\n },\r\n err => err\r\n )\r\n );\r\n }\r\n }\r\n\r\n exportChart(type: string) {\r\n this.clickOutside();\r\n if (type === 'Raw Data') {\r\n let uniThreeOffsetChannel = [];\r\n if (this.offsetChannelSetting) {\r\n uniThreeOffsetChannel = this.offsetChannelSetting.firstLeft.channels\r\n .concat(this.offsetChannelSetting.secondLeft.channels)\r\n .concat(this.offsetChannelSetting.firstRight.channels)\r\n .concat(this.offsetChannelSetting.secondRight.channels);\r\n }\r\n const uniThreeAxisChannel = this.channelSetting.firstLeft.channels\r\n .concat(this.channelSetting.firstRight.channels)\r\n .concat(this.channelSetting.secondLeft.channels)\r\n .concat(this.channelSetting.secondRight.channels);\r\n const textContent = this.treatmentPlotService.getStringRawData(\r\n uniThreeAxisChannel, this.chartInputData.realtimeData[0], this.chartInputData.fracproData[0],\r\n this.minTime, this.maxTime, this.timeFormat, uniThreeOffsetChannel, this.offsetChartInputData\r\n );\r\n const file = new Blob([textContent], { type: 'text/plain;charset=utf-8' });\r\n let fileName = `${this.wellInfo.wellName}_${this.treatmentNumber}.txt`;\r\n if (TREATMENT_TYPE[this.treatmentInfo.dataType] === ENUM_TREATMENT_TYPE.Monitoring) {\r\n fileName = `${this.wellInfo.wellName}_${ENUM_TREATMENT_TYPE.Monitoring}.txt`;\r\n }\r\n\r\n saveAs(file, fileName);\r\n } else {\r\n const treatmentType = TREATMENT_TYPE[this.treatmentInfo.dataType];\r\n let fileName = `${this.wellInfo.wellName}_${treatmentType} ${this.treatmentNumber}`;\r\n if (treatmentType === ENUM_TREATMENT_TYPE.Monitoring) {\r\n fileName = `${this.wellInfo.wellName}_${ENUM_TREATMENT_TYPE.Monitoring}`;\r\n }\r\n this.highChart.exportChart(fileName.toUpperCase(), type);\r\n }\r\n }\r\n\r\n toggleDisplayTooltip(event) {\r\n this.isDisplayTooltip = !this.isDisplayTooltip;\r\n this.highChart.toggleTooltip(this.isDisplayTooltip);\r\n this.realtimeTreatmentStorageService.setOption(this.wellId, 'isDisplayTooltip', this.isDisplayTooltip);\r\n }\r\n\r\n getFlowPathType(selectedFlowpath) {\r\n let flowPathType = 0;\r\n if (!isEmpty(selectedFlowpath) && selectedFlowpath[0]) {\r\n flowPathType = selectedFlowpath[0].type;\r\n }\r\n return flowPathType;\r\n }\r\n\r\n openButtonDropdown() {\r\n this.optionsOpened = !this.optionsOpened;\r\n }\r\n\r\n clickOutside() {\r\n this.optionsOpened = false;\r\n }\r\n\r\n isEmptyAllChannels() {\r\n return isEmpty(this.listRealtimeChannels) && isEmpty(this.listFracProChannels);\r\n }\r\n\r\n private getTreatmentComments(wellId, treatmentId): Observable {\r\n return this.treatmentService.getListComments(wellId, treatmentId)\r\n .pipe(map(response => {\r\n if (response && response.result && !isEmpty(response.result)) {\r\n return response.result;\r\n }\r\n return [];\r\n }));\r\n }\r\n\r\n toggleDisplayComment(event): void {\r\n this.isDisplayComment = !this.isDisplayComment;\r\n if (this.isDisplayComment) {\r\n // get list comments\r\n if (!this.listTreatmentComments) {\r\n this.loadTreatmentComments();\r\n } else {\r\n this.toggleAnnotations();\r\n }\r\n } else {\r\n this.toggleAnnotations();\r\n }\r\n if (!this.isRealtime) this.realtimeTreatmentStorageService.setOption(this.wellId, 'isDisplayComment', this.isDisplayComment);\r\n this.commentTypeChange.emit({ isDisplayComment: this.isDisplayComment, commentType: this.selectedCommentType });\r\n }\r\n\r\n private toggleAnnotations(): void {\r\n const annotationsOption = this.baseChartService.parseAnnotationsOption(this.listTreatmentComments, this.filterSetting.type, this.timeRangeFilterValues, this.highChart.getChartInstance());\r\n this.highChart.toggleAnnotations(annotationsOption, this.isDisplayComment);\r\n }\r\n\r\n onReloadChartData(eventData) {\r\n if (this.highChart) {\r\n const annotationsOption = this.baseChartService.parseAnnotationsOption(this.listTreatmentComments, this.filterSetting.type, this.timeRangeFilterValues, this.highChart.getChartInstance());\r\n this.highChart.toggleAnnotations(annotationsOption, this.isDisplayComment);\r\n this.highChart.toggleTooltip(this.isDisplayTooltip);\r\n this.updateFDIDataPoints(this.fdiDataPayload.fdi, true);\r\n\r\n }\r\n }\r\n\r\n loadPageOptions(wellId) {\r\n forEach(this.flagKeys, (key) => {\r\n if (!this.isRealtime || key !== 'isDisplayComment') {\r\n const value = this.realtimeTreatmentStorageService.getOption(wellId, key);\r\n if (value !== null) {\r\n this[key] = value;\r\n }\r\n }\r\n });\r\n }\r\n\r\n toggleDisplayDiagnostics(e) {\r\n this.isDisplayDiagnostics = !this.isDisplayDiagnostics;\r\n // reset selected state of list diagnostic points\r\n if (this.isDisplayDiagnostics === false) {\r\n this.listDiagnosticPoints.forEach(point => {\r\n point.selected = false;\r\n this.highChart.toggleDiagnosticPoints(point);\r\n });\r\n }\r\n }\r\n\r\n getMinMaxTime(eventData) {\r\n this.onChangeTimerState(TimerState.paused);\r\n this.minTime = eventData.minX;\r\n this.maxTime = eventData.maxX;\r\n setTimeout(() => {\r\n this.updateFDIDataPoints(this.fdiDataPayload.fdi);\r\n if (!this.dialogOpened) this.onChangeTimerState(TimerState.resumed)\r\n });\r\n }\r\n\r\n onDiagnosticPointDrag(event): void {\r\n this.onChangeTimerState(TimerState.paused);\r\n }\r\n\r\n onDiagnosticPointDrop(eventData) {\r\n const isDefault = DEFAULT_DIAGNOSTIC_GROUP_ID.concat(DEFAULTS_LOS_GROUP_ID).includes(eventData.groupId);\r\n if (!isDefault) {\r\n this.subscriptions.push(\r\n this.updateDiagnosticPointHandler(eventData)\r\n .pipe(\r\n finalize(() => {\r\n if (!this.dialogOpened) this.onChangeTimerState(TimerState.resumed);\r\n })\r\n )\r\n .subscribe(timeOffSet => {\r\n // update list diagnostic points\r\n this.updateTreatmentDiagnosticData(eventData.groupId, timeOffSet);\r\n this.defaultDiagnosticPointChange.emit();\r\n this.updateTreatmentBallSeatData(eventData);\r\n this.updateTreatmentISIPData(eventData);\r\n })\r\n );\r\n } else {\r\n // check channel exist\r\n const treatmentDepentdentValue = TREATMENT_DEPENTDENT_VALUES[eventData.groupId];\r\n const channelName = treatmentDepentdentValue.map(x => x.realtimeChannel).join(',');\r\n let flag: number = 0;\r\n for (let i = 0; i < treatmentDepentdentValue.length; i++) {\r\n if (treatmentDepentdentValue[i].realtimeChannel === undefined) {\r\n flag++\r\n break;\r\n }\r\n if (!this.listRealtimeChannels) break;\r\n if (\r\n this.listRealtimeChannels.findIndex(item => (\r\n item.originalName === treatmentDepentdentValue[i].realtimeChannel ||\r\n item.name === treatmentDepentdentValue[i].realtimeChannel\r\n )) === -1\r\n ) continue;\r\n flag++\r\n break;\r\n }\r\n\r\n if (flag > 0) {\r\n this.subscriptions.push(\r\n this.updateDefaultDiagnosticPointsHandler(eventData)\r\n .pipe(\r\n finalize(() => { if (!this.dialogOpened) this.onChangeTimerState(TimerState.resumed); })\r\n )\r\n .subscribe(res => {\r\n // fpDiagnostic: [{name: \"MinMaxStart\", timeOffset: 507}];\r\n const isLOS = DEFAULTS_LOS_GROUP_ID.includes(eventData.groupId);\r\n if (res !== null) {\r\n if (res.fpDiagnostic && res.fpDiagnostic.length) {\r\n this.updateTreatmentDefaultDiagnosticData(res.fpDiagnostic, true);\r\n if (!!isLOS && (!res.diagnostic || !res.diagnostic.length)) this.defaultDiagnosticPointChange.emit();\r\n }\r\n if (res.diagnostic && res.diagnostic.length) {\r\n this.updateTreatmentDefaultDiagnosticData(res.diagnostic, false);\r\n this.defaultDiagnosticPointChange.emit();\r\n this.updateTreatmentBallSeatData(eventData);\r\n this.updateTreatmentISIPData(eventData);\r\n }\r\n } else if (isLOS) {\r\n const point = this.losPoints.find(p => p.id === eventData.groupId);\r\n this.highChart.updateLOSPoint(point.timeOffSet, eventData.groupId);\r\n }\r\n })\r\n );\r\n } else {\r\n // Treating Pressure channel does not exist\r\n this.toasterService.showError(`${channelName} channel does not exist`);\r\n setTimeout(() => {\r\n const point = this.listDiagnosticPoints.find(item => item.id === eventData.groupId)\r\n if (point) this.highChart.updateDiagnosticPoint(point);\r\n }, 100);\r\n }\r\n }\r\n }\r\n\r\n private updateTreatmentDiagnosticData(groupId: string, res: number) {\r\n const index = this.listDiagnosticPoints.findIndex(x => x.id === groupId);\r\n if (index < 0) return;\r\n this.listDiagnosticPoints[index].timeOffSet = res;\r\n }\r\n\r\n private updateTreatmentDefaultDiagnosticData(response: any[] | IDefaultDiagnosticPointResponse[] | IDefaultFpDiagnosticPointResponse[], isDefaultV2?: boolean) { // isDefaultV2: fpDiagnostics & LOS point\r\n if (!response || !response.length) return;\r\n for (const res of response) {\r\n const requestId = !isDefaultV2 ? res.treatmentColumnName : res.name;\r\n const diagnosticId = this.defaultDiagnosticPointsService.parseRequestToId(requestId);\r\n if (!diagnosticId) continue;\r\n const diagIndex = this.listDiagnosticPoints.findIndex(x => x.id === diagnosticId);\r\n if (diagIndex >= 0) this.listDiagnosticPoints[diagIndex].timeOffSet = res.timeOffset;\r\n\r\n const losIndex = this.losPoints.findIndex(x => x.id === diagnosticId);\r\n if (losIndex >= 0) this.losPoints[losIndex].timeOffSet = res.timeOffset;\r\n }\r\n }\r\n\r\n private updateTreatmentBallSeatData(eventData) {\r\n if (eventData.groupId !== ENUM_DIAGNOSTIC_DEFAULTS.BallSeatTime || !this.fdiDataPayload || !this.fdiDataPayload.fdi.length) return;\r\n const timeOffset = this.treatmentPlotTimeConverterService.convertXValueByTimeFormat({ xValue: eventData.x, timeFormat: this.timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime, wellTimeZoneOffset: this.wellTimeZoneOffset });\r\n const listFDIs = this.fdiDataPayload.fdi.map(item => ({ id: item.id, ballSeatTime: timeOffset }));\r\n const payload = { fdi: listFDIs };\r\n this.treatmentPlotFdiApiService.updateByTreatment(this.treatmentId, payload, this.isRealtime)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(res => this.updateFDIDataState(res));\r\n }\r\n\r\n private updateTreatmentISIPData(eventData) {\r\n if (eventData.groupId !== ENUM_DIAGNOSTIC_DEFAULTS.InitialShutinPresTime || !this.fdiDataPayload || !this.fdiDataPayload.fdi.length) return;\r\n const timeOffset = this.treatmentPlotTimeConverterService.convertXValueByTimeFormat({ xValue: eventData.x, timeFormat: this.timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime, wellTimeZoneOffset: this.wellTimeZoneOffset });\r\n const listFDIs = this.fdiDataPayload.fdi.map(item => ({ id: item.id, ISIPTime: timeOffset }));\r\n const payload = { fdi: listFDIs };\r\n this.treatmentPlotFdiApiService.updateByTreatment(this.treatmentId, payload, this.isRealtime)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(res => this.updateFDIDataState(res));\r\n }\r\n\r\n onDisplayDiagnosticPoints(eventData: IDiagnosticPointDataChange | IDiagnosticPointDataChange[]) {\r\n if (!eventData) return;\r\n const isDefault = (groupId) => {\r\n return DEFAULT_DIAGNOSTIC_GROUP_ID.concat(DEFAULTS_LOS_GROUP_ID).includes(groupId);\r\n }\r\n\r\n if (eventData instanceof Array) {\r\n let points: IDiagnosticPointDataChange[] = eventData.filter(point => isDefault(point.groupId) === false);\r\n let pointsDefault: IDiagnosticPointDataChange[] = eventData.filter(point => isDefault(point.groupId) === true);\r\n this.subscriptions.push(\r\n forkJoin(\r\n points.length ? this.updateDiagnosticPointHandler(points) : of(null),\r\n pointsDefault.length ? this.updateDefaultDiagnosticPointsHandler(pointsDefault) : of(null)\r\n ).subscribe(res => {\r\n if (res[0] && res[0].length) {\r\n // update list diagnostic points\r\n this.listDiagnosticPoints.forEach(item => {\r\n const index = points.findIndex(point => item.id === point.groupId);\r\n if (index > -1) {\r\n item.timeOffSet = res[0][index].timeOffset;\r\n this.highChart.updateDiagnosticPoint(item);\r\n }\r\n });\r\n }\r\n })\r\n );\r\n } else {\r\n if (isDefault(eventData.groupId) === false) {\r\n this.subscriptions.push(\r\n this.updateDiagnosticPointHandler(eventData)\r\n .subscribe((timeOffset) => {\r\n // update list diagnostic points\r\n this.listDiagnosticPoints.forEach(item => {\r\n if (item.id === eventData.groupId) {\r\n item.timeOffSet = timeOffset;\r\n this.highChart.updateDiagnosticPoint(item);\r\n }\r\n });\r\n })\r\n );\r\n } else {\r\n this.subscriptions.push(\r\n this.updateDefaultDiagnosticPointsHandler(eventData).subscribe()\r\n );\r\n }\r\n }\r\n }\r\n\r\n toggleDisplayLosPoints(): void {\r\n if (!this.losPoints) return;\r\n this.isDisplayLOSPoints = !this.isDisplayLOSPoints;\r\n this.losPoints = this.losPoints.map(point => {\r\n point.selected = !!this.isDisplayLOSPoints;\r\n return point;\r\n })\r\n this.highChart.toggleDiagnosticPoints(this.losPoints, CHART_SERIES_NAME.los)\r\n }\r\n\r\n onToggleDiagnosticPoint(point: IDiagnosticPoint, keyOpt?) {\r\n if (point) {\r\n this.highChart.toggleDiagnosticPoints(point, keyOpt);\r\n }\r\n }\r\n\r\n updateDiagnosticPointHandler(eventData: IDiagnosticPointDataChange | IDiagnosticPointDataChange[]): Observable {\r\n if (!eventData) return of(null);\r\n if (eventData instanceof Array) {\r\n // do something\r\n } else {\r\n if (!eventData.groupId) return of(null);\r\n\r\n const timeOffset = this.treatmentPlotTimeConverterService.convertXValueByTimeFormat({\r\n xValue: eventData.x, timeFormat: this.timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime, wellTimeZoneOffset: this.wellTimeZoneOffset\r\n });\r\n const payload = {\r\n id: eventData.groupId,\r\n nameId: null,\r\n timeOffSet: timeOffset\r\n };\r\n if (isNaN(parseInt(eventData.groupId, 10))) {\r\n payload.id = null;\r\n payload.nameId = eventData.groupId;\r\n }\r\n return this.diagnosticPointsService.updateByWellTreatment(this.wellId, this.treatmentId, payload).pipe(map(data => timeOffset));\r\n }\r\n }\r\n\r\n updateDefaultDiagnosticPointsHandler(eventData: IDiagnosticPointDataChange | IDiagnosticPointDataChange[]): Observable<{\r\n fpDiagnostic: IDefaultDiagnosticPointResponse[], diagnostic: IDefaultDiagnosticPointResponse[]\r\n }> {\r\n if (!eventData) return of(null);\r\n // set request payload for API\r\n const setDiagnosticParam = (point: IDiagnosticPointDataChange): IDiagnosticParam => {\r\n const isLOS = DEFAULTS_LOS_GROUP_ID.includes(point.groupId);\r\n const isDefaultPoint = DEFAULT_DIAGNOSTIC_GROUP_ID.includes(point.groupId);\r\n if (!isDefaultPoint && !isLOS) return null;\r\n\r\n const timeOffset = this.treatmentPlotTimeConverterService.convertXValueByTimeFormat({\r\n xValue: point.x, timeFormat: this.timeFormat, baseTreatmentDataTime: this.baseTreatmentDataTime, wellTimeZoneOffset: this.wellTimeZoneOffset\r\n });\r\n if (!!isLOS) {\r\n if (point.groupId === ENUM_LOS_DEFAULTS.MinMaxStart) {\r\n const maxPoint = this.losPoints.find(p => p.id !== point.groupId);\r\n if (maxPoint.timeOffSet < timeOffset) return null;\r\n }\r\n if (point.groupId === ENUM_LOS_DEFAULTS.MinMaxEnd) {\r\n const minPoint = this.losPoints.find(p => p.id !== point.groupId);\r\n if (minPoint.timeOffSet > timeOffset) return null;\r\n }\r\n }\r\n return { timeOffSet: timeOffset, name: point.groupId };\r\n };\r\n // Calling api update\r\n let diagnosticParams: IDiagnosticParam[];\r\n if (eventData instanceof Array) {\r\n diagnosticParams = eventData.map(point => setDiagnosticParam(point)).filter(point => point !== null);\r\n if (!diagnosticParams || !diagnosticParams.length) return of(null);\r\n } else {\r\n const param = setDiagnosticParam(eventData);\r\n if (!param) return of(null);\r\n diagnosticParams = [param];\r\n }\r\n return this.defaultDiagnosticPointsService.handleUpdate(\r\n this.wellId,\r\n this.treatmentId,\r\n this.getFlowPathType(this.selectedFlowpath),\r\n diagnosticParams,\r\n this.listRealtimeChannels,\r\n this.listFracProChannels,\r\n this.baseTreatmentDataTime\r\n );\r\n }\r\n\r\n validTimeOffsetByTimeFormat(xValue) {\r\n let timeOffset;\r\n if (xValue < 0) {\r\n xValue = 10 * 60;\r\n }\r\n if (this.timeFormat === TIME_SETTING_TYPE.EpochTime) {\r\n timeOffset = xValue - new Date(this.baseTreatmentDataTime).getTime() - this.wellTimeZoneOffset * 60 * 1000; // milliseconds\r\n timeOffset = timeOffset / 1000; // in seconds\r\n } else {\r\n if (xValue > 60000) {\r\n xValue = 200 * 60;\r\n }\r\n timeOffset = xValue; // in seconds\r\n }\r\n return timeOffset;\r\n }\r\n\r\n onSelectPlotTemplate(plotTemplate: IPlotTemplateResponse) {\r\n if (!plotTemplate || !plotTemplate.content) return;\r\n\r\n const template = plotTemplate.content;\r\n const autoScaleYAxis = this.isRealtime ? this.channelSetting.autoScaleYAxis : false;\r\n const channelSetting = this.channelSelectionService.plotTemplateToChannelSettings(template, this.listRealtimeChannels, this.listFracProChannels, this.channelMappingData, autoScaleYAxis, undefined, this.fracProChannelsLatestVer);\r\n const targetTimeFormat = template.timeFormat || TIME_SETTING_TYPE.OffsetTime;\r\n const isChangeTime = targetTimeFormat === this.timeFormat;\r\n this.selectedTemplate = plotTemplate;\r\n\r\n // case 1: real time page\r\n if (this.isRealtime) {\r\n const isChangeChannels = this.channelSelectionService.checkIsChangedChannels(channelSetting, this.channelSetting, true);\r\n // set and callback filterSettingChange\r\n if (isChangeTime) {\r\n this.timeFormat = targetTimeFormat;\r\n this.filterSetting.type = targetTimeFormat;\r\n this.filterSettingChange.emit(this.filterSetting);\r\n }\r\n if (isChangeChannels) {\r\n this.channelSetting = channelSetting;\r\n this.channelSettingChange.emit(this.channelSetting);\r\n }\r\n this.handleDataStateChange();\r\n setTimeout(() => {\r\n this.toggleAnnotations();\r\n }, 200);\r\n }\r\n // case 2: detail page\r\n else {\r\n const isChangeChannels = this.channelSelectionService.checkIsChangedChannels(channelSetting, this.channelSetting);\r\n this.loadTemplateSettings(template);\r\n this.channelSetting = channelSetting;\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n // reload chart data\r\n this.reloadChartData(this.channelSetting, !isChangeChannels, this.fracproGridDataCName, flowPathType, this.offsetChannelSetting)\r\n .toPromise().then(() => {\r\n this.handleDataStateChange();\r\n setTimeout(() => {\r\n this.toggleAnnotations();\r\n }, 200);\r\n });\r\n\r\n // save newSettings to storageService\r\n // if there is a min/max set autoScaleYAxis to false\r\n const excludedKeys = this.isRealtime ? [] : ['autoScaleYAxis'];\r\n const isScaleChannel = channel => isNumber(channel.min) && isNumber(channel.max);\r\n\r\n const isScaleSettings = channelSettings => {\r\n for (const i of YAXIS_KEYS) {\r\n if (isScaleChannel(channelSettings[i])) return false;\r\n }\r\n return true;\r\n };\r\n\r\n this.channelSetting.autoScaleYAxis = isScaleSettings(this.channelSetting);\r\n this.channelSettingsStorageService.saveByWell(this.wellId, this.channelSetting, excludedKeys);\r\n // save template id in local\r\n if (plotTemplate.id) {\r\n this.realtimeTreatmentStorageService.setOption(this.wellId, KEY_TEMPLATE_ID, plotTemplate.id);\r\n }\r\n }\r\n }\r\n\r\n loadTemplateSettings(template: IPlotTemplate) {\r\n this.timeFormat = template.timeFormat || TIME_SETTING_TYPE.OffsetTime;\r\n const timeFormatStorage = this.realtimeTreatmentStorageService.getOption(this.wellId, KEY_TIME_FORMAT);\r\n if (timeFormatStorage) {\r\n if (timeFormatStorage === TIME_SETTING_TYPE.OffsetTime) this.timeFormat = timeFormatStorage;\r\n if (timeFormatStorage === TIME_SETTING_TYPE.EpochTime) this.timeFormat = timeFormatStorage;\r\n }\r\n this.filterSetting.type = this.timeFormat;\r\n\r\n if (this.timeRangeFilterValues) {\r\n this.filterSetting = this.handleNewTimeSettings(this.filterSetting);\r\n } else {\r\n this.filterSetting.type = this.timeFormat;\r\n }\r\n this.treatmentDetailsStorageService.setFilterSettings(this.treatmentId, this.filterSetting);\r\n\r\n this.isDisplayTooltip = !!template.isShowTooltip;\r\n if (this.isDisplayComment === undefined || this.isDisplayComment === null) {\r\n this.isDisplayComment = !!template.isShowComments;\r\n }\r\n if (!this.selectedCommentType) {\r\n this.selectedCommentType = template.commentType || 'Annotation';\r\n this.treatmentDetailsStorageService.setCommentType(this.treatmentId, this.selectedCommentType);\r\n }\r\n this.commentTypeChange.emit({ isDisplayComment: this.isDisplayComment, commentType: this.selectedCommentType });\r\n }\r\n\r\n onTemplatesChange(eventData) {\r\n this.loadingPlotTemplates = true;\r\n this.subscriptions.push(\r\n this.plotTemplateService.getByWell(this.wellId)\r\n .pipe(\r\n finalize(() => this.loadingPlotTemplates = false)\r\n )\r\n .subscribe(\r\n res => {\r\n this.dataPlotTemplates = res.result;\r\n }\r\n )\r\n );\r\n }\r\n\r\n mergeOffsetChannelSettings(\r\n channelSettings: IChannelSettingModel, offsetChannelSettings: IChannelSettingModel, listRealtimeChannels: IChannelItem[]\r\n ): { channelSettings: IChannelSettingModel, realtimeChannels: IChannelItem[] } {\r\n let paramSettings;\r\n let realtimeChannels;\r\n if (channelSettings && offsetChannelSettings && listRealtimeChannels) {\r\n // merge offset channel settings\r\n paramSettings = this.compareOffsetChannelsService.mergeChannelSettings(channelSettings, offsetChannelSettings);\r\n // merge offset channels with realtime channels\r\n const offsetChanelItems = this.channelSelectionService.toChannelItems(offsetChannelSettings, true);\r\n realtimeChannels = [...listRealtimeChannels, ...offsetChanelItems];\r\n }\r\n\r\n return { channelSettings: paramSettings, realtimeChannels };\r\n }\r\n\r\n private getCompanyDiagnostics() {\r\n const filterDiagnostic = diagnostic => {\r\n if (!diagnostic || !this.wellInfo || !this.wellInfo.diagnostics) return false;\r\n for (const wellDiagnostic of this.wellInfo.diagnostics) {\r\n if (wellDiagnostic.toString() === diagnostic.id.toString()) return true;\r\n }\r\n return false;\r\n };\r\n\r\n const companyDiagnostics = this.companiesDiagnostics\r\n .filter(x => filterDiagnostic(x))\r\n .map(x => {\r\n x.id = `${x.id}`;\r\n x.isDefault = false;\r\n return x;\r\n });\r\n return companyDiagnostics;\r\n }\r\n\r\n private setUpChannelSettings = () => {\r\n if (this.isEmptyAllChannels() === true) this.channelSetting = this.channelSelectionService.getDefaultSettings();\r\n else {\r\n const storage = this.channelSettingsStorageService.getByWell(this.wellId);\r\n if (!storage) {\r\n if (this.selectedTemplate) {\r\n const autoScaleYAxis = this.isRealtime && this.channelSetting ? this.channelSetting.autoScaleYAxis : false;\r\n this.channelSetting = this.channelSelectionService.plotTemplateToChannelSettings(this.selectedTemplate.content, this.listRealtimeChannels, this.listFracProChannels, this.channelMappingData, autoScaleYAxis, undefined, this.fracProChannelsLatestVer);\r\n } else this.channelSetting = this.channelSelectionService.getDefaultSettings();\r\n }\r\n else {\r\n const settings = cloneDeep(storage);\r\n YAXIS_KEYS.forEach(key => {\r\n if (settings[key] && !isEmpty(settings[key].channels)) {\r\n settings[key].channels.forEach(channelItem => {\r\n let channelName: string = channelItem.name;\r\n let cName: string = channelItem.cName;\r\n if (!channelName && channelItem.channel) channelName = channelItem.channel.name;\r\n if (!cName && channelItem.channel) cName = channelItem.channel.cName;\r\n\r\n let curChannel = this.listRealtimeChannels.find(cnel => cnel.name === channelName && cName.indexOf('C') === 0);\r\n if (!curChannel) curChannel = this.listFracProChannels.find(cnel => cnel.name === channelName && cName.indexOf('F') === 0);\r\n if (curChannel) {\r\n channelItem.name = curChannel.name;\r\n channelItem.cName = curChannel.cName;\r\n channelItem.originalName = curChannel.originalName;\r\n channelItem.unit = curChannel.unit;\r\n channelItem.measureType = curChannel.measureType;\r\n if (channelItem.channel) {\r\n channelItem.channel.name = curChannel.name;\r\n channelItem.channel.cName = curChannel.cName;\r\n channelItem.channel.originalName = curChannel.originalName;\r\n channelItem.channel.unit = curChannel.unit;\r\n channelItem.channel.measureType = curChannel.measureType;\r\n }\r\n } else {\r\n channelItem.cName = '';\r\n }\r\n });\r\n }\r\n });\r\n this.channelSetting = settings;\r\n }\r\n }\r\n }\r\n\r\n reloadDataByTreatment(treatmentId: number): void {\r\n this.treatmentId = treatmentId;\r\n this.isLoadingChartData = true;\r\n const companyDiagnostics = this.getCompanyDiagnostics();\r\n const paramNames = companyDiagnostics ? companyDiagnostics.map(diagnostics => diagnostics.name) : [];\r\n\r\n this.reloadFracProChannelsStorage();\r\n const fracProChannelsLatestVer$ = this.fracProChannelsLatestVer && this.fracProChannelsLatestVer.length ? of(true) : this.fracproChannelsService.getLatestVersion();\r\n\r\n // update side data\r\n this.subscriptions.push(\r\n forkJoin(\r\n this.diagnosticPointsService.getDataForPivotPoints(this.treatmentId, paramNames, this.userCompanyId)\r\n .pipe(switchMap(pivotPoints => {\r\n const result = cloneDeep(pivotPoints);\r\n if (companyDiagnostics) {\r\n forEach(companyDiagnostics, (point) => {\r\n if (pivotPoints.findIndex(x => x.id === point.id) === -1) result.push(point);\r\n });\r\n }\r\n return of(result);\r\n })),\r\n this.treatmentPlotFdiApiService.getByTreatment(this.treatmentId),\r\n fracProChannelsLatestVer$\r\n ).subscribe(res => {\r\n // set list comments and list diagnostic points\r\n const pivotPoints = res[0] ? (Array.isArray(res[0]) ? res[0] : [res[0]]) : [];\r\n const resListDiagnosticPoints = pivotPoints.filter(point => point.name !== 'MinMaxStart' && point.name !== 'MinMaxEnd');\r\n const resListLosPoints = pivotPoints.filter(point => point.name === 'MinMaxStart' || point.name === 'MinMaxEnd');\r\n let handlePivotPoints = (curList: IDiagnosticPoint[], newList: any[]) => {\r\n let results = cloneDeep(newList);\r\n for (const pt of curList) {\r\n if (!pt.selected) continue;\r\n const findPt = results.find(x => x.id === pt.id);\r\n if (!findPt) continue;\r\n findPt.selected = pt.selected;\r\n }\r\n return results;\r\n }\r\n this.losPoints = handlePivotPoints(this.losPoints, resListLosPoints);\r\n this.listDiagnosticPoints = handlePivotPoints(this.listDiagnosticPoints, resListDiagnosticPoints);\r\n // set treatment FDI\r\n if (res[1]) {\r\n this.originListFDIs = cloneDeep(res[1].fdi);\r\n // filter list fdi by current offset channels\r\n res[1].fdi = this.treatmentPlotFdiService.filterListFDIsByOffsetChannels(this.offsetChannelSetting, this.originListFDIs);\r\n }\r\n this.setFDIDataState(res[1]);\r\n this.updateFDIDataPoints(this.fdiDataPayload.fdi, true);\r\n // save fracpro channel latest verion to storage\r\n if (res[2] && res[2].result) {\r\n this.fracProChannelsLatestVer = res[2].result;\r\n this.fracproChannelStorageService.setFracproChannels(this.fracProChannelsLatestVer);\r\n }\r\n })\r\n );\r\n\r\n // Get well info\r\n const subs = this.treatmentService.getTreatmentDetailWebApi(this.wellId, this.treatmentId)\r\n .pipe(switchMap(res => {\r\n this.initTreatmentInfo(res.data);\r\n // Get list flow paths\r\n return this.treatmentService.getListFlowPaths(this.wellId, this.treatmentId);\r\n }))\r\n .pipe(switchMap(res => {\r\n if (res && !isEmpty(res.result)) {\r\n this.listFlowpaths = res.result.map(item => {\r\n return { type: item.type, name: item.name };\r\n });\r\n this.selectedFlowpath = [this.listFlowpaths[0]];\r\n }\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n\r\n return of(flowPathType);\r\n }))\r\n .pipe(switchMap(flowPathType => {\r\n const isMonitor = (this.treatmentInfo && this.treatmentInfo.number === TREATMENT_MONITOR_NUMBER);\r\n // Get list channels\r\n return this.treatmentService.getChannelsForSettings(this.wellId, this.treatmentId, flowPathType, isMonitor);\r\n }))\r\n .pipe(switchMap(res => {\r\n // Set realtime channels, fracpro channels\r\n this.listRealtimeChannels = res.realtimeChannels;\r\n this.listFracProChannels = this.channelSelectionService.handleChannelsColor(res.fracProChannels, this.fracProChannelsLatestVer);\r\n const flowPathType = this.getFlowPathType(this.selectedFlowpath);\r\n\r\n // update channel settings by realtime channels\r\n this.setUpChannelSettings();\r\n // call api get chart data, init interval api call\r\n if (!this.isEmptyAllChannels()) {\r\n // reload chart data\r\n return this.reloadChartData(this.channelSetting, false, this.fracproGridDataCName, flowPathType, this.offsetChannelSetting)\r\n .pipe(switchMap(data => {\r\n this.handleDataStateChange();\r\n return of(data);\r\n }));\r\n } else {\r\n // do nothing if data of channels are empty\r\n // set message as no data\r\n this.highChart.resetChart(true);\r\n this.highChart.setChartMessage(CHART_MESSAGES.en.noData);\r\n this.isLoadingChartData = false;\r\n\r\n return of(null);\r\n }\r\n }))\r\n .pipe(finalize(() => {\r\n // emit data to parent\r\n this.initDone.emit(this.getDataState);\r\n this.isLoadingChartData = false;\r\n setTimeout(() => {\r\n this.toggleAnnotations();\r\n }, 200);\r\n }))\r\n .subscribe(() => {\r\n });\r\n\r\n this.subscriptions.push(subs);\r\n }\r\n\r\n\r\n ////////////////////////////////////////\r\n // these function related to CRUD FDI //\r\n ////////////////////////////////////////\r\n\r\n onAddFDI() {\r\n if (!this.offsetChartInputData.length) return;\r\n // filter offset unique well\r\n const activeWellIds = this.offsetChartInputData.map(x => x.wellId).filter((x, i, a) => a.indexOf(x) === i);\r\n\r\n // function to handleAddFDI\r\n const handleAddFDI = (selectedWell, offsetWells) => {\r\n if (!selectedWell) return;\r\n const offsetData = offsetWells.find(item => item.wellId === selectedWell.wellId);\r\n this.handleAddFDI(offsetData);\r\n this.countFDI++;\r\n };\r\n\r\n // if there are more than 1 offset well\r\n if (activeWellIds.length > 1) {\r\n const context = { listWells: this.listWells, activeWellIds };\r\n this.dialogService.open(FdiWellSelectionModalComponent, { context }).onClose.subscribe(selectedWell => handleAddFDI(selectedWell, this.offsetChartInputData));\r\n }\r\n // if there is only 1 offset well\r\n // that including normal and bourdet der from 1 offset well\r\n else {\r\n const selectedWell = { wellId: this.offsetChartInputData[0].wellId };\r\n handleAddFDI(selectedWell, this.offsetChartInputData);\r\n }\r\n }\r\n\r\n handleAddFDI(offsetData: IInputDataMultiFlow) {\r\n if (offsetData) {\r\n let treatmentStart = this.treatmentInfo.timeStart;\r\n if (treatmentStart <= this.treatmentInfo.baseTreatmentDateTime) {\r\n treatmentStart = this.treatmentInfo.baseTreatmentDateTime + 1;\r\n }\r\n\r\n if (this.filterSetting.type === TIME_SETTING_TYPE.EpochTime) {\r\n const startIndex = Math.round(this.filterSetting.startIndex / 1000);\r\n if (treatmentStart <= startIndex) treatmentStart = startIndex + 1;\r\n }\r\n\r\n const paddingSec = 3 * 60;\r\n let treatmentEnd = this.treatmentInfo.timeEnd;\r\n if (!treatmentEnd || isNaN(treatmentEnd)) {\r\n const lastData = this.lastRealtimeData();\r\n if (!lastData) treatmentEnd = treatmentStart + (this.countFDI + 3) * paddingSec;\r\n else {\r\n treatmentEnd = Math.floor(new Date(lastData[0]).getTime() / 1000);\r\n }\r\n }\r\n\r\n if (this.filterSetting.type === TIME_SETTING_TYPE.EpochTime) {\r\n const endIndex = Math.round(this.filterSetting.endIndex / 1000);\r\n if (treatmentEnd >= endIndex) treatmentEnd = endIndex - 1;\r\n }\r\n\r\n const fdiStart = treatmentStart + this.countFDI * paddingSec;\r\n let fdiEnd = treatmentEnd - this.countFDI * paddingSec;\r\n if (fdiEnd < fdiStart) fdiEnd = fdiStart;\r\n\r\n \r\n const peakFDIStart = treatmentStart + 2 * this.countFDI * paddingSec;\r\n const leakOffStart = treatmentStart + 3 * this.countFDI * paddingSec;\r\n const peakFDIEnd = treatmentStart + 4 * this.countFDI * paddingSec;\r\n const leakOffEnd = treatmentStart + 5 * this.countFDI * paddingSec;\r\n\r\n // for some reason countFDI starting at 2\r\n const fdiInfo = new TreatmentPlotFDI({\r\n fdiStart, fdiEnd, peakFDIStart, peakFDIEnd, leakOffStart, leakOffEnd, wellId: offsetData.wellId, treatmentId: offsetData.treatmentId,\r\n color: this.treatmentPlotFdiService.getFDIMarkerColor(this.countFDI, 1),\r\n cName: offsetData.cName\r\n });\r\n const payload: IFDIPayload = {\r\n fdi: [fdiInfo]\r\n };\r\n const isStaticFDI = !this.listFDIs || isEmpty(this.listFDIs);\r\n if (isStaticFDI) {\r\n payload.treatmentStart = treatmentStart;\r\n payload.treatmentEnd = treatmentEnd;\r\n }\r\n\r\n // do NOT forget to pass filterSettings to add minDrag and maxDrag for FDI\r\n this.treatmentPlotFdiApiService.createByTreatment(this.treatmentId, payload, this.isRealtime)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(newFDI => {\r\n newFDI.countAddFDI = this.countFDI;\r\n this.highChart.addFDIHandler({\r\n baseTreatmentDataTime: this.baseTreatmentDataTime,\r\n timeFormat: this.timeFormat,\r\n timezoneOffset: this.wellTimeZoneOffset,\r\n isStaticFDI,\r\n fdiInfo: newFDI,\r\n treatmentInfo: this.treatmentInfo,\r\n startIndex: this.filterSetting.startIndex,\r\n endIndex: this.filterSetting.endIndex,\r\n treatmentStart,\r\n treatmentEnd\r\n });\r\n const newFDIPayload = { ...this.fdiDataPayload };\r\n newFDIPayload.fdi = [...newFDIPayload.fdi, newFDI];\r\n this.setFDIDataState(newFDIPayload);\r\n this.updateFDIDataPoints(newFDIPayload.fdi, true);\r\n });\r\n }\r\n }\r\n\r\n onAutoFDI() {\r\n if (!this.offsetChartInputData.length) return;\r\n if (!this.listFDIs.length) return;\r\n // filter offset unique well\r\n const fdiWellIds = this.listFDIs.map(x => x.wellId);\r\n const bourdetOffsetWells = this.offsetChartInputData.filter(x => x.isBourdetDer && fdiWellIds.includes(x.wellId));\r\n const offsetWellIds = bourdetOffsetWells.map(x => x.wellId);\r\n const activeWellIds = offsetWellIds.filter((x, i, a) => a.indexOf(x) === i);\r\n if (!activeWellIds || !activeWellIds.length) return;\r\n\r\n // function to handleAutoFDI\r\n const handleAutoFDI = (selectedWell, offsetWells) => {\r\n if (!selectedWell) return;\r\n const offsetWell = offsetWells.find(x => x.wellId === selectedWell.wellId);\r\n if (!offsetWell) return;\r\n this.handleAutoFDI(offsetWell);\r\n };\r\n\r\n // if there are more than 1 offset well\r\n if (activeWellIds.length > 1) {\r\n const context = { listWells: this.listWells, activeWellIds };\r\n this.dialogService.open(FdiWellSelectionModalComponent, { context }).onClose.subscribe(selectedWell => handleAutoFDI(selectedWell, bourdetOffsetWells));\r\n }\r\n // if there are only 1 offset well: there is no need to open modal\r\n if (activeWellIds.length === 1) {\r\n const selectedWell = { wellId: activeWellIds[0] };\r\n handleAutoFDI(selectedWell, bourdetOffsetWells);\r\n }\r\n }\r\n\r\n handleAutoFDI(offsetWell: IInputDataMultiFlow) {\r\n // get column index from offsetData.cName: ie C3 or C4\r\n // that ensure the data being used is the actual data being render\r\n if (!offsetWell.realtimeData.length) return;\r\n let offsetData;\r\n if (offsetWell.realtimeData.length) offsetData = offsetWell.realtimeData[0];\r\n else if (offsetWell.fracproData.length) offsetData = offsetWell.fracproData[0];\r\n else return;\r\n\r\n const dataColumnIndex = offsetData.columns.findIndex(x => x === offsetWell.cName);\r\n if (dataColumnIndex === -1) return;\r\n const fdi = this.listFDIs.find(x => x.wellId === offsetWell.wellId);\r\n if (!fdi) return;\r\n\r\n // map cName data to list and calculate positive, negative\r\n // positiveIndex take the first index when value go from negative to positive\r\n // negativeIndex take the first index when value go from positive to negative\r\n // note that both positiveIndex and negativeIndex must be in range of offset data\r\n let negativeIndex = -1;\r\n let positiveIndex = -1;\r\n const n = offsetData.values.length;\r\n for (let i = 0; i < n - 1; i++) {\r\n if (negativeIndex !== -1 && positiveIndex !== -1) break;\r\n if (positiveIndex === -1) {\r\n if (offsetData.values[i][dataColumnIndex] < 0 && offsetData.values[i + 1][dataColumnIndex] >= 0) positiveIndex = i + 1;\r\n }\r\n if (negativeIndex === -1) {\r\n if (offsetData.values[i][dataColumnIndex] >= 0 && offsetData.values[i + 1][dataColumnIndex] < 0) negativeIndex = i + 1;\r\n }\r\n }\r\n\r\n // calc positiveTimestamp and negativeTimestamp\r\n if (positiveIndex === -1 && negativeIndex === -1) return;\r\n let positiveTimestamp = positiveIndex >= 0 ? offsetData.values[positiveIndex][0] : null;\r\n let negativeTimestamp = negativeIndex >= 0 ? offsetData.values[negativeIndex][0] : null;\r\n // update fdi fdiStart and fdiEnd if there is change in positiveTimestamp and negativeTimestamp\r\n // if there no update of fdiStart or fdiEnd: set them to NULL\r\n if (positiveTimestamp) {\r\n const fdiStartTime = this.treatmentPlotTimeConverterService.convertMsToSec(positiveTimestamp);\r\n fdi.fdiStart === fdiStartTime ? positiveTimestamp = null : fdi.fdiStart = fdiStartTime;\r\n }\r\n if (negativeTimestamp) {\r\n const fdiEndTime = this.treatmentPlotTimeConverterService.convertMsToSec(negativeTimestamp);\r\n fdi.fdiEnd === fdiEndTime ? negativeTimestamp = null : fdi.fdiEnd = fdiEndTime;\r\n }\r\n // if this.filterSettings.type is NOT hh:mm: use time float\r\n // the fdiStart and fdiEnd must be calc and pass based on this.filterSettings.type\r\n const mapTimeFloat = (value, data, baseData) => {\r\n if (this.filterSetting.type === TIME_SETTING_TYPE.EpochTime) return value;\r\n return data[1] - baseData[1];\r\n };\r\n\r\n let fdiStart = positiveTimestamp ? mapTimeFloat(positiveTimestamp, offsetData.values[positiveIndex], offsetData.values[0]) : null;\r\n let fdiEnd = negativeTimestamp ? mapTimeFloat(negativeTimestamp, offsetData.values[negativeIndex], offsetData.values[0]) : null;\r\n if (typeof fdiStart === 'string') fdiStart = new Date(fdiStart).getTime();\r\n if (typeof fdiEnd === 'string') fdiEnd = new Date(fdiEnd).getTime();\r\n\r\n // positiveTimestamp and negativeTimestamp are used for render\r\n // fdi.fdiStart and fdi.fdiEnd and this.treatmentId are used for saving current FDI location in DB\r\n // the fdiStart and fdiEnd can be in either format fdi.fdiStart and fdi.fdiEnd must be in hh:mm up to second format\r\n this.highChart.updateFDIHandler(fdi, fdiStart, fdiEnd);\r\n\r\n // update FDI summary (top right of the chart)\r\n this.treatmentPlotFdiApiService.updateMutiFDIByTreatment(this.treatmentId, fdi.id, ['fdiStart', 'fdiEnd'], [fdi.fdiStart, fdi.fdiEnd], this.isRealtime)\r\n .pipe(takeUntil(this.destroy$))\r\n // .pipe(finalize(() => { if (!this.dialogOpened) this.onChangeTimerState(TimerState.resumed) }))\r\n .subscribe(res => {\r\n this.updateFDIDataState(res);\r\n this.updateFDIDataPoint(res.fdi, 'fdiStart');\r\n this.updateFDIDataPoint(res.fdi, 'fdiEnd');\r\n });\r\n }\r\n\r\n onRemoveAllFDI() {\r\n if (!this.treatmentId) return;\r\n this.treatmentPlotFdiApiService.deleteByTreatment(this.treatmentId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.setCountFDI();\r\n this.highChart.removeAllFDIHandler();\r\n this.setFDIDataState(this.treatmentPlotFdiStoreService.getInitialDataPayload());\r\n });\r\n }\r\n\r\n onToggleShowFDI(isShow) {\r\n this.isShowFDIInfo = isShow;\r\n this.highChart.toggleShowFDIHandler(isShow);\r\n }\r\n\r\n onSelectFDIParam(selectedParam) {\r\n this.selectedFDIParam = selectedParam;\r\n }\r\n\r\n onFDIDrag(eventData: IFdiDropEventData) {\r\n // this.updateTimer(false);\r\n this.onChangeTimerState(TimerState.paused);\r\n }\r\n\r\n onFDIMouseOver(eventData: IFdiDropEventData) {\r\n this.activeFDIId = eventData.fdiId;\r\n }\r\n\r\n onFDIDrop(eventData: IFdiDropEventData) {\r\n let fdiValue: number;\r\n fdiValue = this.treatmentPlotFdiService.parseFDIValueToTreatment(this.timeFormat, this.baseTreatmentDataTime, Math.round(eventData.x));\r\n\r\n const matchInRangeOffset = (): number => {\r\n const findFdi = this.listFDIs.find(x => x.id === eventData.fdiId);\r\n if (!findFdi) return fdiValue;\r\n\r\n const offsetData = this.offsetChartInputData.find(x => x.treatmentId === findFdi.treatmentId && !x.isBourdetDer);\r\n if (!offsetData || !offsetData.realtimeData || !offsetData.realtimeData.length) return fdiValue;\r\n\r\n const offsetRealtimeData = offsetData.realtimeData[0];\r\n if (!offsetRealtimeData.values || !offsetRealtimeData.values.length) return fdiValue;\r\n\r\n const offsetRealtimeMinValues = new Date(offsetRealtimeData.values[0][0]).getTime();\r\n const offsetRealtimeMaxValues = new Date(offsetRealtimeData.values[offsetRealtimeData.values.length - 1][0]).getTime();\r\n if (fdiValue * 1000 < offsetRealtimeMinValues) return Math.round(offsetRealtimeMinValues / 1000);\r\n if (fdiValue * 1000 > offsetRealtimeMaxValues) return Math.round(offsetRealtimeMaxValues / 1000);\r\n return fdiValue;\r\n };\r\n fdiValue = matchInRangeOffset();\r\n\r\n this.treatmentPlotFdiApiService.updateFDIByTreatment(this.treatmentId, eventData.fdiId, eventData.fdiKeyValue, fdiValue, this.isRealtime)\r\n .pipe(takeUntil(this.destroy$))\r\n .pipe(finalize(() => { if (!this.dialogOpened) this.onChangeTimerState(TimerState.resumed) }))\r\n .subscribe(res => {\r\n this.updateFDIDataState(res, eventData.fdiId);\r\n this.updateFDIDataPoint(res.fdi, eventData.fdiKeyValue);\r\n });\r\n }\r\n\r\n private handleFDIValue(offsetData: any[], targetFDIValue: number): { fdiValue: number, fdiDateTime: string } {\r\n if (offsetData && offsetData.length > 0) {\r\n const xAxisMin = new Date(offsetData[0][0]).getTime();\r\n const xAxisMax = new Date(offsetData[offsetData.length - 1][0]).getTime();\r\n if (targetFDIValue * 1000 > xAxisMax) {\r\n return { fdiValue: xAxisMax, fdiDateTime: offsetData[offsetData.length - 1][0] };\r\n } else if (targetFDIValue * 1000 < xAxisMin) {\r\n return { fdiValue: xAxisMin, fdiDateTime: offsetData[0][0] };\r\n }\r\n }\r\n\r\n const fdiDateTime = new Date(targetFDIValue * 1000).toISOString().substring(0, 19) + 'Z';\r\n return { fdiValue: targetFDIValue * 1000, fdiDateTime };\r\n }\r\n\r\n updateFDIDataPoints(inputFDI, firstInit?: boolean) {\r\n for (const param of FDI_PARAM) {\r\n this.updateFDIDataPoint(inputFDI, param);\r\n }\r\n if (!firstInit) return;\r\n this.updateFDIDataPoint(inputFDI, 'leakOffStart');\r\n this.updateFDIDataPoint(inputFDI, 'peakFDIStart');\r\n }\r\n\r\n updateFDIDataPointsRealtime(inputFDI) {\r\n const offsetChartInput = this.offsetChartInputData.filter(x => !x.isBourdetDer);\r\n const newRealtimeYAxisMinMax = [];\r\n for (const offsetInput of offsetChartInput) {\r\n let offsetChannelName;\r\n for (const axis of YAXIS_KEYS) {\r\n const axixChannels = this.offsetChannelSetting[axis];\r\n if (!axixChannels || !axixChannels.channels || !axixChannels.channels.length) continue;\r\n const offsetChannel = axixChannels.channels.find(x => x.treatmentId === offsetInput.treatmentId && !x.isBourdetDer);\r\n if (!offsetChannel) continue;\r\n\r\n const measureType = offsetChannel.measureType;\r\n let unit: string;\r\n if (measureType && measureType.trim()) unit = this.unitSystemService.getUnit(measureType, this.unitSetting);\r\n else {\r\n unit = offsetChannel.unit ? offsetChannel.unit : offsetChannel.channel.unit;\r\n }\r\n\r\n const pre = unit && unit.length ? (' (' + unit + ')') : '';\r\n offsetChannelName = (offsetChannel.channelName || offsetChannel.channel.name) + pre;\r\n break;\r\n }\r\n if (!offsetChannelName) continue;\r\n const yAxix = this.highChart.highChart.yAxis.find(x => x['userOptions'].title.text.includes(offsetChannelName));\r\n if (!yAxix) continue;\r\n newRealtimeYAxisMinMax.push({\r\n treatmentId: offsetInput.treatmentId,\r\n min: yAxix.min,\r\n max: yAxix.max\r\n });\r\n }\r\n\r\n const compareYAxisMinMax = (arr: any[], brr: any[]): boolean => {\r\n for (const a of arr) {\r\n const findB = brr.find(b => b.treatmentId === a.treatmentId);\r\n if (!findB) return false;\r\n if (a.min !== findB.min) return false;\r\n if (a.max !== findB.max) return false;\r\n }\r\n for (const b of brr) {\r\n const findA = arr.find(a => b.treatmentId === a.treatmentId);\r\n if (!findA) return false;\r\n if (findA.min !== b.min) return false;\r\n if (findA.max !== b.max) return false;\r\n }\r\n return true;\r\n };\r\n\r\n if (!newRealtimeYAxisMinMax.length) return;\r\n if (!this.realtimeYAxisMinMax) {\r\n this.realtimeYAxisMinMax = newRealtimeYAxisMinMax;\r\n this.updateFDIDataPoints(inputFDI);\r\n } else {\r\n if (!compareYAxisMinMax(this.realtimeYAxisMinMax, newRealtimeYAxisMinMax)) {\r\n this.realtimeYAxisMinMax = newRealtimeYAxisMinMax;\r\n this.updateFDIDataPoints(inputFDI);\r\n }\r\n }\r\n }\r\n\r\n updateFDIDataPoint(inputFDI, fdiKeyValue: string) {\r\n for (const fdi of inputFDI) {\r\n const offsetData = this.offsetChartInputData.find(x => x.treatmentId === fdi.treatmentId && !x.isBourdetDer);\r\n if (!offsetData) continue;\r\n if (!offsetData.realtimeData || !offsetData.realtimeData.length) continue;\r\n if (!offsetData.realtimeData[0].values || !offsetData.realtimeData[0].values.length) continue;\r\n\r\n const { fdiValue, fdiDateTime } = this.handleFDIValue(offsetData.realtimeData[0].values, fdi[fdiKeyValue]);\r\n const value = Helper.findOffsetData(offsetData.realtimeData[0].values, fdiDateTime);\r\n\r\n let offsetChannelName;\r\n let measureType: string;\r\n for (const axis of YAXIS_KEYS) {\r\n const axixChannels = this.offsetChannelSetting[axis];\r\n if (!axixChannels || !axixChannels.channels || !axixChannels.channels.length) continue;\r\n const offsetChannel = axixChannels.channels.find(x => x.treatmentId === fdi.treatmentId && !x.isBourdetDer);\r\n if (!offsetChannel) continue;\r\n\r\n measureType = offsetChannel.measureType;\r\n let unit: string;\r\n if (measureType && measureType.trim()) unit = this.unitSystemService.getUnit(measureType, this.unitSetting);\r\n else {\r\n unit = offsetChannel.unit ? offsetChannel.unit : offsetChannel.channel.unit;\r\n }\r\n const pre = unit && unit.length ? (' (' + unit + ')') : '';\r\n offsetChannelName = (offsetChannel.channelName || offsetChannel.channel.name) + pre;\r\n break;\r\n }\r\n\r\n if (!offsetChannelName) continue;\r\n const yAxix = this.highChart.highChart.yAxis.find(x => x['userOptions'].title.text.includes(offsetChannelName));\r\n if (!yAxix) continue;\r\n // hide fdi series if FDI series is outside the yAxis range\r\n if (value > yAxix.max) {\r\n const highChartInstance: any = this.highChart.highChart;\r\n if (!highChartInstance.series) continue;\r\n const series = highChartInstance.series.find(x => x['userOptions'].id.includes(fdi.id + '_' + fdiKeyValue));\r\n if (series) {\r\n if (series.graph) series.graph.hide();\r\n series.hide();\r\n }\r\n continue;\r\n }\r\n let yValue = (value - yAxix.min) / (yAxix.max - yAxix.min) * 100;\r\n if (measureType && measureType.trim()) yValue = this.unitSystemService.convert(yValue, measureType);\r\n\r\n const xValue = this.treatmentPlotFdiService.parseFDIValueToChartSeries(this.timeFormat, this.baseTreatmentDataTime, fdiValue);\r\n this.highChart.updateFDIPoint(fdi.id + '_' + fdiKeyValue, fdiKeyValue, xValue, yValue);\r\n }\r\n }\r\n\r\n onTreatmentStartEndDrop(eventData: IFdiDropEventData) {\r\n // this.onFDIDrop(eventData);\r\n this.onChangeTimerState(TimerState.paused);\r\n let fdiValue = Math.round(eventData.x);\r\n if (this.timeFormat === TIME_SETTING_TYPE.OffsetTime) {\r\n fdiValue = this.treatmentPlotTimeConverterService.convertOffsetToEpochSec({ xValue: Math.round(eventData.x), baseTreatmentDataTime: this.baseTreatmentDataTime });\r\n } else {\r\n // have to remove the timezone before update it to the database\r\n fdiValue = this.treatmentPlotTimeConverterService.toEpochSecWithTimezone({ xValue: fdiValue });\r\n }\r\n const payload = {\r\n [`${eventData.fdiKeyValue}`]: fdiValue\r\n };\r\n this.treatmentPlotFdiApiService.updateByTreatment(this.treatmentId, payload, this.isRealtime)\r\n .pipe(takeUntil(this.destroy$))\r\n .pipe(finalize(() => { if (!this.dialogOpened) this.onChangeTimerState(TimerState.resumed) }))\r\n .subscribe(res => this.updateFDIDataState(res));\r\n }\r\n\r\n //////////////////////////////////////////////////////////////////////////\r\n // these function provide shortcut for various function across the file //\r\n //////////////////////////////////////////////////////////////////////////\r\n\r\n get getOffsetChannelList(): IChannelSettingItemModel[] {\r\n if (!this.offsetChannelSetting) return [];\r\n return this.channelSelectionService.getListChannels(this.offsetChannelSetting, true);\r\n }\r\n\r\n get hasOffsetChannel() {\r\n return this.compareOffsetChannelsService.checkIsExistOffsetChannel(this.offsetChannelSetting);\r\n }\r\n\r\n private updateFDIDataState(res, fdiId?: string) {\r\n const resortFDI = (resFdi) => {\r\n if (!fdiId) return resFdi;\r\n const findFdi = resFdi.find(x => x.id === fdiId);\r\n if (!findFdi) return resFdi;\r\n const filterFdi = resFdi.filter(x => x.id !== fdiId);\r\n filterFdi.unshift(findFdi);\r\n return filterFdi;\r\n };\r\n\r\n res.fdi = resortFDI(res.fdi);\r\n this.originListFDIs = res.fdi;\r\n this.setFDIDataState(res);\r\n }\r\n\r\n private setCountFDI(value = 1) {\r\n this.countFDI = value;\r\n }\r\n\r\n private baseRealtimeData() {\r\n const realtimeData = this.chartInputData.realtimeData;\r\n if (!realtimeData || !realtimeData.length) return null;\r\n const data = realtimeData[0];\r\n if (!data.values || !data.values.length) return null;\r\n return data.values[0];\r\n }\r\n\r\n private lastRealtimeData() {\r\n const realtimeData = this.chartInputData.realtimeData;\r\n if (!realtimeData || !realtimeData.length) return null;\r\n const data = realtimeData[0];\r\n if (!data.values || !data.values.length) return null;\r\n return data.values[data.values.length - 1];\r\n }\r\n\r\n private lastRealtimeOffsetData(treatmentId: number) {\r\n const offsetChannel = this.offsetChartInputData.find(x => x.treatmentId === treatmentId);\r\n if (!offsetChannel) return;\r\n const realtimeData = offsetChannel.realtimeData;\r\n if (!realtimeData || !realtimeData.length) return null;\r\n const data = realtimeData[0];\r\n if (!data.values || !data.values.length) return null;\r\n return data.values[data.values.length - 1];\r\n }\r\n\r\n onClose() {\r\n this.componentClose.emit(true);\r\n }\r\n\r\n onTransform() {\r\n this.componentTransform.emit(true);\r\n }\r\n\r\n onChangeOption(eventData) {\r\n if (!eventData || isNil(eventData.id)) return;\r\n this.cursorSelected = this.cursorOpts.find(item => item.id === eventData.id);\r\n // handle tooltip.shared\r\n this.highChart.updateChartCursorOptions(this.cursorSelected);\r\n }\r\n\r\n @HostListener('window:visibilitychange', ['$event'])\r\n onVisibilitychange(event) {\r\n if (document.hidden === true && document.visibilityState === 'hidden') {\r\n this.onChangeTimerState(TimerState.paused);\r\n } else if (document.hidden === false && document.visibilityState === 'visible') {\r\n this.onChangeTimerState(TimerState.resumed);\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as Highcharts from 'highcharts';\r\nimport { cloneDeep, forEach, isEmpty, some, uniq, uniqBy } from 'lodash';\r\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\r\nimport { map, switchMap, tap } from 'rxjs/operators';\r\nimport { IChannelItem, IChannelSettingItemModel, IChannelSettingModel, IInputDataChart, IInputDataMultiFlow, ITimeSetting } from '../../../shared/models';\r\nimport { ChannelSelectionService, ChartsService } from '../../../shared/services';\r\nimport { Helper } from '../../helpers/helper';\r\nimport { ChartTimeFormat, PREFIX_PREDICTIVE_CHANNEL, TIME_SETTING_TYPE } from '../../helpers/app.constants';\r\nimport { IBourdetOption } from '../../models/offset-well-compare.model';\r\nimport { IResultGetChartDataFunc, IResultIntervalGetChartDataFunc } from '../../models/treatment-plot.model';\r\nimport { ITreatmentItem } from '../../models/treatment.model';\r\nimport { BaseChartService, DATETIME_CHANNEL_NAME, TIMEFLOAT_CHANNEL_NAME } from '../../services/charts';\r\nimport { TreatmentDetailsStorageService } from '../../services/storage/treatment-details-storage.service';\r\nimport { TreatmentService } from '../../services/treatment.service';\r\n\r\n@Injectable()\r\nexport class TreatmentPlotService {\r\n\r\n constructor(\r\n private treatmentService: TreatmentService,\r\n private treatmentDetailsStorageService: TreatmentDetailsStorageService,\r\n private chartsService: ChartsService,\r\n private channelSelectionService: ChannelSelectionService,\r\n private baseChartService: BaseChartService\r\n ) { }\r\n\r\n // private reCalcOffsetData(data, baseDataTime) {\r\n // if (!data.values) return data;\r\n // if (!data.values.length) return data;\r\n\r\n // const baseTreatmentDataTimestamp = Date.parse(baseDataTime);\r\n // const firstTreatmentDataTimestamp = Date.parse(data.values[0][0]);\r\n // const offsetInTimestamp = Math.floor((firstTreatmentDataTimestamp - baseTreatmentDataTimestamp) / 1000);\r\n // const mismatchedTimestamp = data.values[0][1] - offsetInTimestamp;\r\n // if (mismatchedTimestamp) for (const i of data.values) i[1] = i[1] - mismatchedTimestamp;\r\n // return data;\r\n // }\r\n\r\n private latestDataTime(base, realtime, fracpro) {\r\n if (!realtime && !fracpro) return base;\r\n if (realtime && !fracpro) return realtime;\r\n if (realtime && fracpro) {\r\n if (realtime > fracpro) return realtime;\r\n return fracpro;\r\n }\r\n }\r\n\r\n requestBourdetDerData(\r\n wellId: number,\r\n treatmentId: number,\r\n channelsMap: string[],\r\n channelsMapName: string[],\r\n bourdetOption: IBourdetOption,\r\n flowPathType?: number,\r\n baseTreatmentDataTime?: string,\r\n baseLatestDataTime?: string,\r\n authToken?: string\r\n ): Observable {\r\n const mapChannelName = data => {\r\n if (!data) return null;\r\n const t = data.replace('-BD', '');\r\n const i = t.lastIndexOf('-');\r\n if (i >= 0) return t.substring(i + 1).replace(/ /g, '');\r\n return t.replace(/ /g, '');\r\n };\r\n\r\n let requestBody: any = { wellId, treatmentId, items: channelsMap, flowPathType, baseTreatmentDataTime };\r\n requestBody = Object.assign(requestBody, bourdetOption);\r\n\r\n const mapStartDate = (baseDataTime, startDataTime, currentStartDate, bourdetDerRange) => {\r\n const bourdetTime = bourdetDerRange ? Math.round(-bourdetDerRange) * 1000 : 0;\r\n const roundDataTime = Helper.addTimestampToString(startDataTime, bourdetTime);\r\n if (currentStartDate > baseDataTime && currentStartDate > roundDataTime) return currentStartDate;\r\n if (roundDataTime > baseDataTime && roundDataTime > currentStartDate) return roundDataTime;\r\n return baseDataTime;\r\n };\r\n\r\n const mapResult = res => {\r\n if (!res || !res.result) return res;\r\n const realtimeData = [{ name: 'REALTIME_DATA', columns: res.result.columns, values: res.result.values }];\r\n let result = { wellId, treatmentId, cName: channelsMap[0], realtimeData, channelName: requestBody.channelName, fracproData: [] };\r\n // if (result.realtimeData.length) result.realtimeData[0] = this.reCalcOffsetData(result.realtimeData[0], requestBody.baseTreatmentDataTime);\r\n\r\n result = Object.assign(result, bourdetOption);\r\n delete result['startDate'];\r\n delete result['endDate'];\r\n return result;\r\n };\r\n\r\n requestBody.cName = channelsMap[0];\r\n requestBody.channelName = mapChannelName(channelsMapName[0]);\r\n requestBody.isShowBourdetDer = bourdetOption.isBourdetDer;\r\n requestBody.startDate = mapStartDate(baseTreatmentDataTime, baseLatestDataTime, bourdetOption.startDate, bourdetOption.bourdetDerRange);\r\n\r\n return this.chartsService.getBourdetDataChart(requestBody, undefined, authToken).pipe(map(res => mapResult(res)));\r\n }\r\n\r\n requestChartData(wellId: number, treatmentId: number, channelsMap: string[], bourdetOption: IBourdetOption, flowPathType = 0, isSeparateRealTimeData = true, baseTreatmentDataTime?: string, baseLatestDataTime?: string, authToken?: string) {\r\n if (!channelsMap || !channelsMap.length) return of({\r\n equipmentData: [],\r\n realtimeData: [],\r\n fracproData: [],\r\n wellId: wellId,\r\n treatmentId: treatmentId,\r\n cName: '',\r\n isBourdetDer: bourdetOption && bourdetOption.isBourdetDer,\r\n isSmoothData: bourdetOption && bourdetOption.isSmoothData,\r\n bourdetDerRange: bourdetOption && bourdetOption.bourdetDerRange,\r\n smoothRange: bourdetOption && bourdetOption.smoothRange,\r\n channelName: '',\r\n });\r\n const mapResult = res => {\r\n if (!res || !res.result) return res;\r\n res.result.wellId = wellId;\r\n res.result.treatmentId = treatmentId;\r\n if (channelsMap.length === 1) {\r\n res.result.cName = channelsMap[0];\r\n }\r\n // if (res.result.realtimeData.length) res.result.realtimeData[0] = this.reCalcOffsetData(res.result.realtimeData[0], baseTreatmentDataTime);\r\n return res.result;\r\n };\r\n\r\n const requestBody: any = { wellId, treatmentId, items: channelsMap, flowPathType, isSeparateRealTimeData, baseTreatmentDataTime: baseLatestDataTime };\r\n if (bourdetOption && bourdetOption.startDate) requestBody.startDataTime = bourdetOption.startDate;\r\n if (bourdetOption && bourdetOption.endDate) requestBody.endDataTime = bourdetOption.endDate;\r\n return this.chartsService.getDataChart(requestBody, undefined, authToken).pipe(map(res => mapResult(res)));\r\n }\r\n\r\n getChartData(\r\n wellId: number,\r\n treatmentId: number,\r\n channelsMap: string[],\r\n channelsMapName: string[],\r\n bourdetOption: IBourdetOption,\r\n flowPathType?: number,\r\n isSeparateRealTimeData?: boolean,\r\n baseTreatmentDataTime?: string,\r\n baseRealtimeDataTime?: string,\r\n baseFracproDataTime?: string,\r\n authToken?: string\r\n ): Observable {\r\n flowPathType = typeof flowPathType === 'number' && !isNaN(flowPathType) ? flowPathType : 0;\r\n const lastestDataTime = this.latestDataTime(baseTreatmentDataTime, baseRealtimeDataTime, baseFracproDataTime);\r\n \r\n if (!channelsMap || !channelsMap.length) return of({\r\n equipmentData: [],\r\n realtimeData: [],\r\n fracproData: [],\r\n wellId: wellId,\r\n treatmentId: treatmentId,\r\n cName: '',\r\n isBourdetDer: bourdetOption && bourdetOption.isBourdetDer,\r\n isSmoothData: bourdetOption && bourdetOption.isSmoothData,\r\n bourdetDerRange: bourdetOption && bourdetOption.bourdetDerRange,\r\n smoothRange: bourdetOption && bourdetOption.smoothRange,\r\n channelName: '',\r\n });\r\n\r\n if (bourdetOption && bourdetOption.isBourdetDer) {\r\n return this.requestBourdetDerData(wellId, treatmentId, channelsMap, channelsMapName, bourdetOption, flowPathType, baseTreatmentDataTime, lastestDataTime, authToken);\r\n } else {\r\n return this.requestChartData(wellId, treatmentId, channelsMap, bourdetOption, flowPathType, isSeparateRealTimeData, baseTreatmentDataTime, lastestDataTime, authToken);\r\n }\r\n }\r\n\r\n getWellTreatmentsData(offsetChannels: IChannelSettingItemModel[]): Observable {\r\n if (!offsetChannels) return of(null);\r\n if (!offsetChannels.length) return of(null);\r\n\r\n const settings = uniqBy(offsetChannels, ['wellId', 'treatmentId']);\r\n const requests$ = settings.map(setting => {\r\n const wellId = setting.wellId;\r\n const treatmentId = setting.treatmentId;\r\n\r\n const treatmentLocalData = this.treatmentDetailsStorageService.getTreatmentData(treatmentId);\r\n if (treatmentLocalData) {\r\n return of(treatmentLocalData);\r\n } else {\r\n return this.treatmentService.getTreatmentDetailWebApi(wellId, treatmentId)\r\n .pipe(map(res => res.result))\r\n .pipe(tap(treatmentData => {\r\n this.treatmentDetailsStorageService.setTreatmentData(treatmentId, treatmentData);\r\n }));\r\n }\r\n });\r\n\r\n return forkJoin(requests$);\r\n }\r\n // getOffsetWellCompareData\r\n getOffsetChartInputData(\r\n offsetChannels: IChannelSettingItemModel[],\r\n treatmentItem: ITreatmentItem,\r\n flowPathType?: number,\r\n currentOffsetInputData?: IInputDataMultiFlow[],\r\n timeSetting?: ITimeSetting,\r\n baseTreatmentDateTime?: string | number,\r\n isRealtime?: boolean,\r\n isRealtimeBourdet?: boolean,\r\n treatmentsToken?: { wellId: number, treatmentId: number, authToken: string, startTime: number }[]\r\n ): Observable {\r\n if (!offsetChannels) return of(null);\r\n if (!offsetChannels.length) return of(null);\r\n\r\n const requests$ = offsetChannels.map(setting => {\r\n const wellId = setting.wellId;\r\n const treatmentId = setting.treatmentId;\r\n let authToken: string;\r\n if (treatmentsToken && treatmentsToken.length) {\r\n const tokenExist = treatmentsToken.find(item => item.wellId === wellId && item.treatmentId === treatmentId);\r\n if (tokenExist) authToken = tokenExist.authToken;\r\n }\r\n const channelsMap = [setting.cName];\r\n const channelsMapName = [setting.channelName];\r\n let treatmentDetailData$: Observable;\r\n const treatmentLocalData = this.treatmentDetailsStorageService.getTreatmentData(treatmentId);\r\n if (treatmentLocalData) {\r\n treatmentDetailData$ = of(treatmentLocalData);\r\n } else {\r\n treatmentDetailData$ = this.treatmentService.getTreatmentDetailWebApi(wellId, treatmentId)\r\n .pipe(map(res => res.result))\r\n .pipe(tap(treatmentData => {\r\n this.treatmentDetailsStorageService.setTreatmentData(treatmentId, treatmentData);\r\n }));\r\n }\r\n\r\n const calcBourdetFilterTime = (channelSetting: IChannelSettingItemModel, treatmentBaseTime: number): any => {\r\n let startDate = null;\r\n let endDate = null;\r\n\r\n if (!channelSetting.isRealtime) {\r\n if (timeSetting.type === TIME_SETTING_TYPE.EpochTime) {\r\n const offset = timeSetting.endIndex - timeSetting.startIndex;\r\n startDate = Helper.toDateTimeString(treatmentBaseTime * 1000);\r\n endDate = Helper.toDateTimeString(treatmentBaseTime * 1000 + offset);\r\n } else {\r\n const offset = timeSetting.endIndex - timeSetting.startIndex;\r\n startDate = Helper.toDateTimeString(treatmentBaseTime * 1000);\r\n endDate = Helper.toDateTimeString((treatmentBaseTime + offset) * 1000);\r\n }\r\n } else {\r\n if (timeSetting.type === TIME_SETTING_TYPE.EpochTime) {\r\n startDate = Helper.toDateTimeString(timeSetting.startIndex);\r\n endDate = Helper.toDateTimeString(timeSetting.endIndex);\r\n } else {\r\n startDate = Helper.toDateTimeString((timeSetting.startIndex + treatmentBaseTime) * 1000);\r\n endDate = Helper.toDateTimeString((timeSetting.endIndex + treatmentBaseTime) * 1000);\r\n }\r\n }\r\n\r\n return { startDate, endDate };\r\n };\r\n\r\n const calcTreatmentBaseTime = (channelSetting: IChannelSettingItemModel, treatmentInfo: ITreatmentItem): number => {\r\n // if this offset channel is NOT real time: return it origin baseTreatmentDateTime\r\n if (!channelSetting.isRealtime) return treatmentInfo.baseTreatmentDateTime;\r\n // else return the main treatment baseTreatmentDateTime\r\n if (!baseTreatmentDateTime) return treatmentInfo.baseTreatmentDateTime;\r\n if (typeof baseTreatmentDateTime === 'number') return baseTreatmentDateTime;\r\n return Math.round(Date.parse(baseTreatmentDateTime) / 1000);\r\n };\r\n\r\n const realtimeBourdet = isRealtimeBourdet === false ? isRealtimeBourdet : true;\r\n\r\n return treatmentDetailData$.pipe(switchMap(res => {\r\n const treatmentInfo = res;\r\n // const dayLight = treatmentItem.dayLight ? treatmentItem.dayLight : 0;\r\n // const timeZoneOffset = (treatmentItem.timeZone + dayLight) / 60; // in minutes\r\n\r\n const treatmentTimestamp = calcTreatmentBaseTime(setting, treatmentInfo);\r\n const treatmentDateTime = new Date(treatmentTimestamp * 1000).toISOString();\r\n\r\n const bourdetOption: IBourdetOption = calcBourdetFilterTime(setting, treatmentTimestamp);\r\n if (setting.isBourdetDer) {\r\n bourdetOption.isSmoothData = setting.isSmoothData;\r\n bourdetOption.smoothRange = setting.smoothRange;\r\n bourdetOption.isBourdetDer = setting.isBourdetDer;\r\n bourdetOption.bourdetDerRange = setting.bourdetDerRange;\r\n }\r\n\r\n if (isRealtime) {\r\n bourdetOption.endDate = null;\r\n bourdetOption.startDate = null;\r\n }\r\n\r\n // if there are currentOffsetInputData: find currentOffsetData\r\n // perform fetch data with currentTreatmentDateTime and concat data to currentOffsetData\r\n const currentOffsetData = (!currentOffsetInputData || !currentOffsetInputData.length) ? null : currentOffsetInputData.find(item => Helper.findMultiProp(item, setting, TreatmentService.COMPARE_CHANNEL_PROP));\r\n\r\n const existCurrentoffsetData = (currentData: IInputDataMultiFlow) => {\r\n if (!currentData) return false;\r\n if (!currentData.realtimeData || !currentData.realtimeData.length) return false;\r\n if (!currentData.realtimeData[0].values) return false;\r\n if (!currentData.realtimeData[0].values.length) return false;\r\n return true;\r\n };\r\n\r\n if (existCurrentoffsetData(currentOffsetData)) {\r\n // CASE 1: if NO realtime bourdet on bourdet channel\r\n if (bourdetOption.isBourdetDer && !realtimeBourdet) {\r\n currentOffsetData.isBourdetDer = bourdetOption.isBourdetDer;\r\n currentOffsetData.bourdetDerRange = bourdetOption.bourdetDerRange;\r\n currentOffsetData.isSmoothData = bourdetOption.isSmoothData;\r\n currentOffsetData.smoothRange = bourdetOption.smoothRange;\r\n return of(currentOffsetData);\r\n }\r\n\r\n const firstCurrentOffsetData = currentOffsetData.realtimeData[0].values[0][0];\r\n const lastCurrentOffsetData = currentOffsetData.realtimeData[0].values[currentOffsetData.realtimeData[0].values.length - 1][0];\r\n const isStartTimeWithin = timeSetting.startIndex >= Helper.mapDateTimeTimestamp(firstCurrentOffsetData);\r\n const isEndTimeWithin = timeSetting.endIndex <= Helper.mapDateTimeTimestamp(lastCurrentOffsetData);\r\n\r\n // CASE 2: if both startDate and endDate in current time: filter them and return: do not need to call api\r\n if (isStartTimeWithin && isEndTimeWithin) {\r\n const filter = x => Helper.filterInRange(Helper.mapDateTimeTimestamp(x[0]), timeSetting.startIndex, timeSetting.endIndex);\r\n currentOffsetData.realtimeData[0].values = currentOffsetData.realtimeData[0].values.filter(x => filter(x));\r\n currentOffsetData.isBourdetDer = bourdetOption.isBourdetDer;\r\n currentOffsetData.bourdetDerRange = bourdetOption.bourdetDerRange;\r\n currentOffsetData.isSmoothData = bourdetOption.isSmoothData;\r\n currentOffsetData.smoothRange = bourdetOption.smoothRange;\r\n return of(currentOffsetData);\r\n }\r\n\r\n let predictChannelsMap;\r\n if (setting.originalName) {\r\n const originalNameLoweCase = setting.originalName.toLowerCase();\r\n if (originalNameLoweCase.indexOf(PREFIX_PREDICTIVE_CHANNEL) === 0) predictChannelsMap = channelsMap;\r\n }\r\n const currentRealtimeData = currentOffsetData.realtimeData[0];\r\n const currentFracproData = currentOffsetData.fracproData[0];\r\n const lastRealtimeDateTime = currentRealtimeData ? this.getLastTimeFromDataPoint(currentRealtimeData, undefined, predictChannelsMap) : null;\r\n const lastFracproDateTime = currentFracproData ? this.getLastTimeFromDataPoint(currentFracproData, undefined, predictChannelsMap) : null;\r\n\r\n // DEFAULT: return data get from server and append to current\r\n return this.getChartData(wellId, treatmentId, channelsMap, channelsMapName, bourdetOption, flowPathType, treatmentItem.isSeparateRealTimeData, lastRealtimeDateTime, lastFracproDateTime, undefined, authToken).pipe(map(responseInputData => {\r\n const realtimeData = responseInputData.realtimeData[0];\r\n const fracproData = responseInputData.fracproData[0];\r\n // update timestamp data by timezone offset\r\n // this.baseChartService.updateTimestampByTimezoneOffset(realtimeData, timeZoneOffset);\r\n // this.baseChartService.updateTimestampByTimezoneOffset(fracproData, timeZoneOffset);\r\n // concat updated data to current data\r\n const concatUpdateData = (data, updateData) => {\r\n if (!data) return [];\r\n if (!data.values) return [];\r\n if (!updateData) return data.values;\r\n if (!updateData.values) return data.values;\r\n // return [...data.values, ...updateData.values];\r\n return data.values.concat(updateData.values);\r\n };\r\n\r\n if (currentRealtimeData) currentRealtimeData.values = concatUpdateData(currentRealtimeData, realtimeData);\r\n if (currentFracproData) currentFracproData.values = concatUpdateData(currentFracproData, fracproData);\r\n // set other stat to currentOffsetData\r\n currentOffsetData.isBourdetDer = bourdetOption.isBourdetDer;\r\n currentOffsetData.bourdetDerRange = bourdetOption.bourdetDerRange;\r\n currentOffsetData.isSmoothData = bourdetOption.isSmoothData;\r\n currentOffsetData.smoothRange = bourdetOption.smoothRange;\r\n return currentOffsetData;\r\n }));\r\n }\r\n // if there is NO currentOffsetInputData: perform fresh fetch\r\n // other stat for channel is exec within the fetch service itself\r\n else {\r\n // CASE 1: if NO realtime bourdet on bourdet channel\r\n if (bourdetOption.isBourdetDer && !realtimeBourdet) {\r\n if (currentOffsetData) {\r\n currentOffsetData.fracproData = [];\r\n currentOffsetData.realtimeData = [];\r\n currentOffsetData.isBourdetDer = bourdetOption.isBourdetDer;\r\n currentOffsetData.bourdetDerRange = bourdetOption.bourdetDerRange;\r\n currentOffsetData.isSmoothData = bourdetOption.isSmoothData;\r\n currentOffsetData.smoothRange = bourdetOption.smoothRange;\r\n }\r\n return of(currentOffsetData);\r\n }\r\n\r\n // DEFAULT: return data get from server\r\n return this.getChartData(wellId, treatmentId, channelsMap, channelsMapName, bourdetOption, flowPathType, treatmentItem.isSeparateRealTimeData, treatmentDateTime, undefined, undefined, authToken).pipe(map(resData => {\r\n // if (resData.realtimeData && resData.realtimeData.length) this.baseChartService.updateTimestampByTimezoneOffset(resData.realtimeData[0], timeZoneOffset);\r\n // if (resData.fracproData && resData.fracproData.length) this.baseChartService.updateTimestampByTimezoneOffset(resData.fracproData[0], timeZoneOffset);\r\n return resData;\r\n }));\r\n }\r\n }));\r\n });\r\n return forkJoin(requests$);\r\n }\r\n\r\n checkChannelAppear(setting, listRealtimeChannels, listFracProChannels) {\r\n if (!isEmpty(listRealtimeChannels) || !isEmpty(listFracProChannels)) {\r\n // First Left Channel\r\n const firstLeftChannel = (setting && setting.firstLeft.channels) ? setting.firstLeft.channels : [];\r\n // Second Left Channel\r\n const secondLeftChannel = (setting && setting.secondLeft.channels) ? setting.secondLeft.channels : [];\r\n // First Right Channel\r\n const firstRightChannel = (setting && setting.firstRight.channels) ? setting.firstRight.channels : [];\r\n // Second Right Channel\r\n const secondRightChannel = (setting && setting.secondRight.channels) ? setting.secondRight.channels : [];\r\n // Search same value on Channel List\r\n const handleChannel = (channels: any[]) => {\r\n let result = [];\r\n forEach(channels, (item) => {\r\n if ((some(listRealtimeChannels, { cName: item.cName, name: item.channelName }) || some(listFracProChannels, { cName: item.cName, name: item.channelName }))) {\r\n result.push(item);\r\n }\r\n });\r\n return result;\r\n };\r\n // Set value on Channel\r\n setting.firstLeft.channels = handleChannel(firstLeftChannel);\r\n setting.secondLeft.channels = handleChannel(secondLeftChannel);\r\n setting.firstRight.channels = handleChannel(firstRightChannel);\r\n setting.secondRight.channels = handleChannel(secondRightChannel);\r\n } else {\r\n setting.firstLeft.channels = [];\r\n setting.secondLeft.channels = [];\r\n setting.firstRight.channels = [];\r\n setting.secondRight.channels = [];\r\n }\r\n }\r\n\r\n getLastTimeFromData = (inputData: IInputDataMultiFlow, predictedChannels: IChannelItem[]): string => {\r\n if (!inputData) return '';\r\n\r\n const predictChannelsMap = predictedChannels.map(x => x.cName);\r\n const curRealtimeData = inputData.realtimeData ? inputData.realtimeData[0] : null;\r\n const curFracproData = inputData.fracproData ? inputData.fracproData[0] : null;\r\n let baseRealtimeDataTime = '';\r\n let baseFracproDataTime = '';\r\n\r\n // find base realtime data time\r\n if (curRealtimeData && !isEmpty(curRealtimeData.values)) {\r\n baseRealtimeDataTime = this.getLastTimeFromDataPoint(curRealtimeData, undefined, predictChannelsMap);\r\n // baseRealtimeDataTime = Helper.addSecondTimeString(baseRealtimeDataTime, 1);\r\n }\r\n // find base fracpro data time\r\n if (curFracproData && !isEmpty(curFracproData.values)) {\r\n baseFracproDataTime = this.getLastTimeFromDataPoint(curFracproData, undefined, predictChannelsMap);\r\n // baseFracproDataTime = Helper.addSecondTimeString(baseFracproDataTime, 1);\r\n }\r\n\r\n if (!baseRealtimeDataTime && !baseFracproDataTime) return '';\r\n if (!baseRealtimeDataTime) return baseFracproDataTime;\r\n if (!baseFracproDataTime) return baseRealtimeDataTime;\r\n return baseRealtimeDataTime < baseFracproDataTime ? baseRealtimeDataTime : baseFracproDataTime;\r\n }\r\n\r\n mergeRealtimeData(curDataValues: any[], newDataValues: any[], predictChannels: any[]) {\r\n if (!predictChannels || !predictChannels.length) return [...curDataValues, ...newDataValues];\r\n\r\n const firstNewDataDateTime = newDataValues[0][0];\r\n const n = curDataValues.length;\r\n let index = n - 1;\r\n for (let i = index; i >= 0; i--) {\r\n if (curDataValues[i][0] >= firstNewDataDateTime) continue;\r\n index = i;\r\n break;\r\n }\r\n for (let i = 0; i < newDataValues.length; i++) {\r\n curDataValues[index + i + 1] = newDataValues[i];\r\n }\r\n return curDataValues;\r\n }\r\n\r\n getNewDataChartHandler(\r\n wellId: number,\r\n treatmentId: number,\r\n channelSettings,\r\n inputCurChartInputData: IInputDataMultiFlow,\r\n fracproGridCName?: string[],\r\n flowPathType?: number,\r\n isSeparateRealTimeData?: boolean,\r\n baseTreatmentDataTime?: string,\r\n predictedChannels?: IChannelItem[]\r\n ): Observable {\r\n const curChartInputData = cloneDeep(inputCurChartInputData);\r\n const result: IResultIntervalGetChartDataFunc = {\r\n isHasNewData: false,\r\n isHasNewRealtimeData: false,\r\n isHasNewFracproData: false,\r\n isValidResponseData: undefined,\r\n isValidCurrentInputData: undefined,\r\n newTimeRangeFilter: null,\r\n responseInputData: curChartInputData\r\n };\r\n let channelsMap = this.channelSelectionService.toRequestChannelMap(channelSettings);\r\n const channelsMapName = this.channelSelectionService.toRequestChannelMap(channelSettings, 'channelName');\r\n if (!isEmpty(fracproGridCName)) {\r\n channelsMap = uniq(channelsMap.concat(fracproGridCName));\r\n }\r\n if (!isEmpty(channelsMap)) {\r\n const predictChannelsMap = predictedChannels.map(x => x.cName);\r\n const curRealtimeData = curChartInputData && curChartInputData.realtimeData ? curChartInputData.realtimeData[0] : null;\r\n const curFracproData = curChartInputData && curChartInputData.fracproData ? curChartInputData.fracproData[0] : null;\r\n let baseRealtimeDataTime = baseTreatmentDataTime;\r\n let baseFracproDataTime = baseTreatmentDataTime;\r\n // find base realtime data time\r\n if (curRealtimeData && !isEmpty(curRealtimeData.values)) {\r\n baseRealtimeDataTime = this.getLastTimeFromDataPoint(curRealtimeData, undefined, predictChannelsMap);\r\n baseRealtimeDataTime = Helper.addSecondTimeString(baseRealtimeDataTime, 1);\r\n }\r\n // find base fracpro data time\r\n if (curFracproData && !isEmpty(curFracproData.values)) {\r\n baseFracproDataTime = this.getLastTimeFromDataPoint(curFracproData, undefined, predictChannelsMap);\r\n baseFracproDataTime = Helper.addSecondTimeString(baseFracproDataTime, 1);\r\n }\r\n return this.getChartData(wellId, treatmentId * 1, channelsMap, channelsMapName, null, flowPathType, isSeparateRealTimeData, baseTreatmentDataTime, baseRealtimeDataTime, baseFracproDataTime\r\n ).pipe(switchMap(response => {\r\n try {\r\n const responseInputData = response;\r\n const isValidResponseData = !!(responseInputData && (responseInputData.realtimeData || responseInputData.fracproData));\r\n const isValidCurrentInputData = !!(curChartInputData && (curChartInputData.realtimeData || curChartInputData.fracproData));\r\n // set result values\r\n result.isValidResponseData = isValidResponseData;\r\n result.isValidCurrentInputData = isValidCurrentInputData;\r\n\r\n if (isValidResponseData) {\r\n let isHasNewRealtimeData = false;\r\n if (responseInputData.realtimeData) {\r\n const newRealtimeData = responseInputData.realtimeData[0];\r\n // update current realtime data\r\n if (curRealtimeData && newRealtimeData && !isEmpty(newRealtimeData.values)) {\r\n isHasNewRealtimeData = true;\r\n curRealtimeData.values = this.mergeRealtimeData(curRealtimeData.values, newRealtimeData.values, predictChannelsMap);\r\n }\r\n }\r\n\r\n let isHasNewFracproData = false;\r\n if (responseInputData.fracproData) {\r\n const newFracproData = responseInputData.fracproData[0];\r\n // update current fracpro data\r\n if (curFracproData && newFracproData && !isEmpty(newFracproData.values)) {\r\n isHasNewFracproData = true;\r\n curFracproData.values = this.mergeRealtimeData(curFracproData.values, newFracproData.values, predictChannelsMap);\r\n }\r\n }\r\n\r\n // update chart series data if has new data\r\n if (isHasNewRealtimeData || isHasNewFracproData) {\r\n result.responseInputData = curChartInputData;\r\n const timeRangeRealtimeData = this.baseChartService.getTimeRangeFilter(curRealtimeData);\r\n const timeRangeFracproData = this.baseChartService.getTimeRangeFilter(curFracproData);\r\n const newTimeRangeFilter = this.baseChartService.mergeTimeRangeFilter(timeRangeRealtimeData, timeRangeFracproData);\r\n\r\n // set result values\r\n result.isHasNewData = true;\r\n result.isHasNewRealtimeData = isHasNewRealtimeData;\r\n result.isHasNewFracproData = isHasNewFracproData;\r\n result.newTimeRangeFilter = newTimeRangeFilter;\r\n }\r\n }\r\n\r\n return of(result);\r\n } catch (err) {\r\n return throwError(err);\r\n }\r\n }));\r\n } else {\r\n return of(result);\r\n }\r\n }\r\n\r\n getChartDataHandler(\r\n wellId: number,\r\n treatmentId: number,\r\n treatmentInfo: ITreatmentItem,\r\n channelSettings: IChannelSettingModel,\r\n offsetChannels?: IChannelSettingItemModel[],\r\n fracproGridCName?: string[],\r\n flowPathType?: number,\r\n baseTreatmentDataTime?: string,\r\n timeSetting?: ITimeSetting,\r\n isRealtime?: boolean,\r\n bourdetOption?: IBourdetOption\r\n ): Observable {\r\n const result: IResultGetChartDataFunc = {\r\n chartInputData: null,\r\n offsetChartInputData: [],\r\n timeRangeFilter: null\r\n };\r\n let channelsMap = this.channelSelectionService.toRequestChannelMap(channelSettings);\r\n const channelsMapName = this.channelSelectionService.toRequestChannelMap(channelSettings, 'channelName');\r\n\r\n if (!isEmpty(fracproGridCName)) {\r\n channelsMap = uniq(channelsMap.concat(fracproGridCName));\r\n }\r\n\r\n return this.getChartData(wellId, treatmentId, channelsMap, channelsMapName, bourdetOption, flowPathType, treatmentInfo.isSeparateRealTimeData, baseTreatmentDataTime)\r\n .pipe(switchMap(response => {\r\n const responseInputData = response;\r\n if (responseInputData && (responseInputData.realtimeData || responseInputData.fracproData)) {\r\n const realtimeData = responseInputData.realtimeData ? responseInputData.realtimeData[0] : null;\r\n const fracproData = responseInputData.fracproData ? responseInputData.fracproData[0] : null;\r\n // update timestamp data by timezone offset\r\n // this.baseChartService.updateTimestampByTimezoneOffset(realtimeData, wellTimeZoneOffset);\r\n // this.baseChartService.updateTimestampByTimezoneOffset(fracproData, wellTimeZoneOffset);\r\n // default chart always in auto scale time mode, in this mode filter time setting always be updated by chart data\r\n const timeRangeRealtimeData = this.baseChartService.getTimeRangeFilter(realtimeData);\r\n const timeRangeFracproData = this.baseChartService.getTimeRangeFilter(fracproData);\r\n // set time range filter\r\n result.timeRangeFilter = this.baseChartService.mergeTimeRangeFilter(timeRangeRealtimeData, timeRangeFracproData);\r\n // set chart input data\r\n result.chartInputData = responseInputData;\r\n }\r\n let requestTimeSetting;\r\n if (timeSetting) requestTimeSetting = timeSetting;\r\n else if (result.timeRangeFilter && result.timeRangeFilter.timestamp) {\r\n requestTimeSetting = {\r\n type: TIME_SETTING_TYPE.EpochTime,\r\n startIndex: result.timeRangeFilter.timestamp.start,\r\n endIndex: result.timeRangeFilter.timestamp.end\r\n } as ITimeSetting;\r\n } else {\r\n requestTimeSetting = {\r\n type: TIME_SETTING_TYPE.EpochTime,\r\n startIndex: 0,\r\n endIndex: 0\r\n } as ITimeSetting;\r\n }\r\n\r\n // const timeRangeFilterRequest = timeRangeFilter ? timeRangeFilter : result.timeRangeFilter;\r\n return this.getOffsetChartInputData(offsetChannels, treatmentInfo, flowPathType, null, requestTimeSetting, baseTreatmentDataTime, isRealtime);\r\n }))\r\n .pipe(switchMap(response => {\r\n // set offset chart input data\r\n result.offsetChartInputData = response;\r\n return of(result);\r\n }));\r\n }\r\n\r\n getStringRawData(\r\n uniThreeAxisChannel: IChannelSettingItemModel[],\r\n realtimeData: IInputDataChart, fracproData: IInputDataChart, minTime: number, maxTime: number,\r\n timeFormat: string,\r\n offsetChannels: IChannelSettingItemModel[], offsetChartInputData: IInputDataMultiFlow[]\r\n ) {\r\n const channelNames = uniThreeAxisChannel.map(channel => channel.name);\r\n const channelUnits = uniThreeAxisChannel.map(channel => channel.unit ? channel.unit : '');\r\n let headersNames = ['Time'].concat(channelNames);\r\n let headersUnits = ['yyyy-MM-dd hh:mm:ss'].concat(channelUnits);\r\n let realtimeDataFiltered = realtimeData && realtimeData.values ? realtimeData.values : [];\r\n let fracproDataFiltered = fracproData && fracproData.values ? fracproData.values : [];\r\n if (minTime && maxTime) {\r\n if (timeFormat === 'hh:mm') {\r\n if (realtimeData && !isEmpty(realtimeData.values)) {\r\n realtimeDataFiltered = realtimeData.values.filter(dataRow => {\r\n const yValue = dataRow[0];\r\n return yValue >= minTime && yValue <= maxTime;\r\n });\r\n }\r\n if (fracproData && !isEmpty(fracproData.values)) {\r\n fracproDataFiltered = fracproData.values.filter(dataRow => {\r\n const yValue = dataRow[0];\r\n return yValue >= minTime && yValue <= maxTime;\r\n });\r\n }\r\n } else {\r\n const minTimeSec = minTime * 60;\r\n const maxTimeSec = maxTime * 60;\r\n if (realtimeData && !isEmpty(realtimeData.values)) {\r\n realtimeDataFiltered = realtimeData.values.filter(dataRow => {\r\n const yValue = dataRow[1];\r\n return yValue >= minTimeSec && yValue <= maxTimeSec;\r\n });\r\n }\r\n if (fracproData && !isEmpty(fracproData.values)) {\r\n fracproDataFiltered = fracproData.values.filter(dataRow => {\r\n const yValue = dataRow[1];\r\n return yValue >= minTimeSec && yValue <= maxTimeSec;\r\n });\r\n }\r\n }\r\n }\r\n // set base data for loop, will follow by realtime or fracpro data\r\n let baseDataFiltered = realtimeDataFiltered;\r\n if (isEmpty(realtimeDataFiltered) && !isEmpty(fracproDataFiltered)) {\r\n baseDataFiltered = fracproDataFiltered;\r\n }\r\n\r\n // handle offset channels\r\n if (!isEmpty(offsetChannels)) {\r\n let offsetChannelNames = [];\r\n let offsetChannelUnits = [];\r\n offsetChannels.forEach(offsetChannel => {\r\n offsetChannelNames = offsetChannelNames.concat([`${offsetChannel.name}-Time`, offsetChannel.originName]);\r\n offsetChannelUnits = offsetChannelUnits.concat(['yyyy-MM-dd hh:mm:ss', offsetChannel.unit]);\r\n });\r\n headersNames = headersNames.concat(offsetChannelNames);\r\n headersUnits = headersUnits.concat(offsetChannelUnits);\r\n }\r\n\r\n const channelData = [];\r\n baseDataFiltered.forEach((dataRow, index) => {\r\n let channelDataRow = [];\r\n const realtimeTimeFloat = dataRow[1];\r\n let timeData = Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', new Date(dataRow[0]).getTime());\r\n channelDataRow.push(timeData);\r\n uniThreeAxisChannel.forEach((channel) => {\r\n if (channel.cName.indexOf('C') > -1) {\r\n if (realtimeData && !isEmpty(realtimeData.columns) && !isEmpty(realtimeData.values)) {\r\n const channelIndex = realtimeData.columns.findIndex(t => t === channel.cName);\r\n const channelValue = dataRow[channelIndex];\r\n channelDataRow.push(channelValue);\r\n }\r\n } else if (channel.cName.indexOf('F') > -1) {\r\n if (fracproData && !isEmpty(fracproData.columns) && !isEmpty(fracproData.values)) {\r\n const channelIndex = fracproData.columns.findIndex(t => t === channel.cName);\r\n const fracproDataByRealtimeTimeFloat = fracproDataFiltered.find(rowItem => rowItem[1] === realtimeTimeFloat);\r\n if (fracproDataByRealtimeTimeFloat) {\r\n const channelValue = fracproDataByRealtimeTimeFloat[channelIndex];\r\n channelDataRow.push(channelValue);\r\n } else {\r\n channelDataRow.push('');\r\n }\r\n }\r\n }\r\n\r\n if (!isEmpty(offsetChannels) && !isEmpty(offsetChartInputData)) {\r\n const filterInputData = (item, channelItem) => {\r\n if (item.treatmentId !== channelItem.treatmentId) return false;\r\n if (item.isSmoothData !== channelItem.isSmoothData) return false;\r\n if (item.isBourdetDer !== channelItem.isBourdetDer) return false;\r\n return true;\r\n };\r\n\r\n offsetChannels.forEach(offsetChannel => {\r\n const wellTreatmentData = offsetChartInputData.find(item => filterInputData(item, offsetChannel));\r\n if (wellTreatmentData) {\r\n const offsetRealtimeData = wellTreatmentData.realtimeData[0];\r\n let offsetRealtimeDataFiltered = offsetRealtimeData.values;\r\n if (minTime && maxTime) {\r\n if (timeFormat === 'hh:mm') {\r\n offsetRealtimeDataFiltered = offsetRealtimeDataFiltered.filter(realtimeDataRow => {\r\n const yValue = realtimeDataRow[0];\r\n return yValue >= minTime && yValue <= maxTime;\r\n });\r\n } else {\r\n const minTimeSec = minTime * 60;\r\n const maxTimeSec = maxTime * 60;\r\n offsetRealtimeDataFiltered = offsetRealtimeDataFiltered.filter(realtimeDataRow => {\r\n const yValue = realtimeDataRow[1];\r\n return yValue >= minTimeSec && yValue <= maxTimeSec;\r\n });\r\n }\r\n }\r\n if (!isEmpty(offsetRealtimeDataFiltered)) {\r\n const realtimeDataRow = offsetRealtimeDataFiltered[index];\r\n timeData = Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', new Date(realtimeDataRow[0]).getTime());\r\n const channelIndex = offsetRealtimeData.columns.findIndex(t => t === offsetChannel.cName);\r\n const channelValue = realtimeDataRow[channelIndex];\r\n channelDataRow = channelDataRow.concat([timeData, channelValue]);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n channelData.push(channelDataRow);\r\n });\r\n const result = [headersNames, headersUnits, channelData.join('\\n')];\r\n const stringData = result.join('\\n');\r\n\r\n return stringData;\r\n }\r\n\r\n\r\n // don't use\r\n convertOffsetChannelTime(offsetInputChart: IInputDataChart, primaryInputData: IInputDataChart) {\r\n const timeFLoatIndex = offsetInputChart.columns.findIndex(value => value === TIMEFLOAT_CHANNEL_NAME);\r\n const dateTimeIndex = offsetInputChart.columns.findIndex(value => value === DATETIME_CHANNEL_NAME);\r\n // find primary base time\r\n let basePrimaryTimestamp = 0;\r\n let curPrimaryTimestamp = 0;\r\n let baseOffsetTimestamp = 0;\r\n if (primaryInputData.values[0]) {\r\n basePrimaryTimestamp = new Date(primaryInputData.values[0][dateTimeIndex]).getTime();\r\n }\r\n if (primaryInputData.values[primaryInputData.values.length - 1]) {\r\n curPrimaryTimestamp = new Date(primaryInputData.values[primaryInputData.values.length - 1][dateTimeIndex]).getTime();\r\n }\r\n if (offsetInputChart.values[0]) {\r\n baseOffsetTimestamp = new Date(offsetInputChart.values[0][dateTimeIndex]).getTime();\r\n }\r\n // in case offset channel starts earlier than primary channel, filter data which outside primary timestamp\r\n if (baseOffsetTimestamp < basePrimaryTimestamp) {\r\n if (basePrimaryTimestamp < curPrimaryTimestamp) {\r\n offsetInputChart.values = offsetInputChart.values.filter(dataRow => {\r\n const timestamp = new Date(dataRow[dateTimeIndex]).getTime();\r\n\r\n return timestamp >= basePrimaryTimestamp && timestamp <= curPrimaryTimestamp;\r\n });\r\n }\r\n }\r\n // move offset time value in offset channel data to primary channel offset time\r\n const diffTime = (baseOffsetTimestamp - basePrimaryTimestamp) / 1000; // in seconds\r\n if (diffTime) {\r\n offsetInputChart.values.forEach(dataRow => {\r\n dataRow[timeFLoatIndex] = dataRow[timeFLoatIndex] + diffTime;\r\n });\r\n }\r\n\r\n return offsetInputChart;\r\n }\r\n\r\n\r\n // don't use\r\n getOffsetStringRawData(\r\n offsetChannelSettings: IChannelSettingItemModel[], offsetChartInputData: IInputDataMultiFlow[],\r\n minTime: number, maxTime: number, timeFormat: ChartTimeFormat, realtimeData: IInputDataChart\r\n ) {\r\n let channelName = '';\r\n let channelUnit = '';\r\n for (let i = 0; i < offsetChannelSettings.length; i++) {\r\n if (i === offsetChannelSettings.length - 1) {\r\n channelName += offsetChannelSettings[i].name;\r\n channelUnit += offsetChannelSettings[i].unit;\r\n } else {\r\n channelName += offsetChannelSettings[i].name + ', ';\r\n channelUnit += offsetChannelSettings[i].unit + ', ';\r\n }\r\n }\r\n\r\n let textContent = 'Date, Time, ' + channelName + '\\n';\r\n textContent += 'MM/dd/yyyy, hh:mm:ss, ' + channelUnit + '\\n';\r\n forEach(realtimeData.values, value => {\r\n textContent += new Date(value[0]).toLocaleDateString() + ', ' + new Date(value[0]).toLocaleTimeString() + ', ';\r\n for (let j = 0; j < offsetChannelSettings.length; j++) {\r\n const offsetRealtimeData = offsetChartInputData\r\n .filter(\r\n t => t.treatmentId === offsetChannelSettings[j].treatmentId && t.wellId === offsetChannelSettings[j].wellId && t.cName === offsetChannelSettings[j].cName\r\n );\r\n\r\n // let temp = this.convertOffsetChannelTime(offsetRealtimeData[0].realtimeData[0], realtimeData);\r\n const textValue = offsetRealtimeData[0].realtimeData[0].values\r\n .filter(dataRow => {\r\n const yValue = dataRow[1];\r\n if (yValue === value[1]) {\r\n return dataRow;\r\n }\r\n });\r\n if (textValue.length > 0) {\r\n if (j === offsetChannelSettings.length - 1) {\r\n textContent += textValue[0][2].toString();\r\n } else {\r\n textContent += textValue[0][2].toString() + ', ';\r\n }\r\n } else {\r\n if (j === offsetChannelSettings.length - 1) {\r\n textContent += '';\r\n } else {\r\n textContent += ' , ';\r\n }\r\n }\r\n }\r\n textContent += '\\n';\r\n });\r\n return textContent;\r\n }\r\n\r\n validTimeOffsetByTimeFormat({ xValue, timeFormat, baseTreatmentDataTime, wellTimeZoneOffset }) {\r\n let timeOffset;\r\n if (xValue < 0) {\r\n xValue = 10;\r\n }\r\n if (timeFormat === 'hh:mm') {\r\n timeOffset = xValue - (new Date(baseTreatmentDataTime).getTime() + wellTimeZoneOffset * 60 * 1000); // milliseconds\r\n timeOffset = timeOffset / 1000; // in seconds\r\n } else {\r\n if (xValue > 60000) {\r\n xValue = 200;\r\n }\r\n timeOffset = xValue * 60; // in seconds\r\n }\r\n return timeOffset;\r\n }\r\n\r\n getLastTimeFromDataPoint(inputData: IInputDataChart, wellTimeZoneOffset?: number, predictChannelsMap?: string[], getTimeEllapsed?: boolean) {\r\n let baseTreatmentDataTime;\r\n if (inputData && !isEmpty(inputData.values)) {\r\n const filterIndex: number[] = [];\r\n if (!isEmpty(inputData.columns)) {\r\n for (let i = 0; i < inputData.columns.length; i++) {\r\n if (inputData.columns[i] === 'time') continue;\r\n if (inputData.columns[i].includes('C0')) continue;\r\n if (!isEmpty(predictChannelsMap) && predictChannelsMap.includes(inputData.columns[i])) continue;\r\n filterIndex.push(i);\r\n }\r\n }\r\n\r\n const getLastDataValue = (data: any[]) => {\r\n const n = data.length;\r\n for (let i = n - 1; i >= 0; i--) {\r\n for (const index of filterIndex) {\r\n if (data[i][index] === null) continue;\r\n return data[i];\r\n }\r\n }\r\n };\r\n\r\n // const currentValues = (data) => {\r\n // if (!data) return [];\r\n // if (!predictChannelsMap || isEmpty(predictChannelsMap)) return data.values;\r\n // const result = data.values.filter(val => {\r\n // let flag = 0;\r\n // for (let index = 1; index < data.columns.length; index++) {\r\n // const isPredict = predictChannelsMap.includes(data.columns[index]);\r\n // if (!isPredict && val[index] !== null && val[index] !== undefined) {\r\n // flag++;\r\n // break;\r\n // }\r\n // }\r\n // return flag > 0;\r\n // });\r\n\r\n // return result;\r\n // }\r\n\r\n const lastDataPoint = getLastDataValue(inputData.values);\r\n\r\n if (getTimeEllapsed) {\r\n if (!lastDataPoint) return 0;\r\n const index = inputData.columns.indexOf('C0');\r\n if (index < 0) return 0;\r\n return lastDataPoint[index];\r\n }\r\n\r\n if (lastDataPoint) {\r\n if (!wellTimeZoneOffset) {\r\n baseTreatmentDataTime = lastDataPoint[0];\r\n } else {\r\n const baseEpochValueForNewData = new Date(lastDataPoint[0]).getTime() - (wellTimeZoneOffset * 60 * 1000); // have to revert timezone offset after changed\r\n baseTreatmentDataTime = new Date(baseEpochValueForNewData).toISOString();\r\n }\r\n }\r\n }\r\n return baseTreatmentDataTime;\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{ well.wellName }}
\\r\\n
\\r\\n {{ well.wellAPI }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
{{ well.serviceCompanyName }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ well.operatorCompanyName }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ well.treatmentNumberName }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3dlbGwtZ3JpZC12aWV3L3dlbGwtZ3JpZC12aWV3LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Router } from '@angular/router';\r\nimport { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-well-grid-view',\r\n templateUrl: './well-grid-view.component.html',\r\n styleUrls: ['./well-grid-view.component.scss']\r\n})\r\nexport class WellGridViewComponent implements OnInit, OnDestroy {\r\n editData: any;\r\n\r\n @Input() classNames: string;\r\n @Input() listWells: any[] = [];\r\n\r\n constructor(private router: Router) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n editProblemWell(item: any) {\r\n this.editData = item;\r\n if (item.treatmentId) {\r\n this.router.navigate(['pages/treatments/realtime', item.treatmentId], {\r\n queryParams: { wellId: item.wellId }\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, OnChanges, OnDestroy, Renderer2} from '@angular/core';\r\nimport {NgControl} from '@angular/forms';\r\nimport {DecimalPipe} from '@angular/common';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[decimalFormat]'\r\n})\r\n\r\nexport class DecimalFormatDirective implements AfterViewInit, OnChanges, OnDestroy {\r\n private decimalDigits: number = 4;\r\n private input: any;\r\n private decimalPipe = new DecimalPipe('en-US');\r\n private ob: Subscription;\r\n\r\n @Input()\r\n set attrDisabled(tmp: boolean) {\r\n if (this.input) {\r\n if (!!tmp) {\r\n this.renderer.setAttribute(this.input, 'disabled', '');\r\n } else {\r\n this.renderer.removeAttribute(this.input, 'disabled');\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n set decimalFormat(d: any) {\r\n const digit = parseInt(d, 10);\r\n if (digit >= 0) {\r\n this.decimalDigits = digit;\r\n } else {\r\n this.decimalDigits = 4;\r\n }\r\n }\r\n\r\n constructor(private el: ElementRef,\r\n private renderer: Renderer2,\r\n private control: NgControl) {\r\n }\r\n ngAfterViewInit(): void {\r\n this.input = this.renderer.createElement('input');\r\n // this.renderer.addClass(this.input, 'form-control');\r\n this.setInputValue(this.el.nativeElement.value);\r\n\r\n const className = this.el.nativeElement.getAttribute('class');\r\n if (className) {\r\n this.renderer.setAttribute(this.input, 'class', className);\r\n }\r\n\r\n const style = this.el.nativeElement.getAttribute('style');\r\n if (style) {\r\n this.renderer.setAttribute(this.input, 'style', style);\r\n }\r\n\r\n // Check only view\r\n const disabled = this.el.nativeElement.getAttribute('disabled');\r\n if (disabled !== null) {\r\n this.renderer.setAttribute(this.input, 'disabled', '');\r\n }\r\n\r\n this.renderer.insertBefore(this.el.nativeElement.parentNode, this.input, this.el.nativeElement);\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n if (this.control.control) {\r\n this.ob = this.control.control.valueChanges.subscribe((value) => this.setInputValue(value));\r\n }\r\n this.renderer.listen(this.input, 'keypress', (e: any) => {\r\n const event = e || window.event;\r\n if (event) {\r\n return this.onKeyDown(e);\r\n }\r\n });\r\n this.renderer.listen(this.input, 'input', (e: any) => {\r\n if (e.target.value !== null) {\r\n if (e.target.value !== '-') {\r\n e.target.value = this.format(e.target.value);\r\n }\r\n }\r\n if (this.control.control) {\r\n this.control.control.markAsTouched();\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n private clearDelimitersAndLeadingZeros(value) {\r\n if (value === '0') {\r\n return '0';\r\n }\r\n const cleanValue = value.toString().replace(/,/g, '').replace(/^0*/, '');\r\n const abc = cleanValue.replace(/[^0-9.]/g, '');\r\n return cleanValue.replace(/[^0-9.]/g, '');\r\n }\r\n\r\n private setInputValue(value): void {\r\n const viewValue = (value != null && value !== '' && typeof value === 'number') ? this.decimalPipe.transform(value, `1.0-${this.decimalDigits}`) : '';\r\n this.renderer.setAttribute(\r\n this.input,\r\n 'value',\r\n viewValue\r\n );\r\n if (this.input.value !== viewValue) {\r\n this.input.value = viewValue;\r\n }\r\n }\r\n\r\n onKeyDown(event) {\r\n const charCode = (event.which) ? event.which : event.keyCode;\r\n const arr = event.target.value.split('.');\r\n // Check negative number\r\n if (\r\n charCode === 45 && (event.target.value.includes('-')\r\n )) {\r\n return false;\r\n }\r\n // Check point\r\n if (charCode === 46 && (this.decimalDigits === 0 || event.target.value.includes('.') || event.target.value === '')) {\r\n return false;\r\n }\r\n if ((48 <= charCode && charCode <= 57)\r\n || charCode === 46\r\n || charCode === 45) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private format(value) {\r\n if (value === '') {\r\n if (this.control.control) {\r\n this.control.control.setValue('', {emitViewToModelChange: true});\r\n this.control.control.markAsTouched();\r\n }\r\n return '';\r\n } else if (value.slice(-1) === '.') {\r\n return value;\r\n } else if (value.includes('-')) {\r\n const minus = value.split('-');\r\n if (minus[0]) {\r\n const valueChange = value.toString().replace(/-/g, '');\r\n return valueChange;\r\n } else {\r\n if (minus[1] === '0') {\r\n return 0;\r\n }\r\n const arr = minus[1].split('.');\r\n const decimal = this.decimalPipe.transform(this.prepareNumberToFormatter(arr[0]), `1.0-0`);\r\n let result;\r\n if (this.decimalDigits > 0 && arr.length > 1) {\r\n result = `-${decimal}.${arr[1].substr(0, this.decimalDigits)}`;\r\n } else {\r\n result = `-${decimal}`;\r\n }\r\n let realValue = result === null ? null : this.prepareNumberToFormatter(result);\r\n realValue = `-${realValue}`;\r\n if (this.control.control) {\r\n this.control.control.setValue(realValue, {emitViewToModelChange: true});\r\n }\r\n return result;\r\n }\r\n } else {\r\n const arr = value.split('.');\r\n const decimal = this.decimalPipe.transform(this.prepareNumberToFormatter(arr[0]), `1.0-0`);\r\n let result;\r\n if (this.decimalDigits > 0 && arr.length > 1) {\r\n result = `${decimal}.${arr[1].substr(0, this.decimalDigits)}`;\r\n } else {\r\n result = decimal;\r\n }\r\n const realValue = result === null ? null : this.prepareNumberToFormatter(result);\r\n if (this.control.control) {\r\n this.control.control.setValue(realValue, {emitViewToModelChange: true});\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n private prepareNumberToFormatter(value) {\r\n const newVal = this.clearDelimitersAndLeadingZeros(value);\r\n if (newVal === '-') {\r\n return newVal;\r\n } else {\r\n return parseFloat(newVal);\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n setTimeout(() => {\r\n if (this.control.control) {\r\n this.setInputValue(this.control.control.value);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.input.parentNode.removeChild(this.input);\r\n if (this.ob) {\r\n this.ob.unsubscribe();\r\n }\r\n }\r\n}","import {AfterViewInit, Directive, ElementRef, HostListener, Renderer2, ViewChild} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ellipsisLines]'\r\n})\r\n\r\nexport class EllipsisLinesDirective implements AfterViewInit {\r\n textDefault: any = '';\r\n @ViewChild(ElementRef) wrapper: ElementRef;\r\n constructor(private el: ElementRef,\r\n private renderer: Renderer2) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const container = this.el.nativeElement;\r\n this.textDefault = container.innerHTML;\r\n const wordArray = container.innerHTML.split(' ');\r\n this.processContent(wordArray);\r\n }\r\n\r\n processContent(wordArray) {\r\n const container = this.el.nativeElement;\r\n if (wordArray.length === 1) {\r\n let wordLength = wordArray[0].length;\r\n while (container.scrollHeight > container.offsetHeight) {\r\n wordLength = wordLength - 5;\r\n container.innerHTML = wordArray[0].slice(0, wordLength) + '...';\r\n const height = `${container.offsetHeight}px`;\r\n this.renderer.setStyle(container, 'height', height);\r\n }\r\n } else {\r\n while (container.scrollHeight > container.offsetHeight) {\r\n wordArray.pop();\r\n container.innerHTML = wordArray.join(' ') + '...';\r\n const height = `${container.offsetHeight}px`;\r\n this.renderer.setStyle(container, 'height', height);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n const container = this.el.nativeElement;\r\n container.innerHTML = this.textDefault;\r\n const wordArray = this.textDefault.split(' ');\r\n this.processContent(wordArray);\r\n }\r\n}","import { Directive, HostListener, ElementRef, Input, ViewChild, EventEmitter, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInputNoUnset]',\r\n})\r\nexport class InputNoUnsetDirective {\r\n @ViewChild(ElementRef) eleContainer: ElementRef;\r\n @Input() appInputNoUnset: any;\r\n @Output() ngModelChange: EventEmitter = new EventEmitter();\r\n\r\n @HostListener('change') onInputChange() {\r\n const value = this.el.nativeElement.value.trim();\r\n if (!value) {\r\n this.ngModelChange.emit(this.appInputNoUnset);\r\n }\r\n }\r\n\r\n constructor(private el: ElementRef) { }\r\n \r\n}\r\n","import { Directive, Input, Output, EventEmitter, HostListener, ElementRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appInputNumberInRange]'\r\n})\r\nexport class InputNumberInRangeDirective {\r\n constructor(private el: ElementRef) { }\r\n minValue = 0;\r\n maxValue = 1000;\r\n\r\n @Input() \r\n set rangeMin(value) {\r\n this.minValue = value * 1;\r\n }\r\n @Input() \r\n set rangeMax(value) {\r\n this.maxValue = value * 1;\r\n }\r\n @Output() ngModelChange: EventEmitter = new EventEmitter();\r\n\r\n @HostListener('keyup', ['$event.target.value', '$event']) \r\n onkeyup(value, event) {\r\n this.resetValue(value);\r\n }\r\n\r\n @HostListener('keydown', ['$event.target.value', '$event']) \r\n onkeydown(value, event) {\r\n this.resetValue(value);\r\n }\r\n\r\n @HostListener('blur', ['$event.target.value', '$event']) \r\n onblur(value, event) {\r\n this.resetValue(value);\r\n }\r\n\r\n resetValue(value) {\r\n if (value < this.minValue) {\r\n this.el.nativeElement.value = this.minValue;\r\n this.ngModelChange.emit(this.minValue);\r\n }\r\n if (value > this.maxValue) {\r\n this.el.nativeElement.value = this.maxValue;\r\n this.ngModelChange.emit(this.maxValue);\r\n }\r\n }\r\n}\r\n","import {Directive, HostListener} from '@angular/core';\r\nimport {NgControl} from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[noWhiteSpace]'\r\n})\r\n\r\nexport class NoWhiteSpaceDirective {\r\n constructor(private control: NgControl) {}\r\n\r\n @HostListener('blur', ['$event.target.value'])\r\n onblur(updatedValue: string) {\r\n let value: any = this.control.control.value;\r\n if (value != null && typeof value === 'string') {\r\n value = value.trim();\r\n value = value.replace(/\\s+/g, ' ');\r\n this.control.control.setValue(value);\r\n }\r\n }\r\n}","import { Directive, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nexport type SortDirection = 'asc' | 'desc' | '';\r\nconst ROTATE_STATE: {[key: string]: SortDirection} = {\r\n asc: 'desc',\r\n desc: '',\r\n '': 'asc'\r\n};\r\n\r\nexport interface SortEvent {\r\n column: string;\r\n direction: SortDirection;\r\n}\r\n\r\nexport const compare = (v1, v2) => v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\r\n\r\nexport interface PagingSettings {\r\n page: number;\r\n pageSize: number;\r\n collectionSize: number;\r\n}\r\n\r\nexport const pagingDefaultSettings: PagingSettings = {\r\n page: 1, // current page\r\n pageSize: 24, // number of items per page\r\n collectionSize: 0 // total number of items\r\n};\r\n\r\n@Directive({\r\n // tslint:disable-next-line:directive-selector\r\n selector: 'th[sortable]',\r\n // tslint:disable-next-line:use-host-property-decorator\r\n host: {\r\n '[class.asc]': 'direction === \"asc\"',\r\n '[class.desc]': 'direction === \"desc\"',\r\n '(click)': 'rotate()'\r\n }\r\n})\r\nexport class SortableTableHeaderDirective {\r\n\r\n constructor() { }\r\n\r\n @Input() sortable: string;\r\n @Input() direction: SortDirection = '';\r\n @Output() sort = new EventEmitter();\r\n\r\n rotate() {\r\n this.direction = ROTATE_STATE[this.direction];\r\n this.sort.emit({column: this.sortable, direction: this.direction});\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UserAuthService, UserRolesService } from '../services';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { UserRoleType } from '../helpers/app.constants';\r\n\r\n@Injectable()\r\nexport class AdminGuardService {\r\n\r\n constructor(private userAuthService: UserAuthService, private userRolesService: UserRolesService, private router: Router) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n return this.userAuthService.currentUser.pipe(map(user => {\r\n const userRole = this.userRolesService.toUserRole(user).toLowerCase();\r\n\r\n return userRole === UserRoleType.carboAdmin || userRole === UserRoleType.clientAdmin;\r\n }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { UserAuthService, LoadingOverlayService } from '../services';\r\n\r\n@Injectable()\r\nexport class AuthGuardService {\r\n\r\n constructor(\r\n private router: Router,\r\n private userAuthService: UserAuthService,\r\n private loadingOverlayService: LoadingOverlayService\r\n ) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n if (!this.userAuthService.isAuthenticated()) {\r\n this.userAuthService.purgeAuth();\r\n this.router.navigate(['auth', 'login']);\r\n return Promise.resolve(false);\r\n } else {\r\n this.loadingOverlayService.show();\r\n return this.userAuthService.populateUser().then(user => {\r\n this.loadingOverlayService.hide();\r\n // if (user && user.isChangePassword === false) {\r\n // this.router.navigate(['auth', 'changePasswordDefault']);\r\n // }\r\n return !!user;\r\n }).catch(err => {\r\n this.loadingOverlayService.hide();\r\n this.userAuthService.purgeAuth();\r\n this.router.navigate(['auth', 'login']);\r\n return false;\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UserAuthService, UserRolesService } from '../services';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class DataEngineerGuardService {\r\n\r\n constructor(private userAuthService: UserAuthService, private userRolesService: UserRolesService, private router: Router) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n return this.userAuthService.currentUser.pipe(map(user => {\r\n const userRole = this.userRolesService.toUserRole(user).toLowerCase();\r\n\r\n return this.userRolesService.isAdmin(userRole) || this.userRolesService.isDataEngineer(userRole) || this.userRolesService.isAnalyst(userRole);\r\n }));\r\n }\r\n}\r\n","\r\nexport * from './auth-guard.service';\r\nexport * from './no-auth-guard.service';\r\nexport * from './admin-guard.service';\r\nexport * from './data-engineer-guard.service';\r\nexport * from './service-company-guard.service';\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { UserAuthService } from '../services';\r\n\r\n@Injectable()\r\nexport class NoAuthGuardService implements CanActivate {\r\n constructor(\r\n private router: Router,\r\n private userAuthService: UserAuthService\r\n ) {}\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): boolean {\r\n const isNoAuthenticated = !this.userAuthService.isAuthenticated();\r\n if (!isNoAuthenticated) {\r\n this.router.navigate(['pages']);\r\n }\r\n\r\n return isNoAuthenticated;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UserAuthService, UserRolesService } from '../services';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class ServiceCompanyGuardService {\r\n\r\n constructor(private userAuthService: UserAuthService, private userRolesService: UserRolesService, private router: Router) {}\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n return this.userAuthService.currentUser.pipe(map(user => {\r\n const typeCompany = user.companyType;\r\n\r\n return typeCompany === 'Carbo' || typeCompany === 'Service' ;\r\n }));\r\n }\r\n}\r\n","export const YAXIS_KEYS = ['firstLeft', 'secondLeft', 'firstRight', 'secondRight'];\r\nexport const TEMPLATE_YAXIS_KEYS = ['yAxisLeft', 'yAxisLeftMost', 'yAxisRight', 'yAxisRightMost'];\r\n\r\nexport const YAxisMap = {\r\n firstLeft: 'firstLeft',\r\n secondLeft: 'secondLeft',\r\n firstRight: 'firstRight',\r\n secondRight: 'secondRight',\r\n};\r\n\r\nexport const CPATTERN = {\r\n EMAIL: /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n PASSWORD: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[-!$%^&@*()_+|~=`{}\\[\\]:\";'<>?,.\\s\\/])[A-Za-z\\d-!$%^&@*()_+|~=`{}\\[\\]:\";'<>?,.\\s\\/]{8,}$/,\r\n TEXTNUMBER: /^[_A-Za-z0-9\\s]*((-\\s)*[_A-Za-z0-9\\s])*$/,\r\n TEXT: /^[_A-Za-z\\s]*((-\\s)*[_A-Za-z\\s])*$/,\r\n CHANNEL_MAPPING_NAME: /^[A-Za-z0-9\\s\\-%()[\\]._]+$/,\r\n COMPANY_NAME: /^[A-Za-z0-9&\\s,]+$/,\r\n MATCH_STAGE_STR: /Stage(?=[0-9]*)|Stg(?=[0-9]*)|S(?=[0-9]*)/\r\n};\r\n\r\nexport const FDI_PARAM = ['fdiStart', 'fdiEnd', 'peakFDIStart', 'peakFDIEnd', 'leakOffStart', 'leakOffEnd'];\r\nexport const FDI_PARAM_TENANT = ['peakFDI', 'leakOff'];\r\nexport const FDI_PARAM_TENANTS = ['peakFDIStart', 'peakFDIEnd', 'leakOffStart', 'leakOffEnd'];\r\n\r\nexport const TenantType = {\r\n OperatorCompany: 0,\r\n ServiceCompany: 1,\r\n DefaultCompany: 2,\r\n};\r\n\r\nexport const UserRoleType = {\r\n carboAdmin: 'carbo admin',\r\n clientAdmin: 'admin',\r\n dataEngineer: 'data engineer',\r\n fieldEngineer: 'field engineer',\r\n analyst: 'analyst',\r\n};\r\n\r\nexport const DefaultColor = [\r\n 'rgb(255, 0, 0)', 'rgb(0, 0, 255)', 'rgb(0, 255, 0)', 'rgb(255, 128, 0)', 'rgb(128, 0, 255)', 'rgb(255, 0, 128)', 'rgb(0, 0, 0)', 'rgb(255, 255, 0)',\r\n 'rgb(255, 128, 128)', 'rgb(255, 255, 128)', 'rgb(128, 255, 128)', 'rgb(0, 255, 128)', 'rgb(128, 255, 255)', 'rgb(0, 128, 255)', 'rgb(255, 128, 192)', 'rgb(255, 128, 255)',\r\n 'rgb(255, 0, 0)', 'rgb(255, 255, 0)', 'rgb(128, 255, 0)', 'rgb(0, 255, 64)', 'rgb(0, 255, 255)', 'rgb(0, 128, 192)', 'rgb(128, 128, 192)', 'rgb(255, 0, 255)',\r\n 'rgb(128, 64, 64)', 'rgb(255, 128, 64)', 'rgb(0, 255, 0)', 'rgb(0, 128, 128)', 'rgb(0, 64, 128)', 'rgb(128, 128, 255)', 'rgb(128, 0, 64)', 'rgb(255, 0, 128)',\r\n 'rgb(128, 0, 0)', 'rgb(255, 128, 0)', 'rgb(0, 128, 0)', 'rgb(0, 128, 64)', 'rgb(0, 0, 255)', 'rgb(0, 0, 160)', 'rgb(128, 0, 128)', 'rgb(128, 0, 255)',\r\n 'rgb(64, 0, 0)', 'rgb(128, 64, 0)', 'rgb(0, 64, 0)', 'rgb(0, 64, 64)', 'rgb(0, 0, 128)', 'rgb(0, 0, 64)', 'rgb(64, 0, 64)', 'rgb(64, 0, 128)',\r\n];\r\n\r\n\r\n\r\n\r\nexport const HexColor = {\r\n RED: '#f60002',\r\n ORANGE: '#f06c34',\r\n YELLOW: '#FFD600',\r\n GREEN: '#75BC54',\r\n DARK: '#36404b'\r\n};\r\n\r\nexport const DefaultSize = {\r\n wellPage: 100\r\n}\r\n\r\nexport const DefaultShapes = ['Circle', 'Square', 'Triangle', 'Diamond'];\r\n\r\nexport const IsIEOrEdge = /msie\\s|trident\\/|edge\\//i;\r\n\r\nexport const EpochTimeParameters = [\r\n 'TimeStart', 'TimeEnd'\r\n];\r\n\r\nexport const CHART_MESSAGES = {\r\n en: {\r\n noData: 'No Data to render',\r\n pleaseSelectChannel: 'Please select Channel',\r\n pleaseSelectTreatment: 'Please select Treatment(s)',\r\n rendering: 'Rendering Data...',\r\n loading: 'Loading Data...'\r\n }\r\n};\r\n\r\nexport const CHART_SERIES_NAME = {\r\n comment: 'chart-comment-series',\r\n diagnostic: 'diagnostic',\r\n fdi: 'fdi',\r\n los: 'los'\r\n};\r\n\r\nexport const LIST_SHAPES = [\r\n { id: 'Circle', name: 'Circle' },\r\n { id: 'Square', name: 'Square' },\r\n { id: 'Triangle', name: 'Triangle' },\r\n { id: 'Diamond', name: 'Diamond' },\r\n];\r\nexport const DEFUALT_DESIGN_ACUTAL_SHAPES = [\r\n { id: 'Bar', name: 'Bar' },\r\n { id: 'Line', name: 'Line' },\r\n];\r\nexport const DEFAULT_DESIGN_COLOR = '#28a745';\r\nexport const DEFAULT_ACTUAL_COLOR = '#0000a0';\r\n\r\nexport const LOS_DEFAULTS = [\r\n { id: 'MinMaxStart', text: 'MinMaxStart', color: 'red' },\r\n { id: 'MinMaxEnd', text: 'MinMaxEnd', color: 'red' },\r\n];\r\n\r\nexport const DEFAULT_PIVOTPOINTS_GROUP_ID = ['MinMax'];\r\n\r\nexport const DIAGNOSTIC_DEFAULTS = [\r\n { id: 'Equalize', text: 'Equalize', color: 'limegreen' },\r\n { id: 'WellOpenTime', text: 'Well Open', color: 'red' },\r\n { id: 'StartStage', text: 'Stage Start', color: 'aqua' },\r\n { id: 'BallSeatTime', text: 'BallSeat', color: 'lime' },\r\n { id: 'BreakDownTime', text: 'Breakdown', color: 'blue' },\r\n { id: 'AcidStart', text: 'Acid Start', color: 'purple' },\r\n { id: 'AcidEnd', text: 'Acid End', color: 'purple' },\r\n { id: 'DesignRate', text: 'Design Rate', color: 'brown' },\r\n { id: 'DiverterStart', text: 'Diverter Start', color: 'olive' },\r\n { id: 'DiverterEnd', text: 'Diverter End', color: 'olive' },\r\n { id: 'EndStage', text: 'Stage End', color: 'aqua' },\r\n { id: 'InitialShutinPresTime', text: 'ISIP', color: 'orange' },\r\n { id: 'WellClose', text: 'Well Close', color: 'red' }\r\n];\r\n\r\nexport enum ENUM_DIAGNOSTIC_DEFAULTS {\r\n BreakDownTime = 'BreakDownTime',\r\n InitialShutinPresTime = 'InitialShutinPresTime',\r\n WellOpenTime = 'WellOpenTime',\r\n WellClose = 'WellClose',\r\n BallSeatTime = 'BallSeatTime',\r\n Equalize = 'Equalize',\r\n StartStage = 'StartStage',\r\n AcidStart = 'AcidStart',\r\n AcidEnd = 'AcidEnd',\r\n DesignRate = 'DesignRate',\r\n DiverterStart = 'DiverterStart',\r\n DiverterEnd = 'DiverterEnd',\r\n EndStage = 'EndStage',\r\n}\r\n\r\nexport enum ENUM_LOS_DEFAULTS {\r\n MinMaxStart = 'MinMaxStart',\r\n MinMaxEnd = 'MinMaxEnd',\r\n}\r\n\r\nexport enum ENUM_TREATMENT_COLUMNS {\r\n AveragePres = 'AveragePres',\r\n TimeStart = 'TimeStart',\r\n TimeEnd = 'TimeEnd'\r\n}\r\n\r\nexport const PLOT_TEMPLATE_TYPE = {\r\n FracproAI: 0,\r\n FracproXch: 1,\r\n User: 2,\r\n Company: 3\r\n};\r\n\r\nexport const TREATMENT_MONITOR_NUMBER = -10;\r\n\r\nexport const TREATMENT_TYPE = {\r\n 0: 'Treatment',\r\n 1: 'Monitoring',\r\n 2: 'DFIT',\r\n 3: 'Minifrac'\r\n};\r\n\r\nexport enum ENUM_TREATMENT_TYPE {\r\n Treatment = 'Treatment',\r\n Monitoring = 'Monitoring',\r\n DFIT = 'DFIT',\r\n Minifrac = 'Minifrac'\r\n}\r\n\r\nexport const USER_STORAGE = {\r\n fdiParam: 'user_fdi_param'\r\n}\r\n\r\nexport const DATA_FILES_EXT = '.inp,.csv,.pdf,.txt,.doc,.xls,.xlsx,.xml,.las';\r\n\r\nexport enum INPUT_DATA_KEY {\r\n realtimeData = 'realtimeData',\r\n fracproData = 'fracproData',\r\n equipmentData = 'equipmentData'\r\n}\r\n\r\nexport enum ENUM_COLOR_MODE {\r\n Random = 'Random',\r\n Flat = 'Flat',\r\n Gradient = 'Gradient'\r\n}\r\n\r\nexport const WELL_SEARCH_OPTIONS = [\r\n { id: 'state', name: 'State', default: true },\r\n { id: 'county', name: 'County', default: true },\r\n { id: 'pad', name: 'Pad', default: true },\r\n { id: 'formation', name: 'Formation', default: true },\r\n { id: 'serviceCompanyId', name: 'Service Company', default: true },\r\n { id: 'operatorId', name: 'Operator', default: true },\r\n { id: 'wellName', name: 'WellName' },\r\n { id: 'zipperGroup', name: 'ZipperGroup' },\r\n { id: 'landingPoint', name: 'LandingPoint' },\r\n { id: 'fleet', name: 'Fleet' },\r\n { id: 'country', name: 'Country' },\r\n { id: 'prospect', name: 'Prospect' },\r\n { id: 'tag', name: 'Tag' }\r\n];\r\n\r\nexport const PAD_SEARCH_OPTIONS = [\r\n { id: 'padName', name: 'Pad Name', default: true },\r\n { id: 'state', name: 'State', default: true },\r\n { id: 'county', name: 'County', default: true },\r\n { id: 'formation', name: 'Formation', default: true },\r\n { id: 'serviceId', name: 'Service', default: true },\r\n { id: 'operatorId', name: 'Operator', default: true },\r\n];\r\n\r\nexport const DEFAULT_INIT_TEMPLATE_NAME = 'Surf PRC';\r\nexport const DEFAULT_LAST_MIN_FILTER = 120;\r\nexport const DEFAULT_MONITOR_LAST_MIN_FILTER = 60; // min\r\nexport const DEFAULT_MONITOR_LAST_HR_FILTER = 1; // hr\r\nexport const LIMIT_CHANNELS_SELECTION = 12;\r\nexport const FDI_MARKER_RADIUS = 7;\r\n\r\nexport enum TIME_SETTING_TYPE {\r\n OffsetTime = 'Float',\r\n OffsetTimeLower = 'float',\r\n EpochTime = 'hh:mm',\r\n EpochTimeLowerCase = 'hh:mm'\r\n}\r\nexport type ChartTimeFormat = 'Float' | 'hh:mm' | '';\r\nexport const TIME_FORMAT_LIST = [\r\n {id: TIME_SETTING_TYPE.OffsetTimeLower, text: 'Job Time'},\r\n {id: TIME_SETTING_TYPE.EpochTimeLowerCase, text: 'Date Time'}\r\n];\r\n\r\nexport const INTERVAL_CHART_REALTIME = 5000;\r\nexport const INTERVAL_CHART_CHANNEL_REALTIME = 30000;\r\nexport const INTERVAL_CHART_COMMENT_REALTIME = 30000;\r\nexport const INTERVAL_CHECK_WELL_INPROGRESS = 10000;\r\nexport const INTERVAL_CHECK_TREATMENT_DATA = 10000;\r\nexport const INTERVAL_CHECK_PAD_DATA = INTERVAL_CHART_REALTIME;\r\nexport const INTERVAL_CHECK_PAD_INPROGRESS = 30000;\r\nexport const INTERVAL_CHECK_UPLOAD_DATA = 5000;\r\nexport const EXPIRED_TIME_CHECK_UPLOAD_DATA = 120000;\r\nexport const WELL_TOKEN_EXPIRED = 3600000; // milisecond\r\n\r\nexport const TIME_SETTINGS_TIME_OPTIONS = {\r\n realtimeExtends: [1, 2, 5, 10, 15],\r\n realtimeExtendsLabel: ['1 min', '2 min', '5 min', '10 min', '15 min'],\r\n treatment: [0, 30, 60, 90, 120, 180, 240, 300],\r\n treatmentLabel: ['All', '30 min', '60 min', '90 min', '120 min', '180 min', '240 min', '300 min'],\r\n monitor: [0, 60, 360, 720, 1440, 2880, 10080, 20160],\r\n monitorLabel: ['All', '1 hour', '6 hours', '12 hours', '1 day', '2 days', '1 week', '2 weeks'],\r\n defaultTreatment: '120 min',\r\n defaultMonitor: '1 hour'\r\n};\r\n\r\nexport const CHANNEL_FILTER_PROPS = ['wellId', 'treatmentId', 'cName', 'isBourdetDer', 'isSmoothData'];\r\n\r\nexport const isMonitorTreatmentNumber = (treatmentNumber) => treatmentNumber === -10;\r\n\r\nexport const CHART_OPTION = {\r\n useUTC: false\r\n};\r\n\r\nexport const PREFIX_PREDICTIVE_CHANNEL = 'predicted';\r\n\r\n// Dark mode\r\nexport enum ENUM_THEMES {\r\n Dark = 'Dark',\r\n Light = 'Light',\r\n}\r\n\r\nexport const THEMES = [\r\n { id: ENUM_THEMES.Dark, text: ENUM_THEMES.Dark, background: '#232323', color: 'white' },\r\n { id: ENUM_THEMES.Light, text: ENUM_THEMES.Light, background: 'white' },\r\n];\r\n\r\nexport const TREATMENT_UNIT_TYPE = {\r\n mdFormationTop: 'LENGTH_BIG_UNIT',\r\n mdFormationBottom: 'LENGTH_BIG_UNIT',\r\n tvdFormationTop: 'LENGTH_BIG_UNIT',\r\n tvdFormationBottom: 'LENGTH_BIG_UNIT',\r\n clusterLength: 'LENGTH_BIG_UNIT',\r\n avgClusterSpacing: 'LENGTH_BIG_UNIT',\r\n avgPerfTVD: 'LENGTH_BIG_UNIT',\r\n plugDepth: 'LENGTH_BIG_UNIT',\r\n perfSize: 'LENGTH_SMALL_UNIT',\r\n WellheadOpeningPressure: 'PRESSURE_UNIT',\r\n minPres: 'PRESSURE_UNIT',\r\n minFluidRate: 'PUMPRATE_BIG_UNIT',\r\n minRate: 'PUMPRATE_BIG_UNIT',\r\n maxPres: 'PRESSURE_UNIT',\r\n maxFluidRate: 'PUMPRATE_BIG_UNIT',\r\n maxRate: 'PUMPRATE_BIG_UNIT',\r\n maxProppantConcSurface: 'PUMPCONC_UNIT',\r\n avgProppantConcSurface: 'PUMPCONC_UNIT',\r\n totalN2StdVolume: 'HCVOL_1_UNIT',\r\n totalCO2Mass: 'MASS_SMALL_UNIT',\r\n hhpUsedFluid: 'POWER_UNIT',\r\n avgFractureWidth: 'LENGTH_SMALL_UNIT',\r\n BreakdownPres: 'PRESSURE_UNIT',\r\n BreakdownRate: 'PUMPRATE_BIG_UNIT',\r\n BreakdownVolume: 'VOLUME_1_UNIT',\r\n BallseatPressure: 'PRESSURE_UNIT',\r\n BallseatRate: 'PUMPRATE_BIG_UNIT',\r\n BallseatVolume: 'VOLUME_1_UNIT',\r\n pumpdownVolume: 'VOLUME_1_UNIT',\r\n averagePres: 'PRESSURE_UNIT',\r\n avgPres: 'PRESSURE_UNIT',\r\n avgRate: 'PUMPRATE_BIG_UNIT',\r\n avgSlurryReturnRate: 'PUMPRATE_BIG_UNIT',\r\n baseFluidVol: 'VOLUME_1_UNIT',\r\n totalVolume: 'VOLUME_1_UNIT',\r\n totalProppantMass: 'MASS_SMALL_UNIT',\r\n formationProppantMass: 'MASS_SMALL_UNIT',\r\n fractureGradient: 'PRESSGRAD_UNIT',\r\n isip: 'PRESSURE_UNIT',\r\n isiP5min: 'PRESSURE_UNIT',\r\n isiP10min: 'PRESSURE_UNIT',\r\n isiP15min: 'PRESSURE_UNIT',\r\n initialShutinPres: 'PRESSURE_UNIT',\r\n initialShutinPres1: 'PRESSURE_UNIT',\r\n initialShutinPres5: 'PRESSURE_UNIT',\r\n initialShutinPres10: 'PRESSURE_UNIT',\r\n initialShutinPres15: 'PRESSURE_UNIT',\r\n diagnosticISIP: 'PRESSURE_UNIT',\r\n diagnosticISIP5: 'PRESSURE_UNIT',\r\n diagnosticISIP10: 'PRESSURE_UNIT',\r\n diagnosticISIP15: 'PRESSURE_UNIT',\r\n closurePres: 'PRESSURE_UNIT',\r\n pumpDownMaxPress: 'PRESSURE_UNIT',\r\n pumpDownMaxRate: 'PUMPRATE_BIG_UNIT',\r\n diagFractureGradient: 'PRESSGRAD_UNIT',\r\n initialShutinPresBtm: 'PRESSURE_UNIT',\r\n btmMinPres: 'PRESSURE_UNIT',\r\n btmMaxPres: 'PRESSURE_UNIT',\r\n btmAveragePres: 'PRESSURE_UNIT',\r\n minProppantConcSurface: 'PUMPCONC_UNIT',\r\n desAverageRate: 'PUMPRATE_BIG_UNIT',\r\n desAveragePressure: 'PRESSURE_UNIT',\r\n volToDesRate: 'VOLUME_1_UNIT',\r\n desCleanVol: 'VOLUME_1_UNIT',\r\n desSlurryVol: 'VOLUME_1_UNIT',\r\n flushVol: 'VOLUME_1_UNIT',\r\n flushVolCalcTopPerf: 'VOLUME_1_UNIT',\r\n flushVolCalcBotPerf: 'VOLUME_1_UNIT',\r\n AnnulusPres: 'PRESSURE_UNIT',\r\n Annulus2Pres: 'PRESSURE_UNIT',\r\n presAtDesRate: 'PRESSURE_UNIT',\r\n proppantLadenVol: 'VOLUME_1_UNIT',\r\n producedWater: 'VOLUME_1_UNIT',\r\n fieldGas: 'HCVOL_2_UNIT',\r\n CNG: 'HCVOL_2_UNIT',\r\n plugType: 'PRESSURE_UNIT',\r\n OperatorMxPressure: 'PRESSURE_UNIT',\r\n estimatedPorePressure: 'PRESSURE_UNIT',\r\n dfitVolume: 'VOLUME_1_UNIT',\r\n closurePress: 'PRESSURE_UNIT',\r\n transmissibilitykh: 'COND_UNIT',\r\n estPermeability: 'PERM_SMALL_UNIT',\r\n pumpVol: 'VOLUME_1_UNIT',\r\n perfPress: 'PRESSURE_UNIT',\r\n NWBPress: 'PRESSURE_UNIT',\r\n BHPropConcatScreenOut: 'PUMPCONC_UNIT',\r\n topMD: 'LENGTH_BIG_UNIT',\r\n bottomMD: 'LENGTH_BIG_UNIT',\r\n topPerfMD: 'LENGTH_BIG_UNIT',\r\n bottomPerfMD: 'LENGTH_BIG_UNIT',\r\n topTVD: 'LENGTH_BIG_UNIT',\r\n bottomTVD: 'LENGTH_BIG_UNIT',\r\n size: 'LENGTH_SMALL_UNIT',\r\n density: 'PERFDENS_UNIT',\r\n mass: 'MASS_SMALL_UNIT',\r\n desMass: 'MASS_SMALL_UNIT',\r\n stMass: 'MASS_SMALL_UNIT',\r\n maxConcSurface: 'PUMPCONC_UNIT',\r\n}\r\n\r\nexport const FLUID_UNIT_TYPE = {\r\n volume: 'VOLUME_3_UNIT',\r\n desVol: 'VOLUME_3_UNIT'\r\n}\r\n\r\nexport const ADDITIVE_UNIT_TYPE = {\r\n stMass: 'MASS_SMALL_UNIT',\r\n mass: 'MASS_SMALL_UNIT',\r\n desMass: 'MASS_SMALL_UNIT',\r\n stVol: 'VOLUME_3_UNIT',\r\n desVol: 'VOLUME_3_UNIT',\r\n volume: 'VOLUME_3_UNIT'\r\n}\r\n\r\nexport const WELL_UNIT_TYPE = {\r\n kellyBushing: 'LENGTH_BIG_UNIT',\r\n measuredDepthMD: 'LENGTH_BIG_UNIT',\r\n measuredDepthTVD: 'LENGTH_BIG_UNIT',\r\n openHoleD: 'LENGTH_SMALL_UNIT',\r\n openHoleTopTVD: 'LENGTH_BIG_UNIT',\r\n openHoleTopMD: 'LENGTH_BIG_UNIT',\r\n openHoleBotTVD: 'LENGTH_BIG_UNIT',\r\n openHoleBotMD: 'LENGTH_BIG_UNIT',\r\n elevation: 'LENGTH_BIG_UNIT',\r\n avgPerfTVD: 'LENGTH_BIG_UNIT',\r\n maxTreatPres: 'PRESSURE_UNIT',\r\n totalN2StdVolume: 'STAGE_N2_VOLUME_VAR',\r\n totalCO2Mass: 'TotalCO2Mass',\r\n maxFluidRate: 'PUMPRATE_BIG_UNIT',\r\n avgTreatPres: 'PRESSURE_UNIT',\r\n baseFluidVol: 'VOLUME_1_UNIT',\r\n totalJobVolume: 'VOLUME_1_UNIT',\r\n totalProppantWt: 'MASS_SMALL_UNIT',\r\n hhpUsed: 'POWER_UNIT',\r\n treatingBottomholeTemperature : 'TEMP_UNIT',\r\n minPerfMD: 'LENGTH_BIG_UNIT',\r\n minPerfTVD: 'LENGTH_BIG_UNIT',\r\n maxPerfMD: 'LENGTH_BIG_UNIT',\r\n maxPerfTVD: 'LENGTH_BIG_UNIT',\r\n lateralLength: 'LENGTH_BIG_UNIT',\r\n topMD: 'LENGTH_BIG_UNIT',\r\n topTVD: 'LENGTH_BIG_UNIT',\r\n bottomMD: 'LENGTH_BIG_UNIT',\r\n bottomTVD: 'LENGTH_BIG_UNIT',\r\n topPerfMD: 'LENGTH_BIG_UNIT',\r\n bottomPerfMD: 'LENGTH_BIG_UNIT',\r\n ID: 'LENGTH_SMALL_UNIT',\r\n OD: 'LENGTH_SMALL_UNIT'\r\n}\r\n\r\nexport const DEFAULT_DIGIT_AFTER_DECIMAL = {\r\n avgPerfTVD: 1,\r\n lateralLength: 1,\r\n ID: 3, OD: 3, id: 3, od: 3,\r\n minPres: 0, maxPres: 0, avgPres: 0,\r\n minRate: 1, maxRate: 1, avgRate: 1,\r\n FracGradient: 3,\r\n isip: 0,\r\n isiP5min: 0,\r\n isiP10min: 0,\r\n isiP15min: 0,\r\n initialShutinPres: 0,\r\n initialShutinPres1: 0,\r\n initialShutinPres5: 0,\r\n initialShutinPres10: 0,\r\n initialShutinPres15: 0,\r\n diagnosticISIP: 0,\r\n diagnosticISIP5: 0,\r\n diagnosticISIP10: 0,\r\n diagnosticISIP15: 0,\r\n topPerfMD: 1, bottomPerfMD: 1,\r\n mass: 1, stMass: 1, topMD: 1, topTVD: 1, bottomMD: 1, bottomTVD: 1,\r\n desVol: 1, stVol: 1, volume: 1, fluidVol: 1,\r\n desMass: 1, maxConcSurface: 1,\r\n totalWeight: 1, totalStMass: 1,\r\n totalProppant: 1, totalProppantWt: 1\r\n}","export const COUNTRIES = [\r\n {\r\n id: 1,\r\n englishName: 'Afghanistan',\r\n localName: 'Afghanestan',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'AF',\r\n countryCallingCode: 93\r\n },\r\n {\r\n id: 2,\r\n englishName: 'Albania',\r\n localName: 'Shqiperia',\r\n region: 'Southern Europe',\r\n alpha2Code: 'AL',\r\n countryCallingCode: 355\r\n },\r\n {\r\n id: 3,\r\n englishName: 'Algeria',\r\n localName: 'Al Jaza\\'\\'ir',\r\n region: 'Northern Africa',\r\n alpha2Code: 'DZ',\r\n countryCallingCode: 213\r\n },\r\n {\r\n id: 4,\r\n englishName: 'American Samoa',\r\n localName: 'American Samoa',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'AS',\r\n countryCallingCode: 1684\r\n },\r\n {\r\n id: 5,\r\n englishName: 'Andorra',\r\n localName: 'Andorra',\r\n region: 'Southern Europe',\r\n alpha2Code: 'AD',\r\n countryCallingCode: 376\r\n },\r\n {\r\n id: 6,\r\n englishName: 'Angola',\r\n localName: 'Angola',\r\n region: 'Central Africa',\r\n alpha2Code: 'AO',\r\n countryCallingCode: 244\r\n },\r\n {\r\n id: 7,\r\n englishName: 'Anguilla',\r\n localName: 'Anguilla',\r\n region: 'Leeward Islands, Caribbean',\r\n alpha2Code: 'AI',\r\n countryCallingCode: 1264\r\n },\r\n {\r\n id: 8,\r\n englishName: 'Antarctica',\r\n localName: 'Antarctica',\r\n region: 'Antarctica',\r\n alpha2Code: 'AQ',\r\n countryCallingCode: 672\r\n },\r\n {\r\n id: 9,\r\n englishName: 'Antigua and Barbuda',\r\n localName: 'Antigua and Barbuda',\r\n region: 'Leeward Islands, Caribbean',\r\n alpha2Code: 'AG',\r\n countryCallingCode: 1268\r\n },\r\n {\r\n id: 10,\r\n englishName: 'Argentina',\r\n localName: 'Argentina',\r\n region: 'Southern South America',\r\n alpha2Code: 'AR',\r\n countryCallingCode: 54\r\n },\r\n {\r\n id: 11,\r\n englishName: 'Armenia',\r\n localName: 'Hayastan',\r\n region: 'Western Asia',\r\n alpha2Code: 'AM',\r\n countryCallingCode: 374\r\n },\r\n {\r\n id: 12,\r\n englishName: 'Aruba',\r\n localName: 'Aruba',\r\n region: 'Leeward Islands, Caribbean',\r\n alpha2Code: 'AW',\r\n countryCallingCode: 297\r\n },\r\n {\r\n id: 13,\r\n englishName: 'Australia',\r\n localName: 'Australia',\r\n region: 'Australia/Oceania',\r\n alpha2Code: 'AU',\r\n countryCallingCode: 61\r\n },\r\n {\r\n id: 14,\r\n englishName: 'Austria',\r\n localName: 'Österreich',\r\n region: 'Western Europe',\r\n alpha2Code: 'AT',\r\n countryCallingCode: 43\r\n },\r\n {\r\n id: 15,\r\n englishName: 'Azerbaijan',\r\n localName: 'Azarbaycan',\r\n region: 'Caucasus, Western Asia',\r\n alpha2Code: 'AZ',\r\n countryCallingCode: 994\r\n },\r\n {\r\n id: 16,\r\n englishName: 'Bahamas',\r\n localName: 'Bahamas',\r\n region: 'Caribbean',\r\n alpha2Code: 'BS',\r\n countryCallingCode: 1242\r\n },\r\n {\r\n id: 17,\r\n englishName: 'Bahrain',\r\n localName: 'Al Bahrayn',\r\n region: 'Arabian Peninsula, Middle East',\r\n alpha2Code: 'BH',\r\n countryCallingCode: 973\r\n },\r\n {\r\n id: 18,\r\n englishName: 'Bangladesh',\r\n localName: 'Bangladesh',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'BD',\r\n countryCallingCode: 880\r\n },\r\n {\r\n id: 19,\r\n englishName: 'Barbados',\r\n localName: 'Barbados',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'BB',\r\n countryCallingCode: 1246\r\n },\r\n {\r\n id: 20,\r\n englishName: 'Belarus',\r\n localName: 'Byelarus',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'BY',\r\n countryCallingCode: 375\r\n },\r\n {\r\n id: 21,\r\n englishName: 'Belgium',\r\n localName: 'Belgique/Belgie',\r\n region: 'Western Europe',\r\n alpha2Code: 'BE',\r\n countryCallingCode: 32\r\n },\r\n {\r\n id: 22,\r\n englishName: 'Belize',\r\n localName: 'Belize',\r\n region: 'Central America',\r\n alpha2Code: 'BZ',\r\n countryCallingCode: 501\r\n },\r\n {\r\n id: 23,\r\n englishName: 'Benin',\r\n localName: 'Benin',\r\n region: 'West Africa',\r\n alpha2Code: 'BJ',\r\n countryCallingCode: 229\r\n },\r\n {\r\n id: 24,\r\n englishName: 'Bermuda',\r\n localName: 'Bermuda',\r\n region: 'North America',\r\n alpha2Code: 'BM',\r\n countryCallingCode: 1441\r\n },\r\n {\r\n id: 25,\r\n englishName: 'Bhutan',\r\n localName: 'Bhutan',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'BT',\r\n countryCallingCode: 975\r\n },\r\n {\r\n id: 26,\r\n englishName: 'Bolivia',\r\n localName: 'Bolivia',\r\n region: 'Central South America',\r\n alpha2Code: 'BO',\r\n countryCallingCode: 591\r\n },\r\n {\r\n id: 27,\r\n englishName: 'Bosnia and Herzegovina',\r\n localName: 'Bosna i Hercegovina',\r\n region: 'Southern Europe',\r\n alpha2Code: 'BA',\r\n countryCallingCode: 387\r\n },\r\n {\r\n id: 28,\r\n englishName: 'Botswana',\r\n localName: 'Botswana',\r\n region: 'Southern Africa',\r\n alpha2Code: 'BW',\r\n countryCallingCode: 267\r\n },\r\n {\r\n id: 29,\r\n englishName: 'Brazil',\r\n localName: 'Brasil',\r\n region: 'Central Eastern South America',\r\n alpha2Code: 'BR',\r\n countryCallingCode: 55\r\n },\r\n {\r\n id: 30,\r\n englishName: 'Brunei Darussalam',\r\n localName: 'Negara Brunei Darussalam',\r\n region: 'Southeast Asia',\r\n alpha2Code: 'BN',\r\n countryCallingCode: 673\r\n },\r\n {\r\n id: 31,\r\n englishName: 'Bulgaria',\r\n localName: 'Bulgaria',\r\n region: 'Balkan, Eastern Europe',\r\n alpha2Code: 'BG',\r\n countryCallingCode: 359\r\n },\r\n {\r\n id: 32,\r\n englishName: 'Burkina Faso',\r\n localName: 'Burkina Faso',\r\n region: 'West Africa',\r\n alpha2Code: 'BF',\r\n countryCallingCode: 226\r\n },\r\n {\r\n id: 33,\r\n englishName: 'Burundi',\r\n localName: 'Burundi',\r\n region: 'Eastern Africa, African Great Lakes',\r\n alpha2Code: 'BI',\r\n countryCallingCode: 257\r\n },\r\n {\r\n id: 34,\r\n englishName: 'Cambodia',\r\n localName: 'Kampuchea',\r\n region: 'South-East Asia',\r\n alpha2Code: 'KH',\r\n countryCallingCode: 855\r\n },\r\n {\r\n id: 35,\r\n englishName: 'Cameroon',\r\n localName: 'Cameroon',\r\n region: 'Central Africa',\r\n alpha2Code: 'CM',\r\n countryCallingCode: 237\r\n },\r\n {\r\n id: 36,\r\n englishName: 'Canada',\r\n localName: 'Canada',\r\n region: 'North North America',\r\n alpha2Code: 'CA',\r\n countryCallingCode: 1\r\n },\r\n {\r\n id: 37,\r\n englishName: 'Cape Verde',\r\n localName: 'Cabo Verde',\r\n region: 'West Africa',\r\n alpha2Code: 'CV',\r\n countryCallingCode: 238\r\n },\r\n {\r\n id: 38,\r\n englishName: 'Cayman Islands',\r\n localName: 'Cayman Islands',\r\n region: 'Greater Antilles, Caribbean',\r\n alpha2Code: 'KY',\r\n countryCallingCode: 1345\r\n },\r\n {\r\n id: 39,\r\n englishName: 'Central African Republic',\r\n localName: 'Republique Centrafricaine',\r\n region: 'Central Africa',\r\n alpha2Code: 'CF',\r\n countryCallingCode: 236\r\n },\r\n {\r\n id: 40,\r\n englishName: 'Chad',\r\n localName: 'Tchad',\r\n region: 'Central Africa',\r\n alpha2Code: 'TD',\r\n countryCallingCode: 235\r\n },\r\n {\r\n id: 41,\r\n englishName: 'Chile',\r\n localName: 'Chile',\r\n region: 'Western South America',\r\n alpha2Code: 'CL',\r\n countryCallingCode: 56\r\n },\r\n {\r\n id: 42,\r\n englishName: 'China',\r\n localName: 'Zhong Guo',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'CN',\r\n countryCallingCode: 86\r\n },\r\n {\r\n id: 43,\r\n englishName: 'Christmas Island',\r\n localName: 'Christmas Island',\r\n region: 'Southeast Asia',\r\n alpha2Code: 'CX',\r\n countryCallingCode: 618\r\n },\r\n {\r\n id: 44,\r\n englishName: 'Cocos [Keeling] Islands',\r\n localName: 'Cocos [Keeling] Islands',\r\n region: 'South-East Asia, Australia',\r\n alpha2Code: 'CC',\r\n countryCallingCode: 618\r\n },\r\n {\r\n id: 45,\r\n englishName: 'Colombia',\r\n localName: 'Colombia',\r\n region: 'North West South America',\r\n alpha2Code: 'CO',\r\n countryCallingCode: 57\r\n },\r\n {\r\n id: 46,\r\n englishName: 'Comoros',\r\n localName: 'Comores',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'KM',\r\n countryCallingCode: 269\r\n },\r\n {\r\n id: 47,\r\n englishName: 'Democratic Republic of the Congo [Kinshasa]',\r\n localName: 'République Démocratique du Congo',\r\n region: 'Central Africa',\r\n alpha2Code: 'CD',\r\n countryCallingCode: 243\r\n },\r\n {\r\n id: 48,\r\n englishName: 'Congo, Republic of [Brazzaville]',\r\n localName: 'République du Congo',\r\n region: 'Central Africa',\r\n alpha2Code: 'CG',\r\n countryCallingCode: 242\r\n },\r\n {\r\n id: 49,\r\n englishName: 'Cook Islands',\r\n localName: 'Cook Islands',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'CK',\r\n countryCallingCode: 682\r\n },\r\n {\r\n id: 50,\r\n englishName: 'Costa Rica',\r\n localName: 'Costa Rica',\r\n region: 'Central America',\r\n alpha2Code: 'CR',\r\n countryCallingCode: 506\r\n },\r\n {\r\n id: 51,\r\n englishName: 'Ivory Coast',\r\n localName: 'Cote d\\'\\'Ivoire',\r\n region: 'West Africa',\r\n alpha2Code: 'CI',\r\n countryCallingCode: 225\r\n },\r\n {\r\n id: 52,\r\n englishName: 'Croatia',\r\n localName: 'Hrvatska',\r\n region: 'Southern Europe',\r\n alpha2Code: 'HR',\r\n countryCallingCode: 385\r\n },\r\n {\r\n id: 53,\r\n englishName: 'Cuba',\r\n localName: 'Cuba',\r\n region: 'Greater Antilles, Caribbean',\r\n alpha2Code: 'CU',\r\n countryCallingCode: 53\r\n },\r\n {\r\n id: 54,\r\n englishName: 'Cyprus',\r\n localName: 'Kibris, Kypros',\r\n region: 'Mediterranean, Western Asia',\r\n alpha2Code: 'CY',\r\n countryCallingCode: 357\r\n },\r\n {\r\n id: 55,\r\n englishName: 'Czech Republic',\r\n localName: 'Ceska Republika',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'CZ',\r\n countryCallingCode: 420\r\n },\r\n {\r\n id: 56,\r\n englishName: 'Denmark',\r\n localName: 'Danmark',\r\n region: 'Northern Europe',\r\n alpha2Code: 'DK',\r\n countryCallingCode: 45\r\n },\r\n {\r\n id: 57,\r\n englishName: 'Djibouti',\r\n localName: 'Djibouti',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'DJ',\r\n countryCallingCode: 253\r\n },\r\n {\r\n id: 58,\r\n englishName: 'Dominica',\r\n localName: 'Dominica',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'DM',\r\n countryCallingCode: 1767\r\n },\r\n {\r\n id: 59,\r\n englishName: 'Dominican Republic',\r\n localName: 'Dominicana, Republica',\r\n region: 'Greater Antilles, Caribbean',\r\n alpha2Code: 'DO',\r\n countryCallingCode: 1809\r\n },\r\n {\r\n id: 60,\r\n englishName: 'East Timor [Timor-Leste]',\r\n localName: 'Timor',\r\n region: 'South-East Asia',\r\n alpha2Code: 'TL',\r\n countryCallingCode: 670\r\n },\r\n {\r\n id: 61,\r\n englishName: 'Ecuador',\r\n localName: 'Ecuador',\r\n region: 'North West South America',\r\n alpha2Code: 'EC',\r\n countryCallingCode: 593\r\n },\r\n {\r\n id: 62,\r\n englishName: 'Egypt',\r\n localName: 'Misr',\r\n region: 'Africa, Middle East',\r\n alpha2Code: 'EG',\r\n countryCallingCode: 20\r\n },\r\n {\r\n id: 63,\r\n englishName: 'El Salvador',\r\n localName: 'El Salvador',\r\n region: 'Central America',\r\n alpha2Code: 'SV',\r\n countryCallingCode: 503\r\n },\r\n {\r\n id: 64,\r\n englishName: 'Equatorial Guinea',\r\n localName: 'Guinea Ecuatorial',\r\n region: 'Central Africa',\r\n alpha2Code: 'GQ',\r\n countryCallingCode: 240\r\n },\r\n {\r\n id: 65,\r\n englishName: 'Eritrea',\r\n localName: 'Hagere Ertra',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'ER',\r\n countryCallingCode: 291\r\n },\r\n {\r\n id: 66,\r\n englishName: 'Estonia',\r\n localName: 'Eesti Vabariik',\r\n region: 'Northern Europe',\r\n alpha2Code: 'EE',\r\n countryCallingCode: 372\r\n },\r\n {\r\n id: 67,\r\n englishName: 'Ethiopia',\r\n localName: 'Ityop\\'\\'iya',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'ET',\r\n countryCallingCode: 251\r\n },\r\n {\r\n id: 68,\r\n englishName: 'Falkland Islands',\r\n localName: 'Islas Malvinas',\r\n region: 'Southern South America',\r\n alpha2Code: 'FK',\r\n countryCallingCode: 500\r\n },\r\n {\r\n id: 69,\r\n englishName: 'Faroe Islands',\r\n localName: 'Foroyar',\r\n region: 'Northern Europe',\r\n alpha2Code: 'FO',\r\n countryCallingCode: 298\r\n },\r\n {\r\n id: 70,\r\n englishName: 'Fiji',\r\n localName: 'Fiji',\r\n region: 'Melanesia, Oceania',\r\n alpha2Code: 'FJ',\r\n countryCallingCode: 679\r\n },\r\n {\r\n id: 71,\r\n englishName: 'Finland',\r\n localName: 'Suomen Tasavalta',\r\n region: 'Northern Europe',\r\n alpha2Code: 'FI',\r\n countryCallingCode: 358\r\n },\r\n {\r\n id: 72,\r\n englishName: 'France',\r\n localName: 'France',\r\n region: 'Western Europe',\r\n alpha2Code: 'FR',\r\n countryCallingCode: 33\r\n },\r\n {\r\n id: 73,\r\n englishName: 'French Guiana',\r\n localName: 'Guyane',\r\n region: 'Northern South America',\r\n alpha2Code: 'GF',\r\n countryCallingCode: 594\r\n },\r\n {\r\n id: 74,\r\n englishName: 'French Polynesia',\r\n localName: 'Polynésie Française',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'PF',\r\n countryCallingCode: 689\r\n },\r\n {\r\n id: 75,\r\n englishName: 'French Southern Territories',\r\n localName: 'Terres Australes et Antarctiques Françaises',\r\n region: 'Southern South America, Antarctic',\r\n alpha2Code: 'TF',\r\n countryCallingCode: 262\r\n },\r\n {\r\n id: 76,\r\n englishName: 'Gabon',\r\n localName: 'Gabon',\r\n region: 'Central Africa',\r\n alpha2Code: 'GA',\r\n countryCallingCode: 241\r\n },\r\n {\r\n id: 77,\r\n englishName: 'Gambia',\r\n localName: 'The Gambia',\r\n region: 'West Africa',\r\n alpha2Code: 'GM',\r\n countryCallingCode: 220\r\n },\r\n {\r\n id: 78,\r\n englishName: 'Georgia',\r\n localName: 'Sak\\'\\'art\\'\\'velo',\r\n region: 'Western Asia',\r\n alpha2Code: 'GE',\r\n countryCallingCode: 995\r\n },\r\n {\r\n id: 79,\r\n englishName: 'Germany',\r\n localName: 'Deutschland',\r\n region: 'Western Europe',\r\n alpha2Code: 'DE',\r\n countryCallingCode: 49\r\n },\r\n {\r\n id: 80,\r\n englishName: 'Ghana',\r\n localName: 'Ghana',\r\n region: 'West Africa',\r\n alpha2Code: 'GH',\r\n countryCallingCode: 233\r\n },\r\n {\r\n id: 81,\r\n englishName: 'Gibraltar',\r\n localName: 'Gibraltar',\r\n region: 'Southern Europe',\r\n alpha2Code: 'GI',\r\n countryCallingCode: 350\r\n },\r\n {\r\n id: 82,\r\n englishName: 'Great Britain',\r\n localName: 'Great Britain',\r\n region: 'Northern Europe',\r\n alpha2Code: 'GB',\r\n countryCallingCode: 44\r\n },\r\n {\r\n id: 83,\r\n englishName: 'Greece',\r\n localName: 'Ellas or Ellada',\r\n region: 'Southern Europe',\r\n alpha2Code: 'GR',\r\n countryCallingCode: 30\r\n },\r\n {\r\n id: 84,\r\n englishName: 'Greenland',\r\n localName: 'Kalaallit Nunaat',\r\n region: 'North America',\r\n alpha2Code: 'GL',\r\n countryCallingCode: 299\r\n },\r\n {\r\n id: 85,\r\n englishName: 'Grenada',\r\n localName: 'Grenada',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'GD',\r\n countryCallingCode: 1473\r\n },\r\n {\r\n id: 86,\r\n englishName: 'Guadeloupe',\r\n localName: 'Guadeloupe',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'GP',\r\n countryCallingCode: 590\r\n },\r\n {\r\n id: 87,\r\n englishName: 'Guam',\r\n localName: 'Guam',\r\n region: 'Micronesia, Oceania',\r\n alpha2Code: 'GU',\r\n countryCallingCode: 1671\r\n },\r\n {\r\n id: 88,\r\n englishName: 'Guatemala',\r\n localName: 'Guatemala',\r\n region: 'Central America',\r\n alpha2Code: 'GT',\r\n countryCallingCode: 502\r\n },\r\n {\r\n id: 89,\r\n englishName: 'Guinea',\r\n localName: 'Guinee',\r\n region: 'West Africa',\r\n alpha2Code: 'GN',\r\n countryCallingCode: 224\r\n },\r\n {\r\n id: 90,\r\n englishName: 'Guinea-Bissau',\r\n localName: 'Guine-Bissau',\r\n region: 'West Africa',\r\n alpha2Code: 'GW',\r\n countryCallingCode: 245\r\n },\r\n {\r\n id: 91,\r\n englishName: 'Guyana',\r\n localName: 'Guyana',\r\n region: 'North Eastern South America',\r\n alpha2Code: 'GY',\r\n countryCallingCode: 592\r\n },\r\n {\r\n id: 92,\r\n englishName: 'Haiti',\r\n localName: 'Haiti',\r\n region: 'Greater Antilles, Caribbean',\r\n alpha2Code: 'HT',\r\n countryCallingCode: 509\r\n },\r\n {\r\n id: 93,\r\n englishName: 'Holy See',\r\n localName: 'Status Civitatis Vaticanæ',\r\n region: 'Southern Europe within Italy',\r\n alpha2Code: 'VA',\r\n countryCallingCode: 379\r\n },\r\n {\r\n id: 94,\r\n englishName: 'Honduras',\r\n localName: 'Honduras',\r\n region: 'Central America',\r\n alpha2Code: 'HN',\r\n countryCallingCode: 504\r\n },\r\n {\r\n id: 95,\r\n englishName: 'Hong Kong',\r\n localName: 'Xianggang',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'HK',\r\n countryCallingCode: 852\r\n },\r\n {\r\n id: 96,\r\n englishName: 'Hungary',\r\n localName: 'Magyarorszag',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'HU',\r\n countryCallingCode: 36\r\n },\r\n {\r\n id: 97,\r\n englishName: 'Iceland',\r\n localName: 'Lyoveldio Island',\r\n region: 'Northern Europe',\r\n alpha2Code: 'IS',\r\n countryCallingCode: 354\r\n },\r\n {\r\n id: 98,\r\n englishName: 'India',\r\n localName: 'Bharat',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'IN',\r\n countryCallingCode: 91\r\n },\r\n {\r\n id: 99,\r\n englishName: 'Indonesia',\r\n localName: 'Indonesia',\r\n region: 'Maritime South-East Asia',\r\n alpha2Code: 'ID',\r\n countryCallingCode: 62\r\n },\r\n {\r\n id: 100,\r\n englishName: 'Iran [Islamic Republic of)',\r\n localName: 'Iran',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'IR',\r\n countryCallingCode: 98\r\n },\r\n {\r\n id: 101,\r\n englishName: 'Iraq',\r\n localName: 'Iraq',\r\n region: 'Middle East, Western Asia',\r\n alpha2Code: 'IQ',\r\n countryCallingCode: 964\r\n },\r\n {\r\n id: 102,\r\n englishName: 'Ireland',\r\n localName: 'Éire',\r\n region: 'Northern Europe',\r\n alpha2Code: 'IE',\r\n countryCallingCode: 353\r\n },\r\n {\r\n id: 103,\r\n englishName: 'Israel',\r\n localName: 'Yisra\\'\\'el',\r\n region: 'Middle East, Western Asia',\r\n alpha2Code: 'IL',\r\n countryCallingCode: 972\r\n },\r\n {\r\n id: 104,\r\n englishName: 'Italy',\r\n localName: 'Italia',\r\n region: 'Southern Europe',\r\n alpha2Code: 'IT',\r\n countryCallingCode: 39\r\n },\r\n {\r\n id: 105,\r\n englishName: 'Jamaica',\r\n localName: 'Jamaica',\r\n region: 'Greater Antilles, Caribbean',\r\n alpha2Code: 'JM',\r\n countryCallingCode: 1876\r\n },\r\n {\r\n id: 106,\r\n englishName: 'Japan',\r\n localName: 'Nippon',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'JP',\r\n countryCallingCode: 81\r\n },\r\n {\r\n id: 107,\r\n englishName: 'Jordan',\r\n localName: 'Al Urdun',\r\n region: 'Middle East, Western Asia',\r\n alpha2Code: 'JO',\r\n countryCallingCode: 962\r\n },\r\n {\r\n id: 108,\r\n englishName: 'Kazakhstan',\r\n localName: 'Qazaqstan',\r\n region: 'Central Asia',\r\n alpha2Code: 'KZ',\r\n countryCallingCode: 7\r\n },\r\n {\r\n id: 109,\r\n englishName: 'Kenya',\r\n localName: 'Kenya',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'KE',\r\n countryCallingCode: 254\r\n },\r\n {\r\n id: 110,\r\n englishName: 'Kiribati',\r\n localName: 'Kiribati, Kiribas',\r\n region: 'Micronesia, Oceania',\r\n alpha2Code: 'KI',\r\n countryCallingCode: 686\r\n },\r\n {\r\n id: 111,\r\n englishName: 'Korea, Democratic People\\'\\'s Rep. [North Korea]',\r\n localName: 'Choson',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'KP',\r\n countryCallingCode: 850\r\n },\r\n {\r\n id: 112,\r\n englishName: 'Korea, Republic of [South Korea]',\r\n localName: 'Han-guk',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'KR',\r\n countryCallingCode: 82\r\n },\r\n {\r\n id: 113,\r\n englishName: 'Kuwait',\r\n localName: 'Al Kuwayt',\r\n region: 'Middle East, Western Asia',\r\n alpha2Code: 'KW',\r\n countryCallingCode: 965\r\n },\r\n {\r\n id: 114,\r\n englishName: 'Kyrgyzstan',\r\n localName: 'Kyrgyz Respublikasy',\r\n region: 'Central Asia',\r\n alpha2Code: 'KG',\r\n countryCallingCode: 996\r\n },\r\n {\r\n id: 115,\r\n englishName: 'Lao, People\\'\\'s Democratic Republic',\r\n localName: 'Lao',\r\n region: 'South-East Asia',\r\n alpha2Code: 'LA',\r\n countryCallingCode: 856\r\n },\r\n {\r\n id: 116,\r\n englishName: 'Latvia',\r\n localName: 'Latvija',\r\n region: 'Northern Europe',\r\n alpha2Code: 'LV',\r\n countryCallingCode: 371\r\n },\r\n {\r\n id: 117,\r\n englishName: 'Lebanon',\r\n localName: 'Lubnan',\r\n region: 'Middle East, Western Asia',\r\n alpha2Code: 'LB',\r\n countryCallingCode: 961\r\n },\r\n {\r\n id: 118,\r\n englishName: 'Lesotho',\r\n localName: 'Lesotho',\r\n region: 'Southern Africa',\r\n alpha2Code: 'LS',\r\n countryCallingCode: 266\r\n },\r\n {\r\n id: 119,\r\n englishName: 'Liberia',\r\n localName: 'Liberia',\r\n region: 'West Africa',\r\n alpha2Code: 'LR',\r\n countryCallingCode: 231\r\n },\r\n {\r\n id: 120,\r\n englishName: 'Libya',\r\n localName: 'Libiyah',\r\n region: 'Northern Africa',\r\n alpha2Code: 'LY',\r\n countryCallingCode: 218\r\n },\r\n {\r\n id: 121,\r\n englishName: 'Liechtenstein',\r\n localName: 'Liechtenstein',\r\n region: 'Western Europe',\r\n alpha2Code: 'LI',\r\n countryCallingCode: 423\r\n },\r\n {\r\n id: 122,\r\n englishName: 'Lithuania',\r\n localName: 'Lietuva',\r\n region: 'Northern Europe',\r\n alpha2Code: 'LT',\r\n countryCallingCode: 370\r\n },\r\n {\r\n id: 123,\r\n englishName: 'Luxembourg',\r\n localName: 'Luxembourg, Letzebuerg',\r\n region: 'Western Europe',\r\n alpha2Code: 'LU',\r\n countryCallingCode: 352\r\n },\r\n {\r\n id: 124,\r\n englishName: 'Macau',\r\n localName: 'Aomen',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'MO',\r\n countryCallingCode: 853\r\n },\r\n {\r\n id: 125,\r\n englishName: 'Macedonia, Rep. of',\r\n localName: 'Makedonija',\r\n region: 'Southern Europe',\r\n alpha2Code: 'MK',\r\n countryCallingCode: 389\r\n },\r\n {\r\n id: 126,\r\n englishName: 'Madagascar',\r\n localName: 'Madagascar',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'MG',\r\n countryCallingCode: 261\r\n },\r\n {\r\n id: 127,\r\n englishName: 'Malawi',\r\n localName: 'Malawi',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'MW',\r\n countryCallingCode: 265\r\n },\r\n {\r\n id: 128,\r\n englishName: 'Malaysia',\r\n localName: 'Malaysia',\r\n region: 'Southeast Asia',\r\n alpha2Code: 'MY',\r\n countryCallingCode: 60\r\n },\r\n {\r\n id: 129,\r\n englishName: 'Maldives',\r\n localName: 'Dhivehi Raajje',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'MV',\r\n countryCallingCode: 960\r\n },\r\n {\r\n id: 130,\r\n englishName: 'Mali',\r\n localName: 'Mali',\r\n region: 'West Africa',\r\n alpha2Code: 'ML',\r\n countryCallingCode: 223\r\n },\r\n {\r\n id: 131,\r\n englishName: 'Malta',\r\n localName: 'Malta',\r\n region: 'Southern Europe',\r\n alpha2Code: 'MT',\r\n countryCallingCode: 356\r\n },\r\n {\r\n id: 132,\r\n englishName: 'Marshall Islands',\r\n localName: 'Marshall Islands',\r\n region: 'Micronesia, Oceania',\r\n alpha2Code: 'MH',\r\n countryCallingCode: 692\r\n },\r\n {\r\n id: 133,\r\n englishName: 'Martinique',\r\n localName: 'Martinique',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'MQ',\r\n countryCallingCode: 596\r\n },\r\n {\r\n id: 134,\r\n englishName: 'Mauritania',\r\n localName: 'Muritaniyah',\r\n region: 'West Africa',\r\n alpha2Code: 'MR',\r\n countryCallingCode: 222\r\n },\r\n {\r\n id: 135,\r\n englishName: 'Mauritius',\r\n localName: 'Mauritius',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'MU',\r\n countryCallingCode: 230\r\n },\r\n {\r\n id: 136,\r\n englishName: 'Mayotte',\r\n localName: 'Mayotte',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'YT',\r\n countryCallingCode: 262\r\n },\r\n {\r\n id: 137,\r\n englishName: 'Mexico',\r\n localName: 'Estados Unidos Mexicanos',\r\n region: 'North America',\r\n alpha2Code: 'MX',\r\n countryCallingCode: 52\r\n },\r\n {\r\n id: 138,\r\n englishName: 'Micronesia, Federal States of',\r\n localName: 'Micronesia',\r\n region: 'Micronesia, Oceania',\r\n alpha2Code: 'FM',\r\n countryCallingCode: 691\r\n },\r\n {\r\n id: 139,\r\n englishName: 'Moldova, Republic of',\r\n localName: 'Moldova',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'MD',\r\n countryCallingCode: 373\r\n },\r\n {\r\n id: 140,\r\n englishName: 'Monaco',\r\n localName: 'Monaco',\r\n region: 'Southern Europe',\r\n alpha2Code: 'MC',\r\n countryCallingCode: 377\r\n },\r\n {\r\n id: 141,\r\n englishName: 'Mongolia',\r\n localName: 'Mongol Uls',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'MN',\r\n countryCallingCode: 976\r\n },\r\n {\r\n id: 142,\r\n englishName: 'Montenegro',\r\n localName: 'Crna Gora',\r\n region: 'Southern Europe',\r\n alpha2Code: 'ME',\r\n countryCallingCode: 382\r\n },\r\n {\r\n id: 143,\r\n englishName: 'Montserrat',\r\n localName: 'Montserrat',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'MS',\r\n countryCallingCode: 1664\r\n },\r\n {\r\n id: 144,\r\n englishName: 'Morocco',\r\n localName: 'Al Maghrib',\r\n region: 'Northern Africa',\r\n alpha2Code: 'MA',\r\n countryCallingCode: 212\r\n },\r\n {\r\n id: 145,\r\n englishName: 'Mozambique',\r\n localName: 'Mocambique',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'MZ',\r\n countryCallingCode: 258\r\n },\r\n {\r\n id: 146,\r\n englishName: 'Myanmar, Burma',\r\n localName: 'Myanma Naingngandaw',\r\n region: 'Southeast Asia',\r\n alpha2Code: 'MM',\r\n countryCallingCode: 95\r\n },\r\n {\r\n id: 147,\r\n englishName: 'Namibia',\r\n localName: 'Namibia',\r\n region: 'Southern Africa',\r\n alpha2Code: 'NA',\r\n countryCallingCode: 264\r\n },\r\n {\r\n id: 148,\r\n englishName: 'Nauru',\r\n localName: 'Nauru',\r\n region: 'Micronesia, Oceania',\r\n alpha2Code: 'NR',\r\n countryCallingCode: 674\r\n },\r\n {\r\n id: 149,\r\n englishName: 'Nepal',\r\n localName: 'Nepal',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'NP',\r\n countryCallingCode: 977\r\n },\r\n {\r\n id: 150,\r\n englishName: 'Netherlands',\r\n localName: 'Nederland/Holland',\r\n region: 'Western Europe',\r\n alpha2Code: 'NL',\r\n countryCallingCode: 31\r\n },\r\n {\r\n id: 151,\r\n englishName: 'Netherlands Antilles',\r\n localName: 'Nederlandse Antillen',\r\n region: 'Caribbean',\r\n alpha2Code: 'AN',\r\n countryCallingCode: 599\r\n },\r\n {\r\n id: 152,\r\n englishName: 'New Caledonia',\r\n localName: 'Nouvelle-Calédonie',\r\n region: 'Melanesia, Oceania',\r\n alpha2Code: 'NC',\r\n countryCallingCode: 687\r\n },\r\n {\r\n id: 153,\r\n englishName: 'New Zealand',\r\n localName: 'Aotearoa',\r\n region: 'Oceania; Australia',\r\n alpha2Code: 'NZ',\r\n countryCallingCode: 64\r\n },\r\n {\r\n id: 154,\r\n englishName: 'Nicaragua',\r\n localName: 'Nicaragua',\r\n region: 'Central America',\r\n alpha2Code: 'NI',\r\n countryCallingCode: 505\r\n },\r\n {\r\n id: 155,\r\n englishName: 'Niger',\r\n localName: 'Niger',\r\n region: 'West Africa',\r\n alpha2Code: 'NE',\r\n countryCallingCode: 227\r\n },\r\n {\r\n id: 156,\r\n englishName: 'Nigeria',\r\n localName: 'Nigeria',\r\n region: 'West Africa',\r\n alpha2Code: 'NG',\r\n countryCallingCode: 234\r\n },\r\n {\r\n id: 157,\r\n englishName: 'Niue',\r\n localName: 'Niue',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'NU',\r\n countryCallingCode: 683\r\n },\r\n {\r\n id: 158,\r\n englishName: 'Northern Mariana Islands',\r\n localName: 'Northern Mariana Islands',\r\n region: 'Micronesia, Oceania',\r\n alpha2Code: 'MP',\r\n countryCallingCode: 1670\r\n },\r\n {\r\n id: 159,\r\n englishName: 'Norway',\r\n localName: 'Norge',\r\n region: 'Northern Europe',\r\n alpha2Code: 'NO',\r\n countryCallingCode: 47\r\n },\r\n {\r\n id: 160,\r\n englishName: 'Oman',\r\n localName: 'Saltanat Uman',\r\n region: 'Middle East',\r\n alpha2Code: 'OM',\r\n countryCallingCode: 968\r\n },\r\n {\r\n id: 161,\r\n englishName: 'Pakistan',\r\n localName: 'Pakistan',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'PK',\r\n countryCallingCode: 92\r\n },\r\n {\r\n id: 162,\r\n englishName: 'Palau',\r\n localName: 'Belau',\r\n region: 'Micronesia, Oceania',\r\n alpha2Code: 'PW',\r\n countryCallingCode: 680\r\n },\r\n {\r\n id: 163,\r\n englishName: 'Palestinian territories',\r\n localName: 'Filastin',\r\n region: 'Middle East, Western Asia',\r\n alpha2Code: 'PS',\r\n countryCallingCode: 970\r\n },\r\n {\r\n id: 164,\r\n englishName: 'Panama',\r\n localName: 'Panama',\r\n region: 'Central America',\r\n alpha2Code: 'PA',\r\n countryCallingCode: 507\r\n },\r\n {\r\n id: 165,\r\n englishName: 'Papua New Guinea',\r\n localName: 'Papua Niu Gini',\r\n region: 'Maritime Southeast Asia, Melanesia, Oceania',\r\n alpha2Code: 'PG',\r\n countryCallingCode: 675\r\n },\r\n {\r\n id: 166,\r\n englishName: 'Paraguay',\r\n localName: 'Paraguay',\r\n region: 'Central South America',\r\n alpha2Code: 'PY',\r\n countryCallingCode: 595\r\n },\r\n {\r\n id: 167,\r\n englishName: 'Peru',\r\n localName: 'Peru',\r\n region: 'Western South America',\r\n alpha2Code: 'PE',\r\n countryCallingCode: 51\r\n },\r\n {\r\n id: 168,\r\n englishName: 'Philippines',\r\n localName: 'Pilipinas',\r\n region: 'Southeast Asia',\r\n alpha2Code: 'PH',\r\n countryCallingCode: 63\r\n },\r\n {\r\n id: 169,\r\n englishName: 'Pitcairn Island',\r\n localName: 'Pitcairn Island',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'PN',\r\n countryCallingCode: 870\r\n },\r\n {\r\n id: 170,\r\n englishName: 'Poland',\r\n localName: 'Polska',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'PL',\r\n countryCallingCode: 48\r\n },\r\n {\r\n id: 171,\r\n englishName: 'Portugal',\r\n localName: 'Portugal',\r\n region: 'Southern Europe',\r\n alpha2Code: 'PT',\r\n countryCallingCode: 351\r\n },\r\n {\r\n id: 172,\r\n englishName: 'Puerto Rico',\r\n localName: 'Puerto Rico',\r\n region: 'Greater Antilles, Caribbean',\r\n alpha2Code: 'PR',\r\n countryCallingCode: 1787\r\n },\r\n {\r\n id: 173,\r\n englishName: 'Qatar',\r\n localName: 'Dawlat Qatar',\r\n region: 'Arabian Peninsula, Middle East',\r\n alpha2Code: 'QA',\r\n countryCallingCode: 974\r\n },\r\n {\r\n id: 174,\r\n englishName: 'Reunion Island',\r\n localName: 'Ile de la Réunion',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'RE',\r\n countryCallingCode: 262\r\n },\r\n {\r\n id: 175,\r\n englishName: 'Romania',\r\n localName: 'Romania',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'RO',\r\n countryCallingCode: 40\r\n },\r\n {\r\n id: 176,\r\n englishName: 'Russian Federation',\r\n localName: 'Rossiya',\r\n region: 'Eastern Europe - Northern Asia',\r\n alpha2Code: 'RU',\r\n countryCallingCode: 7\r\n },\r\n {\r\n id: 177,\r\n englishName: 'Rwanda',\r\n localName: 'Rwanda',\r\n region: 'Eastern Africa, African Great Lakes',\r\n alpha2Code: 'RW',\r\n countryCallingCode: 250\r\n },\r\n {\r\n id: 178,\r\n englishName: 'Saint Kitts and Nevis',\r\n localName: '',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'KN',\r\n countryCallingCode: 1869\r\n },\r\n {\r\n id: 179,\r\n englishName: 'Saint Lucia',\r\n localName: 'Saint Lucia',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'LC',\r\n countryCallingCode: 1758\r\n },\r\n {\r\n id: 180,\r\n englishName: 'Saint Vincent and the Grenadines',\r\n localName: '',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'VC',\r\n countryCallingCode: 1784\r\n },\r\n {\r\n id: 181,\r\n englishName: 'Samoa',\r\n localName: 'Samoa',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'WS',\r\n countryCallingCode: 685\r\n },\r\n {\r\n id: 182,\r\n englishName: 'San Marino',\r\n localName: 'San Marino',\r\n region: 'Southern Europe within Italy',\r\n alpha2Code: 'SM',\r\n countryCallingCode: 378\r\n },\r\n {\r\n id: 183,\r\n englishName: 'Sao Tome and Principe',\r\n localName: 'Sao Tome e Principe',\r\n region: 'Central Africa',\r\n alpha2Code: 'ST',\r\n countryCallingCode: 239\r\n },\r\n {\r\n id: 184,\r\n englishName: 'Saudi Arabia',\r\n localName: 'Al Arabiyah as Suudiyah',\r\n region: 'Arabian Peninsula, Middle East',\r\n alpha2Code: 'SA',\r\n countryCallingCode: 966\r\n },\r\n {\r\n id: 185,\r\n englishName: 'Senegal',\r\n localName: 'Senegal',\r\n region: 'West Africa',\r\n alpha2Code: 'SN',\r\n countryCallingCode: 221\r\n },\r\n {\r\n id: 186,\r\n englishName: 'Serbia',\r\n localName: 'Srbija',\r\n region: 'Southern Europe',\r\n alpha2Code: 'RS',\r\n countryCallingCode: 381\r\n },\r\n {\r\n id: 187,\r\n englishName: 'Seychelles',\r\n localName: 'Seychelles',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'SC',\r\n countryCallingCode: 248\r\n },\r\n {\r\n id: 188,\r\n englishName: 'Sierra Leone',\r\n localName: 'Sierra Leone',\r\n region: 'West Africa',\r\n alpha2Code: 'SL',\r\n countryCallingCode: 232\r\n },\r\n {\r\n id: 189,\r\n englishName: 'Singapore',\r\n localName: 'Singapore',\r\n region: 'Southeast Asia',\r\n alpha2Code: 'SG',\r\n countryCallingCode: 65\r\n },\r\n {\r\n id: 190,\r\n englishName: 'Slovakia [Slovak Republic]',\r\n localName: 'Slovensko',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'SK',\r\n countryCallingCode: 421\r\n },\r\n {\r\n id: 191,\r\n englishName: 'Slovenia',\r\n localName: 'Slovenija',\r\n region: 'Southern Europe',\r\n alpha2Code: 'SI',\r\n countryCallingCode: 386\r\n },\r\n {\r\n id: 192,\r\n englishName: 'Solomon Islands',\r\n localName: 'Solomon Islands',\r\n region: 'Melanesia, Oceania',\r\n alpha2Code: 'SB',\r\n countryCallingCode: 677\r\n },\r\n {\r\n id: 193,\r\n englishName: 'Somalia',\r\n localName: 'Somalia',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'SO',\r\n countryCallingCode: 252\r\n },\r\n {\r\n id: 194,\r\n englishName: 'South Africa',\r\n localName: 'South Africa',\r\n region: 'Southern Africa',\r\n alpha2Code: 'ZA',\r\n countryCallingCode: 27\r\n },\r\n {\r\n id: 195,\r\n englishName: 'South Sudan',\r\n localName: 'South Sudan',\r\n region: 'East-Central Africa',\r\n alpha2Code: 'SS',\r\n countryCallingCode: 211\r\n },\r\n {\r\n id: 196,\r\n englishName: 'Spain',\r\n localName: 'España',\r\n region: 'Southern Europe',\r\n alpha2Code: 'ES',\r\n countryCallingCode: 34\r\n },\r\n {\r\n id: 197,\r\n englishName: 'Sri Lanka',\r\n localName: 'Sri Lanka',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'LK',\r\n countryCallingCode: 94\r\n },\r\n {\r\n id: 198,\r\n englishName: 'Sudan',\r\n localName: 'As-Sudan',\r\n region: 'Northern Africa',\r\n alpha2Code: 'SD',\r\n countryCallingCode: 249\r\n },\r\n {\r\n id: 199,\r\n englishName: 'Suriname',\r\n localName: 'Suriname',\r\n region: 'North-Eastern South America',\r\n alpha2Code: 'SR',\r\n countryCallingCode: 597\r\n },\r\n {\r\n id: 200,\r\n englishName: 'Swaziland',\r\n localName: 'Swaziland',\r\n region: 'Southern Africa',\r\n alpha2Code: 'SZ',\r\n countryCallingCode: 47\r\n },\r\n {\r\n id: 201,\r\n englishName: 'Sweden',\r\n localName: 'Sverige',\r\n region: 'Northern Europe',\r\n alpha2Code: 'SE',\r\n countryCallingCode: 46\r\n },\r\n {\r\n id: 202,\r\n englishName: 'Switzerland',\r\n localName: 'Schweiz [German], Suisse [French], Svizzera [Italian]',\r\n region: 'Western Europe',\r\n alpha2Code: 'CH',\r\n countryCallingCode: 41\r\n },\r\n {\r\n id: 203,\r\n englishName: 'Syria, Syrian Arab Republic',\r\n localName: 'Suriyah',\r\n region: 'Middle East, Western Asia',\r\n alpha2Code: 'SY',\r\n countryCallingCode: 963\r\n },\r\n {\r\n id: 204,\r\n englishName: 'Taiwan [Republic of China]',\r\n localName: 'T\\'\\'ai-wan',\r\n region: 'Eastern Asia',\r\n alpha2Code: 'TW',\r\n countryCallingCode: 886\r\n },\r\n {\r\n id: 205,\r\n englishName: 'Tajikistan',\r\n localName: 'Jumhurii Tojikiston',\r\n region: 'Central Asia',\r\n alpha2Code: 'TJ',\r\n countryCallingCode: 992\r\n },\r\n {\r\n id: 206,\r\n englishName: 'Tanzania; officially the United Republic of Tanzania',\r\n localName: 'Jamhuri ya Muungano wa Tanzania',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'TZ',\r\n countryCallingCode: 255\r\n },\r\n {\r\n id: 207,\r\n englishName: 'Thailand',\r\n localName: 'Prathet Thai',\r\n region: 'South-East Asia',\r\n alpha2Code: 'TH',\r\n countryCallingCode: 66\r\n },\r\n {\r\n id: 208,\r\n englishName: 'Tibet',\r\n localName: 'Bod',\r\n region: 'South-Central Asia',\r\n alpha2Code: 'XZ',\r\n countryCallingCode: 895\r\n },\r\n {\r\n id: 209,\r\n englishName: 'Timor-Leste [East Timor]',\r\n localName: 'Timor',\r\n region: 'Maritime South-East Asia',\r\n alpha2Code: 'TL',\r\n countryCallingCode: 670\r\n },\r\n {\r\n id: 210,\r\n englishName: 'Togo',\r\n localName: 'Republique Togolaise',\r\n region: 'West Africa',\r\n alpha2Code: 'TG',\r\n countryCallingCode: 228\r\n },\r\n {\r\n id: 211,\r\n englishName: 'Tokelau',\r\n localName: 'Tokelau',\r\n region: 'Oceania/Australia',\r\n alpha2Code: 'TK',\r\n countryCallingCode: 690\r\n },\r\n {\r\n id: 212,\r\n englishName: 'Tonga',\r\n localName: 'Tonga',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'TO',\r\n countryCallingCode: 676\r\n },\r\n {\r\n id: 213,\r\n englishName: 'Trinidad and Tobago',\r\n localName: 'Trinidad, Tobago',\r\n region: 'Northern South America, Caribbean',\r\n alpha2Code: 'TT',\r\n countryCallingCode: 1868\r\n },\r\n {\r\n id: 214,\r\n englishName: 'Tunisia',\r\n localName: 'Tunis',\r\n region: 'Northern Africa',\r\n alpha2Code: 'TN',\r\n countryCallingCode: 216\r\n },\r\n {\r\n id: 215,\r\n englishName: 'Turkey',\r\n localName: 'Turkiye',\r\n region: 'Southeastern Europe, Western Asia',\r\n alpha2Code: 'TR',\r\n countryCallingCode: 90\r\n },\r\n {\r\n id: 216,\r\n englishName: 'Turkmenistan',\r\n localName: 'Turkmenistan',\r\n region: 'Central Asia',\r\n alpha2Code: 'TM',\r\n countryCallingCode: 993\r\n },\r\n {\r\n id: 217,\r\n englishName: 'Turks and Caicos Islands',\r\n localName: 'Turks and Caicos Islands',\r\n region: 'Caribbean, parts of the Bahamas island chain.',\r\n alpha2Code: 'TC',\r\n countryCallingCode: 1649\r\n },\r\n {\r\n id: 218,\r\n englishName: 'Tuvalu',\r\n localName: 'Tuvalu',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'TV',\r\n countryCallingCode: 688\r\n },\r\n {\r\n id: 219,\r\n englishName: 'Ugandax',\r\n localName: 'Uganda',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'UG',\r\n countryCallingCode: 256\r\n },\r\n {\r\n id: 220,\r\n englishName: 'Ukraine',\r\n localName: 'Ukrayina',\r\n region: 'Eastern Europe',\r\n alpha2Code: 'UA',\r\n countryCallingCode: 380\r\n },\r\n {\r\n id: 221,\r\n englishName: 'United Arab Emirates',\r\n localName: 'Al Imarat al Arabiyah al Muttahidah',\r\n region: 'Arabian Peninsula, Middle East',\r\n alpha2Code: 'AE',\r\n countryCallingCode: 971\r\n },\r\n {\r\n id: 222,\r\n englishName: 'United Kingdom',\r\n localName: 'United Kingdom',\r\n region: 'Northern Europe',\r\n alpha2Code: 'GB',\r\n countryCallingCode: 44\r\n },\r\n {\r\n id: 223,\r\n englishName: 'United States',\r\n localName: 'United States',\r\n region: 'North America',\r\n alpha2Code: 'US',\r\n countryCallingCode: 1\r\n },\r\n {\r\n id: 224,\r\n englishName: 'Uruguay',\r\n localName: 'Republica Oriental del Uruguay',\r\n region: 'Central East South America',\r\n alpha2Code: 'UY',\r\n countryCallingCode: 598\r\n },\r\n {\r\n id: 225,\r\n englishName: 'Uzbekistan',\r\n localName: 'Uzbekiston Respublikasi',\r\n region: 'Central Asia',\r\n alpha2Code: 'UZ',\r\n countryCallingCode: 998\r\n },\r\n {\r\n id: 226,\r\n englishName: 'Vanuatu',\r\n localName: 'Vanuatu',\r\n region: 'Melanesia, Oceania',\r\n alpha2Code: 'VU',\r\n countryCallingCode: 678\r\n },\r\n {\r\n id: 227,\r\n englishName: 'Vatican City State [Holy See]',\r\n localName: 'Status Civitatis Vaticanæ',\r\n region: 'Southern Europe within Italy',\r\n alpha2Code: 'VA',\r\n countryCallingCode: 379\r\n },\r\n {\r\n id: 228,\r\n englishName: 'Venezuela',\r\n localName: 'Venezuela',\r\n region: 'Northern South America',\r\n alpha2Code: 'VE',\r\n countryCallingCode: 58\r\n },\r\n {\r\n id: 229,\r\n englishName: 'Vietnam',\r\n localName: 'Viet Nam',\r\n region: 'South-East Asia',\r\n alpha2Code: 'VN',\r\n countryCallingCode: 84\r\n },\r\n {\r\n id: 230,\r\n englishName: 'Virgin Islands [British]',\r\n localName: '',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'VG',\r\n countryCallingCode: 1284\r\n },\r\n {\r\n id: 231,\r\n englishName: 'Virgin Islands [U.S.]',\r\n localName: 'Virgin Islands',\r\n region: 'Lesser Antilles, Caribbean',\r\n alpha2Code: 'VI',\r\n countryCallingCode: 1340\r\n },\r\n {\r\n id: 232,\r\n englishName: 'Wallis and Futuna Islands',\r\n localName: 'Wallis et Futuna',\r\n region: 'Polynesia, Oceania',\r\n alpha2Code: 'WF',\r\n countryCallingCode: 681\r\n },\r\n {\r\n id: 233,\r\n englishName: 'Western Sahara',\r\n localName: 'Aṣ-Ṣaḥrā’ al-Gharbīyah',\r\n region: 'Northern Africa',\r\n alpha2Code: 'EH',\r\n countryCallingCode: 967\r\n },\r\n {\r\n id: 234,\r\n englishName: 'Yemen',\r\n localName: 'Al Yaman',\r\n region: 'Arabian Peninsula, Middle East',\r\n alpha2Code: 'YE',\r\n countryCallingCode: 260\r\n },\r\n {\r\n id: 235,\r\n englishName: 'Zambia',\r\n localName: 'Zambia',\r\n region: 'Eastern Africa',\r\n alpha2Code: 'ZM',\r\n countryCallingCode: 263\r\n },\r\n {\r\n id: 236,\r\n englishName: 'Europe',\r\n localName: 'Europe',\r\n region: 'Europe',\r\n alpha2Code: 'EU',\r\n countryCallingCode: 0\r\n }\r\n];\r\n\r\n","import { groupBy, isEmpty, maxBy, orderBy } from 'lodash';\r\nimport * as moment from 'moment';\r\nimport * as momentTz from 'moment-timezone';\r\nimport * as tzLookup from 'tz-lookup';\r\nimport { Subscription } from 'rxjs/Subscription';\r\nimport { DefaultColor } from './app.constants';\r\nimport { MomentZoneOffset } from 'moment';\r\nimport { CountryModel } from '../models/country.model';\r\nimport * as _ from 'lodash';\r\n\r\nconst randomColor = require('randomcolor');\r\n(window as any).moment = moment;\r\n(window as any).momentTz = momentTz;\r\n\r\nexport class Vector {\r\n x: number | null;\r\n y: number | null;\r\n\r\n constructor(x: number | null, y: number | null) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n}\r\n\r\nexport class Helper {\r\n\r\n /**\r\n * Unsubscribe\r\n * @param {Subscription[]} subs\r\n */\r\n public static unsubscribe(subs: Subscription[]) {\r\n subs.forEach((s: Subscription) => {\r\n s.unsubscribe();\r\n });\r\n }\r\n\r\n // public static lookupTimeZone(latitude: number, longitude: number): any {\r\n // return tzLookup(latitude, longitude);\r\n // }\r\n\r\n public static calculateVector(point1: Vector, point2: Vector, x: number): Vector {\r\n const res = new Vector(x, null);\r\n const dx = point2.x - point1.x;\r\n if (dx === 0) return res;\r\n const m = (point2.y - point1.y) / dx;\r\n const b = point1.y - (m * point1.x);\r\n res.y = m * x + b;\r\n return res;\r\n }\r\n\r\n public static findOffsetDataLinear(data: any[], targetTime: string): number {\r\n let left = null;\r\n let right = null;\r\n let target = null;\r\n const n = data.length;\r\n\r\n for (let i = 0; i < n; i++) {\r\n if (targetTime === data[i][0]) {\r\n target = data[i];\r\n break;\r\n }\r\n if (data[i][0] < targetTime) left = data[i];\r\n if (data[i][0] > targetTime && right === null) right = data[i];\r\n if (left && right) break;\r\n }\r\n\r\n if (target) return target[2];\r\n if (left && right) {\r\n const time1 = new Date(left[0]).getTime();\r\n const time2 = new Date(right[0]).getTime();\r\n const time = new Date(targetTime).getTime();\r\n const mid = Helper.calcLinear(left[2], right[2], time1, time2, time);\r\n return mid;\r\n }\r\n return null;\r\n }\r\n\r\n public static splitNumber(n: number, group: number, index?: boolean): number[] {\r\n if (group <= 1) return index ? [0] : [n];\r\n const d = Math.floor(n / group);\r\n const f = n % group;\r\n const res: number[] = [];\r\n\r\n for (let i = 0; i < group; i++) {\r\n if (index) {\r\n if (!i) res.push(0);\r\n else if (i <= f) res.push(res[i - 1] + d + 1);\r\n else res.push(res[i - 1] + d);\r\n } else {\r\n if (i < f) res.push(d + 1);\r\n else res.push(d);\r\n }\r\n }\r\n return res;\r\n }\r\n\r\n public static findOffsetData(data: any[], targetTime: string): number {\r\n // let leftData = null;\r\n // let rightData = null;\r\n let leftIdx = null;\r\n let rightIdx = null;\r\n\r\n const binaryOffsetData = (left: number, right: number) => {\r\n if (left > right) {\r\n leftIdx = left;\r\n rightIdx = right;\r\n return null;\r\n }\r\n\r\n const mid = Math.floor(left + (right - left) / 2);\r\n if (data[mid][0] === targetTime) return data[mid];\r\n if (data[mid][0] > targetTime) return binaryOffsetData(left, mid - 1);\r\n if (data[mid][0] < targetTime) return binaryOffsetData(mid + 1, right);\r\n };\r\n\r\n const target = binaryOffsetData(0, data.length - 1);\r\n if (target) return target[2];\r\n\r\n if (leftIdx !== null && rightIdx !== null) {\r\n const time = new Date(targetTime).getTime();\r\n let time1 = new Date(data[leftIdx][0]).getTime();\r\n let time2 = new Date(data[rightIdx][0]).getTime();\r\n\r\n // make sure time1 always < time and time2 always > time\r\n while (time1 > time) {\r\n time1 = new Date(data[--leftIdx][0]).getTime();\r\n }\r\n while (time2 < time) {\r\n time2 = new Date(data[++rightIdx][0]).getTime();\r\n }\r\n const linearTarget = Helper.calcLinear(data[leftIdx][2], data[rightIdx][2], time1, time2, time);\r\n return linearTarget;\r\n }\r\n return null;\r\n }\r\n\r\n static parseInt(value: string | number, defaultValue = 0, radix = 10): number {\r\n if (typeof value === 'number') return defaultValue;\r\n try {\r\n return parseInt(value, radix);\r\n } catch (e) {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n public static lookupTimeZone(country: string, offsetTime?: number): string {\r\n if (!country) return 'Etc/UTC';\r\n const countries = CountryModel.init();\r\n const existCountry = countries.find(x => {\r\n return x.englishName === country || x.localName === country;\r\n });\r\n if (!existCountry) {\r\n return 'Etc/UTC';\r\n }\r\n\r\n return this.parseCountryCodeOffsetToTz(existCountry.alpha2Code, -Math.round(offsetTime / 60));\r\n }\r\n // get timezone from country name & offsetTime\r\n public static parseCountryCodeOffsetToTz(countryCode: string, offsetTime?: number): string {\r\n let result: any;\r\n let timezones: MomentZoneOffset[];\r\n\r\n if (offsetTime !== null && offsetTime !== undefined) {\r\n timezones = moment.tz.zonesForCountry(countryCode, true);\r\n\r\n result = timezones\r\n .filter(tz => tz.offset === offsetTime)\r\n .map(x => x.name);\r\n } else {\r\n result = moment.tz.zonesForCountry(countryCode);\r\n }\r\n\r\n if (result && result.length) return result[0];\r\n return 'Etc/UTC';\r\n }\r\n\r\n public static parseTimeString(time: string): { hours: number, minutes: number } {\r\n const result = { hours: null, minutes: null };\r\n if (time) {\r\n const arr: any = time.split(':');\r\n if (arr && arr.length > 1) {\r\n const hours = Math.floor(arr[0]);\r\n const minutes = Math.floor(arr[1]);\r\n if (!isNaN(hours) && !isNaN(minutes)) {\r\n result.hours = hours;\r\n result.minutes = minutes;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public static addSecondTimeString(time: string, sec: number): string {\r\n return moment.utc(time).add({ seconds: sec }).format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n }\r\n\r\n public static getTimezoneOffset(currentTime: string | number, timezone: string, isUTC = false): number {\r\n if (typeof currentTime === 'string') {\r\n currentTime = currentTime.substring(0, 19);\r\n return moment.tz(currentTime, timezone).utcOffset();\r\n }\r\n if (currentTime < 1_000_000_000) currentTime = currentTime * 1000;\r\n if (!isUTC) return moment.tz(currentTime, timezone).utcOffset();\r\n\r\n const parseCurrentTime = moment.tz(currentTime, timezone).toISOString();\r\n return this.getTimezoneOffset(parseCurrentTime, timezone);\r\n }\r\n\r\n public static removeTimezoneTime(time: number, timezone: string): number {\r\n const offset = Helper.getTimezoneOffset(time, timezone, true) * 60 * 1000;\r\n return time - offset;\r\n }\r\n\r\n public static addTimezoneTime(currentTime: number, time: number, timezone: string): number {\r\n const offset = Helper.getTimezoneOffset(currentTime + time, timezone) * 60 * 1000;\r\n return time + offset;\r\n }\r\n\r\n public static parseDateTimeString(time: string, setSecond?: number): number {\r\n if (setSecond !== null) return moment(time).set('seconds', setSecond).unix();\r\n return moment(time).unix();\r\n }\r\n\r\n public static floorDataTimeString(time: string, timezone: string): number {\r\n return moment.tz(time, timezone).set('seconds', 0).unix();\r\n }\r\n\r\n public static ceilDataTimeString(time: string, timezone: string): number {\r\n if (moment(time).second() === 0) return moment.tz(time, timezone).unix();\r\n return moment.tz(time, timezone).set('seconds', 60).unix();\r\n }\r\n\r\n public static toTimeString(time: number) {\r\n return this.toMomentString(time, 'HH:mm');\r\n }\r\n\r\n public static isSameSet(model1: T, model2: T): boolean {\r\n if (!model1 && !model2) return true;\r\n if (model1 && !model2) return false;\r\n if (!model1 && model2) return false;\r\n return true;\r\n }\r\n\r\n public static isSameSetData(data1, data2): boolean {\r\n if (!Helper.isSameSet(data1, data2)) return false;\r\n return data1 === data2;\r\n }\r\n\r\n public static toDateTimeString(time: number, setSecond?: number): string {\r\n if (!isNaN(setSecond)) {\r\n return moment(time).set('second', setSecond).utc().toISOString();\r\n }\r\n return moment(time).utc().toISOString();\r\n }\r\n\r\n public static concatTimeString(datetime: string, second: number): string {\r\n const time = new Date(datetime).getTime() + second * 1000;\r\n return this.toDateTimeString(time);\r\n }\r\n\r\n public static toDateTimeStringRemoveTimezone(time: number, timezone: number): string {\r\n const getTime = new Date(time).getTime() - (timezone * 60 * 1000);\r\n return moment(getTime).utc().toISOString();\r\n }\r\n\r\n public static toMomentString(time: number, format: string) {\r\n if (!time || isNaN(time)) return '';\r\n return moment(time).utc().format(format);\r\n }\r\n\r\n public static addTimestampToString(datetime, timestamp) {\r\n const getTime = new Date(datetime).getTime();\r\n return moment(getTime + timestamp).utc().toISOString();\r\n }\r\n\r\n public static insertString(text: string, insertText: string, index: number): string {\r\n const n = index >= 0 ? index : text.length - Math.abs(index);\r\n return text.substr(0, n) + insertText + text.substr(n);\r\n }\r\n\r\n public static mapDateTimeString(timestamp: string | any, setSecond?: number): string {\r\n if (typeof timestamp === 'string') {\r\n if (!isNaN(setSecond)) return moment(timestamp).set('second', setSecond).utc().toISOString();\r\n return moment(timestamp).utc().toISOString();\r\n } else {\r\n if (!isNaN(setSecond)) return timestamp.set('second', setSecond).utc().toISOString();\r\n return timestamp.utc().toISOString();\r\n }\r\n }\r\n\r\n public static mapDateTimeUTCString(timestamp: string | any, timezone: string, setHour?: number): string {\r\n if (typeof timestamp === 'string') {\r\n timestamp = timestamp.substring(0, timestamp.length - 1);\r\n if (setHour != null || setHour !== undefined) return moment.tz(timestamp, timezone).set('hours', setHour).set('minutes', 0).set('seconds', 0).utc().format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n return moment.tz(timestamp, timezone).utc().format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n } else {\r\n const timestampString = timestamp.format('YYYY-MM-DDTHH:mm:ss');\r\n if (setHour != null || setHour !== undefined) return moment.tz(timestampString, timezone).set('hours', setHour).set('minutes', 0).set('seconds', 0).utc().format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n return moment.tz(timestampString, timezone).utc().format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n }\r\n }\r\n\r\n public static floorTimestamp(timestamp: number) {\r\n return Math.floor(timestamp / 60_000) * 60_000;\r\n }\r\n\r\n public static floorTimestampToString(timestamp: number, timeZone?: string) {\r\n if (!timeZone) {\r\n return moment.unix(timestamp).utc().set('second', 0).toISOString();\r\n }\r\n else {\r\n return moment.unix(timestamp).utc().set('second', 0).tz(timeZone).format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n }\r\n }\r\n\r\n public static ceilTimestamp(timestamp: number) {\r\n const d = timestamp / 60_000;\r\n const f = Math.floor(timestamp / 60_000);\r\n if (d > 0.01) return (f + 1) * 60_000;\r\n return f * 60_000;\r\n }\r\n\r\n public static ceilTimestampToString(timestamp: number, timeZone?: string): string {\r\n if (!timeZone) {\r\n if (moment.unix(timestamp).second() === 0) return moment.unix(timestamp).utc().toISOString();\r\n return moment.unix(timestamp).utc().set('second', 60).toISOString();\r\n }\r\n else {\r\n if (moment.unix(timestamp).seconds() === 0) return moment.unix(timestamp).utc().tz(timeZone).format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n return moment.unix(timestamp).utc().set('second', 60).tz(timeZone).format('YYYY-MM-DDTHH:mm:ss') + 'Z';\r\n }\r\n }\r\n\r\n public static mapDateTimeTimestamp(timestamp: string | number | any, setSecond?: number): number {\r\n if (typeof timestamp === 'string') return moment(timestamp).utc().valueOf();\r\n if (typeof timestamp === 'number') return timestamp;\r\n else {\r\n if (!isNaN(setSecond)) {\r\n return timestamp.set('second', 0).utc().valueOf();\r\n }\r\n return timestamp.utc().valueOf();\r\n }\r\n }\r\n\r\n public static setTimeOnDate(timestamp: number, hours, minutes, isDST?: boolean, offsetHour?: number) {\r\n let result = timestamp;\r\n const seconds = moment(timestamp).second();\r\n const dayTime = moment(timestamp).utc().startOf('day');\r\n if (isDST) {\r\n // forward or backward offset hour\r\n dayTime.hour(hours + offsetHour);\r\n } else {\r\n dayTime.hour(hours);\r\n }\r\n dayTime.minute(minutes);\r\n dayTime.second(seconds);\r\n result = dayTime.valueOf();\r\n return result;\r\n }\r\n\r\n public static setEndTimeOnDate(startTimestamp: number, endTimestamp: number, startTime: string, endTime: string) {\r\n let result = startTimestamp;\r\n // ideally case is calculated with startTimestamp and endTimestamp are in the same day\r\n const startMoment = moment(startTime, 'HH:mm');\r\n const endMoment = moment(endTime, 'HH:mm');\r\n const startDayTime = moment(startTimestamp).utc().startOf('day');\r\n const endDayTime = moment(endTimestamp).utc().startOf('day');\r\n const startMomentHour = startMoment.get('hour');\r\n const endMomentHour = endMoment.get('hour');\r\n startDayTime.set('hour', startMomentHour);\r\n startDayTime.set('minute', startMoment.get('minute'));\r\n endDayTime.set('hour', endMomentHour);\r\n endDayTime.set('minute', endMoment.get('minute'));\r\n let durationMinutes = endDayTime.diff(startDayTime, 'minutes');\r\n // in case startTimestamp and endTimestamp are NOT in the same day\r\n // and the endTimestamp moved to new day but the end time set value should be applied for the previous day (23h->24h)\r\n if (endMomentHour >= startMomentHour && endMomentHour < 24) {\r\n const endDayTimeByStartTime = moment(startTimestamp).utc().startOf('day');\r\n endDayTimeByStartTime.set('hour', endMomentHour);\r\n endDayTimeByStartTime.set('minute', endMoment.get('minute'));\r\n durationMinutes = endDayTimeByStartTime.diff(startDayTime, 'minutes');\r\n }\r\n // case DST happened\r\n if (durationMinutes < 0) {\r\n durationMinutes = durationMinutes + 60;\r\n }\r\n // if still less than 0 then invalid input\r\n if (durationMinutes > 0) {\r\n startDayTime.add(durationMinutes, 'minute');\r\n result = startDayTime.valueOf();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public static concatString(arr: (string | undefined | null)[], joiner: string): string {\r\n let res = '';\r\n const n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n if (arr[i] === undefined || arr[i] === null) continue;\r\n if (i !== 0) res += joiner;\r\n res += arr[i];\r\n }\r\n return res.trim();\r\n }\r\n\r\n public static randomHexColor() {\r\n const color = randomColor({\r\n luminosity: 'bright'\r\n });\r\n return color;\r\n }\r\n\r\n public static saveFileText(content, name: string, ext: string = 'txt', appendTime?: boolean) {\r\n const file = new Blob([content], { type: 'text/plain;charset=utf-8' });\r\n const fileName = appendTime ? (name + '_' + new Date().getTime() + '.' + ext) : name + '.' + ext;\r\n saveAs(file, fileName);\r\n }\r\n\r\n public static isNumberic(value) {\r\n if (typeof value === 'string') {\r\n value = value.trim();\r\n }\r\n return value !== null && value !== '' && typeof Math.floor(value) === 'number' && !isNaN(Math.floor(value));\r\n }\r\n\r\n public static getValidUnit(unit: string, isWrap?: boolean): string {\r\n const trash = ['(', ')'];\r\n let result = '';\r\n if (unit && typeof unit === 'string') {\r\n unit = unit.trim();\r\n let arrStr = unit.split('');\r\n arrStr = arrStr.filter(str => {\r\n return !trash.includes(str);\r\n });\r\n result = arrStr.join('');\r\n if (isWrap) {\r\n result = `(${result})`;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public static isDST(datetime) {\r\n const january = new Date(datetime.getFullYear(), 0, 1).getTimezoneOffset();\r\n const july = new Date(datetime.getFullYear(), 6, 1).getTimezoneOffset();\r\n return Math.max(january, july) !== datetime.getTimezoneOffset();\r\n }\r\n\r\n public static convertDateToUTC(date) {\r\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n }\r\n\r\n public static getRandomInt(min, max) {\r\n min = Math.ceil(min);\r\n max = Math.floor(max);\r\n return Math.floor(Math.random() * (max - min)) + min;\r\n }\r\n\r\n public static getRandomColor() {\r\n const colors = DefaultColor;\r\n const index = this.getRandomInt(0, colors.length);\r\n return colors[index];\r\n }\r\n\r\n public static convertSecToMin(value: number) {\r\n let result = null;\r\n // convert to number incase input is string number\r\n value = value * 1;\r\n if (typeof value === 'number' && !isNaN(value)) {\r\n value = value / 60;\r\n result = parseFloat(value.toFixed(3));\r\n }\r\n return result;\r\n }\r\n\r\n public static convertMinToSec(value: number | string) {\r\n if (!value) return 0;\r\n if (typeof value === 'string') {\r\n try {\r\n const cast = parseFloat(value);\r\n return cast * 60;\r\n } catch (e) {\r\n return 0;\r\n }\r\n }\r\n return value * 60;\r\n }\r\n\r\n\r\n public static handleShowHighestByTreatmentId(listItems) {\r\n if (!isEmpty(listItems)) {\r\n const gbw = groupBy(listItems, 'wellId');\r\n const trtMaxById = [];\r\n Object.values(gbw).map(treatments => {\r\n const maxItem = maxBy(treatments, 'treatmentId');\r\n if (maxItem) {\r\n trtMaxById.push(maxItem);\r\n }\r\n });\r\n return orderBy(trtMaxById, 'treatmentId', 'desc');\r\n }\r\n return [];\r\n }\r\n\r\n private static getProp(data, props) {\r\n return props.length === 1 ? data[props[0]] : this.getProp(data[props[0]], props.slice(1));\r\n }\r\n\r\n private static readProp(data, prop: string) {\r\n const split = prop.split('.');\r\n return this.getProp(data, split);\r\n }\r\n\r\n public static getList(data, prop: string, defaultList = []) {\r\n if (!data) return defaultList;\r\n const read = this.readProp(data, prop);\r\n if (!read || !read.length) return defaultList;\r\n return read;\r\n }\r\n\r\n public static findInMultiList(listOfList, prop: string, value) {\r\n for (const list of listOfList) {\r\n for (const i of list) {\r\n const split = prop.split('.');\r\n const read = this.getProp(i, split);\r\n if (read === value) return i;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private static getListData(data, defaultData, targetProp, toProps) {\r\n const read = this.readProp(data, targetProp);\r\n if (!read) return defaultData;\r\n const res: any = {};\r\n for (const p of toProps) {\r\n res[p] = read[p] ? read[p] : defaultData[p];\r\n }\r\n return res;\r\n }\r\n\r\n public static findMultiProp(data1, data2, props: string[]) {\r\n if (!data1 || !data2) return false;\r\n for (const i of props) {\r\n if (!data1[i] && !data2[i]) continue;\r\n if (data1[i] !== data2[i]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n public static filterMulti(data1, data2, props: string[]): boolean {\r\n if (!data1 || !data2) {\r\n return false;\r\n }\r\n\r\n for (const i of props) {\r\n if (!data1[i] && !data2[i]) continue;\r\n if (data1[i] !== data2[i]) return false;\r\n }\r\n return true;\r\n }\r\n\r\n public static calcLinear(X1, X2, Y1, Y2, Y): number {\r\n return (Y - Y1) / (Y2 - Y1) * (X2 - X1) + X1;\r\n }\r\n\r\n public static filterInRange(data: number, start: number, end: number, includeEqual = true): boolean {\r\n if (includeEqual) return data >= start && data <= end;\r\n return data > start && data < end;\r\n }\r\n\r\n public static convertMinToTimestamp(minValue: number, baseTimeStampSec: number): number {\r\n // minValue is minute value - bastTimeStamp is up to second\r\n return (minValue * 60 + baseTimeStampSec) * 1000;\r\n }\r\n\r\n public static createListOf(value, amount: number = 0) {\r\n if (!amount) return [];\r\n const res: any = [];\r\n for (let i = 0; i < amount; i++) {\r\n res.push(value);\r\n }\r\n return res;\r\n }\r\n\r\n public static isArrayEqual(x, y) {\r\n return isEmpty(_.difference(x, y)) && isEmpty(_.difference(y, x));\r\n }\r\n\r\n public static compareList(arr: T[], brr: T[], compareIndex?: boolean): boolean {\r\n if (!arr.length && brr.length) return false;\r\n if (arr.length && !brr.length) return false;\r\n\r\n if (!compareIndex) {\r\n for (const a of arr) {\r\n const find = brr.includes(a);\r\n if (!find) return false;\r\n }\r\n for (const b of brr) {\r\n const find = arr.includes(b);\r\n if (!find) return false;\r\n }\r\n return true;\r\n } else {\r\n if (arr.length !== brr.length) return false;\r\n const length = arr.length || brr.length;\r\n for (let i = 0; i < length; i++) {\r\n if (arr[i] !== brr[i]) return false;\r\n }\r\n return true;\r\n }\r\n }\r\n}\r\n","export enum TimerState {\r\n idle = 0,\r\n running = 1,\r\n paused = 2,\r\n resumed = 3\r\n}\r\n\r\nexport class IntervalTimer {\r\n timerId: number;\r\n timeoutId: number;\r\n startTime: number;\r\n remaining: number = 0;\r\n state: number = TimerState.idle;\r\n callback: any;\r\n interval: number;\r\n pauseTime: number = 0;\r\n delayTime: number = 0;\r\n\r\n constructor(callback, interval) {\r\n this.callback = callback;\r\n this.interval = interval;\r\n this.startTime = new Date().getTime();\r\n this.timerId = window.setInterval(callback, interval);\r\n this.state = TimerState.running;\r\n this.pauseTime = 0;\r\n this.delayTime = 0;\r\n }\r\n\r\n pause() {\r\n if (this.state !== TimerState.running) {\r\n return;\r\n }\r\n\r\n this.pauseTime = new Date().getTime();\r\n this.remaining = this.interval - (this.pauseTime - this.startTime);\r\n window.clearInterval(this.timerId);\r\n this.state = TimerState.paused;\r\n }\r\n\r\n resume() {\r\n if (this.state !== TimerState.paused) return;\r\n\r\n this.state = TimerState.resumed;\r\n this.timeoutId = window.setTimeout(() => this.timeoutCallback(), this.remaining);\r\n }\r\n\r\n timeoutCallback() {\r\n if (this.state !== TimerState.resumed) return;\r\n // run callback\r\n this.callback();\r\n\r\n this.startTime = new Date().getTime();\r\n this.delayTime = this.startTime - this.pauseTime;\r\n this.timerId = window.setInterval(this.callback, this.interval);\r\n this.state = TimerState.running;\r\n }\r\n\r\n stop() {\r\n window.clearInterval(this.timerId);\r\n window.clearTimeout(this.timeoutId);\r\n }\r\n}\r\n","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\"","module.exports = \"/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This is a starting point where we declare the maps of themes and globally available functions/mixins\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/**\\n * This mixin generates keyfames.\\n * Because of all keyframes can't be scoped,\\n * we need to puts unique name in each btn-pulse call.\\n */\\n/*\\n\\nAccording to the specification (https://www.w3.org/TR/css-scoping-1/#host-selector)\\n:host and :host-context are pseudo-classes. So we assume they could be combined,\\nlike other pseudo-classes, even same ones.\\nFor example: ':nth-of-type(2n):nth-of-type(even)'.\\n\\nIdeal solution would be to prepend any selector with :host-context([dir=rtl]).\\nThen nebular components will behave as an html element and respond to [dir] attribute on any level,\\nso direction could be overridden on any component level.\\n\\nImplementation code:\\n\\n@mixin nb-rtl() {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n @at-root {selector-append(':host-context([dir=rtl])', &)} {\\n @content;\\n }\\n}\\n\\nAnd when we call it somewhere:\\n\\n:host {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n:host-context(...) {\\n .some-class {\\n @include nb-rtl() {\\n ...\\n }\\n }\\n}\\n\\nResult will look like:\\n\\n:host-context([dir=rtl]):host .some-class {\\n ...\\n}\\n:host-context([dir=rtl]):host-context(...) .some-class {\\n ...\\n}\\n\\n*\\n Side note:\\n :host-context():host selector are valid. https://lists.w3.org/Archives/Public/www-style/2015Feb/0305.html\\n\\n :host-context([dir=rtl]):host-context(...) should match any permutation,\\n so order is not important.\\n*\\n\\n\\nCurrently, there're two problems with this approach:\\n\\nFirst, is that we can't combine :host, :host-context. Angular bugs #14349, #19199.\\nFor the moment of writing, the only possible way is:\\n:host {\\n :host-context(...) {\\n ...\\n }\\n}\\nIt doesn't work for us because mixin could be called somewhere deeper, like:\\n:host {\\n p {\\n @include nb-rtl() { ... }\\n }\\n}\\nWe are not able to go up to :host level to place content passed to mixin.\\n\\nThe second problem is that we only can be sure that we appending :host-context([dir=rtl]) to another\\n:host/:host-context pseudo-class when called in theme files (*.theme.scss).\\n *\\n Side note:\\n Currently, nb-install-component uses another approach where :host prepended with the theme name\\n (https://github.com/angular/angular/blob/5b96078624b0a4760f2dbcf6fdf0bd62791be5bb/packages/compiler/src/shadow_css.ts#L441),\\n but it was made to be able to use current realization of rtl and it can be rewritten back to\\n :host-context($theme) once we will be able to use multiple shadow selectors.\\n *\\nBut when it's called in *.component.scss we can't be sure, that selector starts with :host/:host-context,\\nbecause angular allows omitting pseudo-classes if we don't need to style :host component itself.\\nWe can break such selectors, by just appending :host-context([dir=rtl]) to them.\\n ***\\n Possible solution\\n check if we in theme by some theme variables and if so append, otherwise nest like\\n @at-root :host-context([dir=rtl]) {\\n // add # to scss interpolation statement.\\n // it works in comments and we can't use it here\\n {&} {\\n @content;\\n }\\n }\\n What if :host specified? Can we add space in :host-context(...) :host?\\n Or maybe add :host selector anyway? If multiple :host selectors are allowed\\n ***\\n\\n\\nProblems with the current approach.\\n\\n1. Direction can be applied only on document level, because mixin prepends theme class,\\nwhich placed on the body.\\n2. *.component.scss styles should be in :host selector. Otherwise angular will add host\\nattribute to [dir=rtl] attribute as well.\\n\\n\\nGeneral problems.\\n\\nLtr is default document direction, but for proper work of nb-ltr (means ltr only),\\n[dir=ltr] should be specified at least somewhere. ':not([dir=rtl]' not applicable here,\\nbecause it's satisfy any parent, that don't have [dir=rtl] attribute.\\nPrevious approach was to use single rtl mixin and reset ltr properties to initial value.\\nBut sometimes it's hard to find, what the previous value should be. And such mixin call looks too verbose.\\n*/\\n/*!\\n * @license\\n * Copyright Akveo. All Rights Reserved.\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\n */\\n/*\\n :host can be prefixed\\n https://github.com/angular/angular/blob/8d0ee34939f14c07876d222c25b405ed458a34d3/packages/compiler/src/shadow_css.ts#L441\\n\\n We have to use :host insted of :host-context($theme), to be able to prefix theme class\\n with something defined inside of @content, by prefixing &.\\n For example this scss code:\\n .nb-theme-default {\\n .some-selector & {\\n ...\\n }\\n }\\n Will result in next css:\\n .some-selector .nb-theme-default {\\n ...\\n }\\n\\n It doesn't work with :host-context because angular splitting it in two selectors and removes\\n prefix in one of the selectors.\\n */\\n.nb-theme-default :host nb-sidebar.app-sidebar /deep/ .scrollable {\\n padding-top: 30px;\\n padding-right: 10px;\\n padding-left: 20px; }\\n.nb-theme-default :host nb-sidebar.app-sidebar /deep/ .main-container {\\n z-index: 2; }\\n.nb-theme-default :host nb-sidebar.app-sidebar /deep/ nb-menu.app-sidebar-menu .menu-items .menu-item {\\n margin-right: 15px;\\n border: none; }\\n.nb-theme-default :host nb-sidebar.app-sidebar /deep/ nb-menu.app-sidebar-menu .menu-items .menu-item a {\\n border-radius: 0 5px 5px 0; }\\n.nb-theme-default :host nb-sidebar.app-sidebar /deep/ nb-menu.app-sidebar-menu .menu-item > .menu-items > .menu-item {\\n margin-right: 0; }\\n.nb-theme-default :host nb-sidebar.app-sidebar /deep/ nb-menu.app-sidebar-menu .menu-item a:only-child.active {\\n background-color: #ffffff;\\n color: #007ea3;\\n font-weight: 600; }\\n.nb-theme-default :host nb-sidebar.app-sidebar /deep/ nb-menu.app-sidebar-menu .menu-item a:only-child.active i.menu-icon {\\n color: #007ea3; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2xheW91dHMvZGVmYXVsdC9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcX3RoZW1pbmcuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2xheW91dHMvZGVmYXVsdC9kZWZhdWx0LWxheW91dC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2xheW91dHMvZGVmYXVsdC9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcY29yZVxcX21peGlucy5zY3NzIiwic3JjL2FwcC9zaGFyZWQvbGF5b3V0cy9kZWZhdWx0L0Q6XFxmcmFjcHJvb3AtQUlcXGZyYWNwcm93ZWJ1aS9ub2RlX21vZHVsZXNcXEBuZWJ1bGFyXFx0aGVtZVxcc3R5bGVzXFxjb3JlXFxfZnVuY3Rpb25zLnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9sYXlvdXRzL2RlZmF1bHQvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL25vZGVfbW9kdWxlc1xcQG5lYnVsYXJcXHRoZW1lXFxzdHlsZXNcXHRoZW1lc1xcX2RlZmF1bHQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2xheW91dHMvZGVmYXVsdC9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvbm9kZV9tb2R1bGVzXFxAbmVidWxhclxcdGhlbWVcXHN0eWxlc1xcZ2xvYmFsXFxfYnJlYWtwb2ludHMuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2xheW91dHMvZGVmYXVsdC9EOlxcZnJhY3Byb29wLUFJXFxmcmFjcHJvd2VidWkvc3JjXFxhcHBcXHNoYXJlZFxcbGF5b3V0c1xcZGVmYXVsdFxcZGVmYXVsdC1sYXlvdXQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9sYXlvdXRzL2RlZmF1bHQvRDpcXGZyYWNwcm9vcC1BSVxcZnJhY3Byb3dlYnVpL3NyY1xcYXBwXFxzaGFyZWRcXHN0eWxlc1xcdmFyaWFibGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7RUNJRTtBREdGOztFQ0FFO0FDUEY7Ozs7RURZRTtBQzhKRjs7OztFRHpKRTtBQ21MRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDRC9EQztBRXJJRDs7OztFRjBJRTtBRzFJRjs7OztFSCtJRTtBRS9JRjs7OztFRm9KRTtBQ3BKRjs7OztFRHlKRTtBQ2lCRjs7OztFRFpFO0FDc0NGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NEOEVDO0FJbFJEOzs7O0VKdVJFO0FEcEtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDd0xDO0FLbFNEO0VBQ0UsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixrQkFBa0IsRUFBQTtBQUVwQjtFQUNFLFVBQVUsRUFBQTtBQUlSO0VBQ0Usa0JBQWtCO0VBQ2xCLFlBQVksRUFBQTtBQUNaO0lBQ0UsMEJBQTBCLEVBQUE7QUFNbEM7RUFDRSxlQUFlLEVBQUE7QUFJZjtFQUNFLHlCQUF5QjtFQUN6QixjQ25DUztFRG9DVCxnQkFBZ0IsRUFBQTtBQUNoQjtJQUNFLGNDdENPLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvbGF5b3V0cy9kZWZhdWx0L2RlZmF1bHQtbGF5b3V0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuXG5cbi8qKlxuICogVGhpcyBpcyBhIHN0YXJ0aW5nIHBvaW50IHdoZXJlIHdlIGRlY2xhcmUgdGhlIG1hcHMgb2YgdGhlbWVzIGFuZCBnbG9iYWxseSBhdmFpbGFibGUgZnVuY3Rpb25zL21peGluc1xuICovXG5cbkBpbXBvcnQgJ2NvcmUvbWl4aW5zJztcbkBpbXBvcnQgJ2NvcmUvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ2NvcmUvYnJlYWtpbmctbm90aWNlJztcblxuJG5iLWVuYWJsZWQtdGhlbWVzOiAoKSAhZ2xvYmFsO1xuJG5iLWVuYWJsZS1jc3MtdmFyaWFibGVzOiBmYWxzZSAhZ2xvYmFsO1xuXG4kbmItdGhlbWVzOiAoKSAhZ2xvYmFsO1xuJG5iLXRoZW1lcy1ub24tcHJvY2Vzc2VkOiAoKSAhZ2xvYmFsO1xuJG5iLXRoZW1lcy1leHBvcnQ6ICgpICFnbG9iYWw7XG5cbkBmdW5jdGlvbiBuYi10aGVtZSgka2V5KSB7XG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gbmItZ2V0LXZhbHVlKCR0aGVtZSwgJGtleSwgJHZhbHVlKSB7XG4gIEBpZiAodHlwZS1vZigkdmFsdWUpID09ICdzdHJpbmcnKSB7XG4gICAgJHRtcDogbWFwLWdldCgkdGhlbWUsICR2YWx1ZSk7XG5cbiAgICBAaWYgKCR0bXAgIT0gbnVsbCkge1xuICAgICAgQHJldHVybiBuYi1nZXQtdmFsdWUoJHRoZW1lLCAkdmFsdWUsICR0bXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUsICRrZXkpO1xufVxuXG5AZnVuY3Rpb24gY29udmVydC10by1jc3MtdmFyaWFibGVzKCR2YXJpYWJsZXMpIHtcbiAgJHJlc3VsdDogKCk7XG4gIEBlYWNoICR2YXIsICR2YWx1ZSBpbiAkdmFyaWFibGVzIHtcbiAgICAkcmVzdWx0OiBtYXAtc2V0KCRyZXN1bHQsICR2YXIsICctLXZhcigjeyR2YXJ9KScpO1xuICB9XG5cbiAgQGRlYnVnICRyZXN1bHQ7XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQGZ1bmN0aW9uIHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUsICR0aGVtZS1uYW1lKSB7XG4gICR0aGVtZTogJHRoZW1lICFnbG9iYWw7XG4gICR0aGVtZS1uYW1lOiAkdGhlbWUtbmFtZSAhZ2xvYmFsO1xuICBAaWYgKCRuYi1lbmFibGUtY3NzLXZhcmlhYmxlcykge1xuICAgICR0aGVtZTogY29udmVydC10by1jc3MtdmFyaWFibGVzKCR0aGVtZSkgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuICR0aGVtZTtcbn1cblxuQGZ1bmN0aW9uIG5iLXJlZ2lzdGVyLXRoZW1lKCR0aGVtZSwgJG5hbWUsICRkZWZhdWx0OiBudWxsKSB7XG5cbiAgJHRoZW1lLWRhdGE6ICgpO1xuXG5cbiAgQGlmICgkZGVmYXVsdCAhPSBudWxsKSB7XG5cbiAgICAkdGhlbWU6IG1hcC1tZXJnZShtYXAtZ2V0KCRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZCwgJGRlZmF1bHQpLCAkdGhlbWUpO1xuICAgICRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZDogbWFwLXNldCgkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQsICRuYW1lLCAkdGhlbWUpICFnbG9iYWw7XG5cbiAgICAkdGhlbWUtZGF0YTogbWFwLXNldCgkdGhlbWUtZGF0YSwgZGF0YSwgJHRoZW1lKTtcbiAgICAkbmItdGhlbWVzLWV4cG9ydDogbWFwLXNldCgkbmItdGhlbWVzLWV4cG9ydCwgJG5hbWUsIG1hcC1zZXQoJHRoZW1lLWRhdGEsIHBhcmVudCwgJGRlZmF1bHQpKSAhZ2xvYmFsO1xuXG4gIH0gQGVsc2Uge1xuICAgICRuYi10aGVtZXMtbm9uLXByb2Nlc3NlZDogbWFwLXNldCgkbmItdGhlbWVzLW5vbi1wcm9jZXNzZWQsICRuYW1lLCAkdGhlbWUpICFnbG9iYWw7XG5cbiAgICAkdGhlbWUtZGF0YTogbWFwLXNldCgkdGhlbWUtZGF0YSwgZGF0YSwgJHRoZW1lKTtcbiAgICAkbmItdGhlbWVzLWV4cG9ydDogbWFwLXNldCgkbmItdGhlbWVzLWV4cG9ydCwgJG5hbWUsIG1hcC1zZXQoJHRoZW1lLWRhdGEsIHBhcmVudCwgbnVsbCkpICFnbG9iYWw7XG4gIH1cblxuICAkdGhlbWUtcGFyc2VkOiAoKTtcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICR0aGVtZSB7XG4gICAgJHRoZW1lLXBhcnNlZDogbWFwLXNldCgkdGhlbWUtcGFyc2VkLCAka2V5LCBuYi1nZXQtdmFsdWUoJHRoZW1lLCAka2V5LCAkdmFsdWUpKTtcbiAgfVxuXG4gIC8vIGVuYWJsZSByaWdodCBhd2F5IHdoZW4gaW5zdGFsbGVkXG4gICR0aGVtZS1wYXJzZWQ6IHNldC1nbG9iYWwtdGhlbWUtdmFycygkdGhlbWUtcGFyc2VkLCAkbmFtZSk7XG4gIEByZXR1cm4gbWFwLXNldCgkbmItdGhlbWVzLCAkbmFtZSwgJHRoZW1lLXBhcnNlZCk7XG59XG5cbkBmdW5jdGlvbiBnZXQtZW5hYmxlZC10aGVtZXMoKSB7XG4gICR0aGVtZXMtdG8taW5zdGFsbDogKCk7XG5cbiAgQGlmIChsZW5ndGgoJG5iLWVuYWJsZWQtdGhlbWVzKSA+IDApIHtcbiAgICBAZWFjaCAkdGhlbWUtbmFtZSBpbiAkbmItZW5hYmxlZC10aGVtZXMge1xuICAgICAgJHRoZW1lcy10by1pbnN0YWxsOiBtYXAtc2V0KCR0aGVtZXMtdG8taW5zdGFsbCwgJHRoZW1lLW5hbWUsIG1hcC1nZXQoJG5iLXRoZW1lcywgJHRoZW1lLW5hbWUpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR0aGVtZXMtdG8taW5zdGFsbDogJG5iLXRoZW1lcztcbiAgfVxuXG4gIEByZXR1cm4gJHRoZW1lcy10by1pbnN0YWxsO1xufVxuXG5AbWl4aW4gaW5zdGFsbC1jc3MtdmFyaWFibGVzKCR0aGVtZS1uYW1lLCAkdmFyaWFibGVzKSB7XG4gIC5uYi10aGVtZS0jeyR0aGVtZS1uYW1lfSB7XG4gICAgQGVhY2ggJHZhciwgJHZhbHVlIGluICR2YXJpYWJsZXMge1xuICAgICAgLS0jeyR2YXJ9OiAkdmFsdWU7XG4gICAgfVxuICB9XG59XG5cbi8vIFRPRE86IHdlIGhpZGUgOmhvc3QgaW5zaWRlIG9mIGl0IHdoaWNoIGlzIG5vdCBvYnZpb3VzXG5AbWl4aW4gbmItaW5zdGFsbC1jb21wb25lbnQoKSB7XG5cbiAgJHRoZW1lcy10by1pbnN0YWxsOiBnZXQtZW5hYmxlZC10aGVtZXMoKTtcblxuICBAZWFjaCAkdGhlbWUtbmFtZSwgJHRoZW1lIGluICR0aGVtZXMtdG8taW5zdGFsbCB7XG4gICAgLypcbiAgICAgIDpob3N0IGNhbiBiZSBwcmVmaXhlZFxuICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzhkMGVlMzQ5MzlmMTRjMDc4NzZkMjIyYzI1YjQwNWVkNDU4YTM0ZDMvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MVxuXG4gICAgICBXZSBoYXZlIHRvIHVzZSA6aG9zdCBpbnN0ZWQgb2YgOmhvc3QtY29udGV4dCgkdGhlbWUpLCB0byBiZSBhYmxlIHRvIHByZWZpeCB0aGVtZSBjbGFzc1xuICAgICAgd2l0aCBzb21ldGhpbmcgZGVmaW5lZCBpbnNpZGUgb2YgQGNvbnRlbnQsIGJ5IHByZWZpeGluZyAmLlxuICAgICAgRm9yIGV4YW1wbGUgdGhpcyBzY3NzIGNvZGU6XG4gICAgICAgIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuc29tZS1zZWxlY3RvciAmIHtcbiAgICAgICAgICAgIC4uLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgV2lsbCByZXN1bHQgaW4gbmV4dCBjc3M6XG4gICAgICAgIC5zb21lLXNlbGVjdG9yIC5uYi10aGVtZS1kZWZhdWx0IHtcbiAgICAgICAgICAuLi5cbiAgICAgICAgfVxuXG4gICAgICBJdCBkb2Vzbid0IHdvcmsgd2l0aCA6aG9zdC1jb250ZXh0IGJlY2F1c2UgYW5ndWxhciBzcGxpdHRpbmcgaXQgaW4gdHdvIHNlbGVjdG9ycyBhbmQgcmVtb3Zlc1xuICAgICAgcHJlZml4IGluIG9uZSBvZiB0aGUgc2VsZWN0b3JzLlxuICAgICovXG4gICAgLm5iLXRoZW1lLSN7JHRoZW1lLW5hbWV9IDpob3N0IHtcbiAgICAgICR0aGVtZTogc2V0LWdsb2JhbC10aGVtZS12YXJzKCR0aGVtZSwgJHRoZW1lLW5hbWUpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBuYi1mb3ItdGhlbWUoJG5hbWUpIHtcbiAgQGlmICgkdGhlbWUtbmFtZSA9PSAkbmFtZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4gICAgXG4vLyBBZGQgY29udGVudCBmb3IgdGhlbWUgaW50byBhIGxpc3Qgb2YgdGhlbWVzXG5AbWl4aW4gbmItZm9yLXRoZW1lcygkbmFtZXMuLi4pIHtcbiAgQGVhY2ggJG5hbWUgaW4gJG5hbWVzIHtcbiAgICBAaW5jbHVkZSBuYi1mb3ItdGhlbWUoJG5hbWUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbmItZXhjZXB0LXRoZW1lKCRuYW1lKSB7XG4gIEBpZiAoJHRoZW1lLW5hbWUgIT0gJG5hbWUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBBZGQgY29udGVudCBleGNlcHQgZm9yIHRoZW1lIGludG8gYSBsaXN0IG9mIHRoZW1lc1xuQG1peGluIG5iLWV4Y2VwdC1mb3ItdGhlbWVzKCRuYW1lcy4uLikge1xuICBAZWFjaCAkbmFtZSBpbiAkbmFtZXMge1xuICAgIEBpbmNsdWRlIG5iLWV4Y2VwdC10aGVtZSgkbmFtZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIFRPRE86IGFub3RoZXIgbWl4aW5nIGZvciB0aGUgYWxtb3N0IHNhbWUgdGhpbmdcbkBtaXhpbiBuYi1pbnN0YWxsLXJvb3QtY29tcG9uZW50KCkge1xuICBAd2FybiAnYG5iLWluc3RhbGwtcm9vdC1jb21wb25lbnRgIGlzIGRlcHJpY2F0ZWQsIHJlcGxhY2Ugd2l0aCBgbmItaW5zdGFsbC1jb21wb25lbnRgLCBhcyBgYm9keWAgaXMgcm9vdCBlbGVtZW50IG5vdyc7XG5cbiAgQGluY2x1ZGUgbmItaW5zdGFsbC1jb21wb25lbnQoKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG5iLWluc3RhbGwtZ2xvYmFsKCkge1xuICAkdGhlbWVzLXRvLWluc3RhbGw6IGdldC1lbmFibGVkLXRoZW1lcygpO1xuXG4gIEBlYWNoICR0aGVtZS1uYW1lLCAkdGhlbWUgaW4gJHRoZW1lcy10by1pbnN0YWxsIHtcbiAgICAubmItdGhlbWUtI3skdGhlbWUtbmFtZX0ge1xuICAgICAgJHRoZW1lOiBzZXQtZ2xvYmFsLXRoZW1lLXZhcnMoJHRoZW1lLCAkdGhlbWUtbmFtZSk7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICAkdGVtcDogbmItYnJlYWtpbmctbm90aWNlLXNob3coJHRoZW1lKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cbi8qKlxuICogVGhpcyBpcyBhIHN0YXJ0aW5nIHBvaW50IHdoZXJlIHdlIGRlY2xhcmUgdGhlIG1hcHMgb2YgdGhlbWVzIGFuZCBnbG9iYWxseSBhdmFpbGFibGUgZnVuY3Rpb25zL21peGluc1xuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKipcbiAqIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGtleWZhbWVzLlxuICogQmVjYXVzZSBvZiBhbGwga2V5ZnJhbWVzIGNhbid0IGJlIHNjb3BlZCxcbiAqIHdlIG5lZWQgdG8gcHV0cyB1bmlxdWUgbmFtZSBpbiBlYWNoIGJ0bi1wdWxzZSBjYWxsLlxuICovXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG4vKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG4vKlxuICAgICAgOmhvc3QgY2FuIGJlIHByZWZpeGVkXG4gICAgICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvOGQwZWUzNDkzOWYxNGMwNzg3NmQyMjJjMjViNDA1ZWQ0NThhMzRkMy9wYWNrYWdlcy9jb21waWxlci9zcmMvc2hhZG93X2Nzcy50cyNMNDQxXG5cbiAgICAgIFdlIGhhdmUgdG8gdXNlIDpob3N0IGluc3RlZCBvZiA6aG9zdC1jb250ZXh0KCR0aGVtZSksIHRvIGJlIGFibGUgdG8gcHJlZml4IHRoZW1lIGNsYXNzXG4gICAgICB3aXRoIHNvbWV0aGluZyBkZWZpbmVkIGluc2lkZSBvZiBAY29udGVudCwgYnkgcHJlZml4aW5nICYuXG4gICAgICBGb3IgZXhhbXBsZSB0aGlzIHNjc3MgY29kZTpcbiAgICAgICAgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC5zb21lLXNlbGVjdG9yICYge1xuICAgICAgICAgICAgLi4uXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBXaWxsIHJlc3VsdCBpbiBuZXh0IGNzczpcbiAgICAgICAgLnNvbWUtc2VsZWN0b3IgLm5iLXRoZW1lLWRlZmF1bHQge1xuICAgICAgICAgIC4uLlxuICAgICAgICB9XG5cbiAgICAgIEl0IGRvZXNuJ3Qgd29yayB3aXRoIDpob3N0LWNvbnRleHQgYmVjYXVzZSBhbmd1bGFyIHNwbGl0dGluZyBpdCBpbiB0d28gc2VsZWN0b3JzIGFuZCByZW1vdmVzXG4gICAgICBwcmVmaXggaW4gb25lIG9mIHRoZSBzZWxlY3RvcnMuXG4gICAgKi9cbi5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuYXBwLXNpZGViYXIgL2RlZXAvIC5zY3JvbGxhYmxlIHtcbiAgcGFkZGluZy10b3A6IDMwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gIHBhZGRpbmctbGVmdDogMjBweDsgfVxuXG4ubmItdGhlbWUtZGVmYXVsdCA6aG9zdCBuYi1zaWRlYmFyLmFwcC1zaWRlYmFyIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xuICB6LWluZGV4OiAyOyB9XG5cbi5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuYXBwLXNpZGViYXIgL2RlZXAvIG5iLW1lbnUuYXBwLXNpZGViYXItbWVudSAubWVudS1pdGVtcyAubWVudS1pdGVtIHtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICBib3JkZXI6IG5vbmU7IH1cbiAgLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5hcHAtc2lkZWJhciAvZGVlcC8gbmItbWVudS5hcHAtc2lkZWJhci1tZW51IC5tZW51LWl0ZW1zIC5tZW51LWl0ZW0gYSB7XG4gICAgYm9yZGVyLXJhZGl1czogMCA1cHggNXB4IDA7IH1cblxuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5hcHAtc2lkZWJhciAvZGVlcC8gbmItbWVudS5hcHAtc2lkZWJhci1tZW51IC5tZW51LWl0ZW0gPiAubWVudS1pdGVtcyA+IC5tZW51LWl0ZW0ge1xuICBtYXJnaW4tcmlnaHQ6IDA7IH1cblxuLm5iLXRoZW1lLWRlZmF1bHQgOmhvc3QgbmItc2lkZWJhci5hcHAtc2lkZWJhciAvZGVlcC8gbmItbWVudS5hcHAtc2lkZWJhci1tZW51IC5tZW51LWl0ZW0gYTpvbmx5LWNoaWxkLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjMDA3ZWEzO1xuICBmb250LXdlaWdodDogNjAwOyB9XG4gIC5uYi10aGVtZS1kZWZhdWx0IDpob3N0IG5iLXNpZGViYXIuYXBwLXNpZGViYXIgL2RlZXAvIG5iLW1lbnUuYXBwLXNpZGViYXItbWVudSAubWVudS1pdGVtIGE6b25seS1jaGlsZC5hY3RpdmUgaS5tZW51LWljb24ge1xuICAgIGNvbG9yOiAjMDA3ZWEzOyB9XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbkBtaXhpbiBuYi1zY3JvbGxiYXJzKCRmZywgJGJnLCAkc2l6ZSwgJGJvcmRlci1yYWRpdXM6ICRzaXplIC8gMikge1xuICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6ICRmZztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiAkYmc7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmVcbiAgLy8gRm9yIEludGVybmV0IEV4cGxvcmVyXG4gIHNjcm9sbGJhci1mYWNlLWNvbG9yOiAkZmc7XG4gIHNjcm9sbGJhci10cmFjay1jb2xvcjogJGJnO1xufVxuXG5AbWl4aW4gbmItcmFkaWFsLWdyYWRpZW50KCRjb2xvci0xLCAkY29sb3ItMiwgJGNvbG9yLTMpIHtcbiAgYmFja2dyb3VuZDogJGNvbG9yLTI7IC8qIE9sZCBicm93c2VycyAqL1xuICBiYWNrZ3JvdW5kOiAtbW96LXJhZGlhbC1ncmFkaWVudChib3R0b20sIGVsbGlwc2UgY292ZXIsICRjb2xvci0xIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0yIDQ1JSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMyAxMDAlKTsgLyogRkYzLjYtMTUgKi9cbiAgYmFja2dyb3VuZDogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoYm90dG9tLCBlbGxpcHNlIGNvdmVyLCAkY29sb3ItMSAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29sb3ItMiA0NSUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTMgMTAwJSk7IC8qIENocm9tZTEwLTI1LFNhZmFyaTUuMS02ICovXG4gIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IGJvdHRvbSwgJGNvbG9yLTEgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yLTIgNDUlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvci0zIDEwMCUpOyAvKiBXM0MsIElFMTArLCBGRjE2KywgQ2hyb21lMjYrLCBPcGVyYTEyKywgU2FmYXJpNysgKi9cbiAgZmlsdGVyOiBwcm9naWQ6ZHhpbWFnZXRyYW5zZm9ybS5taWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nJGNvbG9yLTEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRDb2xvcnN0cj0nJGNvbG9yLTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFkaWVudFR5cGU9MSk7IC8qIElFNi05IGZhbGxiYWNrIG9uIGhvcml6b250YWwgZ3JhZGllbnQgKi9cbn1cblxuQG1peGluIG5iLXJpZ2h0LWdyYWRpZW50KCRsZWZ0LWNvbG9yLCAkcmlnaHQtY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbGVmdC1jb2xvciwgJHJpZ2h0LWNvbG9yKTtcbn1cblxuQG1peGluIG5iLWhlYWRpbmdzKCRmcm9tOiAxLCAkdG86IDYpIHtcbiAgQGZvciAkaSBmcm9tICRmcm9tIHRocm91Z2ggJHRvIHtcbiAgICBoI3skaX0ge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaG92ZXItZm9jdXMtYWN0aXZlIHtcbiAgJjpmb2N1cyxcbiAgJjphY3RpdmUsXG4gICY6aG92ZXIge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBjZW50ZXItaG9yaXpvbnRhbC1hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gIGxlZnQ6IDUwJTtcbn1cblxuQG1peGluIGluc3RhbGwtdGh1bWIoKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci10aHVtYidcbiAgICAnOjotbW96LXJhbmdlLXRodW1iJ1xuICAgICc6Oi1tcy10aHVtYidcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtdHJhY2soKSB7XG4gICR0aHVtYi1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjaydcbiAgICAnOjotbW96LXJhbmdlLXRyYWNrJ1xuICAgICc6Oi1tcy10cmFjaydcbiAgKTtcblxuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHRodW1iLXNlbGVjdG9ycyB7XG4gICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGluc3RhbGwtcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKSB7XG4gICRwbGFjZWhvbGRlci1zZWxlY3RvcnM6IChcbiAgICAnOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyJ1xuICAgICc6Oi1tb3otcGxhY2Vob2xkZXInXG4gICAgJzotbW96LXBsYWNlaG9sZGVyJ1xuICAgICc6LW1zLWlucHV0LXBsYWNlaG9sZGVyJ1xuICApO1xuXG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpO1xuICB9XG5cbiAgQGVhY2ggJHNlbGVjdG9yIGluICRwbGFjZWhvbGRlci1zZWxlY3RvcnMge1xuICAgICYjeyRzZWxlY3Rvcn0ge1xuICAgICAgQGluY2x1ZGUgcGxhY2Vob2xkZXIoJGNvbG9yLCAkZm9udC1zaXplKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzI3skc2VsZWN0b3J9IHtcbiAgICAgIEBpbmNsdWRlIHBsYWNlaG9sZGVyLWZvY3VzKCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlcigkY29sb3IsICRmb250LXNpemUpIHtcbiAgY29sb3I6ICRjb2xvcjtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBwbGFjZWhvbGRlci1mb2N1cygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XG59XG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGUuLi4pIHtcbiAgJG1heDogbGVuZ3RoKCRhbmltYXRlKTtcbiAgJGFuaW1hdGlvbnM6ICcnO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG1heCB7XG4gICAgJGFuaW1hdGlvbnM6ICN7JGFuaW1hdGlvbnMgKyBudGgoJGFuaW1hdGUsICRpKX07XG5cbiAgICBAaWYgJGkgPCAkbWF4IHtcbiAgICAgICRhbmltYXRpb25zOiAjeyRhbmltYXRpb25zICsgJywgJ307XG4gICAgfVxuICB9XG4gIC13ZWJraXQtYW5pbWF0aW9uOiAkYW5pbWF0aW9ucztcbiAgLW1vei1hbmltYXRpb246ICAgICRhbmltYXRpb25zO1xuICAtby1hbmltYXRpb246ICAgICAgJGFuaW1hdGlvbnM7XG4gIGFuaW1hdGlvbjogICAgICAgICAkYW5pbWF0aW9ucztcbn1cblxuQG1peGluIGtleWZyYW1lcygkYW5pbWF0aW9uTmFtZSkge1xuICBALXdlYmtpdC1rZXlmcmFtZXMgI3skYW5pbWF0aW9uTmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1vLWtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGtleWZyYW1lcyAjeyRhbmltYXRpb25OYW1lfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIG1peGluIGdlbmVyYXRlcyBrZXlmYW1lcy5cbiAqIEJlY2F1c2Ugb2YgYWxsIGtleWZyYW1lcyBjYW4ndCBiZSBzY29wZWQsXG4gKiB3ZSBuZWVkIHRvIHB1dHMgdW5pcXVlIG5hbWUgaW4gZWFjaCBidG4tcHVsc2UgY2FsbC5cbiAqL1xuQG1peGluIGJ0bi1wdWxzZSgkbmFtZSwgJGNvbG9yKSB7XG4gICYuYnRuLXB1bHNlIHtcbiAgICBAaW5jbHVkZSBhbmltYXRpb24oYnRuLSN7JG5hbWV9LXB1bHNlIDEuNXMgaW5maW5pdGUpO1xuICB9XG5cbiAgQGluY2x1ZGUga2V5ZnJhbWVzKGJ0bi0jeyRuYW1lfS1wdWxzZSkge1xuICAgIDAlIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBvcGFjaXR5OiBuYi10aGVtZShidG4tZGlzYWJsZWQtb3BhY2l0eSk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMXJlbSAwICRjb2xvcjtcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3BhY2l0eTogbmItdGhlbWUoYnRuLWRpc2FibGVkLW9wYWNpdHkpO1xuICAgIH1cbiAgfVxufVxuXG4vKlxuXG5BY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNob3N0LXNlbGVjdG9yKVxuOmhvc3QgYW5kIDpob3N0LWNvbnRleHQgYXJlIHBzZXVkby1jbGFzc2VzLiBTbyB3ZSBhc3N1bWUgdGhleSBjb3VsZCBiZSBjb21iaW5lZCxcbmxpa2Ugb3RoZXIgcHNldWRvLWNsYXNzZXMsIGV2ZW4gc2FtZSBvbmVzLlxuRm9yIGV4YW1wbGU6ICc6bnRoLW9mLXR5cGUoMm4pOm50aC1vZi10eXBlKGV2ZW4pJy5cblxuSWRlYWwgc29sdXRpb24gd291bGQgYmUgdG8gcHJlcGVuZCBhbnkgc2VsZWN0b3Igd2l0aCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkuXG5UaGVuIG5lYnVsYXIgY29tcG9uZW50cyB3aWxsIGJlaGF2ZSBhcyBhbiBodG1sIGVsZW1lbnQgYW5kIHJlc3BvbmQgdG8gW2Rpcl0gYXR0cmlidXRlIG9uIGFueSBsZXZlbCxcbnNvIGRpcmVjdGlvbiBjb3VsZCBiZSBvdmVycmlkZGVuIG9uIGFueSBjb21wb25lbnQgbGV2ZWwuXG5cbkltcGxlbWVudGF0aW9uIGNvZGU6XG5cbkBtaXhpbiBuYi1ydGwoKSB7XG4gIC8vIGFkZCAjIHRvIHNjc3MgaW50ZXJwb2xhdGlvbiBzdGF0ZW1lbnQuXG4gIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICBAYXQtcm9vdCB7c2VsZWN0b3ItYXBwZW5kKCc6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSknLCAmKX0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkFuZCB3aGVuIHdlIGNhbGwgaXQgc29tZXdoZXJlOlxuXG46aG9zdCB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cbjpob3N0LWNvbnRleHQoLi4uKSB7XG4gIC5zb21lLWNsYXNzIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7XG4gICAgICAuLi5cbiAgICB9XG4gIH1cbn1cblxuUmVzdWx0IHdpbGwgbG9vayBsaWtlOlxuXG46aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdCAuc29tZS1jbGFzcyB7XG4gIC4uLlxufVxuOmhvc3QtY29udGV4dChbZGlyPXJ0bF0pOmhvc3QtY29udGV4dCguLi4pIC5zb21lLWNsYXNzIHtcbiAgLi4uXG59XG5cbipcbiAgU2lkZSBub3RlOlxuICA6aG9zdC1jb250ZXh0KCk6aG9zdCBzZWxlY3RvciBhcmUgdmFsaWQuIGh0dHBzOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxNUZlYi8wMzA1Lmh0bWxcblxuICA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSk6aG9zdC1jb250ZXh0KC4uLikgc2hvdWxkIG1hdGNoIGFueSBwZXJtdXRhdGlvbixcbiAgc28gb3JkZXIgaXMgbm90IGltcG9ydGFudC5cbipcblxuXG5DdXJyZW50bHksIHRoZXJlJ3JlIHR3byBwcm9ibGVtcyB3aXRoIHRoaXMgYXBwcm9hY2g6XG5cbkZpcnN0LCBpcyB0aGF0IHdlIGNhbid0IGNvbWJpbmUgOmhvc3QsIDpob3N0LWNvbnRleHQuIEFuZ3VsYXIgYnVncyAjMTQzNDksICMxOTE5OS5cbkZvciB0aGUgbW9tZW50IG9mIHdyaXRpbmcsIHRoZSBvbmx5IHBvc3NpYmxlIHdheSBpczpcbjpob3N0IHtcbiAgOmhvc3QtY29udGV4dCguLi4pIHtcbiAgICAuLi5cbiAgfVxufVxuSXQgZG9lc24ndCB3b3JrIGZvciB1cyBiZWNhdXNlIG1peGluIGNvdWxkIGJlIGNhbGxlZCBzb21ld2hlcmUgZGVlcGVyLCBsaWtlOlxuOmhvc3Qge1xuICBwIHtcbiAgICBAaW5jbHVkZSBuYi1ydGwoKSB7IC4uLiB9XG4gIH1cbn1cbldlIGFyZSBub3QgYWJsZSB0byBnbyB1cCB0byA6aG9zdCBsZXZlbCB0byBwbGFjZSBjb250ZW50IHBhc3NlZCB0byBtaXhpbi5cblxuVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoYXQgd2Ugb25seSBjYW4gYmUgc3VyZSB0aGF0IHdlIGFwcGVuZGluZyA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkgdG8gYW5vdGhlclxuOmhvc3QvOmhvc3QtY29udGV4dCBwc2V1ZG8tY2xhc3Mgd2hlbiBjYWxsZWQgaW4gdGhlbWUgZmlsZXMgKCoudGhlbWUuc2NzcykuXG4gICpcbiAgICBTaWRlIG5vdGU6XG4gICAgQ3VycmVudGx5LCBuYi1pbnN0YWxsLWNvbXBvbmVudCB1c2VzIGFub3RoZXIgYXBwcm9hY2ggd2hlcmUgOmhvc3QgcHJlcGVuZGVkIHdpdGggdGhlIHRoZW1lIG5hbWVcbiAgICAoaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzViOTYwNzg2MjRiMGE0NzYwZjJkYmNmNmZkZjBiZDYyNzkxYmU1YmIvcGFja2FnZXMvY29tcGlsZXIvc3JjL3NoYWRvd19jc3MudHMjTDQ0MSksXG4gICAgYnV0IGl0IHdhcyBtYWRlIHRvIGJlIGFibGUgdG8gdXNlIGN1cnJlbnQgcmVhbGl6YXRpb24gb2YgcnRsIGFuZCBpdCBjYW4gYmUgcmV3cml0dGVuIGJhY2sgdG9cbiAgICA6aG9zdC1jb250ZXh0KCR0aGVtZSkgb25jZSB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlIG11bHRpcGxlIHNoYWRvdyBzZWxlY3RvcnMuXG4gICpcbkJ1dCB3aGVuIGl0J3MgY2FsbGVkIGluICouY29tcG9uZW50LnNjc3Mgd2UgY2FuJ3QgYmUgc3VyZSwgdGhhdCBzZWxlY3RvciBzdGFydHMgd2l0aCA6aG9zdC86aG9zdC1jb250ZXh0LFxuYmVjYXVzZSBhbmd1bGFyIGFsbG93cyBvbWl0dGluZyBwc2V1ZG8tY2xhc3NlcyBpZiB3ZSBkb24ndCBuZWVkIHRvIHN0eWxlIDpob3N0IGNvbXBvbmVudCBpdHNlbGYuXG5XZSBjYW4gYnJlYWsgc3VjaCBzZWxlY3RvcnMsIGJ5IGp1c3QgYXBwZW5kaW5nIDpob3N0LWNvbnRleHQoW2Rpcj1ydGxdKSB0byB0aGVtLlxuICAqKipcbiAgICBQb3NzaWJsZSBzb2x1dGlvblxuICAgIGNoZWNrIGlmIHdlIGluIHRoZW1lIGJ5IHNvbWUgdGhlbWUgdmFyaWFibGVzIGFuZCBpZiBzbyBhcHBlbmQsIG90aGVyd2lzZSBuZXN0IGxpa2VcbiAgICBAYXQtcm9vdCA6aG9zdC1jb250ZXh0KFtkaXI9cnRsXSkge1xuICAgICAgLy8gYWRkICMgdG8gc2NzcyBpbnRlcnBvbGF0aW9uIHN0YXRlbWVudC5cbiAgICAgIC8vIGl0IHdvcmtzIGluIGNvbW1lbnRzIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaGVyZVxuICAgICAgeyZ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIFdoYXQgaWYgOmhvc3Qgc3BlY2lmaWVkPyBDYW4gd2UgYWRkIHNwYWNlIGluIDpob3N0LWNvbnRleHQoLi4uKSA6aG9zdD9cbiAgICBPciBtYXliZSBhZGQgOmhvc3Qgc2VsZWN0b3IgYW55d2F5PyBJZiBtdWx0aXBsZSA6aG9zdCBzZWxlY3RvcnMgYXJlIGFsbG93ZWRcbiAgKioqXG5cblxuUHJvYmxlbXMgd2l0aCB0aGUgY3VycmVudCBhcHByb2FjaC5cblxuMS4gRGlyZWN0aW9uIGNhbiBiZSBhcHBsaWVkIG9ubHkgb24gZG9jdW1lbnQgbGV2ZWwsIGJlY2F1c2UgbWl4aW4gcHJlcGVuZHMgdGhlbWUgY2xhc3MsXG53aGljaCBwbGFjZWQgb24gdGhlIGJvZHkuXG4yLiAqLmNvbXBvbmVudC5zY3NzIHN0eWxlcyBzaG91bGQgYmUgaW4gOmhvc3Qgc2VsZWN0b3IuIE90aGVyd2lzZSBhbmd1bGFyIHdpbGwgYWRkIGhvc3RcbmF0dHJpYnV0ZSB0byBbZGlyPXJ0bF0gYXR0cmlidXRlIGFzIHdlbGwuXG5cblxuR2VuZXJhbCBwcm9ibGVtcy5cblxuTHRyIGlzIGRlZmF1bHQgZG9jdW1lbnQgZGlyZWN0aW9uLCBidXQgZm9yIHByb3BlciB3b3JrIG9mIG5iLWx0ciAobWVhbnMgbHRyIG9ubHkpLFxuW2Rpcj1sdHJdIHNob3VsZCBiZSBzcGVjaWZpZWQgYXQgbGVhc3Qgc29tZXdoZXJlLiAnOm5vdChbZGlyPXJ0bF0nIG5vdCBhcHBsaWNhYmxlIGhlcmUsXG5iZWNhdXNlIGl0J3Mgc2F0aXNmeSBhbnkgcGFyZW50LCB0aGF0IGRvbid0IGhhdmUgW2Rpcj1ydGxdIGF0dHJpYnV0ZS5cblByZXZpb3VzIGFwcHJvYWNoIHdhcyB0byB1c2Ugc2luZ2xlIHJ0bCBtaXhpbiBhbmQgcmVzZXQgbHRyIHByb3BlcnRpZXMgdG8gaW5pdGlhbCB2YWx1ZS5cbkJ1dCBzb21ldGltZXMgaXQncyBoYXJkIHRvIGZpbmQsIHdoYXQgdGhlIHByZXZpb3VzIHZhbHVlIHNob3VsZCBiZS4gQW5kIHN1Y2ggbWl4aW4gY2FsbCBsb29rcyB0b28gdmVyYm9zZS5cbiovXG5cbkBtaXhpbiBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCRzZWxlY3RvciwgJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICAjeyRzZWxlY3Rvcn0gJiB7XG4gICAgQGlmICRwcm9wICE9IG51bGwge1xuICAgICAgI3skcHJvcH06ICR2YWx1ZTtcbiAgICB9XG5cbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbmItbHRyKCRwcm9wOiBudWxsLCAkdmFsdWU6IG51bGwpIHtcbiAgQGluY2x1ZGUgX3ByZXBlbmQtd2l0aC1zZWxlY3RvcignW2Rpcj1sdHJdJywgJHByb3AsICR2YWx1ZSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBuYi1ydGwoJHByb3A6IG51bGwsICR2YWx1ZTogbnVsbCkge1xuICBAaW5jbHVkZSBfcHJlcGVuZC13aXRoLXNlbGVjdG9yKCdbZGlyPXJ0bF0nLCAkcHJvcCwgJHZhbHVlKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH07XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQWt2ZW8uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxuICovXG5cbi8vLyBTbGlnaHRseSBsaWdodGVuIGEgY29sb3Jcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGNvbG9yIHRvIHRpbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBwZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHJldHVybmVkIGNvbG9yXG4vLy8gQHJldHVybiB7Q29sb3J9XG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KHdoaXRlLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbiBhIGNvbG9yXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBjb2xvciB0byBzaGFkZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIHBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gcmV0dXJuZWQgY29sb3Jcbi8vLyBAcmV0dXJuIHtDb2xvcn1cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gIEByZXR1cm4gbWl4KGJsYWNrLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIG1hcC1zZXQoJG1hcCwgJGtleSwgJHZhbHVlOiBudWxsKSB7XG4gICRuZXc6ICgka2V5OiAkdmFsdWUpO1xuICBAcmV0dXJuIG1hcC1tZXJnZSgkbWFwLCAkbmV3KTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuQGltcG9ydCAnLi4vY29yZS9mdW5jdGlvbnMnO1xuQGltcG9ydCAnLi4vY29yZS9taXhpbnMnO1xuXG4kdGhlbWU6IChcbiAgZm9udC1tYWluOiB1bnF1b3RlKCdcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZicpLFxuICBmb250LXNlY29uZGFyeTogZm9udC1tYWluLFxuXG4gIGZvbnQtd2VpZ2h0LXRoaW46IDIwMCxcbiAgZm9udC13ZWlnaHQtbGlnaHQ6IDMwMCxcbiAgZm9udC13ZWlnaHQtbm9ybWFsOiA0MDAsXG4gIGZvbnQtd2VpZ2h0LWJvbGRlcjogNTAwLFxuICBmb250LXdlaWdodC1ib2xkOiA2MDAsXG4gIGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQ6IDgwMCxcblxuICAvLyBUT0RPOiB1c2UgaXQgYXMgYSBkZWZhdWx0IGZvbnQtc2l6ZVxuICBiYXNlLWZvbnQtc2l6ZTogMTZweCxcblxuICBmb250LXNpemUteGxnOiAxLjI1cmVtLFxuICBmb250LXNpemUtbGc6IDEuMTI1cmVtLFxuICBmb250LXNpemU6IDFyZW0sXG4gIGZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG4gIGZvbnQtc2l6ZS14czogMC43NXJlbSxcblxuICByYWRpdXM6IDAuMzc1cmVtLFxuICBwYWRkaW5nOiAxLjI1cmVtLFxuICBtYXJnaW46IDEuNXJlbSxcbiAgbGluZS1oZWlnaHQ6IDEuMjUsXG5cbiAgY29sb3ItYmc6ICNmZmZmZmYsXG4gIGNvbG9yLWJnLWFjdGl2ZTogI2U5ZWRmMixcbiAgY29sb3ItZmc6ICNhNGFiYjMsXG4gIGNvbG9yLWZnLWhlYWRpbmc6ICMyYTJhMmEsXG4gIGNvbG9yLWZnLXRleHQ6ICM0YjRiNGIsXG4gIGNvbG9yLWZnLWhpZ2hsaWdodDogIzQwZGM3ZSxcblxuICBzZXBhcmF0b3I6ICNlYmVlZjIsXG5cbiAgY29sb3ItZ3JheTogcmdiYSg4MSwgMTEzLCAxNjUsIDAuMTUpLFxuICBjb2xvci1uZXV0cmFsOiB0cmFuc3BhcmVudCxcbiAgY29sb3Itd2hpdGU6ICNmZmZmZmYsXG4gIGNvbG9yLWRpc2FibGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCksXG5cbiAgY29sb3ItcHJpbWFyeTogIzhhN2ZmZixcbiAgY29sb3Itc3VjY2VzczogIzQwZGM3ZSxcbiAgY29sb3ItaW5mbzogIzRjYTZmZixcbiAgY29sb3Itd2FybmluZzogI2ZmYTEwMCxcbiAgY29sb3ItZGFuZ2VyOiAjZmY0YzZhLFxuXG4gIC8vIFRPRE86IG1vdmUgdG8gY29uc3RhbnRzXG4gIHNvY2lhbC1jb2xvci1mYWNlYm9vazogIzNiNTk5OCxcbiAgc29jaWFsLWNvbG9yLXR3aXR0ZXI6ICM1NWFjZWUsXG4gIHNvY2lhbC1jb2xvci1nb29nbGU6ICNkZDRiMzksXG4gIHNvY2lhbC1jb2xvci1saW5rZWRpbjogIzAxNzdiNSxcbiAgc29jaWFsLWNvbG9yLWdpdGh1YjogIzZiNmI2YixcbiAgc29jaWFsLWNvbG9yLXN0YWNrb3ZlcmZsb3c6ICMyZjk2ZTgsXG4gIHNvY2lhbC1jb2xvci1kcmliYmxlOiAjZjI2Nzk4LFxuICBzb2NpYWwtY29sb3ItYmVoYW5jZTogIzAwOTNmYSxcblxuICBib3JkZXItY29sb3I6IGNvbG9yLWdyYXksXG4gIHNoYWRvdzogMCAycHggMTJweCAwICNkZmUzZWIsXG5cbiAgbGluay1jb2xvcjogIzNkY2M2ZCxcbiAgbGluay1jb2xvci1ob3ZlcjogIzJlZTU2YixcbiAgbGluay1jb2xvci12aXNpdGVkOiBsaW5rLWNvbG9yLFxuXG4gIHNjcm9sbGJhci1mZzogI2RhZGFkYSxcbiAgc2Nyb2xsYmFyLWJnOiAjZjJmMmYyLFxuICBzY3JvbGxiYXItd2lkdGg6IDVweCxcbiAgc2Nyb2xsYmFyLXRodW1iLXJhZGl1czogMi41cHgsXG5cbiAgcmFkaWFsLWdyYWRpZW50OiBub25lLFxuICBsaW5lYXItZ3JhZGllbnQ6IG5vbmUsXG5cbiAgY2FyZC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FyZC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGNhcmQtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FyZC1mZzogY29sb3ItZmcsIC8vIFRPRE86IG5vdCB1c2VkXG4gIGNhcmQtZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgY2FyZC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLCAvLyBUT0RPOiBub3QgdXNlZFxuICBjYXJkLWJnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWlnaHQteHhzbWFsbDogOTZweCxcbiAgY2FyZC1oZWlnaHQteHNtYWxsOiAyMTZweCxcbiAgY2FyZC1oZWlnaHQtc21hbGw6IDMzNnB4LFxuICBjYXJkLWhlaWdodC1tZWRpdW06IDQ1NnB4LFxuICBjYXJkLWhlaWdodC1sYXJnZTogNTc2cHgsXG4gIGNhcmQtaGVpZ2h0LXhsYXJnZTogNjk2cHgsXG4gIGNhcmQtaGVpZ2h0LXh4bGFyZ2U6IDgxNnB4LFxuICBjYXJkLXNoYWRvdzogc2hhZG93LFxuICBjYXJkLWJvcmRlci13aWR0aDogMCxcbiAgY2FyZC1ib3JkZXItdHlwZTogc29saWQsXG4gIGNhcmQtYm9yZGVyLWNvbG9yOiBjb2xvci1iZyxcbiAgY2FyZC1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGNhcmQtcGFkZGluZzogcGFkZGluZyxcbiAgY2FyZC1tYXJnaW46IG1hcmdpbixcbiAgY2FyZC1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBjYXJkLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgY2FyZC1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIGNhcmQtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGNhcmQtaGVhZGVyLWZnOiBjb2xvci1mZywgLy8gVE9ETzogbm90IHVzZWRcbiAgY2FyZC1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWJnOiBjb2xvci1mZyxcbiAgY2FyZC1oZWFkZXItYWN0aXZlLWZnOiBjb2xvci1iZyxcbiAgY2FyZC1oZWFkZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBjYXJkLWhlYWRlci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBjYXJkLWhlYWRlci1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjYXJkLWhlYWRlci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYXJkLWhlYWRlci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBjYXJkLWhlYWRlci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgY2FyZC1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGNhcmQtaGVhZGVyLWJvcmRlci10eXBlOiBzb2xpZCxcbiAgY2FyZC1oZWFkZXItYm9yZGVyLWNvbG9yOiBjYXJkLXNlcGFyYXRvcixcblxuICBoZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBoZWFkZXItZm9udC1zaXplOiBmb250LXNpemUsXG4gIGhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIGhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgaGVhZGVyLWJnOiBjb2xvci1iZyxcbiAgaGVhZGVyLWhlaWdodDogNC43NXJlbSxcbiAgaGVhZGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGhlYWRlci1zaGFkb3c6IHNoYWRvdyxcblxuICBmb290ZXItaGVpZ2h0OiA0LjcyNXJlbSxcbiAgZm9vdGVyLXBhZGRpbmc6IDEuMjVyZW0sXG4gIGZvb3Rlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWZnLWhpZ2hsaWdodDogY29sb3ItZmctaGVhZGluZyxcbiAgZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgZm9vdGVyLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuICBmb290ZXItc2hhZG93OiBzaGFkb3csXG5cbiAgbGF5b3V0LWZvbnQtZmFtaWx5OiBmb250LW1haW4sXG4gIGxheW91dC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgbGF5b3V0LWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgbGF5b3V0LWZnOiBjb2xvci1mZyxcbiAgbGF5b3V0LWJnOiAjZWJlZmY1LFxuICBsYXlvdXQtbWluLWhlaWdodDogMTAwdmgsXG4gIGxheW91dC1jb250ZW50LXdpZHRoOiA5MDBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLW1pbi13aWR0aDogMzAwcHgsXG4gIGxheW91dC13aW5kb3ctbW9kZS1tYXgtd2lkdGg6IDE5MjBweCxcbiAgbGF5b3V0LXdpbmRvdy1tb2RlLWJnOiBsYXlvdXQtYmcsXG4gIGxheW91dC13aW5kb3ctbW9kZS1wYWRkaW5nLXRvcDogNC43NXJlbSxcbiAgbGF5b3V0LXdpbmRvdy1zaGFkb3c6IHNoYWRvdyxcbiAgbGF5b3V0LXBhZGRpbmc6IDIuMjVyZW0gMi4yNXJlbSAwLjc1cmVtLFxuICBsYXlvdXQtbWVkaXVtLXBhZGRpbmc6IDEuNXJlbSAxLjVyZW0gMC41cmVtLFxuICBsYXlvdXQtc21hbGwtcGFkZGluZzogMXJlbSAxcmVtIDAsXG5cbiAgc2lkZWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc2lkZWJhci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNpZGViYXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHNpZGViYXItYmc6IGNvbG9yLWJnLFxuICBzaWRlYmFyLWhlaWdodDogMTAwdmgsXG4gIHNpZGViYXItd2lkdGg6IDE2cmVtLFxuICBzaWRlYmFyLXdpZHRoLWNvbXBhY3Q6IDMuNXJlbSxcbiAgc2lkZWJhci1wYWRkaW5nOiBwYWRkaW5nLFxuICBzaWRlYmFyLWhlYWRlci1oZWlnaHQ6IDMuNXJlbSxcbiAgc2lkZWJhci1mb290ZXItaGVpZ2h0OiAzLjVyZW0sXG4gIHNpZGViYXItc2hhZG93OiBzaGFkb3csXG5cbiAgbWVudS1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIG1lbnUtZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1lbnUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtYWN0aXZlLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuXG4gIG1lbnUtc3VibWVudS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1mZzogY29sb3ItZmctdGV4dCxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgbWVudS1zdWJtZW51LWFjdGl2ZS1iZzogY29sb3ItYmcsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtYm9yZGVyLWNvbG9yOiBjb2xvci1mZy1oaWdobGlnaHQsXG4gIG1lbnUtc3VibWVudS1hY3RpdmUtc2hhZG93OiBub25lLFxuICBtZW51LXN1Ym1lbnUtaG92ZXItZmc6IG1lbnUtc3VibWVudS1hY3RpdmUtZmcsXG4gIG1lbnUtc3VibWVudS1ob3Zlci1iZzogbWVudS1zdWJtZW51LWJnLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItd2lkdGg6IDAuMTI1cmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIG1lbnUtc3VibWVudS1pdGVtLXBhZGRpbmc6IDAuNXJlbSAxcmVtLFxuICBtZW51LXN1Ym1lbnUtaXRlbS1jb250YWluZXItcGFkZGluZzogMCAxLjI1cmVtLFxuICBtZW51LXN1Ym1lbnUtcGFkZGluZzogMC41cmVtLFxuXG4gIG1lbnUtZ3JvdXAtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGRlcixcbiAgbWVudS1ncm91cC1mb250LXNpemU6IDAuODc1cmVtLFxuICBtZW51LWdyb3VwLWZnOiBjb2xvci1mZyxcbiAgbWVudS1ncm91cC1wYWRkaW5nOiAxcmVtIDEuMjVyZW0sXG4gIG1lbnUtaXRlbS1wYWRkaW5nOiAwLjY3NXJlbSAwLjc1cmVtLFxuICBtZW51LWl0ZW0tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIG1lbnUtaWNvbi1mb250LXNpemU6IDIuNXJlbSxcbiAgbWVudS1pY29uLW1hcmdpbjogMCAwLjI1cmVtIDAsXG4gIG1lbnUtaWNvbi1jb2xvcjogY29sb3ItZmcsXG4gIG1lbnUtaWNvbi1hY3RpdmUtY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG5cbiAgdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHRhYnMtY29udGVudC1mb250LWZhbWlseTogZm9udC1tYWluLFxuICB0YWJzLWNvbnRlbnQtZm9udC1zaXplOiBmb250LXNpemUsXG4gIHRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICB0YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHRhYnMtY29udGVudC1wYWRkaW5nOiAwLFxuICB0YWJzLWhlYWRlci1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHRhYnMtZmc6IGNvbG9yLWZnLFxuICB0YWJzLWZnLWRpc2FibGVkOiB0YWJzLWZnLFxuICB0YWJzLWZnLXRleHQ6IGNvbG9yLWZnLXRleHQsXG4gIHRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHRhYnMtc2VsZWN0ZWQtc2Vjb25kLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICB0YWJzLXNlbGVjdGVkLWRlZ3JlZXM6IDAsXG4gIHRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgcm91dGUtdGFicy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIHJvdXRlLXRhYnMtZm9udC1zaXplOiBmb250LXNpemUtbGcsXG4gIHJvdXRlLXRhYnMtYWN0aXZlLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1hY3RpdmUtZm9udC13ZWlnaHQ6IGNhcmQtaGVhZGVyLWZvbnQtd2VpZ2h0LFxuICByb3V0ZS10YWJzLXBhZGRpbmc6IHBhZGRpbmcsXG4gIHJvdXRlLXRhYnMtaGVhZGVyLWJnOiB0cmFuc3BhcmVudCxcbiAgcm91dGUtdGFicy1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgcm91dGUtdGFicy1mZzogY29sb3ItZmcsXG4gIHJvdXRlLXRhYnMtZmctZGlzYWJsZWQ6IHJvdXRlLXRhYnMtZmcsXG4gIHJvdXRlLXRhYnMtZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgcm91dGUtdGFicy1iZzogdHJhbnNwYXJlbnQsXG4gIHJvdXRlLXRhYnMtc2VsZWN0ZWQ6IGNvbG9yLXN1Y2Nlc3MsXG4gIHJvdXRlLXRhYnMtaWNvbi1vbmx5LW1heC13aWR0aDogNTc2cHgsXG5cbiAgdXNlci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgdXNlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHVzZXItYmc6IGNvbG9yLWJnLFxuICB1c2VyLWZnOiBjb2xvci1mZyxcbiAgdXNlci1mZy1oaWdobGlnaHQ6ICNiY2MzY2MsXG4gIHVzZXItZm9udC1mYW1pbHktc2Vjb25kYXJ5OiBmb250LXNlY29uZGFyeSxcbiAgdXNlci1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIHVzZXItc2l6ZS1tZWRpdW06IDIuNXJlbSxcbiAgdXNlci1zaXplLWxhcmdlOiAzLjI1cmVtLFxuICB1c2VyLXNpemUteGxhcmdlOiA0cmVtLFxuXG4gIHBvcG92ZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIHBvcG92ZXItYmc6IGNvbG9yLWJnLFxuICBwb3BvdmVyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgcG9wb3Zlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIHBvcG92ZXItc2hhZG93OiBub25lLFxuICBwb3BvdmVyLWFycm93LXNpemU6IDExcHgsXG5cbiAgY29udGV4dC1tZW51LWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjb250ZXh0LW1lbnUtYmc6IGNvbG9yLWJnLFxuICBjb250ZXh0LW1lbnUtYWN0aXZlLWZnOiBjb2xvci13aGl0ZSxcbiAgY29udGV4dC1tZW51LWFjdGl2ZS1iZzogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgY29udGV4dC1tZW51LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY29udGV4dC1tZW51LXNoYWRvdzogbm9uZSxcbiAgY29udGV4dC1tZW51LWFycm93LXNpemU6IDExcHgsXG5cbiAgYWN0aW9ucy1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWN0aW9ucy1mb250LWZhbWlseTogZm9udC1zZWNvbmRhcnksXG4gIGFjdGlvbnMtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhY3Rpb25zLWZnOiBjb2xvci1mZyxcbiAgYWN0aW9ucy1iZzogY29sb3ItYmcsXG4gIGFjdGlvbnMtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjdGlvbnMtcGFkZGluZzogcGFkZGluZyxcbiAgYWN0aW9ucy1zaXplLXNtYWxsOiAxLjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1tZWRpdW06IDIuMjVyZW0sXG4gIGFjdGlvbnMtc2l6ZS1sYXJnZTogMy41cmVtLFxuXG4gIHNlYXJjaC1idG4tb3Blbi1mZzogY29sb3ItZmcsXG4gIHNlYXJjaC1idG4tY2xvc2UtZmc6XHRjb2xvci1mZyxcbiAgc2VhcmNoLWJnOiBsYXlvdXQtYmcsXG4gIHNlYXJjaC1iZy1zZWNvbmRhcnk6IGNvbG9yLWZnLFxuICBzZWFyY2gtdGV4dDogY29sb3ItZmctaGVhZGluZyxcbiAgc2VhcmNoLWluZm86IGNvbG9yLWZnLFxuICBzZWFyY2gtZGFzaDogY29sb3ItZmcsXG4gIHNlYXJjaC1wbGFjZWhvbGRlcjogY29sb3ItZmcsXG5cbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBzbWFydC10YWJsZS1oZWFkZXItZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LWJvbGQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIHNtYXJ0LXRhYmxlLWhlYWRlci1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtaGVhZGVyLWJnOiBjb2xvci1iZyxcblxuICBzbWFydC10YWJsZS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBzbWFydC10YWJsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgc21hcnQtdGFibGUtZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgc21hcnQtdGFibGUtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBzbWFydC10YWJsZS1mZzogY29sb3ItZmctaGVhZGluZyxcbiAgc21hcnQtdGFibGUtYmc6IGNvbG9yLWJnLFxuXG4gIHNtYXJ0LXRhYmxlLWJnLWV2ZW46ICNmNWY3ZmMsXG4gIHNtYXJ0LXRhYmxlLWZnLXNlY29uZGFyeTogY29sb3ItZmcsXG4gIHNtYXJ0LXRhYmxlLWJnLWFjdGl2ZTogI2U2ZjNmZixcbiAgc21hcnQtdGFibGUtcGFkZGluZzogMC44NzVyZW0gMS4yNXJlbSxcbiAgc21hcnQtdGFibGUtZmlsdGVyLXBhZGRpbmc6IDAuMzc1cmVtIDAuNXJlbSxcbiAgc21hcnQtdGFibGUtc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcblxuICBzbWFydC10YWJsZS1wYWdpbmctYm9yZGVyLWNvbG9yOiBzZXBhcmF0b3IsXG4gIHNtYXJ0LXRhYmxlLXBhZ2luZy1ib3JkZXItd2lkdGg6IDFweCxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWZnLWFjdGl2ZTogI2ZmZmZmZixcbiAgc21hcnQtdGFibGUtcGFnaW5nLWJnLWFjdGl2ZTogY29sb3Itc3VjY2VzcyxcbiAgc21hcnQtdGFibGUtcGFnaW5nLWhvdmVyOiByZ2JhKDAsIDAsIDAsIDAuMDUpLFxuXG4gIHRvYXN0ci1iZzogY29sb3ItYmcsXG4gIHRvYXN0ci1wYWRkaW5nOiAxLjEyNXJlbSxcbiAgdG9hc3RyLWZnOiBjb2xvci1mZy10ZXh0LFxuICB0b2FzdHItYm9yZGVyOiAwLjEyNXJlbSBzb2xpZCxcbiAgdG9hc3RyLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgdG9hc3RyLWJvcmRlci1jb2xvcjogI2JjYzNjYyxcbiAgdG9hc3RyLWljb24tcmFkaXVzOiAwLjI1cmVtLFxuICB0b2FzdHItc2hhZG93OiBzaGFkb3csXG5cbiAgYnRuLWZnOiBjb2xvci13aGl0ZSxcbiAgYnRuLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgYnRuLWxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCxcbiAgYnRuLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgYnRuLWN1cnNvcjogZGVmYXVsdCxcblxuICBidG4tcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgYnRuLXNlY29uZGFyeS1iZzogdHJhbnNwYXJlbnQsXG4gIGJ0bi1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBidG4tc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgYnRuLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIGJ0bi1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBidG4tc2Vjb25kYXJ5LWJvcmRlcjogI2RhZGZlNixcbiAgYnRuLXNlY29uZGFyeS1ib3JkZXItd2lkdGg6IDJweCxcblxuICBidG4tcGFkZGluZy15LWxnOiAwLjg3NXJlbSxcbiAgYnRuLXBhZGRpbmcteC1sZzogMS43NXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1sZzogZm9udC1zaXplLWxnLFxuXG4gIC8vIGRlZmF1bHQgc2l6ZVxuICBidG4tcGFkZGluZy15LW1kOiAwLjc1cmVtLFxuICBidG4tcGFkZGluZy14LW1kOiAxLjVyZW0sXG4gIGJ0bi1mb250LXNpemUtbWQ6IDFyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS1zbTogMC42MjVyZW0sXG4gIGJ0bi1wYWRkaW5nLXgtc206IDEuNXJlbSxcbiAgYnRuLWZvbnQtc2l6ZS1zbTogMC44NzVyZW0sXG5cbiAgYnRuLXBhZGRpbmcteS14czogMC41cmVtLFxuICBidG4tcGFkZGluZy14LXhzOiAxLjI1cmVtLFxuICBidG4tZm9udC1zaXplLXhzOiAwLjc1cmVtLFxuXG4gIGJ0bi1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGJ0bi1yZWN0YW5nbGUtYm9yZGVyLXJhZGl1czogMC4yNXJlbSxcbiAgYnRuLXNlbWktcm91bmQtYm9yZGVyLXJhZGl1czogMC43NXJlbSxcbiAgYnRuLXJvdW5kLWJvcmRlci1yYWRpdXM6IDEuNXJlbSxcblxuICBidG4taGVyby1zaGFkb3c6IG5vbmUsXG4gIGJ0bi1oZXJvLXRleHQtc2hhZG93OiBub25lLFxuICBidG4taGVyby1iZXZlbC1zaXplOiAwIDAgMCAwLFxuICBidG4taGVyby1nbG93LXNpemU6IDAgMCAwIDAsXG4gIGJ0bi1oZXJvLXByaW1hcnktZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXN1Y2Nlc3MtZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLXdhcm5pbmctZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWluZm8tZ2xvdy1zaXplOiBidG4taGVyby1nbG93LXNpemUsXG4gIGJ0bi1oZXJvLWRhbmdlci1nbG93LXNpemU6IGJ0bi1oZXJvLWdsb3ctc2l6ZSxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWdsb3ctc2l6ZTogYnRuLWhlcm8tZ2xvdy1zaXplLFxuICBidG4taGVyby1kZWdyZWU6IDIwZGVnLFxuICBidG4taGVyby1wcmltYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1zdWNjZXNzLWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby13YXJuaW5nLWRlZ3JlZTogMTBkZWcsXG4gIGJ0bi1oZXJvLWluZm8tZGVncmVlOiAtMTBkZWcsXG4gIGJ0bi1oZXJvLWRhbmdlci1kZWdyZWU6IC0yMGRlZyxcbiAgYnRuLWhlcm8tc2Vjb25kYXJ5LWRlZ3JlZTogYnRuLWhlcm8tZGVncmVlLFxuICBidG4taGVyby1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG5cbiAgYnRuLW91dGxpbmUtZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGJ0bi1vdXRsaW5lLWhvdmVyLWZnOiAjZmZmZmZmLFxuICBidG4tb3V0bGluZS1mb2N1cy1mZzogY29sb3ItZmctaGVhZGluZyxcblxuICBidG4tZ3JvdXAtYmc6IGxheW91dC1iZyxcbiAgYnRuLWdyb3VwLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBidG4tZ3JvdXAtc2VwYXJhdG9yOiAjZGFkZmU2LFxuXG4gIGZvcm0tY29udHJvbC10ZXh0LXByaW1hcnktY29sb3I6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGZvcm0tY29udHJvbC1iZzogY29sb3ItYmcsXG4gIGZvcm0tY29udHJvbC1mb2N1cy1iZzogY29sb3ItYmcsXG5cbiAgZm9ybS1jb250cm9sLWJvcmRlci13aWR0aDogMnB4LFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBmb3JtLWNvbnRyb2wtc2VtaS1yb3VuZC1ib3JkZXItcmFkaXVzOiAwLjc1cmVtLFxuICBmb3JtLWNvbnRyb2wtcm91bmQtYm9yZGVyLXJhZGl1czogMS41cmVtLFxuICBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOiAjZGFkZmU2LFxuICBmb3JtLWNvbnRyb2wtc2VsZWN0ZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuXG4gIGZvcm0tY29udHJvbC1pbmZvLWJvcmRlci1jb2xvcjogY29sb3ItaW5mbyxcbiAgZm9ybS1jb250cm9sLXN1Y2Nlc3MtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBmb3JtLWNvbnRyb2wtZGFuZ2VyLWJvcmRlci1jb2xvcjogY29sb3ItZGFuZ2VyLFxuICBmb3JtLWNvbnRyb2wtd2FybmluZy1ib3JkZXItY29sb3I6IGNvbG9yLXdhcm5pbmcsXG5cbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yOiBjb2xvci1mZyxcbiAgZm9ybS1jb250cm9sLXBsYWNlaG9sZGVyLWZvbnQtc2l6ZTogMXJlbSxcblxuICBmb3JtLWNvbnRyb2wtZm9udC1zaXplOiAxcmVtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZzogMC43NXJlbSAxLjEyNXJlbSxcbiAgZm9ybS1jb250cm9sLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBmb3JtLWNvbnRyb2wtcGFkZGluZy1zbTogMC4zNzVyZW0gMS4xMjVyZW0sXG4gIGZvcm0tY29udHJvbC1mb250LXNpemUtbGc6IGZvbnQtc2l6ZS1sZyxcbiAgZm9ybS1jb250cm9sLXBhZGRpbmctbGc6IDEuMTI1cmVtLFxuXG4gIGZvcm0tY29udHJvbC1sYWJlbC1mb250LXdlaWdodDogNDAwLFxuXG4gIGZvcm0tY29udHJvbC1mZWVkYmFjay1mb250LXNpemU6IDAuODc1cmVtLFxuICBmb3JtLWNvbnRyb2wtZmVlZGJhY2stZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcblxuICBjaGVja2JveC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWJvcmRlci1jb2xvcjogZm9ybS1jb250cm9sLWJvcmRlci1jb2xvcixcbiAgY2hlY2tib3gtY2hlY2ttYXJrOiB0cmFuc3BhcmVudCxcblxuICBjaGVja2JveC1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hlY2tib3gtY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICBjaGVja2JveC1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBjaGVja2JveC1jaGVja2VkLWNoZWNrbWFyazogY29sb3ItZmctaGVhZGluZyxcblxuICBjaGVja2JveC1kaXNhYmxlZC1iZzogdHJhbnNwYXJlbnQsXG4gIGNoZWNrYm94LWRpc2FibGVkLXNpemU6IDEuMjVyZW0sXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1zaXplOiAycHgsXG4gIGNoZWNrYm94LWRpc2FibGVkLWJvcmRlci1jb2xvcjogY29sb3ItZmctaGVhZGluZyxcbiAgY2hlY2tib3gtZGlzYWJsZWQtY2hlY2ttYXJrOiBjb2xvci1mZy1oZWFkaW5nLFxuXG4gIG1vZGFsLWZvbnQtc2l6ZTogZm9udC1zaXplLFxuICBtb2RhbC1saW5lLWhlaWdodDogbGluZS1oZWlnaHQsXG4gIG1vZGFsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWZnOiBjb2xvci1mZy10ZXh0LFxuICBtb2RhbC1mZy1oZWFkaW5nOiBjb2xvci1mZy1oZWFkaW5nLFxuICBtb2RhbC1iZzogY29sb3ItYmcsXG4gIG1vZGFsLWJvcmRlcjogdHJhbnNwYXJlbnQsXG4gIG1vZGFsLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgbW9kYWwtcGFkZGluZzogcGFkZGluZyxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtZmFtaWx5OiBmb250LXNlY29uZGFyeSxcbiAgbW9kYWwtaGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIG1vZGFsLWhlYWRlci1mb250LXNpemU6IGZvbnQtc2l6ZS1sZyxcbiAgbW9kYWwtYm9keS1mb250LWZhbWlseTogZm9udC1tYWluLFxuICBtb2RhbC1ib2R5LWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIG1vZGFsLWJvZHktZm9udC1zaXplOiBmb250LXNpemUsXG4gIG1vZGFsLXNlcGFyYXRvcjogc2VwYXJhdG9yLFxuXG4gIGJhZGdlLWZnLXRleHQ6IGNvbG9yLXdoaXRlLFxuICBiYWRnZS1wcmltYXJ5LWJnLWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBiYWRnZS1zdWNjZXNzLWJnLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICBiYWRnZS1pbmZvLWJnLWNvbG9yOiBjb2xvci1pbmZvLFxuICBiYWRnZS13YXJuaW5nLWJnLWNvbG9yOiBjb2xvci13YXJuaW5nLFxuICBiYWRnZS1kYW5nZXItYmctY29sb3I6IGNvbG9yLWRhbmdlcixcblxuICBwcm9ncmVzcy1iYXItaGVpZ2h0LXhsZzogMS43NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1sZzogMS41cmVtLFxuICBwcm9ncmVzcy1iYXItaGVpZ2h0OiAxLjM3NXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC1zbTogMS4yNXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWhlaWdodC14czogMXJlbSxcbiAgcHJvZ3Jlc3MtYmFyLWFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXMsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemUteGxnOiBmb250LXNpemUteGxnLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLWxnOiBmb250LXNpemUtbGcsXG4gIHByb2dyZXNzLWJhci1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtc2l6ZS1zbTogZm9udC1zaXplLXNtLFxuICBwcm9ncmVzcy1iYXItZm9udC1zaXplLXhzOiBmb250LXNpemUteHMsXG4gIHByb2dyZXNzLWJhci1yYWRpdXM6IHJhZGl1cyxcbiAgcHJvZ3Jlc3MtYmFyLWJnOiBsYXlvdXQtYmcsXG4gIHByb2dyZXNzLWJhci1mb250LWNvbG9yOiBjb2xvci13aGl0ZSxcbiAgcHJvZ3Jlc3MtYmFyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkLFxuICBwcm9ncmVzcy1iYXItZGVmYXVsdC1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHByb2dyZXNzLWJhci1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBwcm9ncmVzcy1iYXItaW5mby1iZzogY29sb3ItaW5mbyxcbiAgcHJvZ3Jlc3MtYmFyLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHByb2dyZXNzLWJhci1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBhbGVydC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWxlcnQtbGluZS1oZWlnaHQ6IGxpbmUtaGVpZ2h0LFxuICBhbGVydC1mb250LXdlaWdodDogZm9udC13ZWlnaHQtbm9ybWFsLFxuICBhbGVydC1mZzogY29sb3Itd2hpdGUsXG4gIGFsZXJ0LW91dGxpbmUtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1iZzogY29sb3ItYmcsXG4gIGFsZXJ0LWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIGFsZXJ0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgYWxlcnQtZGlzYWJsZWQtZmc6IGNvbG9yLWZnLFxuICBhbGVydC1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBhbGVydC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBhbGVydC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICBhbGVydC13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBhbGVydC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcbiAgYWxlcnQtaGVpZ2h0LXh4c21hbGw6IDUycHgsXG4gIGFsZXJ0LWhlaWdodC14c21hbGw6IDcycHgsXG4gIGFsZXJ0LWhlaWdodC1zbWFsbDogOTJweCxcbiAgYWxlcnQtaGVpZ2h0LW1lZGl1bTogMTEycHgsXG4gIGFsZXJ0LWhlaWdodC1sYXJnZTogMTMycHgsXG4gIGFsZXJ0LWhlaWdodC14bGFyZ2U6IDE1MnB4LFxuICBhbGVydC1oZWlnaHQteHhsYXJnZTogMTcycHgsXG4gIGFsZXJ0LXNoYWRvdzogbm9uZSxcbiAgYWxlcnQtYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBhbGVydC1wYWRkaW5nOiAxcmVtIDEuMTI1cmVtLFxuICBhbGVydC1jbG9zYWJsZS1wYWRkaW5nOiAzcmVtLFxuICBhbGVydC1idXR0b24tcGFkZGluZzogM3JlbSxcbiAgYWxlcnQtbWFyZ2luOiBtYXJnaW4sXG5cbiAgY2hhdC1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2hhdC1mZzogY29sb3Itd2hpdGUsXG4gIGNoYXQtYmc6IGNvbG9yLWJnLFxuICBjaGF0LWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgY2hhdC1mZy10ZXh0OiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LWhlaWdodC14eHNtYWxsOiA5NnB4LFxuICBjaGF0LWhlaWdodC14c21hbGw6IDIxNnB4LFxuICBjaGF0LWhlaWdodC1zbWFsbDogMzM2cHgsXG4gIGNoYXQtaGVpZ2h0LW1lZGl1bTogNDU2cHgsXG4gIGNoYXQtaGVpZ2h0LWxhcmdlOiA1NzZweCxcbiAgY2hhdC1oZWlnaHQteGxhcmdlOiA2OTZweCxcbiAgY2hhdC1oZWlnaHQteHhsYXJnZTogODE2cHgsXG4gIGNoYXQtYm9yZGVyOiBib3JkZXIsXG4gIGNoYXQtcGFkZGluZzogcGFkZGluZyxcbiAgY2hhdC1zaGFkb3c6IHNoYWRvdyxcbiAgY2hhdC1zZXBhcmF0b3I6IHNlcGFyYXRvcixcbiAgY2hhdC1tZXNzYWdlLWZnOiBjb2xvci13aGl0ZSxcbiAgY2hhdC1tZXNzYWdlLWJnOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICM0Y2E2ZmYsICM1OWJmZmYpLFxuICBjaGF0LW1lc3NhZ2UtcmVwbHktYmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgY2hhdC1tZXNzYWdlLXJlcGx5LWZnOiBjb2xvci1mZy10ZXh0LFxuICBjaGF0LW1lc3NhZ2UtYXZhdGFyLWJnOiBjb2xvci1mZyxcbiAgY2hhdC1tZXNzYWdlLXNlbmRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1xdW90ZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBjaGF0LW1lc3NhZ2UtZmlsZS1mZzogY29sb3ItZmcsXG4gIGNoYXQtbWVzc2FnZS1maWxlLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWJnOiB0cmFuc3BhcmVudCxcbiAgY2hhdC1mb3JtLWZnOiBjb2xvci1mZy1oZWFkaW5nLFxuICBjaGF0LWZvcm0tYm9yZGVyOiBzZXBhcmF0b3IsXG4gIGNoYXQtZm9ybS1wbGFjZWhvbGRlci1mZzogY29sb3ItZmcsXG4gIGNoYXQtZm9ybS1hY3RpdmUtYm9yZGVyOiBjb2xvci1mZyxcbiAgY2hhdC1hY3RpdmUtYmc6IGNvbG9yLWZnLFxuICBjaGF0LWRpc2FibGVkLWJnOiBjb2xvci1kaXNhYmxlZCxcbiAgY2hhdC1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGNoYXQtcHJpbWFyeS1iZzogY29sb3ItcHJpbWFyeSxcbiAgY2hhdC1pbmZvLWJnOiBjb2xvci1pbmZvLFxuICBjaGF0LXN1Y2Nlc3MtYmc6IGNvbG9yLXN1Y2Nlc3MsXG4gIGNoYXQtd2FybmluZy1iZzogY29sb3Itd2FybmluZyxcbiAgY2hhdC1kYW5nZXItYmc6IGNvbG9yLWRhbmdlcixcblxuICBzcGlubmVyLWJnOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODMpLFxuICBzcGlubmVyLWNpcmNsZS1iZzogY29sb3ItYmctYWN0aXZlLFxuICBzcGlubmVyLWZnOiBjb2xvci1mZy10ZXh0LFxuICBzcGlubmVyLWFjdGl2ZS1iZzogY29sb3ItZmcsXG4gIHNwaW5uZXItZGlzYWJsZWQtYmc6IGNvbG9yLWRpc2FibGVkLFxuICBzcGlubmVyLWRpc2FibGVkLWZnOiBjb2xvci1mZyxcbiAgc3Bpbm5lci1wcmltYXJ5LWJnOiBjb2xvci1wcmltYXJ5LFxuICBzcGlubmVyLWluZm8tYmc6IGNvbG9yLWluZm8sXG4gIHNwaW5uZXItc3VjY2Vzcy1iZzogY29sb3Itc3VjY2VzcyxcbiAgc3Bpbm5lci13YXJuaW5nLWJnOiBjb2xvci13YXJuaW5nLFxuICBzcGlubmVyLWRhbmdlci1iZzogY29sb3ItZGFuZ2VyLFxuICBzcGlubmVyLXh4c21hbGw6IDEuMjVyZW0sXG4gIHNwaW5uZXIteHNtYWxsOiAxLjVyZW0sXG4gIHNwaW5uZXItc21hbGw6IDEuNzVyZW0sXG4gIHNwaW5uZXItbWVkaXVtOiAycmVtLFxuICBzcGlubmVyLWxhcmdlOiAyLjI1cmVtLFxuICBzcGlubmVyLXhsYXJnZTogMi41cmVtLFxuICBzcGlubmVyLXh4bGFyZ2U6IDNyZW0sXG5cbiAgc3RlcHBlci1pbmRleC1zaXplOiAycmVtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtc2l6ZTogZm9udC1zaXplLXNtLFxuICBzdGVwcGVyLWxhYmVsLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ib2xkZXIsXG4gIHN0ZXBwZXItYWNjZW50LWNvbG9yOiBjb2xvci1wcmltYXJ5LFxuICBzdGVwcGVyLWNvbXBsZXRlZC1mZzogY29sb3Itd2hpdGUsXG4gIHN0ZXBwZXItZmc6IGNvbG9yLWZnLFxuICBzdGVwcGVyLWNvbXBsZXRlZC1pY29uLXNpemU6IDEuNXJlbSxcbiAgc3RlcHBlci1jb21wbGV0ZWQtaWNvbi13ZWlnaHQ6IGZvbnQtd2VpZ2h0LXVsdHJhLWJvbGQsXG4gIHN0ZXBwZXItc3RlcC1wYWRkaW5nOiBwYWRkaW5nLFxuXG4gIGFjY29yZGlvbi1wYWRkaW5nOiBwYWRkaW5nLFxuICBhY2NvcmRpb24tc2VwYXJhdG9yOiBzZXBhcmF0b3IsXG4gIGFjY29yZGlvbi1oZWFkZXItZm9udC1mYW1pbHk6IGZvbnQtc2Vjb25kYXJ5LFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtc2l6ZTogZm9udC1zaXplLWxnLFxuICBhY2NvcmRpb24taGVhZGVyLWZvbnQtd2VpZ2h0OiBmb250LXdlaWdodC1ub3JtYWwsXG4gIGFjY29yZGlvbi1oZWFkZXItZmctaGVhZGluZzogY29sb3ItZmctaGVhZGluZyxcbiAgYWNjb3JkaW9uLWhlYWRlci1kaXNhYmxlZC1mZzogY29sb3ItZmcsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXdpZHRoOiAxcHgsXG4gIGFjY29yZGlvbi1oZWFkZXItYm9yZGVyLXR5cGU6IHNvbGlkLFxuICBhY2NvcmRpb24taGVhZGVyLWJvcmRlci1jb2xvcjogYWNjb3JkaW9uLXNlcGFyYXRvcixcbiAgYWNjb3JkaW9uLWJvcmRlci1yYWRpdXM6IHJhZGl1cyxcbiAgYWNjb3JkaW9uLWl0ZW0tYmc6IGNvbG9yLWJnLFxuICBhY2NvcmRpb24taXRlbS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgYWNjb3JkaW9uLWl0ZW0tZm9udC1mYW1pbHk6IGZvbnQtbWFpbixcbiAgYWNjb3JkaW9uLWl0ZW0tZmctdGV4dDogY29sb3ItZmctdGV4dCxcbiAgYWNjb3JkaW9uLWl0ZW0tc2hhZG93OiBzaGFkb3csXG5cbiAgbGlzdC1pdGVtLWJvcmRlci1jb2xvcjogdGFicy1zZXBhcmF0b3IsXG4gIGxpc3QtaXRlbS1wYWRkaW5nOiAxcmVtLFxuXG4gIGNhbGVuZGFyLXdpZHRoOiAyMS44NzVyZW0sXG4gIGNhbGVuZGFyLWJvZHktaGVpZ2h0OiAyNS42MjVyZW0sXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZS14bGcsXG4gIGNhbGVuZGFyLWhlYWRlci10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtYm9sZCxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXNpemU6IGZvbnQtc2l6ZSxcbiAgY2FsZW5kYXItaGVhZGVyLXN1Yi10aXRsZS1mb250LXdlaWdodDogZm9udC13ZWlnaHQtdGhpbixcbiAgY2FsZW5kYXItbmF2aWdhdGlvbi1idXR0b24td2lkdGg6IDEwcmVtLFxuICBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1ob3Zlci1pdGVtLWJnOiBjYWxlbmRhci1zZWxlY3RlZC1pdGVtLWJnLFxuICBjYWxlbmRhci10b2RheS1pdGVtLWJnOiBjb2xvci1iZy1hY3RpdmUsXG4gIGNhbGVuZGFyLWFjdGl2ZS1pdGVtLWJnOiBjb2xvci1zdWNjZXNzLFxuICBjYWxlbmRhci1mZzogY29sb3ItZmctdGV4dCxcbiAgY2FsZW5kYXItc2VsZWN0ZWQtZmc6IGNvbG9yLXdoaXRlLFxuICBjYWxlbmRhci10b2RheS1mZzogY2FsZW5kYXItZmcsXG4gIGNhbGVuZGFyLWRheS1jZWxsLXdpZHRoOiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItZGF5LWNlbGwtaGVpZ2h0OiAyLjYyNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC13aWR0aDogNC4yNXJlbSxcbiAgY2FsZW5kYXItbW9udGgtY2VsbC1oZWlnaHQ6IDIuMzc1cmVtLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtd2lkdGg6IGNhbGVuZGFyLW1vbnRoLWNlbGwtd2lkdGgsXG4gIGNhbGVuZGFyLXllYXItY2VsbC1oZWlnaHQ6IGNhbGVuZGFyLW1vbnRoLWNlbGwtaGVpZ2h0LFxuICBjYWxlbmRhci1pbmFjdGl2ZS1vcGFjaXR5OiAwLjUsXG4gIGNhbGVuZGFyLWRpc2FibGVkLW9wYWNpdHk6IDAuMyxcbiAgY2FsZW5kYXItYm9yZGVyLXJhZGl1czogcmFkaXVzLFxuICBjYWxlbmRhci13ZWVrZGF5LXdpZHRoOiBjYWxlbmRhci1kYXktY2VsbC13aWR0aCxcbiAgY2FsZW5kYXItd2Vla2RheS1oZWlnaHQ6IDEuNzVyZW0sXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC1zaXplOiBmb250LXNpemUteHMsXG4gIGNhbGVuZGFyLXdlZWtkYXktZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0LW5vcm1hbCxcbiAgY2FsZW5kYXItd2Vla2RheS1mZzogY29sb3ItZmcsXG4gIGNhbGVuZGFyLXdlZWtkYXktaG9saWRheS1mZzogY29sb3ItZGFuZ2VyLFxuICBjYWxlbmRhci1yYW5nZS1iZy1pbi1yYW5nZTogI2ViZmJmMixcblxuICBjYWxlbmRhci1sYXJnZS13aWR0aDogMjQuMzc1cmVtLFxuICBjYWxlbmRhci1sYXJnZS1ib2R5LWhlaWdodDogMjcuNzVyZW0sXG4gIGNhbGVuZGFyLWRheS1jZWxsLWxhcmdlLXdpZHRoOiAzcmVtLFxuICBjYWxlbmRhci1kYXktY2VsbC1sYXJnZS1oZWlnaHQ6IDNyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2Utd2lkdGg6IDQuMjVyZW0sXG4gIGNhbGVuZGFyLW1vbnRoLWNlbGwtbGFyZ2UtaGVpZ2h0OiAyLjM3NXJlbSxcbiAgY2FsZW5kYXIteWVhci1jZWxsLWxhcmdlLXdpZHRoOiBjYWxlbmRhci1tb250aC1jZWxsLXdpZHRoLFxuICBjYWxlbmRhci15ZWFyLWNlbGwtbGFyZ2UtaGVpZ2h0OiBjYWxlbmRhci1tb250aC1jZWxsLWhlaWdodCxcblxuICBvdmVybGF5LWJhY2tkcm9wLWJnOiByZ2JhKDAsIDAsIDAsIDAuMjg4KSxcblxuICB0b29sdGlwLWJnOiBjb2xvci1mZy10ZXh0LFxuICB0b29sdGlwLXByaW1hcnktYmc6IGNvbG9yLXByaW1hcnksXG4gIHRvb2x0aXAtaW5mby1iZzogY29sb3ItaW5mbyxcbiAgdG9vbHRpcC1zdWNjZXNzLWJnOiBjb2xvci1zdWNjZXNzLFxuICB0b29sdGlwLXdhcm5pbmctYmc6IGNvbG9yLXdhcm5pbmcsXG4gIHRvb2x0aXAtZGFuZ2VyLWJnOiBjb2xvci1kYW5nZXIsXG4gIHRvb2x0aXAtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zdGF0dXMtZmc6IGNvbG9yLWJnLWFjdGl2ZSxcbiAgdG9vbHRpcC1zaGFkb3c6IHNoYWRvdyxcbiAgdG9vbHRpcC1mb250LXNpemU6IGZvbnQtc2l6ZSxcblxuICBzZWxlY3QtYm9yZGVyLXdpZHRoOiAycHgsXG4gIHNlbGVjdC1tYXgtaGVpZ2h0OiAyMHJlbSxcbiAgc2VsZWN0LWJnOiBjb2xvci1iZyxcblxuICBzZWxlY3QtY2hlY2tib3gtY29sb3I6IGNoZWNrYm94LWJvcmRlci1jb2xvcixcbiAgc2VsZWN0LWNoZWNrbWFyay1jb2xvcjogY2hlY2tib3gtYm9yZGVyLWNvbG9yLFxuXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtYmc6ICNmMmY0ZjcsXG4gIHNlbGVjdC1vcHRpb24tZGlzYWJsZWQtb3BhY2l0eTogMC4zLFxuICBzZWxlY3Qtb3B0aW9uLXBhZGRpbmc6IDAuNzVyZW0gMS41cmVtLFxuXG4gIGRhdGVwaWNrZXItZmc6IGNvbG9yLWZnLWhlYWRpbmcsXG4gIGRhdGVwaWNrZXItYmc6IGNvbG9yLWJnLFxuICBkYXRlcGlja2VyLWJvcmRlcjogY29sb3Itc3VjY2VzcyxcbiAgZGF0ZXBpY2tlci1ib3JkZXItcmFkaXVzOiByYWRpdXMsXG4gIGRhdGVwaWNrZXItc2hhZG93OiBub25lLFxuICBkYXRlcGlja2VyLWFycm93LXNpemU6IDExcHgsXG5cbiAgcmFkaW8tYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1mZzogY29sb3ItZmctdGV4dCxcbiAgcmFkaW8tc2l6ZTogMS4yNXJlbSxcbiAgcmFkaW8tYm9yZGVyLXNpemU6IDJweCxcbiAgcmFkaW8tYm9yZGVyLWNvbG9yOiBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yLFxuICByYWRpby1jaGVja21hcms6IHRyYW5zcGFyZW50LFxuICByYWRpby1jaGVja2VkLWJnOiB0cmFuc3BhcmVudCxcbiAgcmFkaW8tY2hlY2tlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1jaGVja2VkLWJvcmRlci1zaXplOiAycHgsXG4gIHJhZGlvLWNoZWNrZWQtYm9yZGVyLWNvbG9yOiBjb2xvci1zdWNjZXNzLFxuICByYWRpby1jaGVja2VkLWNoZWNrbWFyazogY29sb3Itc3VjY2VzcyxcbiAgcmFkaW8tZGlzYWJsZWQtYmc6IHRyYW5zcGFyZW50LFxuICByYWRpby1kaXNhYmxlZC1zaXplOiAxLjI1cmVtLFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItc2l6ZTogMnB4LFxuICByYWRpby1kaXNhYmxlZC1ib3JkZXItY29sb3I6IHJhZGlvLWJvcmRlci1jb2xvcixcbiAgcmFkaW8tZGlzYWJsZWQtY2hlY2ttYXJrOiByYWRpby1jaGVja21hcmssXG5cbiAgdHJlZS1ncmlkLWNlbGwtYm9yZGVyLXdpZHRoOiAxcHgsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1zdHlsZTogc29saWQsXG4gIHRyZWUtZ3JpZC1jZWxsLWJvcmRlci1jb2xvcjogc2VwYXJhdG9yLFxuICB0cmVlLWdyaWQtcm93LW1pbi1oZWlnaHQ6IDJyZW0sXG4gIHRyZWUtZ3JpZC1jZWxsLXBhZGRpbmc6IDAuODc1cmVtIDEuMjVyZW0sXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tYm9yZGVyOiBub25lLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLXBhZGRpbmc6IDAsXG4gIHRyZWUtZ3JpZC1zb3J0LWhlYWRlci1idXR0b24tZm9udC13ZWlnaHQ6IGJvbGQsXG4gIHRyZWUtZ3JpZC1oZWFkZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtZm9vdGVyLWJnOiBjb2xvci1iZyxcbiAgdHJlZS1ncmlkLXJvdy1iZzogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctYmctZXZlbjogY29sb3ItYmcsXG4gIHRyZWUtZ3JpZC1yb3ctaG92ZXItYmc6IGNvbG9yLWJnLFxuICB0cmVlLWdyaWQtc29ydC1oZWFkZXItYnV0dG9uLWNvbG9yOiBjb2xvci1mZy10ZXh0LFxuICB0cmVlLWdyaWQtaWNvbi1jb2xvcjogY29sb3ItZmctdGV4dCxcbik7XG5cbi8vIHJlZ2lzdGVyIHRoZSB0aGVtZVxuJG5iLXRoZW1lczogbmItcmVnaXN0ZXItdGhlbWUoJHRoZW1lLCBkZWZhdWx0KTtcbiIsIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi9cblxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG4kZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZTogMjRweCAhZGVmYXVsdDtcbiRncmlkLWd1dHRlci13aWR0aHM6IChcbiAgeHM6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICBzbTogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2UsXG4gIG1kOiAkZ3JpZC1ndXR0ZXItd2lkdGgtYmFzZSxcbiAgbGc6ICRncmlkLWd1dHRlci13aWR0aC1iYXNlLFxuICB4bDogJGdyaWQtZ3V0dGVyLXdpZHRoLWJhc2VcbikgIWRlZmF1bHQ7XG5cblxuJGdyaWQtYnJlYWtwb2ludHM6IChcbiAgeHM6IDAsXG4gIGlzOiA0MDBweCxcbiAgc206IDU3NnB4LFxuICBtZDogNzY4cHgsXG4gIGxnOiA5OTJweCxcbiAgeGw6IDEyMDBweCxcbiAgeHhsOiAxNDAwcHgsXG4gIHh4eGw6IDE2MDBweFxuKTtcblxuJGNvbnRhaW5lci1tYXgtd2lkdGhzOiAoXG4gIGlzOiAzODBweCxcbiAgc206IDU0MHB4LFxuICBtZDogNzIwcHgsXG4gIGxnOiA5NjBweCxcbiAgeGw6IDExNDBweCxcbiAgeHhsOiAxMzIwcHgsXG4gIHh4eGw6IDE1MDBweFxuKTtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAwLjAycHgsIG51bGwpO1xufVxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiQGltcG9ydCAnLi4vLi4vc3R5bGVzL3RoZW1lcyc7XHJcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMvYnJlYWtwb2ludHMnO1xyXG5AaW1wb3J0ICd+QG5lYnVsYXIvdGhlbWUvc3R5bGVzL2dsb2JhbC9icmVha3BvaW50cyc7XHJcbkBpbXBvcnQgJ35hcHAvc2hhcmVkL3N0eWxlcy92YXJpYWJsZXMuc2Nzcyc7XHJcblxyXG5AaW5jbHVkZSBuYi1pbnN0YWxsLWNvbXBvbmVudCgpIHtcclxuICBcclxuICBuYi1zaWRlYmFyLmFwcC1zaWRlYmFyIHtcclxuICAgIFxyXG4gICAgL2RlZXAvIC5zY3JvbGxhYmxlIHtcclxuICAgICAgcGFkZGluZy10b3A6IDMwcHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgIH1cclxuICAgIC9kZWVwLyAubWFpbi1jb250YWluZXIge1xyXG4gICAgICB6LWluZGV4OiAyO1xyXG4gICAgfVxyXG4gICAgL2RlZXAvIG5iLW1lbnUuYXBwLXNpZGViYXItbWVudSB7XHJcbiAgICAgIC5tZW51LWl0ZW1zIHtcclxuICAgICAgICAubWVudS1pdGVtIHtcclxuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcclxuICAgICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDVweCA1cHggMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvZGVlcC8gbmItbWVudS5hcHAtc2lkZWJhci1tZW51IC5tZW51LWl0ZW0gPiAubWVudS1pdGVtcyA+IC5tZW51LWl0ZW0ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgL2RlZXAvIG5iLW1lbnUuYXBwLXNpZGViYXItbWVudSAubWVudS1pdGVtIGE6b25seS1jaGlsZCB7XHJcbiAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICAgIGNvbG9yOiAkbWFpbi1iZztcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgIGkubWVudS1pY29uIHtcclxuICAgICAgICAgIGNvbG9yOiAkbWFpbi1iZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgXHJcbn0iLCJcclxuJG1haW4tYmc6ICMwMDdlYTM7XHJcbiRsYXlvdXQtYmc6ICNmNWY2ZjY7XHJcbiRkYW5nZXItY29sb3I6ICNlYjVhNTI7XHJcbiRlcnJvci1jb2xvcjogI2U5NTg1YTtcclxuJGZvbnQtZGVmYXVsdDogIzMyM2M0NztcclxuJGZvbnQtdGFibGUtZGVmYXVsdDogIzM2NDA0YjtcclxuXHJcbiRhcHAtc2lkZWJhci1iZzogJG1haW4tYmc7XHJcblxyXG4kZm9ybS1sYWJlbC1mZzogI2FhYWFhYTtcclxuJHRhYmxlLWhlYWRlci1iZzogI2UzZTdlODtcclxuJGNhbmNlbC1jb2xvcjogI2JmY2VkMztcclxuJGJnLWRlbGV0ZS1jb2xvcjogI2U4ZThlODtcclxuJHdoaXRlLWNvbG9yOiAjZmZmZmZmO1xyXG4kc2xhdGUtY29sb3I6ICM0ODU0NjU7XHJcbi8vPT09PT09PT09PSBEQVJLIFRIRU1FUyA9PT09PT09PT09PT09PT0vL1xyXG4kZGFyay10aGVtZXMtd3JhcF9iZzogIzIzMjMyMztcclxuJGRhcmstdGhlbWVzLWJveC1iZzogIzEzMTUxNjtcclxuJGRhcmstdGhlbWVzLWJhc2UtY29sb3I6ICNlOGU2ZTM7XHJcbiRkYXJrLXRoZW1lcy10aGVhZC1iYWNrZ3JvdW5kOiAjMjYyYTJiO1xyXG4kZGFyay10aGVtZXMtdGhlYWQtY29sb3I6ICM1YWRhZmY7XHJcbiRkYXJrLXRoZW1lcy1hY3RpdmU6ICM1YWRhZmY7XHJcbiRkYXJrLXRoZW1lcy10ci1iYWNrZ3JvdW5kOiAjMTgxYTFiO1xyXG4kZGFyay10aGVtZXMtdHItYmFja2dyb3VuZC0yOiAjMGQyOTM2O1xyXG4kZGFyay10aGVtZXMtYm94LXNoYWRvdzogIzFmMjIyMztcclxuLy8tLVxyXG4kZGFyay1tYWluLWJnOiAjNWFkYWZmO1xyXG4kZGFyay1sYXlvdXQtYmc6ICMzMzM3Mzk7XHJcbiRkYXJrLWRhbmdlci1jb2xvcjogI2VjNjA1ODtcclxuJGRhcmstZXJyb3ItY29sb3I6ICNlYTVkNWY7XHJcbiRkYXJrLWZvbnQtZGVmYXVsdDogI2MyYmNiNDtcclxuJGRhcmstZm9udC10YWJsZS1kZWZhdWx0OiAjYmZiYWIxO1xyXG4kZGFyay1mb3JtLWxhYmVsLWZnOiAjYjJhY2EyO1xyXG5cclxuIl19 */\"","import { Component, OnInit } from '@angular/core';\r\nimport { LoadingOverlayService } from '../../services/loading-overlay.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-default-layout',\r\n templateUrl: './default-layout.component.html',\r\n styleUrls: ['./default-layout.component.scss']\r\n})\r\nexport class DefaultLayoutComponent implements OnInit {\r\n isLoadingPage$: Observable = this.loadingOverlayService.isLoading;\r\n\r\n constructor(\r\n private loadingOverlayService: LoadingOverlayService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","\r\nexport * from './default/default-layout.component';\r\n","import { IOffsetWellCompare } from \"./offset-well-compare.model\";\r\n\r\nexport interface IReatlimeChannelSettingModel {\r\n wellId: number;\r\n treatmentId: number;\r\n flowPathType: number;\r\n cNames: string[];\r\n lastDataTime: string;\r\n}\r\n\r\nexport interface IChannelSettingYAxisModel {\r\n min: number;\r\n max: number;\r\n channels: IChannelSettingItemModel[];\r\n opposite?: boolean;\r\n}\r\n\r\nexport interface IChannelSettingModel {\r\n autoScaleYAxis?: boolean;\r\n firstLeft: IChannelSettingYAxisModel;\r\n secondLeft: IChannelSettingYAxisModel;\r\n firstRight: IChannelSettingYAxisModel;\r\n secondRight: IChannelSettingYAxisModel;\r\n timezoneOffset?: number;\r\n offsetWellSettings?: IOffsetWellCompare[];\r\n}\r\n\r\nexport interface IChannelSettingItemModel {\r\n channelName: string;\r\n name: string;\r\n channel: IChannelItem;\r\n cName: string;\r\n unit?: string;\r\n color?: string;\r\n colorMode?: string;\r\n min?: number;\r\n max?: number;\r\n opposite?: boolean;\r\n channelValue?: number;\r\n // offset channel properties\r\n isOffset?: boolean;\r\n isRealtime?: boolean;\r\n wellId?: number;\r\n treatmentId?: number;\r\n firstData?: number;\r\n lastData?: number;\r\n originName?: string;\r\n originalName?: string;\r\n isSmoothData?: boolean;\r\n smoothRange?: number;\r\n isBourdetDer?: boolean;\r\n bourdetDerRange?: number;\r\n isCompare?: boolean;\r\n digits?: string;\r\n digitsFormat?: string;\r\n measureType?: string;\r\n channelMappedGroup?: any[];\r\n}\r\n\r\nexport interface IChannelItem {\r\n cName: string;\r\n name: string;\r\n unit: string;\r\n cnameObjects?: ICNameObject[];\r\n color?: string;\r\n colorMode?: string;\r\n min?: number;\r\n max?: number;\r\n isOffset?: boolean;\r\n isRealtime?: boolean;\r\n wellId?: number;\r\n treatmentId?: number;\r\n originName?: string;\r\n originalName?: string;\r\n isSmoothData?: boolean;\r\n smoothRange?: number;\r\n isBourdetDer?: boolean;\r\n bourdetDerRange?: number;\r\n isCompare?: boolean;\r\n digits?: string;\r\n measureType?: string;\r\n channelMappedGroup?: any[];\r\n}\r\n\r\nexport interface IEditChannelMappedDto {\r\n channelMappedName: string,\r\n color: string,\r\n companyId: number\r\n}\r\n\r\nexport interface IRenameChannel { originalName: string, mappedName: string }\r\n\r\nexport interface IChannelMappingResponse {\r\n id: number;\r\n name: string;\r\n color?: string;\r\n isEdit?: boolean;\r\n isApplyToAllWell?: boolean;\r\n mappedChannel: string[];\r\n}\r\n\r\nexport const isChannelSettingModel = (object: any) => {\r\n return object && object.firstLeft && object.secondLeft && object.firstRight && object.secondRight;\r\n};\r\n\r\ninterface ICNameObject {\r\n cName: string;\r\n wellId: number;\r\n treatmentId: number;\r\n}\r\n","import * as _ from 'lodash';\r\nimport {COUNTRIES} from '../helpers/countries.constants';\r\n\r\nexport interface ICountry {\r\n id: number;\r\n alpha2Code: string;\r\n englishName: string;\r\n localName: string;\r\n region: string;\r\n countryCallingCode: number;\r\n offset?: number;\r\n}\r\n\r\nexport class CountryModel implements ICountry {\r\n id: number;\r\n alpha2Code: string;\r\n englishName: string;\r\n localName: string;\r\n region: string;\r\n countryCallingCode: number;\r\n offset?: number;\r\n\r\n constructor() {\r\n this.id = null;\r\n this.alpha2Code = null;\r\n this.englishName = null;\r\n this.localName = null;\r\n this.region = null;\r\n this.countryCallingCode = null;\r\n this.offset = null;\r\n }\r\n\r\n\r\n static init(): CountryModel[] {\r\n let countries: CountryModel[];\r\n countries = COUNTRIES.map(g => this.create(g));\r\n return countries;\r\n }\r\n\r\n static create(data): CountryModel {\r\n return (new CountryModel()).fill(data);\r\n }\r\n\r\n fill(data): this {\r\n const self = this;\r\n\r\n _.each(data, (val, key) => {\r\n if (self.hasOwnProperty(key)) {\r\n self[key] = val;\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n}\r\n\r\n","import { ITimeRangeFilter } from \"../services/charts\";\r\nimport { IChannelItem } from \"./channel.model\";\r\n\r\nexport interface IBourdetOption {\r\n isSmoothData?: boolean;\r\n smoothRange?: number;\r\n isBourdetDer?: boolean;\r\n bourdetDerRange?: number;\r\n startDate?: string;\r\n endDate?: string;\r\n}\r\n\r\nexport interface IOffsetWellCompare {\r\n wellId: number;\r\n wellName: string;\r\n treatmentId: number;\r\n treatmentNumber?: number;\r\n treatmentType?: number;\r\n treatmentName?: string;\r\n compStartTime: number;\r\n compEndTime: number;\r\n axisType: AxisType;\r\n realtimeChannels: IChannelItem[];\r\n isRealtime?: boolean;\r\n isProducingWell?: boolean;\r\n isSmoothData?: boolean;\r\n smoothRange?: number;\r\n hasBourdetDer?: boolean;\r\n bourdetDerRange?: number;\r\n isCompare?: boolean;\r\n}\r\n\r\nexport class OffsetWellCompare implements IOffsetWellCompare {\r\n wellId: number;\r\n wellName: string;\r\n treatmentId: number;\r\n treatmentNumber: number;\r\n treatmentType: number;\r\n treatmentName: string;\r\n compStartTime: number;\r\n compEndTime: number;\r\n axisType: AxisType;\r\n realtimeChannels: IChannelItem[];\r\n isRealtime: boolean;\r\n isProducingWell: boolean;\r\n isSmoothData: boolean;\r\n smoothRange: number;\r\n hasBourdetDer: boolean;\r\n bourdetDerRange: number;\r\n isCompare: boolean;\r\n\r\n constructor(\r\n wellId, wellName, treatmentId, compStartTime, compEndTime, axisType, realtimeChannels, isRealtime?,\r\n treatmentNumber?: number,\r\n treatmentType?: number,\r\n isProducingWell?,\r\n treatmentName?: string,\r\n isSmoothData?: boolean,\r\n smoothRange?: number,\r\n hasBourdetDer?: boolean,\r\n bourdetDerRange?: number,\r\n isCompare?: boolean\r\n ) {\r\n this.wellId = wellId;\r\n this.wellName = wellName;\r\n this.treatmentId = treatmentId;\r\n this.treatmentNumber = treatmentNumber;\r\n this.treatmentType = treatmentType;\r\n this.treatmentName = treatmentName;\r\n this.compStartTime = compStartTime;\r\n this.compEndTime = compEndTime;\r\n this.axisType = axisType;\r\n this.realtimeChannels = realtimeChannels;\r\n this.isRealtime = isRealtime;\r\n this.isProducingWell = isProducingWell;\r\n this.isSmoothData = isSmoothData;\r\n this.smoothRange = smoothRange;\r\n this.hasBourdetDer = hasBourdetDer;\r\n this.bourdetDerRange = bourdetDerRange;\r\n this.isCompare = isCompare;\r\n }\r\n}\r\n\r\nexport type AxisType = 'Left' | 'Leftmost' | 'Right';\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { IWellItemPaging } from '../models/well.model';\r\n\r\n@Pipe({\r\n name: 'wellCompletionDate'\r\n})\r\nexport class WellCompletionDatePipe implements PipeTransform {\r\n\r\n transform(completionDate: string, well: IWellItemPaging): any {\r\n const timeFormat = 'HH:mm, DD MMM YYYY';\r\n let formattedDate = moment(completionDate).utcOffset(0).format(timeFormat);\r\n if (well.timeZone) {\r\n const dayLight = well.dayLight || well.treatmentList&&well.treatmentList[0] ? well.treatmentList[0].dayLight : 0;\r\n const timezoneOffset = (well.timeZone + dayLight) / 60; // in minutes\r\n formattedDate = moment(completionDate).utcOffset(timezoneOffset).format(timeFormat);\r\n }\r\n return formattedDate;\r\n }\r\n\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService } from '../../core/services';\r\nimport { IEditChannelMappedDto, IRenameChannel } from '../models';\r\n\r\n@Injectable()\r\nexport class ChannelMappingService {\r\n prefixPath = `/companies`;\r\n\r\n constructor(private apiService: ApiService) { }\r\n\r\n getAll(companyId): Observable {\r\n const queryString = companyId ? '?companyId=' + companyId : '';\r\n return this.apiService.get(`${this.prefixPath}/channelMapped` + queryString);\r\n }\r\n create(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/channelMapped`, param, finalize);\r\n }\r\n update(param: IEditChannelMappedDto, finalize?: VoidFunction): Observable {\r\n return this.apiService.put(`${this.prefixPath}/channelMapped`, param, finalize);\r\n }\r\n delete(mappedName, companyId): Observable {\r\n return this.apiService.delete(`${this.prefixPath}/channelMapped?ChannelMappedName=${mappedName}&CompanyId=${companyId}`);\r\n }\r\n getOriginalName(wellId: number, treatmentId: number): Observable {\r\n return this.apiService.get(`${this.prefixPath}/wells/${wellId}/treatments/${treatmentId}/getOriginalName`);\r\n }\r\n getAllOriginalName(wellId: number): Observable {\r\n return this.apiService.get(`${this.prefixPath}/wells/${wellId}/getOriginalName`);\r\n }\r\n getChannelName(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getChannelName`);\r\n }\r\n\r\n renameChannel(treatmentId: number, reqBody: IRenameChannel[] , finalize?: VoidFunction, params?: any): Observable {\r\n return this.apiService.post(`${this.prefixPath}/treatments/${treatmentId}/renameChannel`, reqBody, finalize, undefined, params);\r\n }\r\n renameChannelLater(treatmentId: number, reqBody: IRenameChannel[], finalize?: VoidFunction, params?: any): Observable {\r\n return this.apiService.post(`${this.prefixPath}/treatments/${treatmentId}/renameChannelLater`, reqBody, finalize, undefined, params);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IChannelSettingModel, isChannelSettingModel, IChannelItem, IChannelMappingResponse, IChannelSettingItemModel, IChannelSettingYAxisModel } from '../models/channel.model';\r\nimport { isEmpty, isString, cloneDeep, isNumber, maxBy, minBy, findIndex, uniqBy, isNil, each } from 'lodash';\r\nimport { Helper } from '../helpers/helper';\r\nimport { TreatmentService } from './treatment.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { of, throwError } from 'rxjs';\r\nimport { IPlotTemplate, IPlotTemplateResponse } from '../models/plot-template.model';\r\nimport { AxisType } from '../models/offset-well-compare.model';\r\nimport { ENUM_COLOR_MODE, TEMPLATE_YAXIS_KEYS, PREFIX_PREDICTIVE_CHANNEL, YAxisMap, YAXIS_KEYS } from '../helpers/app.constants';\r\n\r\nconst YAXIS_MAP = {\r\n yAxisLeft: YAxisMap.firstLeft,\r\n yAxisLeftMost: YAxisMap.secondLeft,\r\n yAxisRight: YAxisMap.firstRight,\r\n yAxisRightMost: YAxisMap.secondRight,\r\n};\r\nexport const DIGITS_AFTER_DECIMAL_DEFAULT = '2';\r\n\r\n@Injectable()\r\nexport class ChannelSelectionService {\r\n private defaultChannelsFirstLeft = [];\r\n private defaultChannelsSecondLeft = [];\r\n private defaultChannelsFirstRight = [];\r\n private defaultChannelsSecondRight = [];\r\n\r\n constructor(\r\n private treatmentService: TreatmentService,\r\n ) { }\r\n\r\n formatChannelModel(channelItem, isRandomColor?: boolean, isOffsetChannel?: boolean): IChannelSettingItemModel {\r\n let channelColor = channelItem.color;\r\n let channelColorMode = '';\r\n if (isRandomColor && !channelColor) {\r\n channelColor = Helper.randomHexColor();\r\n }\r\n if (channelItem.colorMode) {\r\n channelColorMode = channelItem.colorMode;\r\n }\r\n\r\n const minValue = isNumber(channelItem.min) && !isNaN(channelItem.min) ? channelItem.min : null;\r\n const maxValue = isNumber(channelItem.max) && !isNaN(channelItem.max) ? channelItem.max : null;\r\n const digits = channelItem.digits !== undefined && channelItem.digits !== null ? channelItem.digits : DIGITS_AFTER_DECIMAL_DEFAULT;\r\n let result: IChannelSettingItemModel = {\r\n channelName: channelItem.name || channelItem.channelName,\r\n name: channelItem.name || channelItem.channelName,\r\n channel: {\r\n name: channelItem.name || channelItem.channelName,\r\n cName: channelItem.cName,\r\n originalName: channelItem.originalName,\r\n unit: channelItem.unit,\r\n color: channelColor,\r\n colorMode: channelColorMode,\r\n min: minValue,\r\n max: maxValue,\r\n isCompare: channelItem.isCompare,\r\n digits: digits,\r\n measureType: channelItem.measureType,\r\n channelMappedGroup: channelItem.channelMappedGroup\r\n },\r\n cName: channelItem.cName,\r\n originalName: channelItem.originalName,\r\n unit: channelItem.unit,\r\n color: channelColor,\r\n colorMode: channelColorMode,\r\n min: minValue,\r\n max: maxValue,\r\n isCompare: channelItem.isCompare,\r\n digits: digits,\r\n measureType: channelItem.measureType,\r\n channelMappedGroup: channelItem.channelMappedGroup\r\n };\r\n if (isOffsetChannel) {\r\n const offsetProps = {\r\n isOffset: true,\r\n isRealtime: channelItem.isRealtime,\r\n wellId: channelItem.wellId,\r\n treatmentId: channelItem.treatmentId,\r\n originName: channelItem.originName,\r\n isSmoothData: channelItem.isSmoothData,\r\n smoothRange: channelItem.smoothRange,\r\n isCompare: channelItem.isCompare,\r\n digits: digits,\r\n measureType: channelItem.measureType,\r\n channelMappedGroup: channelItem.channelMappedGroup\r\n };\r\n result = Object.assign(result, offsetProps);\r\n result.channel = Object.assign(result.channel, offsetProps);\r\n }\r\n if (channelItem.isBourdetDer) {\r\n const bourdetProps = {\r\n isBourdetDer: channelItem.isBourdetDer,\r\n bourdetDerRange: channelItem.bourdetDerRange\r\n };\r\n result = Object.assign(result, bourdetProps);\r\n result.channel = Object.assign(result.channel, bourdetProps);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n formatChannelSettingModel(paramChannelSettings: IChannelSettingModel, isOffsetOnly?: boolean) {\r\n const channelSettings = cloneDeep(paramChannelSettings);\r\n let allChannels = [];\r\n for (const key in channelSettings) {\r\n if (channelSettings.hasOwnProperty(key)) {\r\n const setting = channelSettings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n // filter unselected channel\r\n setting.channels = setting.channels.filter(item => item.channel && item.channel.name);\r\n // filter offset channels\r\n if (isOffsetOnly) {\r\n setting.channels = setting.channels.filter(item => item.channel.isOffset);\r\n } else {\r\n setting.channels = setting.channels.filter(item => !item.channel.isOffset);\r\n }\r\n // set axis key in channel\r\n setting.channels = setting.channels.map(item => {\r\n item.axisKey = key;\r\n item.digits = item.digits !== undefined && item.digits !== null ? item.digits : DIGITS_AFTER_DECIMAL_DEFAULT;\r\n return item;\r\n });\r\n // to all channels\r\n allChannels = allChannels.concat(setting.channels);\r\n }\r\n }\r\n }\r\n // filter duplicate channels\r\n allChannels = uniqBy(allChannels, 'channel.name');\r\n for (const key in channelSettings) {\r\n if (channelSettings.hasOwnProperty(key)) {\r\n const setting = channelSettings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n setting.channels = allChannels.filter(channel => channel.axisKey === key);\r\n setting.channels = setting.channels.map(item => {\r\n item.channel.color = item.color;\r\n item.channel.colorMode = item.colorMode ? item.colorMode : '';\r\n item.channel.min = item.min;\r\n item.channel.max = item.max;\r\n item.channel.isCompare = item.isCompare;\r\n item.channel.digits = item.digits !== undefined && item.digits !== null ? item.digits : DIGITS_AFTER_DECIMAL_DEFAULT;\r\n item.channel.measureType = item.measureType;\r\n item.channelchannelMappedGroup = item.channelMappedGroup;\r\n return this.formatChannelModel(item.channel, false, isOffsetOnly);\r\n });\r\n }\r\n }\r\n }\r\n\r\n return channelSettings;\r\n }\r\n\r\n setChannelValueByPropKey(channelSettings: IChannelSettingModel, propKey: string, propValue: string | number) {\r\n for (const key in channelSettings) {\r\n if (channelSettings.hasOwnProperty(key)) {\r\n const setting = channelSettings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n setting.channels.forEach(item => {\r\n if (item) {\r\n item[propKey] = propValue;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n filterChannelsByPrefixStr(channelSettings: IChannelSettingModel, prefix: string) {\r\n const settings = cloneDeep(channelSettings);\r\n for (const key in settings) {\r\n if (settings.hasOwnProperty(key)) {\r\n const setting = settings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n setting.channels = setting.channels.filter(item => {\r\n const cName = item.cName && item.cName.trim()\r\n ? item.cName.trim()\r\n : (item.channel && item.channel.cName && item.channel.cName.trim() ? item.channel.cName.trim() : '');\r\n const arrayName = cName.split('');\r\n return arrayName[0] === prefix;\r\n });\r\n }\r\n }\r\n }\r\n return settings;\r\n }\r\n\r\n filterChannelsByAxisType(channelSettings: IChannelSettingModel, axisType: AxisType) {\r\n const settings = cloneDeep(channelSettings);\r\n const yAxisMap = {\r\n Left: YAxisMap.firstLeft,\r\n Leftmost: YAxisMap.secondLeft,\r\n Right: YAxisMap.firstRight,\r\n Rightmost: YAxisMap.secondRight,\r\n };\r\n each(yAxisMap, (value, key) => {\r\n if (settings[value] && !isEmpty(settings[value].channels) && axisType !== key) {\r\n settings[value].channels = [];\r\n }\r\n });\r\n return settings;\r\n }\r\n\r\n getListChannels(channelSettings: IChannelSettingModel, isOffsetOnly?: boolean): IChannelSettingItemModel[] {\r\n let result = [];\r\n YAXIS_KEYS.forEach(key => {\r\n if (channelSettings.hasOwnProperty(key)) {\r\n const setting = channelSettings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n // filter offset channels\r\n const channels = setting.channels.filter(item => {\r\n let rlt = isOffsetOnly ? item.isOffset : !item.isOffset;\r\n rlt = rlt && (!item.isCompare || (!item.insPressure && !item.isPressure));\r\n return rlt;\r\n });\r\n result = result.concat(channels);\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n hasChannelItems(channelSettings: IChannelSettingModel): boolean {\r\n const settings = ['firstLeft', 'secondLeft', 'firstRight', 'secondRight']\r\n for (const s of settings) {\r\n if (channelSettings[s] && channelSettings[s].channels) {\r\n if (channelSettings[s].channels.length) return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n toChannelItems(channelSettings: IChannelSettingModel, isOffsetOnly?: boolean): IChannelItem[] {\r\n const channelSettingItems = this.getListChannels(channelSettings, isOffsetOnly);\r\n const result = channelSettingItems.map(item => {\r\n const channelItem = {\r\n cName: item.cName,\r\n name: item.name,\r\n unit: item.unit,\r\n color: item.color,\r\n originalName: item.originalName\r\n };\r\n if (isOffsetOnly) {\r\n return Object.assign(channelItem, {\r\n // offset channel properties\r\n isOffset: isOffsetOnly,\r\n wellId: item.wellId,\r\n treatmentId: item.treatmentId,\r\n originName: item.originName,\r\n });\r\n } else {\r\n return channelItem;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n updateMinMaxChannels(channelSettings, listChannels: any[], isOffsetChannel?: boolean) {\r\n const settings = cloneDeep(channelSettings);\r\n if (!isEmpty(listChannels)) {\r\n YAXIS_KEYS.forEach(key => {\r\n if (settings.hasOwnProperty(key)) {\r\n const setting = settings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n // update channels\r\n setting.channels = setting.channels.map(curChannel => {\r\n if (!curChannel.isBourdetDer) {\r\n let minMaxChannel;\r\n if (isOffsetChannel) {\r\n minMaxChannel = listChannels.find(item => item.cName === curChannel.cName && item.wellId === curChannel.wellId && item.treatmentId === curChannel.treatmentId);\r\n } else {\r\n minMaxChannel = listChannels.find(item => item.cName === curChannel.cName);\r\n }\r\n if (minMaxChannel) {\r\n curChannel.min = curChannel.channel.min = minMaxChannel.min;\r\n curChannel.max = curChannel.channel.max = minMaxChannel.max;\r\n }\r\n }\r\n return curChannel;\r\n });\r\n }\r\n }\r\n });\r\n }\r\n return settings;\r\n }\r\n\r\n updateMinMaxChannelsByName(channelSettings, listChannels: any[]) {\r\n const settings = cloneDeep(channelSettings);\r\n if (!isEmpty(listChannels)) {\r\n YAXIS_KEYS.forEach(key => {\r\n if (settings.hasOwnProperty(key)) {\r\n const setting = settings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n // update min max channels\r\n setting.channels = this.setMinMaxChannels(setting.channels, listChannels);\r\n }\r\n }\r\n });\r\n }\r\n return settings;\r\n }\r\n\r\n setMinMaxChannels(originChannels, channelsWithMinMax: {cName: string; channelName: string; min: number; max: number}[], isClone?: boolean) {\r\n let resultChannels = isClone ? cloneDeep(originChannels) : originChannels;\r\n resultChannels = resultChannels.map(curChannel => {\r\n const minMaxChannels = channelsWithMinMax.filter(item => item.channelName === curChannel.name);\r\n if (!isEmpty(minMaxChannels)) {\r\n const minItem = minBy(minMaxChannels, 'min');\r\n const maxItem = maxBy(minMaxChannels, 'max');\r\n if (minItem && maxItem) {\r\n curChannel.min = minItem.min;\r\n curChannel.max = maxItem.max;\r\n }\r\n }\r\n return curChannel;\r\n });\r\n return resultChannels;\r\n }\r\n\r\n updateAxisScaleByMinMaxChannels(channelSettings: IChannelSettingModel, isRespectOldValue?: boolean) {\r\n try {\r\n const settings = cloneDeep(channelSettings);\r\n for (const key in settings) {\r\n if (settings.hasOwnProperty(key) && key !== 'autoScaleYAxis') {\r\n const setting = settings[key];\r\n if (setting && !isEmpty(setting.channels)) {\r\n const maxItem = maxBy(setting.channels, (item: any) => {\r\n return item.max;\r\n });\r\n const minItem = minBy(setting.channels, (item: any) => {\r\n return item.min;\r\n });\r\n if (minItem && maxItem) {\r\n if (!isRespectOldValue) {\r\n setting.min = minItem.min;\r\n setting.max = this.roundUpMaxValue(maxItem.max);\r\n } else {\r\n if (!isNumber(setting.min)) {\r\n setting.min = minItem.min;\r\n }\r\n if (!isNumber(setting.max)) {\r\n setting.max = this.roundUpMaxValue(maxItem.max);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return settings;\r\n } catch (err) {\r\n return channelSettings;\r\n }\r\n }\r\n\r\n initSettingsModel(isUnsetRange?: boolean, isSetAutoScale?: boolean): IChannelSettingModel {\r\n const result: IChannelSettingModel = {\r\n firstLeft: {\r\n min: 0,\r\n max: 150,\r\n channels: []\r\n },\r\n secondLeft: {\r\n min: 0,\r\n max: 150,\r\n channels: []\r\n },\r\n firstRight: {\r\n min: 0,\r\n max: 150,\r\n channels: [],\r\n opposite: true\r\n },\r\n secondRight: {\r\n min: 0,\r\n max: 150,\r\n channels: [],\r\n opposite: true\r\n }\r\n };\r\n if (isUnsetRange) {\r\n for (const key in result) {\r\n if (result.hasOwnProperty(key) && key !== 'autoScaleYAxis') {\r\n result[key].min = null;\r\n result[key].max = null;\r\n }\r\n }\r\n }\r\n if (isSetAutoScale) {\r\n result.autoScaleYAxis = true;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getDefaultSettings(listChannels?, isUnsetRange?: boolean, isSetAutoScale?: boolean): IChannelSettingModel {\r\n const result = this.initSettingsModel(isUnsetRange, isSetAutoScale);\r\n if (listChannels && listChannels.length > 0) {\r\n result.firstLeft.channels = listChannels.filter(item => this.defaultChannelsFirstLeft.includes(item.cName)).map((item, index) => {\r\n return this.formatChannelModel(item, true);\r\n });\r\n result.secondLeft.channels = listChannels.filter(item => this.defaultChannelsSecondLeft.includes(item.cName)).map((item, index) => {\r\n return this.formatChannelModel(item, true);\r\n });\r\n result.firstRight.channels = listChannels.filter(item => this.defaultChannelsFirstRight.includes(item.cName)).map((item, index) => {\r\n return this.formatChannelModel(item, true);\r\n });\r\n result.secondRight.channels = listChannels.filter(item => this.defaultChannelsSecondRight.includes(item.cName)).map((item, index) => {\r\n return this.formatChannelModel(item, true);\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n getDefaultSettingsObservable(wellId, treatmentId, flowPathType, listChannels?, isUnsetRange?: boolean, isSetAutoScale?: boolean) {\r\n try {\r\n let settings = this.getDefaultSettings(listChannels, isUnsetRange, isSetAutoScale);\r\n const cNames = [...this.defaultChannelsFirstLeft, ...this.defaultChannelsSecondLeft, ...this.defaultChannelsFirstRight, ...this.defaultChannelsSecondRight];\r\n if (!cNames.length) return of(settings);\r\n\r\n return this.treatmentService.getChannelsMinMax(wellId, treatmentId, flowPathType, cNames).pipe(map(response => {\r\n if (response && !isEmpty(response.result)) {\r\n settings = this.updateMinMaxChannels(settings, response.result);\r\n settings = this.updateAxisScaleByMinMaxChannels(settings);\r\n }\r\n return settings;\r\n }));\r\n\r\n } catch (err) {\r\n return throwError(err);\r\n }\r\n }\r\n\r\n // updateChannels(channelSettings, realtimeChannels?, fracproChannels?): IChannelSettingModel {\r\n // const settings = cloneDeep(channelSettings);\r\n // if (!isEmpty(realtimeChannels) || !isEmpty(fracproChannels)) {\r\n // for (const key in settings) {\r\n // if (settings.hasOwnProperty(key)) {\r\n // const setting = settings[key];\r\n // if (setting && !isEmpty(setting.channels)) {\r\n // // update channels\r\n // setting.channels = setting.channels.map(curChannel => {\r\n // const prefixCName = this.getPrefixChannelByCName(curChannel.cName);\r\n // let matchedChannel;\r\n // if (prefixCName.toLowerCase() === 'f') {\r\n // matchedChannel = fracproChannels.find(item => {\r\n // return item.cName === curChannel.cName;\r\n // });\r\n // } else if (prefixCName.toLowerCase() === 'c') {\r\n // matchedChannel = realtimeChannels.find(item => {\r\n // return item.cName === curChannel.cName;\r\n // });\r\n // }\r\n // if (matchedChannel) {\r\n // if (curChannel.channelName !== matchedChannel.name) {\r\n // curChannel.color = matchedChannel.color ? matchedChannel.color : curChannel.color;\r\n // curChannel.channel.color = curChannel.color;\r\n // }\r\n // // update name\r\n // curChannel.channelName = curChannel.name = matchedChannel.name;\r\n // if (curChannel.channel) {\r\n // curChannel.channel.name = matchedChannel.name;\r\n // }\r\n // }\r\n // return curChannel;\r\n // });\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return settings;\r\n // }\r\n updateChannels(channelSettings, realtimeList: any[], fracproList: any[]): IChannelSettingModel {\r\n if (isEmpty(realtimeList) && isEmpty(fracproList)) return this.getDefaultSettings(undefined, undefined, true);\r\n if (!channelSettings) return this.getDefaultSettings(undefined, undefined, true);\r\n\r\n const settings = cloneDeep(channelSettings);\r\n YAXIS_KEYS.forEach(key => {\r\n if (settings.hasOwnProperty(key)) {\r\n if (settings[key] && !isEmpty(settings[key].channels)) {\r\n settings[key].channels = settings[key].channels.map(channel => {\r\n let channelName: string = channel.channelName || channel.name;\r\n let cName: string = channel.cName;\r\n if (!channelName) {\r\n if (!channel.channel || !channel.channel.name) return null;\r\n channelName = channel.channel.name;\r\n }\r\n if (!cName && channel.channel) cName = channel.channel.cName;\r\n\r\n let channelExist = realtimeList.find(item => item.name === channelName && cName.indexOf('C') === 0);\r\n if (!channelExist) channelExist = fracproList.find(item => item.name === channelName && cName.indexOf('F') === 0);\r\n if (!channelExist) {\r\n channel.cName = '';\r\n } else {\r\n channel.channelName = channelExist.name;\r\n channel.name = channelExist.name;\r\n channel.cName = channelExist.cName;\r\n channel.originalName = channelExist.originalName;\r\n channel.unit = channelExist.unit;\r\n channel.measureType = channelExist.measureType;\r\n \r\n channel.color = channelExist.color ? channelExist.color : channel.color;\r\n if (channel.channel) {\r\n channel.channel.name = channelExist.name;\r\n channel.channel.cName = channelExist.cName;\r\n channel.channel.originalName = channelExist.originalName;\r\n channel.channel.unit = channelExist.unit;\r\n channel.channel.measureType = channelExist.measureType;\r\n channel.channel.color = channel.color;\r\n }\r\n }\r\n\r\n return channel;\r\n }).filter(channel => channel !== null);\r\n } else {\r\n settings[key] = this.getDefaultSettings(undefined, undefined, true)[key];\r\n }\r\n }\r\n });\r\n return settings;\r\n }\r\n\r\n toRequestChannelMap(channelSetting: IChannelSettingModel, fieldName?: string) {\r\n let result = [];\r\n fieldName = fieldName ? fieldName : 'cName';\r\n if (channelSetting) {\r\n const channels = [\r\n ...channelSetting.firstLeft.channels,\r\n ...channelSetting.secondLeft.channels,\r\n ...channelSetting.firstRight.channels,\r\n ...channelSetting.secondRight.channels,\r\n ];\r\n // if (!!isPredictChannel) {\r\n // channels = channels.filter(item => {\r\n // if (item.originalName) {\r\n // const originalNameLoweCase = item.originalName.toLowerCase();\r\n // return originalNameLoweCase.indexOf(PREFIX_PREDICTIVE_CHANNEL) === 0;\r\n // } else {\r\n // return false;\r\n // }\r\n // });\r\n // }\r\n result = channels.map(item => {\r\n if (item.channel && item.channel[fieldName]) {\r\n return item.channel[fieldName];\r\n }\r\n return item[fieldName];\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n toRequestChannelMap2(channelSetting: IChannelSettingModel, fieldName?: string): { realtimeItems: any[], fracproItems: any[] } {\r\n let result: { realtimeItems: any[], fracproItems: any[] } = { realtimeItems: [], fracproItems: [] };\r\n fieldName = fieldName ? fieldName : 'cName';\r\n if (channelSetting) {\r\n const channels = [\r\n ...channelSetting.firstLeft.channels,\r\n ...channelSetting.secondLeft.channels,\r\n ...channelSetting.firstRight.channels,\r\n ...channelSetting.secondRight.channels,\r\n ];\r\n channels.forEach(item => {\r\n let cName: string;\r\n let value: any;\r\n if (item.channel && item.channel[fieldName]) {\r\n cName = item.cName;\r\n value = item.channel[fieldName];\r\n } else value = item[fieldName];\r\n if (!cName || !cName.trim()) cName = item.cName;\r\n if (cName && cName.trim()) {\r\n cName = cName.trim();\r\n if (cName.indexOf('F') === 0) result.fracproItems.push(value);\r\n else result.realtimeItems.push(value);\r\n } else result.realtimeItems.push(value);\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n isEmptyChannels(channelSettings: IChannelSettingModel) {\r\n let result = false;\r\n try {\r\n result = isEmpty(channelSettings.firstLeft.channels)\r\n && isEmpty(channelSettings.secondLeft.channels)\r\n && isEmpty(channelSettings.firstRight.channels)\r\n && isEmpty(channelSettings.secondRight.channels);\r\n } catch (err) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n checkIsChangedChannels(newSettings: IChannelSettingModel, currentSettings: IChannelSettingModel, strictCheck?: boolean) {\r\n if (!newSettings || !currentSettings) return true;\r\n\r\n const newCNames = this.toRequestChannelMap(newSettings);\r\n const curCNames = this.toRequestChannelMap(currentSettings);\r\n\r\n if (!strictCheck) {\r\n for (const cName of newCNames) {\r\n if (!curCNames.includes(cName)) {\r\n return true;\r\n }\r\n }\r\n } else {\r\n if (newCNames.length !== curCNames.length) return true;\r\n const n = newCNames.length || curCNames.length\r\n for (let i = 0; i < n; i++) {\r\n if (newCNames[i] !== curCNames[i]) return true;\r\n }\r\n }\r\n \r\n // do NOT need to change if there is change in predicted channel since the above code has done that\r\n // just need to check if there is add/remove predicted channels\r\n // if (!predictedCNames || !predictedCNames.length) return false;\r\n // const curPredictedCNames = newCNames.filter(x => predictedCNames.includes(curPredictedCNames));\r\n // const newPredictedCNames = newCNames.filter(x => predictedCNames.includes(newPredictedCNames));\r\n // if (curPredictedCNames.length !== newPredictedCNames.length) return true;\r\n\r\n return false;\r\n }\r\n\r\n getPrefixChannelByDataType(dataKey) {\r\n if (dataKey === 'fracproData') {\r\n return 'F';\r\n } else if (dataKey === 'equipmentData') {\r\n return 'E';\r\n }\r\n return 'C';\r\n }\r\n\r\n getPrefixChannelByCName(cName: string) {\r\n let result = '';\r\n if (typeof cName === 'string') {\r\n const arrStr = cName.split('');\r\n result = arrStr[0];\r\n }\r\n return result;\r\n }\r\n\r\n toChannelsByDataField(selectedItems: string[], allChannels: any[], dataField?: string) {\r\n let result = [];\r\n if (isString(dataField) && !isEmpty(selectedItems) && !isEmpty(allChannels)) {\r\n result = allChannels.filter(item => {\r\n return selectedItems.includes(item[dataField]);\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n toChannelByDataField(selectedItem, realtimeChannels, fracproChannels, dataField?: string, prefix?: string) {\r\n let result;\r\n if (selectedItem) {\r\n if (prefix) {\r\n // find by prefix channel type (realtime channel or fracpro channel)\r\n if (prefix.toLowerCase() === 'f') {\r\n result = fracproChannels.find(item => {\r\n return item[dataField] === selectedItem;\r\n });\r\n } else if (prefix.toLowerCase() === 'c') {\r\n result = realtimeChannels.find(item => {\r\n return item[dataField] === selectedItem;\r\n });\r\n }\r\n } else {\r\n // otherwise find by top down\r\n result = realtimeChannels.find(item => {\r\n return item[dataField] === selectedItem;\r\n });\r\n if (!result) {\r\n result = fracproChannels.find(item => {\r\n return item[dataField] === selectedItem;\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n toChannelByCName(selectedCName, realtimeChannels, fracproChannels) {\r\n let result;\r\n if (selectedCName) {\r\n const prefixCName = this.getPrefixChannelByCName(selectedCName);\r\n if (prefixCName) {\r\n if (prefixCName.toLowerCase() === 'f') {\r\n result = fracproChannels.find(item => {\r\n return item.cName === selectedCName;\r\n });\r\n } else if (prefixCName.toLowerCase() === 'c') {\r\n result = realtimeChannels.find(item => {\r\n return item.cName === selectedCName;\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n findYAxisIdByChannelId(curChannels, cId) {\r\n // round robin way\r\n let channelIndex = findIndex(curChannels, { id: cId });\r\n const yAxisIndexs = YAXIS_KEYS;\r\n let result = yAxisIndexs[0];\r\n if (channelIndex > -1) {\r\n if (channelIndex > 2 && channelIndex < 5) { // 5 is limit number of channels can select\r\n channelIndex = channelIndex - yAxisIndexs.length;\r\n } else if (channelIndex > 5) {\r\n channelIndex = 0;\r\n }\r\n for (let index = 0; index < yAxisIndexs.length; index++) {\r\n if (channelIndex === index) {\r\n result = yAxisIndexs[index];\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n roundUpMaxValue(maxValue) {\r\n if (isNil(maxValue)) return null;\r\n // if (maxValue < 0) {\r\n // maxValue = 0; // round up to 0\r\n // }\r\n else if (maxValue > 0 && maxValue < 1) {\r\n maxValue = 1; // round up to 1\r\n } else if (maxValue > 1 && maxValue < 99) {\r\n maxValue = Math.ceil(maxValue / 10) * 10; // round up max nearest 10\r\n } else {\r\n maxValue = Math.ceil(maxValue / 100) * 100; // round up max nearest 10\r\n }\r\n return maxValue;\r\n }\r\n\r\n findPlotTemplate(channelSetting: IChannelSettingModel, plotTemplates: IPlotTemplateResponse[]): IPlotTemplateResponse | null {\r\n const compare = (ch1: IChannelSettingItemModel, ch2: IChannelSettingItemModel): boolean => {\r\n if (ch1.name !== ch2.name) return false;\r\n if (ch2.color !== ch2.color) return false;\r\n return true;\r\n };\r\n\r\n const compareAxisChannel = (model1: IChannelSettingYAxisModel, model2: IChannelSettingYAxisModel): boolean => {\r\n if (!model1 || !model2) return true;\r\n if (!Helper.isSameSetData(model1.min, model2.min)) return false;\r\n if (!Helper.isSameSetData(model1.max, model2.max)) return false;\r\n if (model1.channels.length !== model2.channels.length) return false;\r\n if (!model1.channels.length && !model2.channels.length) return true;\r\n const n = model1.channels.length || model2.channels.length;\r\n for (let i = 0; i < n; i++) {\r\n const matchedChannel = compare(model1.channels[i], model2.channels[i]);\r\n if (!matchedChannel) return false;\r\n }\r\n return true;\r\n };\r\n\r\n const find = (plotTemplate: IPlotTemplateResponse) => {\r\n for (let i = 0; i < YAXIS_KEYS.length; i++) {\r\n const chSetting = channelSetting[YAXIS_KEYS[i]];\r\n const tmpSetting = plotTemplate.content[TEMPLATE_YAXIS_KEYS[i]];\r\n const nilChSetting = !chSetting || !chSetting.channels || !chSetting.channels[0];\r\n const nilTmpSetting = !tmpSetting || !tmpSetting.channels || !tmpSetting.channels[0];\r\n if (nilChSetting && nilTmpSetting) continue;\r\n if (nilChSetting && !nilTmpSetting) return false;\r\n if (!nilChSetting && nilTmpSetting) return false;\r\n if (!compareAxisChannel(chSetting, tmpSetting)) return false;\r\n }\r\n return true;\r\n };\r\n\r\n if (!plotTemplates || !plotTemplates[0] || !channelSetting) return null;\r\n return plotTemplates.find(x => find(x));\r\n }\r\n\r\n plotTemplateToChannelSettings(\r\n plotTemplate: IPlotTemplate,\r\n realtimeChannels: IChannelItem[],\r\n fracproChannels: IChannelItem[],\r\n mappingChannelData?: IChannelMappingResponse[],\r\n isAutoScaleYAxis?: boolean,\r\n colorMode?: string,\r\n fracProChannelsLatestVer?: any[]\r\n ): IChannelSettingModel {\r\n const channelSettings = this.initSettingsModel(true, isAutoScaleYAxis);\r\n if (plotTemplate) {\r\n const yAxisMap = {\r\n yAxisLeft: YAxisMap.firstLeft,\r\n yAxisLeftMost: YAxisMap.secondLeft,\r\n yAxisRight: YAxisMap.firstRight,\r\n yAxisRightMost: YAxisMap.secondRight,\r\n };\r\n\r\n // tslint:disable-next-line: forin\r\n for (const key in yAxisMap) {\r\n const yAxisChannelSettingKey = yAxisMap[key];\r\n const yAxisPlotTemplateKey = key;\r\n if (plotTemplate[yAxisPlotTemplateKey]) {\r\n channelSettings[yAxisChannelSettingKey].min = plotTemplate[yAxisPlotTemplateKey].min;\r\n channelSettings[yAxisChannelSettingKey].max = plotTemplate[yAxisPlotTemplateKey].max;\r\n if (!isEmpty(plotTemplate[yAxisPlotTemplateKey].channels)) {\r\n plotTemplate[yAxisPlotTemplateKey].channels.forEach(channelItem => {\r\n let isMappedChannel = false;\r\n let channelObj;\r\n let mappedChannelItem: IChannelMappingResponse;\r\n\r\n // first find by mapping channel data\r\n if (!isEmpty(mappingChannelData) && !isEmpty(realtimeChannels)) {\r\n const dataExist = mappingChannelData.find(item => {\r\n return item.name === channelItem.name;\r\n });\r\n if (dataExist) {\r\n mappedChannelItem = dataExist;\r\n isMappedChannel = true;\r\n }\r\n if (mappedChannelItem && mappedChannelItem.name) {\r\n channelObj = this.toChannelByDataField(mappedChannelItem.name, realtimeChannels, fracproChannels, 'name');\r\n // use color from mapping channel\r\n if (channelObj && !channelObj.color && mappedChannelItem.color) {\r\n channelObj.color = mappedChannelItem.color;\r\n }\r\n }\r\n }\r\n // if not found then find by realtime channel and fracpro channels\r\n if (!channelObj) {\r\n channelObj = this.toChannelByDataField(channelItem.name, realtimeChannels, fracproChannels, 'name');\r\n }\r\n // if found out then set this in setting model\r\n if (channelObj) {\r\n if (!channelObj.color) {\r\n if (channelItem && channelItem.color) {\r\n channelObj.color = channelItem.color;\r\n } else if (mappedChannelItem && mappedChannelItem.color) {\r\n channelObj.color = mappedChannelItem.color;\r\n } else {\r\n if (fracProChannelsLatestVer && fracProChannelsLatestVer.length) {\r\n const dataExist = fracProChannelsLatestVer.find(item => item.name === channelItem.name);\r\n if (dataExist && (dataExist.color || dataExist.defaultColor)) {\r\n channelObj.color = dataExist.color ? dataExist.color : dataExist.defaultColor;\r\n } else {\r\n channelObj.color = Helper.randomHexColor();\r\n }\r\n } else {\r\n channelObj.color = Helper.randomHexColor();\r\n }\r\n }\r\n }\r\n channelObj.colorMode = colorMode || ENUM_COLOR_MODE.Gradient;\r\n\r\n // ignore set color from template if this is mapped channel, use color from mapped channel instead\r\n // if (!isMappedChannel) {\r\n // // use color from template first, secondary default color, lastly random color\r\n // if (channelItem.color) {\r\n // channelObj.color = channelItem.color;\r\n // }\r\n // if (!channelObj.color) {\r\n // channelObj.color = Helper.randomHexColor();\r\n // }\r\n // } else if (!channelObj.color) { // get random color if template channel doesn't have color\r\n // channelObj.color = Helper.randomHexColor();\r\n // }\r\n\r\n const channelSettingModel = this.formatChannelModel(channelObj);\r\n channelSettings[yAxisChannelSettingKey].channels.push(channelSettingModel);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return channelSettings;\r\n }\r\n\r\n handleChannelsColor(channels: any[], channelsMapping: any[]): any[] {\r\n if (channels && channels.length && channelsMapping && channelsMapping.length) {\r\n return channels.map(channel => {\r\n if (!channel.color && !channel.defaultColor) {\r\n const dataExist = channelsMapping.find(item => item.name === channel.name);\r\n if (dataExist && (dataExist.color || dataExist.defaultColor)) {\r\n channel.color = dataExist.color ? dataExist.color : dataExist.defaultColor;\r\n }\r\n } else if (!channel.color) {\r\n channel.color = channel.defaultColor;\r\n }\r\n return channel;\r\n });\r\n } else {\r\n return channels;\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isNil } from 'lodash';\r\n\r\n@Injectable()\r\nexport class ChannelSettingsStorageService {\r\n\r\n constructor() { }\r\n\r\n saveByPad(padName, settings, excludedKeys?: string[]) {\r\n if (padName !== undefined) {\r\n const storageData = this.getByWell(padName);\r\n const data = { ...settings };\r\n if (excludedKeys && excludedKeys.length) {\r\n excludedKeys.forEach(excludedKey => {\r\n if (storageData && !isNil(storageData[excludedKey])) { data[excludedKey] = storageData[excludedKey]; }\r\n else { delete data[excludedKey]; }\r\n });\r\n }\r\n\r\n localStorage.setItem(`padChannelSettings_${padName}`, JSON.stringify(data));\r\n }\r\n }\r\n\r\n getByPad(padName) {\r\n if (padName !== undefined) {\r\n try {\r\n const stringData = localStorage.getItem(`padChannelSettings_${padName}`);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n removeByPad(padName) {\r\n localStorage.removeItem(`padChannelSettings_${padName}`);\r\n }\r\n\r\n saveByWell(wellId, settings, excludedKeys?: string[], optionKey?: string) {\r\n if (wellId) {\r\n const storageData = this.getByWell(wellId);\r\n const data = { ...settings };\r\n if (excludedKeys && excludedKeys.length) {\r\n excludedKeys.forEach(excludedKey => {\r\n if (storageData && !isNil(storageData[excludedKey])) { data[excludedKey] = storageData[excludedKey]; }\r\n else { delete data[excludedKey]; }\r\n });\r\n }\r\n const key = optionKey ? `well_${optionKey}_${wellId}` : `well_${wellId}`;\r\n localStorage.setItem(key, JSON.stringify(data));\r\n }\r\n }\r\n\r\n getByWell(wellId, optionKey?: string) {\r\n if (wellId) {\r\n try {\r\n const key = optionKey ? `well_${optionKey}_${wellId}` : `well_${wellId}`;\r\n const stringData = localStorage.getItem(key);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n console.log(error)\r\n // return null;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n removeByWell(wellId, optionKey?: string) {\r\n if (wellId) {\r\n const key = optionKey ? `well_${optionKey}_${wellId}` : `well_${wellId}`;\r\n localStorage.removeItem(key);\r\n }\r\n }\r\n\r\n saveByEquipment(equipmentId, settings) {\r\n if (equipmentId) {\r\n localStorage.setItem(`equipment_${equipmentId}`, JSON.stringify(settings));\r\n }\r\n }\r\n\r\n getByEquipment(equipmentId) {\r\n if (equipmentId) {\r\n try {\r\n const stringData = localStorage.getItem(`equipment_${equipmentId}`);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n clearAll() {\r\n localStorage.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService, IAPIServiceOptions } from '../../core/services';\r\nimport { HttpParams } from '@angular/common/http';\r\n\r\nexport interface ITreatmentChartRequestBody {\r\n wellId: string;\r\n treatmentId: number;\r\n items: {name: string; min?: number; max?: number}[];\r\n filter?: {startTime: string; endTime: string; type: number};\r\n}\r\n\r\nexport interface ITreatmentChartRequestOption {\r\n downSamplingNum?: any;\r\n startDate?: string;\r\n endDate?: string;\r\n startDateC0?: number;\r\n endDateC0?: number;\r\n}\r\n\r\n@Injectable()\r\nexport class ChartsService {\r\n prefixTreatmentPath = `/wells`;\r\n\r\n constructor(private apiService: ApiService) { }\r\n\r\n getTreatmentChartData(param, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixTreatmentPath}/treatments/getChart`, param, finalize);\r\n }\r\n\r\n getDataChart(reqBody?: any, finalize?: VoidFunction, authToken?: string): Observable {\r\n const url = `${this.prefixTreatmentPath}/${reqBody.wellId}/treatments/${reqBody.treatmentId}/flowPaths/${reqBody.flowPathType}/getDataChart`;\r\n let param = new HttpParams();\r\n if (authToken && authToken.trim()) {\r\n param = param.set('authToken', authToken);\r\n }\r\n return this.apiService.post(url, reqBody, finalize, undefined, param);\r\n }\r\n\r\n getBourdetDataChart(reqBody, finalize?: VoidFunction, authToken?: string): Observable {\r\n const url = `${this.prefixTreatmentPath}/calculateBourdetDerivative`;\r\n let param = new HttpParams();\r\n if (authToken && authToken.trim()) {\r\n param = param.set('authToken', authToken);\r\n }\r\n return this.apiService.post(url, reqBody, finalize, undefined, param);\r\n }\r\n\r\n getCompareChart(param, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixTreatmentPath}/compareByChart`, param, finalize);\r\n }\r\n\r\n getEquipmentChartData(param, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`/companies/equipments/getChart`, param, finalize);\r\n }\r\n\r\n getSingleWellMultiTreatmeantChartData(body, option?: ITreatmentChartRequestOption, finalize?: VoidFunction) {\r\n option = option ? option : {};\r\n let params: HttpParams = new HttpParams();\r\n if (option.downSamplingNum) {\r\n params = params.set('downSamplingNum', option.downSamplingNum);\r\n }\r\n if (option.startDate && option.endDate) {\r\n body.startDate = option.startDate;\r\n body.endDate = option.endDate;\r\n } else if (option.startDateC0 && option.endDateC0) {\r\n body.startDateC0 = option.startDateC0;\r\n body.endDateC0 = option.endDateC0;\r\n }\r\n return this.apiService.post(\r\n `${this.prefixTreatmentPath}/${body.wellId}/treatments/flowPaths/${body.flowPathType}/compareSingleByChart`,\r\n body,\r\n finalize,\r\n null,\r\n params\r\n );\r\n }\r\n\r\n getCompareMultiWellChartData(body, option?: ITreatmentChartRequestOption, finalize?: VoidFunction) {\r\n // return this.apiService.post(`${this.prefixTreatmentPath}/compareMultipleByChart`, param, finalize);\r\n option = option ? option : {};\r\n let params: HttpParams = new HttpParams();\r\n if (option.downSamplingNum) {\r\n params = params.set('downSamplingNum', option.downSamplingNum.toString());\r\n }\r\n if (option.startDate && option.endDate) {\r\n body.startDate = option.startDate;\r\n body.endDate = option.endDate;\r\n } else if (option.startDateC0 && option.endDateC0) {\r\n body.startDateC0 = option.startDateC0;\r\n body.endDateC0 = option.endDateC0;\r\n }\r\n return this.apiService.post(\r\n `${this.prefixTreatmentPath}/compareMultipleByDSChart`,\r\n body,\r\n finalize,\r\n null,\r\n params\r\n );\r\n }\r\n\r\n getPressureTrend(treatmentId: number, cName: string, startTime: number, endTime: number) {\r\n const url = '/treatments/' + treatmentId + '/pressureTrend';\r\n const q = '?startTime=' + startTime + '&endTime=' + endTime + '&cName=' + cName;\r\n return this.apiService.get(url + q);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as Highcharts from 'highcharts';\r\nimport HC_boost from 'highcharts/modules/boost';\r\nHC_boost(Highcharts);\r\nimport { IChannelSettingModel, ITimeSetting, ITreatmentComment, IInputDataChart, IChannelSettingItemModel, IInputDataMultiFlow, IMappedChannel as IMappedChannel, IChannelItem } from '../../models';\r\nimport { Helper } from '../../helpers/helper';\r\nimport { isEmpty, isObject, isNumber, isString, cloneDeep, minBy, maxBy, isNil, uniq } from 'lodash';\r\nimport { CHART_MESSAGES, CHART_SERIES_NAME, CHART_OPTION, TIME_SETTING_TYPE, YAXIS_KEYS, PREFIX_PREDICTIVE_CHANNEL } from '../../helpers/app.constants';\r\nimport { UnitSystemService } from '../unit-system.service';\r\nimport { CustomDataPoint, IDiagnosticPoint, IDiagnosticPointDataChange } from '../../models/diagnostic-points.model';\r\n\r\nexport interface ITimeRangeFilter {\r\n timefloat: { start: number, end: number }; // in sec\r\n timestamp: { start: number, end: number }; // in millisec epoch\r\n}\r\n\r\nexport interface ISeriesDataExtraInfo {\r\n seriesColor?: string;\r\n seriesPrefix?: string;\r\n yAxisMin?: number;\r\n yAxisMax?: number;\r\n timezoneOffset?: number;\r\n isOffsetSeries?: boolean;\r\n}\r\n\r\nexport const TIMEFLOAT_CHANNEL_NAME = 'C0';\r\nexport const FRACPRO_TIMEFLOAT_CNAME = 'F0';\r\nexport const EQUIPMENT_TIMEFLOAT_CNAME = 'E0';\r\nexport const DATETIME_CHANNEL_NAME = 'time';\r\nexport enum ENUM_CURSOR_OPTS {\r\n Default = 'default',\r\n LargeCross = 'crosshair',\r\n VertLine = 'n-resize'\r\n};\r\nexport const CURSOR_OPT_DEFAULT = 'Vert Line';\r\nexport const COMPARE_CURSOR_OPT_DEFAULT = 'Large Cross';\r\nexport const CONST_CURSOR_OPTIONS = [\r\n { id: ENUM_CURSOR_OPTS.VertLine, text: 'Vert Line', typeCursor: ENUM_CURSOR_OPTS.VertLine, icon: 'icon-vertical-line' },\r\n { id: ENUM_CURSOR_OPTS.LargeCross, text: 'Large Cross', typeCursor: ENUM_CURSOR_OPTS.LargeCross, icon: 'icon-plus-line' }\r\n];\r\n\r\nexport const TOOLTIP_STYLE = `padding: 5px; border: 1px solid #000; border-radius: 8px;`;\r\n\r\n@Injectable()\r\nexport class BaseChartService {\r\n constructor(\r\n private unitSystemService: UnitSystemService\r\n ) { }\r\n\r\n private crosshairDefault: Highcharts.XAxisCrosshairOptions = { dashStyle: 'ShortDot', width: 2, zIndex: 100 };\r\n private crosshairDefaultNoSnap: Highcharts.XAxisCrosshairOptions = { dashStyle: 'ShortDot', width: 2, zIndex: 100, snap: false };\r\n\r\n public crosshair = (id: string) => {\r\n const result: {x: Highcharts.XAxisCrosshairOptions | boolean, y: Highcharts.XAxisCrosshairOptions | boolean} = {\r\n x: false,\r\n y: false\r\n };\r\n if (id === ENUM_CURSOR_OPTS.LargeCross) {\r\n result.x = this.crosshairDefault;\r\n result.y = this.crosshairDefault;\r\n }\r\n if (id === ENUM_CURSOR_OPTS.VertLine) {\r\n result.x = this.crosshairDefault;\r\n }\r\n return result;\r\n }\r\n\r\n getDefaultOptions(isBoost?: boolean, isTimeMin?: boolean, isDarkMode?: boolean, cursor?: {id: string, text: string, typeCursor: string}): Highcharts.Options {\r\n const symbol = '●';\r\n const tooltipPointMaker = `${symbol}`;\r\n const tooltipPointFormat = `\r\n \r\n ${tooltipPointMaker} {series.name}: \r\n {point.y}\r\n \r\n `;\r\n return {\r\n chart: {\r\n style: {\r\n fontFamily: '\"Open Sans\", Roboto, Arial, sans-serif'\r\n },\r\n backgroundColor: !isDarkMode ? '#ffffff' : '#181a1b',\r\n borderColor: !isDarkMode ? undefined : '#b1aba1',\r\n plotBackgroundColor: !isDarkMode ? '#ffffff' : '#181a1b',\r\n zoomType: 'x',\r\n resetZoomButton: {\r\n theme: {\r\n display: 'none'\r\n }\r\n },\r\n spacing: [5, 5, 0, 5],\r\n animation: false,\r\n events: {}\r\n },\r\n boost: {\r\n enabled: !!isBoost,\r\n useGPUTranslations: false,\r\n seriesThreshold: 1\r\n },\r\n lang: {\r\n noData: CHART_MESSAGES.en.pleaseSelectChannel\r\n },\r\n title: {\r\n text: '',\r\n },\r\n exporting: {\r\n enabled: false,\r\n printMaxWidth: 2000\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n xAxis: [],\r\n yAxis: [],\r\n tooltip: {\r\n shared: !cursor || cursor.id === ENUM_CURSOR_OPTS.Default,\r\n xDateFormat: '%n-%d-%Y %H:%M:%S',\r\n useHTML: true,\r\n headerFormat: 'Time: {point.key}',\r\n borderColor: '#000',\r\n pointFormat: tooltipPointFormat,\r\n footerFormat: '
',\r\n valueDecimals: 2,\r\n backgroundColor: null,\r\n borderWidth: 0,\r\n formatter: this.getTooltipFormatter(false, isTimeMin)\r\n },\r\n legend: {\r\n itemDistance: 50,\r\n maxHeight: 88,\r\n margin: 0,\r\n itemMarginBottom: 0,\r\n enabled: true,\r\n itemStyle: {color: !isDarkMode ? '' : '#e8e6e3'},\r\n itemHoverStyle: { color: !isDarkMode ? '' : '#f5f5f5' },\r\n itemHiddenStyle: { color: !isDarkMode ? '#333333b3' : '#a7a7a7' }\r\n },\r\n series: [],\r\n time: {\r\n useUTC: CHART_OPTION.useUTC\r\n },\r\n plotOptions: {\r\n series: {\r\n marker: {\r\n enabled: false\r\n },\r\n states: {\r\n inactive: {\r\n opacity: 1\r\n },\r\n hover: {\r\n lineWidth: 2\r\n }\r\n },\r\n turboThreshold: 0,\r\n showInNavigator: false,\r\n dataGrouping: {\r\n enabled: false\r\n },\r\n cursor: !cursor ? 'default' : cursor.id\r\n },\r\n line: {\r\n animation: false,\r\n findNearestPointBy: 'xy',\r\n }\r\n },\r\n navigator: {\r\n enabled: false\r\n },\r\n // rangeSelector: {\r\n // selected: 1\r\n // },\r\n };\r\n }\r\n\r\n getTooltipFormatter(isOnlyShowComment?: boolean, isTimeMin?: boolean) {\r\n const formatter = function () {\r\n const symbol = '●';\r\n const tooltipStyle = TOOLTIP_STYLE;\r\n const customStyle = `background: #000; color: #fff; opacity: 0.75;`;\r\n const getTimeValueHeader = (activePoint, isShare?: boolean) => {\r\n let isDatetimeAxis = false;\r\n if (isShare) {\r\n if (activePoint.points.length > 0) {\r\n const firstPoint = activePoint.points[0];\r\n isDatetimeAxis = firstPoint.series.chart.xAxis[0].isDatetimeAxis;\r\n }\r\n } else {\r\n isDatetimeAxis = activePoint.series.chart.xAxis[0].isDatetimeAxis;\r\n }\r\n let timeValue = `${activePoint.x ? Helper.convertSecToMin(isTimeMin ? activePoint.x * 60 : activePoint.x) : 0} min`;\r\n if (isDatetimeAxis) {\r\n const utcTimestamp = new Date(activePoint.x).getTime();\r\n timeValue = Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', utcTimestamp);\r\n }\r\n return timeValue;\r\n };\r\n const getTooltipMarker = (activePoint) => {\r\n return `${symbol}`;\r\n };\r\n const getUnshareTooltip = (activePoint) => {\r\n const tooltipPointMaker = getTooltipMarker(activePoint);\r\n const timeValue = getTimeValueHeader(activePoint);\r\n const commentTootipContent = `\r\n
\r\n Time: ${timeValue}\r\n
${activePoint.point.comment}
\r\n
\r\n `;\r\n if (isOnlyShowComment) {\r\n if (activePoint.point.comment && activePoint.point.series.name === CHART_SERIES_NAME.comment) {\r\n return commentTootipContent;\r\n }\r\n return null;\r\n } else {\r\n if (activePoint.point.comment && activePoint.point.series.name === CHART_SERIES_NAME.comment) {\r\n return commentTootipContent;\r\n } else if (activePoint.series.name === CHART_SERIES_NAME.diagnostic || activePoint.series.name === CHART_SERIES_NAME.los) { // show diagnostic name\r\n const names = activePoint.series.options.data && activePoint.series.options.data.length > 1\r\n ? uniq(activePoint.series.options.data.map(item => item.name)) \r\n : activePoint.point.name;\r\n let dataRow: string = '';\r\n if (Array.isArray(names)) {\r\n names.forEach(name => {\r\n dataRow += `${name}`;\r\n });\r\n } else dataRow = `${names}`;\r\n return `\r\n
\r\n Time: ${timeValue}\r\n \r\n ${dataRow}\r\n
\r\n
\r\n `;\r\n } else {\r\n const seriesName = activePoint.series.userOptions.tooltipName || activePoint.series.userOptions.name || activePoint.series.name;\r\n return `\r\n
\r\n Time: ${timeValue}\r\n \r\n \r\n \r\n \r\n \r\n
${tooltipPointMaker} ${seriesName}: ${Highcharts.numberFormat(activePoint.y, 2)}
\r\n
\r\n `;\r\n }\r\n }\r\n };\r\n if (this.point && !this.points) {\r\n return getUnshareTooltip(this);\r\n } else if (this.points && this.points.length > 0) {\r\n const tbRows = [];\r\n const timeValue = getTimeValueHeader(this, true);\r\n this.points.forEach(activePoint => {\r\n const tooltipPointMaker = `${symbol}`;\r\n // not show tooltip for special group series\r\n const specialSeries = [CHART_SERIES_NAME.comment, CHART_SERIES_NAME.diagnostic, CHART_SERIES_NAME.los, CHART_SERIES_NAME.fdi];\r\n if (!specialSeries.includes(activePoint.series.name)) {\r\n const seriesName = activePoint.series.userOptions.tooltipName || activePoint.series.userOptions.name || activePoint.series.name;\r\n const dataRow = `\r\n \r\n ${tooltipPointMaker} ${seriesName}: \r\n ${Highcharts.numberFormat(activePoint.y, 2)}\r\n \r\n `;\r\n tbRows.push(dataRow);\r\n } else if (activePoint.series.name === CHART_SERIES_NAME.diagnostic || activePoint.series.name === CHART_SERIES_NAME.los) { // show diagnostic name\r\n const dataRow = `\r\n \r\n ${activePoint.point.name}\r\n \r\n `;\r\n tbRows.push(dataRow);\r\n } else if (activePoint.series.name === CHART_SERIES_NAME.fdi) { // show diagnostic name\r\n const dataRow = `\r\n \r\n ${activePoint.point.name}\r\n \r\n `;\r\n tbRows.push(dataRow);\r\n }\r\n });\r\n // find comment point\r\n const commentPoint = this.points.find(item => item.point.comment && item.point.series.name === CHART_SERIES_NAME.comment);\r\n if (!isOnlyShowComment) {\r\n // show all points and comments\r\n if (commentPoint && commentPoint.point && commentPoint.point.comment) {\r\n const commentRow = `\r\n \r\n ${commentPoint.point.comment}\r\n \r\n `;\r\n tbRows.unshift(commentRow);\r\n }\r\n return `\r\n
\r\n Time: ${timeValue}\r\n \r\n ${tbRows.join('')}\r\n
\r\n
\r\n `;\r\n } else {\r\n // only show points if there are comments on them\r\n if (commentPoint && commentPoint.point && commentPoint.point.comment) {\r\n const commentRow = `\r\n \r\n ${commentPoint.point.comment}\r\n \r\n `;\r\n tbRows.unshift(commentRow);\r\n return `\r\n
\r\n Time: ${timeValue}\r\n \r\n ${tbRows.join('')}\r\n
\r\n
\r\n `;\r\n } else {\r\n return null;\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n };\r\n return formatter;\r\n }\r\n\r\n getYAxisOption(channelSettings: IChannelSettingModel, offsetChannelSettings?: IChannelSettingModel, unitSetting?: number, isCrosshair?: boolean) {\r\n const result = [];\r\n const thisService = this;\r\n if (channelSettings) {\r\n let yAxisIndex = -1;\r\n const yAxisKeys = YAXIS_KEYS;\r\n for (let index = 0; index < yAxisKeys.length; index++) {\r\n const key = yAxisKeys[index];\r\n if (channelSettings.hasOwnProperty(key)) {\r\n yAxisIndex++;\r\n const setting = channelSettings[key];\r\n let listChannels = [...setting.channels];\r\n if (offsetChannelSettings && offsetChannelSettings[key]) {\r\n listChannels = [...setting.channels, ...offsetChannelSettings[key].channels];\r\n }\r\n let axisName = '';\r\n listChannels.forEach(item => {\r\n const unit = item.measureType && item.measureType.trim() ? this.unitSystemService.getUnit(item.measureType, unitSetting) : item.unit;\r\n const channelUnit = Helper.getValidUnit(unit, true);\r\n let channelName = item.channelName + ' ' + channelUnit;\r\n if (item.isBourdetDer) channelName = Helper.insertString(channelName, '/sec', -1);\r\n axisName = axisName + `${axisName ? ' - ' : ''}${channelName}`;\r\n });\r\n setting.min = (isString(setting.min) && setting.min) ? parseFloat(setting.min.replace(/,/g, '')) : setting.min;\r\n setting.max = (isString(setting.max) && setting.max) ? parseFloat(setting.max.replace(/,/g, '')) : setting.max;\r\n\r\n const minValue = setting.min > setting.max ? setting.max : setting.min;\r\n const maxValue = setting.min > setting.max ? setting.min : setting.max;\r\n const isReverted = setting.min > setting.max;\r\n const option: Highcharts.YAxisOptions = {\r\n labels: {\r\n style: {\r\n // color: item.color\r\n }\r\n },\r\n title: {\r\n text: axisName,\r\n useHTML: false,\r\n style: {\r\n wordWrap: 'break-word',\r\n width: 300,\r\n fontFamily: '\"Open Sans\", Roboto, Arial, sans-serif',\r\n fontWeight: 'bold'\r\n }\r\n },\r\n crosshair: !!isCrosshair ? this.crosshairDefault : false,\r\n opposite: setting.opposite || false,\r\n showEmpty: false,\r\n lineWidth: 1,\r\n tickWidth: 1,\r\n tickLength: 5,\r\n min: minValue || null,\r\n max: maxValue || null,\r\n reversed: !!isReverted,\r\n alignTicks: true,\r\n gridLineWidth: 1,\r\n tickPositioner() {\r\n const thisAxis: any = this;\r\n const min = thisAxis.dataMin;\r\n let max = thisAxis.dataMax;\r\n if (isNumber(min) && isNumber(max) && !isNaN(min) && !isNaN(max)) {\r\n if (min === max) {\r\n max = max + 1;\r\n }\r\n // add padding max\r\n const padding = parseFloat((Math.abs(min + max) * 0.1).toFixed(4)); // padding 10%\r\n // round up max value\r\n let maxValue = max + padding; // round up max nearest 100\r\n if (maxValue < 0) {\r\n maxValue = 0; // round up to 0\r\n } else if (maxValue > 0 && maxValue < 1) {\r\n maxValue = 1; // round up to 1\r\n } else if (maxValue > 1 && maxValue < 99) {\r\n maxValue = Math.ceil(maxValue / 10) * 10; // round up max nearest 10\r\n } else {\r\n maxValue = Math.ceil(maxValue / 100) * 100; // round up max nearest 10\r\n }\r\n const tickPositions = thisService.getTickPositions(min, maxValue);\r\n return tickPositions;\r\n } else {\r\n return thisAxis.tickPositions;\r\n }\r\n }\r\n };\r\n\r\n if (channelSettings.autoScaleYAxis) {\r\n option.min = null;\r\n option.max = null;\r\n }\r\n if (!channelSettings.autoScaleYAxis && isNumber(minValue) && isNumber(maxValue) && !isNaN(minValue) && !isNaN(maxValue)) {\r\n option.tickPositions = this.getTickPositions(minValue, maxValue);\r\n }\r\n result.push(option);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getTickPositions(min, max) {\r\n const ticks = [];\r\n if (typeof min === 'number' && typeof max === 'number' && !isNaN(min) && !isNaN(max)) {\r\n max = parseFloat(max.toFixed(4));\r\n let tick = min;\r\n const step = (max - min) / 5;\r\n\r\n while (tick < max - step / 2) {\r\n if (tick > 1) {\r\n ticks.push(parseFloat(tick.toFixed(0)));\r\n } else if (tick > 0.1 && tick < 1) {\r\n ticks.push(parseFloat(tick.toFixed(1)));\r\n } else {\r\n ticks.push(parseFloat(tick.toFixed(2)));\r\n }\r\n tick += step;\r\n }\r\n ticks.push(max);\r\n }\r\n return ticks;\r\n }\r\n\r\n getXAxisOption(timeFormat, startIndex?, endIndex?, isDefaultLabel?: boolean, isCrosshair?: boolean): Highcharts.XAxisOptions {\r\n const result: Highcharts.XAxisOptions = {\r\n type: 'datetime',\r\n showEmpty: false,\r\n gridLineWidth: 1,\r\n title: {\r\n text: 'Date time',\r\n },\r\n minPadding: 0,\r\n maxPadding: 0.05,\r\n minRange: 1,\r\n startOnTick: false,\r\n tickLength: 5,\r\n min: startIndex || null,\r\n max: endIndex || null,\r\n crosshair: !!isCrosshair ? this.crosshairDefault : false\r\n };\r\n if (timeFormat && timeFormat.toLowerCase() === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n result.type = 'linear';\r\n result.title.text = 'Job Time (min)';\r\n if (!isDefaultLabel) {\r\n result.labels = {\r\n formatter() {\r\n const xValue = Helper.convertSecToMin(this.value);\r\n return xValue;\r\n }\r\n };\r\n }\r\n } else {\r\n result.labels = {\r\n formatter() {\r\n const utcTimestamp = new Date(this.value).getTime();\r\n if (!this.isFirst && !this.isLast) {\r\n return Highcharts.dateFormat('%H:%M', utcTimestamp);\r\n } else {\r\n return Highcharts.dateFormat('%e. %b %Y %H:%M', utcTimestamp);\r\n }\r\n }\r\n };\r\n }\r\n return result;\r\n }\r\n\r\n getTooltipHeader(timeFormat) {\r\n const beginBody = '';\r\n let result = `Time: {point.key}${beginBody}`;\r\n if (timeFormat && timeFormat.toLowerCase() === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n const unit = 'min';\r\n result = `Time: {point.key:.2f} ${unit}${beginBody}`;\r\n }\r\n return result;\r\n }\r\n\r\n getDataSeriesFromChannels(yAxisIndex: number, channels: IChannelSettingItemModel[], highChartSeries: Highcharts.Series[], inputData?: IInputDataChart, timeFormat?: string, dataType?: string, extraInfo?: ISeriesDataExtraInfo, unitSetting?: number) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n if (!channels || !inputData) return [];\r\n\r\n const columns = inputData.columns;\r\n let xAxisChannelName = DATETIME_CHANNEL_NAME;\r\n if (timeFormat && timeFormat.toLowerCase() === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n xAxisChannelName = TIMEFLOAT_CHANNEL_NAME;\r\n // set fracpro time float channel name\r\n if (dataType === 'fracproData') {\r\n xAxisChannelName = FRACPRO_TIMEFLOAT_CNAME;\r\n } else if (dataType === 'equipmentData') {\r\n xAxisChannelName = EQUIPMENT_TIMEFLOAT_CNAME;\r\n }\r\n }\r\n // find index of time channel\r\n const timeIndex = columns.findIndex(value => value === xAxisChannelName);\r\n\r\n const result = channels.map((channelItem, index) => {\r\n const measureType = channelItem.measureType;\r\n const unitCoefficient = this.unitSystemService.getUnitCoefficient(measureType, unitSetting);\r\n let dataSeries = [];\r\n const dataIndex = typeof yAxisIndex === 'number' && !isNaN(yAxisIndex) ? yAxisIndex : index;\r\n const channelIndex = columns.findIndex(value => value === channelItem.cName);\r\n\r\n // parse to chart data point\r\n const seriesId = `${channelItem.channelName || channelItem.name}_${dataIndex}${extraInfo.isOffsetSeries ? '_offset' : ''}`;\r\n const isXValueNameChange = xAxisChannelName === DATETIME_CHANNEL_NAME;\r\n\r\n if (channelIndex >= 0 && channelIndex < inputData.columns.length) {\r\n const currentChartSeries = highChartSeries.find(x => x.options.id === seriesId);\r\n const lastChartSeriesData = !currentChartSeries || !currentChartSeries.data || !currentChartSeries.data.length ? null : currentChartSeries.data[currentChartSeries.data.length - 1];\r\n\r\n if (lastChartSeriesData) {\r\n let startIndex = 0;\r\n const lastIndex = inputData.values.length - 1;\r\n for (let i = lastIndex; i >= startIndex; i--) {\r\n const dataRow = inputData.values[i];\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] : new Date(dataRow[timeIndex]).getTime();\r\n if (xValue > lastChartSeriesData.x) continue;\r\n startIndex = i;\r\n break;\r\n }\r\n\r\n if (unitCoefficient) {\r\n for (let i = startIndex + 1; i < lastIndex; i++) {\r\n const dataRow = inputData.values[i];\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = this.unitSystemService.convertValue(dataRow[channelIndex], unitCoefficient);\r\n const value = { x: xValue, y: yValue, groupId: seriesId };\r\n dataSeries.push(value);\r\n }\r\n } else {\r\n for (let i = startIndex + 1; i < lastIndex; i++) {\r\n const dataRow = inputData.values[i];\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = dataRow[channelIndex] as number;\r\n const value = { x: xValue, y: yValue, groupId: seriesId };\r\n dataSeries.push(value);\r\n }\r\n }\r\n } else {\r\n if (unitCoefficient) {\r\n dataSeries = inputData.values.map(dataRow => {\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = this.unitSystemService.convertValue(dataRow[channelIndex], unitCoefficient);\r\n return { x: xValue, y: yValue, groupId: seriesId };\r\n });\r\n } else {\r\n dataSeries = inputData.values.map(dataRow => {\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = dataRow[channelIndex] as number;\r\n return { x: xValue, y: yValue, groupId: seriesId };\r\n });\r\n }\r\n }\r\n }\r\n\r\n const unit = (measureType && measureType.trim() && !!unitSetting) ? (unitCoefficient ? unitCoefficient.unit : undefined) : channelItem.unit;\r\n let channelUnit = Helper.getValidUnit(unit, true);\r\n if (channelItem.isBourdetDer) channelUnit = Helper.insertString(channelUnit, '/sec', -1);\r\n\r\n const channelName = channelItem.channelName || channelItem.name;\r\n const isDisplayOriginalName = (channelItem.originalName && channelName.toUpperCase() !== channelItem.originalName.toUpperCase());\r\n\r\n let isPridective: boolean;\r\n if (channelItem.originalName) {\r\n const originalNameLoweCase = channelItem.originalName.toLowerCase();\r\n isPridective = originalNameLoweCase.indexOf(PREFIX_PREDICTIVE_CHANNEL) === 0;\r\n }\r\n\r\n let seriesName = `${extraInfo.seriesPrefix || ''}${channelItem.channelName || channelItem.name}`;\r\n const tooltipName = !!isDisplayOriginalName ? `${seriesName}: ${channelItem.originalName} ${channelUnit}` : `${seriesName} ${channelUnit}`;\r\n seriesName = seriesName + ' ' + channelUnit;\r\n const seriesColor = extraInfo.seriesColor ? extraInfo.seriesColor : channelItem.color;\r\n\r\n return {\r\n id: seriesId,\r\n name: seriesName,\r\n type: 'line',\r\n data: dataSeries,\r\n dashStyle: !!isPridective ? 'shortdash' : 'solid',\r\n tooltipName,\r\n yAxis: dataIndex,\r\n color: seriesColor,\r\n boostThreshold: 10000,\r\n connectNulls: true\r\n };\r\n });\r\n return result;\r\n }\r\n\r\n updateTimestampByTimezoneOffset(inputData: IInputDataChart, timezoneOffset?: number) {\r\n // if (inputData && !isEmpty(inputData.values) && timezoneOffset) {\r\n // const values = inputData.values;\r\n // const columns = inputData.columns;\r\n // const xAxisChannelName = DATETIME_CHANNEL_NAME;\r\n // // find index of time channel\r\n // const timeIndex = columns.findIndex(value => value === xAxisChannelName);\r\n // values.forEach(dataRow => {\r\n // const curTimestamp = dataRow[timeIndex];\r\n // if (xAxisChannelName === DATETIME_CHANNEL_NAME) {\r\n // dataRow[timeIndex] = new Date(curTimestamp).getTime();\r\n // if (isNumber(timezoneOffset)) {\r\n // dataRow[timeIndex] = dataRow[timeIndex] + (timezoneOffset * 60 * 1000);\r\n // }\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n parseSeriesData(channelSettings: IChannelSettingModel, highChartSeries: Highcharts.Series[], inputData?: IInputDataChart, mappedChannels?: IChannelItem[], timeFormat?: string, dataType?: string, extraInfo?: ISeriesDataExtraInfo, unitSetting?: number) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n const result = [];\r\n\r\n if (channelSettings && inputData) {\r\n let yAxisIndex = 0;\r\n for (const key in channelSettings) {\r\n if (channelSettings.hasOwnProperty(key) && key !== 'autoScaleYAxis') {\r\n const setting = channelSettings[key];\r\n if (setting.channels && setting.channels.length > 0) {\r\n // set y axis's min max for filtering data series\r\n if (isNumber(setting.min) && isNumber(setting.max) && !channelSettings.autoScaleYAxis) {\r\n extraInfo.yAxisMin = setting.min;\r\n extraInfo.yAxisMax = setting.max;\r\n }\r\n if (mappedChannels && mappedChannels.length) {\r\n for (const i of setting.channels) {\r\n const item = mappedChannels.find(x => x.name === i.channelName);\r\n if (!item) continue;\r\n i.originalName = item.originalName;\r\n }\r\n }\r\n\r\n const seriesData = this.getDataSeriesFromChannels(yAxisIndex, setting.channels, highChartSeries, inputData, timeFormat, dataType, extraInfo, unitSetting);\r\n result.push(...seriesData);\r\n }\r\n yAxisIndex++;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n isAllSeriesDataEmpty(seriesData) {\r\n let result = false;\r\n if (seriesData && seriesData.length > 0) {\r\n const emptyData = seriesData.filter(item => item && item.data && item.data.length === 0);\r\n result = emptyData.length === seriesData.length;\r\n }\r\n return result;\r\n }\r\n\r\n getLastDataEachChannel(channelSettings: IChannelSettingModel, inputData): IChannelSettingItemModel[] {\r\n let result = [];\r\n if (channelSettings && inputData) {\r\n try {\r\n const selectedChannels = [\r\n ...channelSettings.firstLeft.channels,\r\n ...channelSettings.secondLeft.channels,\r\n ...channelSettings.firstRight.channels,\r\n ...channelSettings.secondRight.channels\r\n ];\r\n if (inputData.values && inputData.values.length > 0) {\r\n // find index of time channel\r\n result = selectedChannels.map(channelItem => {\r\n const mapValue = this.getLastValueByChannel(channelItem, inputData);\r\n return { ...channelItem, channelValue: mapValue.channelValue };\r\n });\r\n }\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getLastValueByChannel(channelItem, inputData: IInputDataChart) {\r\n const columns = inputData.columns;\r\n let channelValue = null;\r\n let lastData = null;\r\n let firstData = null;\r\n\r\n if (inputData.values && inputData.values.length > 0) {\r\n const channelIndex = columns.findIndex(value => value === channelItem.cName);\r\n if (channelIndex >= 0) {\r\n const values = inputData.values.filter(dataRow => {\r\n const yValue = dataRow[channelIndex];\r\n return isNumber(yValue) && !isNaN(yValue);\r\n });\r\n if (!isEmpty(values)) {\r\n lastData = values[values.length - 1];\r\n firstData = values[0];\r\n }\r\n if (lastData && isNumber(lastData[channelIndex]) && !isNaN(lastData[channelIndex])) {\r\n channelValue = lastData[channelIndex];\r\n }\r\n }\r\n }\r\n return { lastData, firstData, channelValue };\r\n }\r\n\r\n getFirstLastData(inputData: IInputDataChart) {\r\n if (!inputData || !inputData.values.length) return { firstData: null, lastData: null };\r\n const n = inputData.values.length;\r\n return {\r\n firstData: inputData.values[0],\r\n lastData: inputData.values[n - 1]\r\n };\r\n }\r\n\r\n checkHasNewData(currentInputData: IInputDataChart, newInputDataSliced?: IInputDataChart, dataType?: string) {\r\n let result = false;\r\n let timeFloatCName = TIMEFLOAT_CHANNEL_NAME;\r\n if (dataType === 'fracproData') {\r\n timeFloatCName = FRACPRO_TIMEFLOAT_CNAME;\r\n } else if (dataType === 'equipmentData') {\r\n timeFloatCName = EQUIPMENT_TIMEFLOAT_CNAME;\r\n }\r\n if (currentInputData && newInputDataSliced) {\r\n const lastTimeFloatValue = this.getChannelValue(timeFloatCName, currentInputData);\r\n const newestTimeFloatValue = this.getChannelValue(timeFloatCName, newInputDataSliced, 0);\r\n if (Helper.isNumberic(lastTimeFloatValue) && Helper.isNumberic(newestTimeFloatValue)) {\r\n if (newestTimeFloatValue >= lastTimeFloatValue) {\r\n result = true;\r\n }\r\n } else if (lastTimeFloatValue === null && newestTimeFloatValue > lastTimeFloatValue) {\r\n result = true;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n sliceToGetNewInputData(currentInputData: IInputDataChart, newInputData: IInputDataChart, dataType?: string) {\r\n let result = null;\r\n if (currentInputData && newInputData &&\r\n newInputData.values && currentInputData.values &&\r\n newInputData.values.length > currentInputData.values.length\r\n ) {\r\n let timeFloatCName = TIMEFLOAT_CHANNEL_NAME;\r\n if (dataType === 'fracproData') {\r\n timeFloatCName = FRACPRO_TIMEFLOAT_CNAME;\r\n } else if (dataType === 'equipmentData') {\r\n timeFloatCName = EQUIPMENT_TIMEFLOAT_CNAME;\r\n }\r\n const lastIndexCurrentInputData = currentInputData.values.length - 1;\r\n const lastTimeFloatValue = this.getChannelValue(timeFloatCName, currentInputData);\r\n // find index that there are new data\r\n const timeIndex = newInputData.columns.findIndex(value => value === timeFloatCName);\r\n const indexNewData = newInputData.values.findIndex(dataRow => dataRow[timeIndex] > lastTimeFloatValue);\r\n\r\n // create result base on newInputData with new values\r\n result = {\r\n ...newInputData,\r\n values: []\r\n };\r\n\r\n if (indexNewData > -1) {\r\n result.values = newInputData.values.slice(indexNewData);\r\n } else {\r\n // slice data from next last index to get new values\r\n result.values = newInputData.values.slice(lastIndexCurrentInputData + 1);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n getChannelValue(channelId, inputData, inputIndexDataRow?: number) {\r\n let channelValue = null;\r\n if (channelId && inputData) {\r\n const values = inputData.values;\r\n const columns = inputData.columns;\r\n // find index value of channel\r\n const channelIndex = columns.findIndex(value => value === channelId);\r\n if (values && values.length > 0) {\r\n // default get last data row;\r\n let indexDataRow = values.length - 1;\r\n if (inputIndexDataRow >= 0) {\r\n indexDataRow = inputIndexDataRow;\r\n }\r\n const lastDataRow = values[indexDataRow];\r\n if (lastDataRow && lastDataRow.length > 0) {\r\n channelValue = lastDataRow[channelIndex];\r\n }\r\n }\r\n }\r\n return channelValue;\r\n }\r\n\r\n getTimeRangeFilter(inputData?: IInputDataChart): ITimeRangeFilter {\r\n const result = {\r\n timefloat: { start: null, end: null },\r\n timestamp: { start: null, end: null }\r\n };\r\n if (inputData && !isEmpty(inputData.columns) && !isEmpty(inputData.values)) {\r\n const values = inputData.values;\r\n const columns = inputData.columns;\r\n const timestampIndex = columns.findIndex(value => value === DATETIME_CHANNEL_NAME);\r\n const timefloatIndex = columns.findIndex(value => value === TIMEFLOAT_CHANNEL_NAME || value === FRACPRO_TIMEFLOAT_CNAME || value === EQUIPMENT_TIMEFLOAT_CNAME);\r\n const firstDataRow = values[0];\r\n const lastDataRow = values[values.length - 1];\r\n\r\n // covert time equipment chart\r\n if (columns.findIndex(value => value === EQUIPMENT_TIMEFLOAT_CNAME) !== -1) {\r\n let defaultTime = 0;\r\n values.forEach((valueData, valueIndex) => {\r\n if (valueIndex === 0) {\r\n defaultTime = valueData[timefloatIndex];\r\n }\r\n valueData[timefloatIndex] = this.convertTimeEquipment(defaultTime, valueData[timefloatIndex]);\r\n });\r\n }\r\n\r\n // convert time float values from second to min (time float value on database is second but show on UI is min)\r\n // result.timefloat.start = Helper.convertSecToMin(firstDataRow[timefloatIndex]);\r\n // result.timefloat.end = Helper.convertSecToMin(lastDataRow[timefloatIndex]);\r\n result.timefloat.start = firstDataRow[timefloatIndex];\r\n result.timefloat.end = lastDataRow[timefloatIndex];\r\n\r\n result.timestamp.start = new Date(firstDataRow[timestampIndex]).getTime();\r\n result.timestamp.end = new Date(lastDataRow[timestampIndex]).getTime();\r\n }\r\n return result;\r\n }\r\n\r\n mergeTimeRangeOffsetChannels(offsetChartInputData: IInputDataMultiFlow[], primaryTimeRange?: ITimeRangeFilter): ITimeRangeFilter {\r\n const timeRangeData = [];\r\n if (primaryTimeRange) {\r\n timeRangeData.push(primaryTimeRange);\r\n }\r\n if (!isEmpty(offsetChartInputData)) {\r\n offsetChartInputData.forEach(inputData => {\r\n if (!isEmpty(inputData.realtimeData) && inputData.realtimeData[0]) {\r\n const timeRangeRealtimeData = this.getTimeRangeFilter(inputData.realtimeData[0]);\r\n timeRangeData.push(timeRangeRealtimeData);\r\n }\r\n });\r\n }\r\n if (!isEmpty(timeRangeData)) {\r\n const startOffsetTimeItem = minBy(timeRangeData, item => item.timefloat.start);\r\n const endOffsetTimeItem = maxBy(timeRangeData, item => item.timefloat.end);\r\n const startDateTimeItem = minBy(timeRangeData, item => item.timestamp.start);\r\n const endDateTimeItem = maxBy(timeRangeData, item => item.timestamp.end);\r\n const result = {\r\n timefloat: { start: startOffsetTimeItem.timefloat.start, end: endOffsetTimeItem.timefloat.end },\r\n timestamp: { start: startDateTimeItem.timestamp.start, end: endDateTimeItem.timestamp.end },\r\n };\r\n return result;\r\n }\r\n return;\r\n }\r\n\r\n mergeTimeRangeFilter(realtimeDataRange: ITimeRangeFilter, fracproDataRange: ITimeRangeFilter): ITimeRangeFilter {\r\n const result = {\r\n timefloat: { start: null, end: null },\r\n timestamp: { start: null, end: null }\r\n };\r\n if (realtimeDataRange && fracproDataRange) {\r\n for (const key in result) {\r\n if (result.hasOwnProperty(key)) {\r\n if (realtimeDataRange[key].start === null && realtimeDataRange[key].end === null) {\r\n result[key].start = fracproDataRange[key].start;\r\n result[key].end = fracproDataRange[key].end;\r\n } else if (fracproDataRange[key].start === null && fracproDataRange[key].end === null) {\r\n result[key].start = realtimeDataRange[key].start;\r\n result[key].end = realtimeDataRange[key].end;\r\n } else {\r\n if (realtimeDataRange[key].start > fracproDataRange[key].start) {\r\n result[key].start = fracproDataRange[key].start;\r\n } else {\r\n result[key].start = realtimeDataRange[key].start;\r\n }\r\n if (realtimeDataRange[key].end < fracproDataRange[key].end) {\r\n result[key].end = fracproDataRange[key].end;\r\n } else {\r\n result[key].end = realtimeDataRange[key].end;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (result.timestamp.start <= 0 && result.timestamp.end > 86400000) {\r\n // get last 24 hours as start time\r\n const durationInMillisec = (result.timefloat.end - result.timefloat.start) * 1000;\r\n result.timestamp.start = result.timestamp.end - durationInMillisec;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n toFilterSettings(type, timeRangeFilterValues: ITimeRangeFilter, timezone?: string, startValue?, endValue?, autoScale?: boolean): ITimeSetting {\r\n const filterType = type ? type : '';\r\n const filterTypeLower = filterType.toLowerCase();\r\n // default startIndex and endIndex = 0 to let it autoScale\r\n let result: ITimeSetting = { type: filterType, startIndex: 0, endIndex: 0, autoScale };\r\n //\r\n const offsetTime = (result, startIndex?, endIndex?) => {\r\n if (!isNil(startIndex) && !isNil(endIndex)) {\r\n result.startIndex = startIndex * 60; // do * 60 for min to second\r\n result.endIndex = endIndex * 60; // do * 60 for min to second\r\n }\r\n return result;\r\n };\r\n const epochTime = (result, startIndex?, endIndex?) => {\r\n if (!isNil(startIndex) && !isNil(endIndex)) {\r\n result.startIndex = Helper.floorDataTimeString(startIndex, timezone) * 1000; // do * 1000 for milisecond\r\n result.endIndex = Helper.ceilDataTimeString(endIndex, timezone) * 1000; // do * 1000 for milisecond\r\n }\r\n return result;\r\n };\r\n if (!timeRangeFilterValues) {\r\n if (filterType && filterTypeLower === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n return offsetTime(result, startValue, endValue);\r\n } else {\r\n return epochTime(result, startValue, endValue);\r\n }\r\n }\r\n\r\n // case 1: user select 'float'\r\n if (filterType && filterTypeLower === TIME_SETTING_TYPE.OffsetTimeLower) {\r\n if (!timeRangeFilterValues.timefloat) return result;\r\n result.startIndex = timeRangeFilterValues.timefloat.start;\r\n result.endIndex = timeRangeFilterValues.timefloat.end;\r\n return offsetTime(result, startValue, endValue);\r\n // result.startIndex = result.startIndex;\r\n // result.endIndex = result.endIndex;\r\n }\r\n // case 2: user select 'hh:mm'\r\n else if (filterType && filterTypeLower === TIME_SETTING_TYPE.EpochTimeLowerCase) {\r\n if (!timeRangeFilterValues.timestamp) return result;\r\n result.startIndex = timeRangeFilterValues.timestamp.start;\r\n result.endIndex = timeRangeFilterValues.timestamp.end;\r\n return epochTime(result, startValue, endValue);\r\n\r\n // if (timeRangeFilterValues && Helper.isNumberic(timeRangeFilterValues.timestamp.start)) {\r\n // result.startIndex = Helper.setTimeOnDate(timeRangeFilterValues.timestamp.start, startTimeParsed.hours, startTimeParsed.minutes);\r\n // }\r\n // // case start value equal 0\r\n // if (timeRangeFilterValues && Helper.isNumberic(timeRangeFilterValues.timestamp.start)) {\r\n // const durationSec = (timeRangeFilterValues.timefloat.end - timeRangeFilterValues.timefloat.start) || 0;\r\n // const startTimestamp = timeRangeFilterValues.timestamp.start;\r\n // const endTimestamp = moment(timeRangeFilterValues.timestamp.start).add('second', durationSec).valueOf();\r\n // result.endIndex = Helper.setEndTimeOnDate(startTimestamp, endTimestamp, startValue, endValue);\r\n // }\r\n }\r\n return result;\r\n }\r\n\r\n filterInputData(inputData, startIndex, endIndex, channelMappingName) {\r\n const result = {\r\n columns: [],\r\n values: [],\r\n };\r\n if (inputData) {\r\n result.columns = [...inputData.columns];\r\n let channelIndex = null;\r\n if (channelMappingName === TIMEFLOAT_CHANNEL_NAME || channelMappingName === FRACPRO_TIMEFLOAT_CNAME || channelMappingName === EQUIPMENT_TIMEFLOAT_CNAME) {\r\n channelIndex = result.columns.findIndex(value => value === TIMEFLOAT_CHANNEL_NAME || value === FRACPRO_TIMEFLOAT_CNAME || value === EQUIPMENT_TIMEFLOAT_CNAME);\r\n } else if (channelMappingName === DATETIME_CHANNEL_NAME) {\r\n channelIndex = result.columns.findIndex(value => value === DATETIME_CHANNEL_NAME);\r\n }\r\n\r\n if (typeof channelIndex === 'number' && channelIndex >= 0) {\r\n if (typeof startIndex === 'number' && (typeof endIndex === 'number' || isNil(endIndex))) {\r\n // convert datetime to timestamp for filtering data\r\n if (channelMappingName === DATETIME_CHANNEL_NAME) {\r\n result.values = inputData.values.filter(dataRow => {\r\n const timestampValue = new Date(dataRow[channelIndex]).getTime();\r\n if (endIndex !== null && endIndex !== undefined) return timestampValue >= startIndex && timestampValue <= endIndex;\r\n else return timestampValue >= startIndex;\r\n });\r\n } else {\r\n result.values = inputData.values.filter(dataRow => {\r\n dataRow[channelIndex] >= startIndex && dataRow[channelIndex] <= endIndex\r\n if (endIndex !== null && endIndex !== undefined) return dataRow[channelIndex] >= startIndex && dataRow[channelIndex] <= endIndex;\r\n else return dataRow[channelIndex] >= startIndex;\r\n }\r\n );\r\n }\r\n } else {\r\n result.values = [...inputData.values];\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n convertTimeEquipment(defaultTime: number, value: number) {\r\n let result = null;\r\n defaultTime = defaultTime * 1;\r\n value = value * 1;\r\n if (typeof value === 'number' && !isNaN(value)) {\r\n result = value - defaultTime;\r\n }\r\n return result;\r\n }\r\n\r\n parseAnnotationsOption(inputComments: ITreatmentComment[], timeFormat: string, timeRangeFilterValues: ITimeRangeFilter, chart?: Highcharts.Chart) {\r\n const result = [];\r\n const clonedData = cloneDeep(inputComments);\r\n\r\n if (!isEmpty(clonedData) && timeRangeFilterValues && timeRangeFilterValues.timestamp) {\r\n if (timeFormat === TIME_SETTING_TYPE.OffsetTime) {\r\n clonedData.forEach(item => {\r\n item.jobtime = item.jobtime; // in sec\r\n });\r\n } else {\r\n const baseTime = Math.floor(timeRangeFilterValues.timestamp.start / 1000) || 0; // sec\r\n clonedData.forEach(item => {\r\n item.jobtime = (baseTime + item.jobtime) * 1000; // millisecond\r\n });\r\n }\r\n\r\n let minYAxis = 0;\r\n const padding = 0;\r\n if (chart && !isEmpty(chart.yAxis)) {\r\n minYAxis = chart.yAxis[0].getExtremes().min;\r\n }\r\n\r\n clonedData.forEach((item, index) => {\r\n const option = {\r\n x: item.jobtime,\r\n y: minYAxis + padding || 0,\r\n comment: item.comment\r\n };\r\n // only add point with comment is not an empty string\r\n if (typeof option.comment === 'string' && option.comment.trim() !== '') {\r\n result.push(option);\r\n }\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getDataScaleSeries(seriesData, queryString: string) {\r\n const result = { min: null, max: null };\r\n if (!isEmpty(seriesData) && queryString) {\r\n const minData: object = minBy(seriesData, queryString);\r\n const maxData: object = maxBy(seriesData, queryString);\r\n if (minData && minData.hasOwnProperty(queryString)) {\r\n result.min = minData[queryString];\r\n }\r\n if (maxData && maxData.hasOwnProperty(queryString)) {\r\n result.max = maxData[queryString];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n updateStartTimeOffset(dataValues, offsetTimeIndex = 1, timeOffset = 0) {\r\n if (!isEmpty(dataValues)) {\r\n for (let index = 0; index < dataValues.length; index++) {\r\n const dataRow = dataValues[index];\r\n dataRow[offsetTimeIndex] = dataRow[offsetTimeIndex] + timeOffset;\r\n }\r\n }\r\n }\r\n\r\n makeDiagnosticPoint(highChart: Highcharts.Chart, point: IDiagnosticPoint, keyOpt?: string): IDiagnosticPointDataChange {\r\n if (!keyOpt) keyOpt = 'diag';\r\n if (point && highChart) {\r\n const seriesObj = highChart.get(`${keyOpt}_${point.id}`) as Highcharts.Series;\r\n if (seriesObj) {\r\n seriesObj.setVisible(!!point.selected);\r\n if (point.selected) {\r\n const seriesDataPoint = seriesObj.data[0] as unknown as CustomDataPoint;\r\n const dataPoint = {\r\n groupId: seriesDataPoint.groupId,\r\n x: seriesObj.data[0].x\r\n };\r\n return dataPoint as IDiagnosticPointDataChange;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","export * from './realtime-chart.service';\r\nexport * from './base-chart.service';\r\nexport * from './scatter-plot-parameter-chart.service';\r\nexport * from './log-data-curve-parameter-chart.service';\r\nexport * from './single-well-multi-treatment-chart.service';\r\nexport * from './multi-well-chart.service';\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ScatterPlotParameterChartService, IAxisSetting,\r\n IInputParamData, IChartDataPoint, IScatterPlotChartSetting, IParsedChartOptions\r\n} from './scatter-plot-parameter-chart.service';\r\nimport { isEmpty, isString, isNumber } from 'lodash';\r\nimport * as Highcharts from 'highcharts';\r\nimport { ENUM_TREATMENT_COLUMNS } from '../../helpers/app.constants';\r\n\r\nexport enum ENUM_SCALE_TYPES {\r\n VerticalSection = 'Vertical Section',\r\n Treatment = 'Treatment',\r\n MeasuredDepth = 'Measured Depth'\r\n}\r\n\r\nexport interface IAvgMDData {\r\n id: number;\r\n avgMD: number;\r\n yValue?: number;\r\n}\r\n\r\nexport interface ILogDataState {\r\n curveItem: {\r\n name: string;\r\n unit?: string;\r\n };\r\n scaleMode: string;\r\n curveData?: IChartDataPoint[];\r\n parameterData?: IChartDataPoint[];\r\n logCurvesData?: IChartDataPoint[];\r\n selectedCurves?: {\r\n name: string;\r\n unit?: string;\r\n }[],\r\n shape?: string;\r\n color?: string;\r\n min?: number;\r\n max?: number;\r\n wellKickOfMD?: number;\r\n}\r\n\r\n@Injectable()\r\nexport class LogDataCurveParameterChartService {\r\n\r\n constructor(\r\n private scatterPlotParameterChartService: ScatterPlotParameterChartService\r\n ) { }\r\n\r\n parseChartOptions(\r\n itemsComparing: IAxisSetting[],\r\n chartSettings: IScatterPlotChartSetting,\r\n inputData: IInputParamData[],\r\n logDataState?: ILogDataState,\r\n designActualData?,\r\n groupOption?: string,\r\n isDarkMode?: boolean\r\n ): IParsedChartOptions {\r\n let xAxisOpts = [];\r\n let yAxisOpts = [];\r\n let seriesData = [];\r\n let xAxisOpt;\r\n let designActualXAxis;\r\n let yAxisLeftOpt = [];\r\n let yAxisRightOpt = [];\r\n let designActualOpt = [];\r\n let tooltipOption = null;\r\n const yAxisSettings = chartSettings.yAxis;\r\n const curveAxisSettings = chartSettings.curveYAxis;\r\n const designActualYAxis = chartSettings.designActualYAxis;\r\n\r\n // get series data of log curve data\r\n if (logDataState && !isEmpty(curveAxisSettings) && !isEmpty(logDataState.logCurvesData)) {\r\n yAxisLeftOpt = this.scatterPlotParameterChartService.getLeftYAxisOption(yAxisSettings);\r\n curveAxisSettings.forEach(setting => {\r\n const yAxisRightTitle = `${setting.name} ` + (setting.unit ? `(${setting.unit})` : '');\r\n const opts = this.scatterPlotParameterChartService.getYAxisOption(yAxisRightTitle, null, true, setting);\r\n yAxisRightOpt.push(opts);\r\n });\r\n if (logDataState.scaleMode === ENUM_SCALE_TYPES.Treatment) {\r\n xAxisOpt = this.scatterPlotParameterChartService.getXAxisOptionCategories(itemsComparing, undefined, isDarkMode);\r\n const parameterSeriesData = this.scatterPlotParameterChartService.parseSeriesDataByCategories(itemsComparing, yAxisSettings, inputData);\r\n\r\n const logDataSeriesIndex = yAxisSettings.length + designActualYAxis.length;\r\n const logDataSeries = this.parseCurveSeriesDataByAvgMD(logDataState.logCurvesData, chartSettings.curveYAxis, logDataSeriesIndex);\r\n seriesData = parameterSeriesData.concat(logDataSeries);\r\n if (!isEmpty(designActualYAxis)) {\r\n designActualOpt = this.scatterPlotParameterChartService.getLeftYAxisOption(designActualYAxis);\r\n if (groupOption === 'treatment') {\r\n designActualYAxis.forEach((setting, index) => {\r\n const designActualSeries = this.scatterPlotParameterChartService.parseDesignActualSeriesDataByTreatmentMode(itemsComparing, setting, index + yAxisSettings.length, designActualData);\r\n seriesData = seriesData.concat(designActualSeries);\r\n });\r\n } else {\r\n const wellItems = [itemsComparing[0]];\r\n designActualXAxis = this.scatterPlotParameterChartService.getXAxisOptionCategories(wellItems, true, isDarkMode);\r\n\r\n designActualYAxis.forEach((setting, index) => {\r\n const designActualSeries = this.scatterPlotParameterChartService.parseDesignActualSeriesDataByWellMode(wellItems, setting, index + yAxisSettings.length, designActualData);\r\n seriesData = seriesData.concat(designActualSeries);\r\n });\r\n }\r\n }\r\n } else {\r\n let isRevertedXAxis = false;\r\n if (!isEmpty(logDataState.logCurvesData)) {\r\n const firstDataRow = logDataState.logCurvesData[0];\r\n const lastDataRow = logDataState.logCurvesData[logDataState.logCurvesData.length - 1];\r\n if (firstDataRow && lastDataRow) {\r\n if (firstDataRow.xValue > lastDataRow.xValue) {\r\n isRevertedXAxis = true;\r\n }\r\n }\r\n }\r\n if (logDataState.scaleMode === ENUM_SCALE_TYPES.VerticalSection) {\r\n xAxisOpt = this.scatterPlotParameterChartService.getXAxisOptionDefault(ENUM_SCALE_TYPES.VerticalSection, null, chartSettings.xAxis, isRevertedXAxis, isDarkMode);\r\n } else if (logDataState.scaleMode === ENUM_SCALE_TYPES.MeasuredDepth) {\r\n xAxisOpt = this.scatterPlotParameterChartService.getXAxisOptionDefault(ENUM_SCALE_TYPES.MeasuredDepth, null, chartSettings.xAxis, isRevertedXAxis, isDarkMode);\r\n // set kick of MD as min\r\n if (logDataState.wellKickOfMD) {\r\n xAxisOpt.min = logDataState.wellKickOfMD;\r\n }\r\n }\r\n const parameterSeriesData = this.parseParameterSeriesData(yAxisSettings, logDataState.parameterData);\r\n const logDataSeriesIndex = parameterSeriesData.length;\r\n const logDataSeries = this.parseCurveSeriesDataByCurveData(curveAxisSettings, logDataState.logCurvesData, logDataState.parameterData, logDataSeriesIndex);\r\n seriesData = [...parameterSeriesData, ...logDataSeries];\r\n }\r\n if (xAxisOpt) {\r\n xAxisOpts = [xAxisOpt];\r\n }\r\n if (designActualXAxis) {\r\n xAxisOpts.push(designActualXAxis);\r\n }\r\n yAxisOpts = [...yAxisLeftOpt, ...designActualOpt, ...yAxisRightOpt];\r\n // get tooltip options\r\n tooltipOption = this.getTooltipOption(logDataState.scaleMode);\r\n }\r\n\r\n return {\r\n xAxis: xAxisOpts,\r\n yAxis: yAxisOpts,\r\n seriesData: seriesData,\r\n tooltip: tooltipOption\r\n };\r\n }\r\n\r\n getTooltipOption(scaleMode?: string) {\r\n let tooltipOptions = {};\r\n const symbol = '●';\r\n const self = this;\r\n if (scaleMode === ENUM_SCALE_TYPES.Treatment) {\r\n tooltipOptions = {\r\n shared: true,\r\n useHTML: true,\r\n borderColor: '#000',\r\n formatter: function() {\r\n const tbRows = [];\r\n let treatmentName;\r\n let isCurvePoint = false;\r\n this.points.forEach((activePoint, index) => {\r\n if (!treatmentName) {\r\n treatmentName = activePoint.point.treatmentName;\r\n }\r\n isCurvePoint = activePoint.point.isCurve;\r\n\r\n const tooltipPointMaker = `${symbol}`;\r\n const value = self.isEpochName(activePoint.series.name) ? Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', activePoint.y * 1000) : Highcharts.numberFormat(activePoint.y, 2)\r\n let avgMDRow = '';\r\n if (index === 0) {\r\n avgMDRow = isNumber(activePoint.point.avgMD) ? `\r\n \r\n \r\n \r\n \r\n ` : '';\r\n }\r\n const avgStrOnLastPoint = isCurvePoint ? `Average ` : '';\r\n const dataRow = `\r\n ${avgMDRow}\r\n \r\n \r\n \r\n \r\n `\r\n tbRows.push(dataRow);\r\n\r\n if (activePoint.point.isDesignActual) {\r\n const percentDev = (activePoint.point.actualValue - activePoint.point.designValue) / activePoint.point.designValue * 100;\r\n const devDataRow = `\r\n \r\n \r\n \r\n \r\n `\r\n tbRows.push(devDataRow);\r\n }\r\n });\r\n\r\n return `\r\n
\r\n ${treatmentName ? treatmentName : ''}\r\n
${tooltipPointMaker} AverageMD (ft): ${activePoint.point.avgMD}
${tooltipPointMaker} ${avgStrOnLastPoint}${activePoint.series.name}: ${value}
%Dev: ${Highcharts.numberFormat(percentDev, 2)}
\r\n ${tbRows.join('')}\r\n
\r\n \r\n `;\r\n },\r\n };\r\n } else {\r\n tooltipOptions = {\r\n shared: true,\r\n headerFormat: '{series.name}',\r\n formatter: function() {\r\n const tbRows = [];\r\n let treatmentName;\r\n let isCurvePoint = false;\r\n this.points.forEach((activePoint, index) => {\r\n if (!treatmentName) {\r\n treatmentName = activePoint.point.treatmentName;\r\n }\r\n isCurvePoint = activePoint.point.isCurve;\r\n const tooltipPointMaker = `${symbol}`;\r\n const value = self.isEpochName(activePoint.series.name) ? Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', activePoint.y * 1000) : Highcharts.numberFormat(activePoint.y, 2)\r\n let avgMDRow = '';\r\n if (index === 0) {\r\n avgMDRow = isNumber(activePoint.point.avgMD) ? `\r\n \r\n \r\n \r\n \r\n ` : '';\r\n }\r\n const avgStrOnLastPoint = isCurvePoint ? `Average ` : '';\r\n const dataRow = `\r\n ${avgMDRow}\r\n \r\n \r\n \r\n \r\n `\r\n tbRows.push(dataRow);\r\n });\r\n const verticalSectionRow = `\r\n \r\n \r\n \r\n \r\n `;\r\n\r\n return `\r\n
\r\n ${treatmentName ? treatmentName : ''}\r\n
${tooltipPointMaker} AverageMD (ft): ${activePoint.point.avgMD}
${tooltipPointMaker} ${avgStrOnLastPoint}${activePoint.series.name}: ${value}
- ${ENUM_SCALE_TYPES.VerticalSection} (ft): ${Highcharts.numberFormat(this.x, 2)}
\r\n ${scaleMode === ENUM_SCALE_TYPES.VerticalSection ? verticalSectionRow : ''}\r\n ${tbRows.join('')}\r\n
\r\n \r\n `;\r\n },\r\n };\r\n }\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n parseCurveSeriesDataByAvgMD(logCurvesData: IChartDataPoint[], curveAxisSettings: IAxisSetting[], beginYAxisIndex?: number) {\r\n const result = [];\r\n if (!isEmpty(curveAxisSettings)) {\r\n curveAxisSettings.forEach((setting, index) => {\r\n const chartDataPoints = logCurvesData.filter(item => item.id === setting.id);\r\n const seriesShape = isString(setting.shape) ? setting.shape.toLowerCase() : 'circle';\r\n const data = chartDataPoints.map(item => {\r\n return {\r\n y: item.yValue,\r\n name: `${item.name}`,\r\n color: setting.color,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n isCurve: true\r\n };\r\n });\r\n const series = this.getLineSeriesOption(setting.name, data, setting, beginYAxisIndex + index);\r\n series.marker.enabled = true;\r\n result.push(series);\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n parseCurveSeriesDataByCurveData(curveAxisSettings, logCurvesData: IChartDataPoint[], parameterDataPoints: IChartDataPoint[], beginYAxisIndex?: number) {\r\n const result = [];\r\n curveAxisSettings.forEach((setting, index) => {\r\n const chartDataPoints = logCurvesData.filter(item => item.id === setting.id);\r\n const seriesShape = isString(setting.shape) ? setting.shape.toLowerCase() : 'circle';\r\n const data = chartDataPoints.map(item => {\r\n const isSelected = parameterDataPoints.find(i => i.xValue === item.xValue);\r\n return {\r\n x: item.xValue,\r\n y: item.yValue,\r\n name: `${item.name}`,\r\n color: setting.color,\r\n marker: {\r\n enabled: !!isSelected,\r\n symbol: seriesShape,\r\n lineWidth: 2\r\n },\r\n isCurve: true\r\n };\r\n }).sort((a, b) => a.x - b.x);\r\n const series = this.getLineSeriesOption(setting.name, data, setting, beginYAxisIndex + index);\r\n result.push(series);\r\n });\r\n return result;\r\n }\r\n\r\n parseParameterSeriesData(yAxisSettings: IAxisSetting[], parameterData: IChartDataPoint[]) {\r\n const series = yAxisSettings.map((setting, yAxisIndex) => {\r\n const seriesColor = setting.color;\r\n const seriesShape = isString(setting.shape) ? setting.shape.toLowerCase() : 'circle';\r\n const paramDataByYAxis = parameterData.filter(param => param.name === setting.id);\r\n let result = {\r\n id: `parameter-${setting.id}`,\r\n name: setting.name,\r\n type: 'line',\r\n data: paramDataByYAxis.map(item => {\r\n return {\r\n x: item.xValue,\r\n y: item.yValue,\r\n name: `${item.name}`,\r\n treatmentName: `${item.treatmentName}`,\r\n avgMD: item.avgMDValue\r\n };\r\n }).sort((a, b) => a.x - b.x),\r\n color: seriesColor,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n lineWidth: 0,\r\n zIndex: 2,\r\n states: {\r\n inactive: {\r\n opacity: 1\r\n },\r\n hover: {\r\n lineWidth: 0,\r\n lineWidthPlus: 0\r\n }\r\n },\r\n yAxis: yAxisIndex\r\n };\r\n\r\n return result;\r\n });\r\n return series;\r\n }\r\n\r\n getLineSeriesOption(id, data = [], settings: IAxisSetting, yAxisIndex?: number) {\r\n let result = {\r\n id: id,\r\n name: id,\r\n type: 'line',\r\n data: data,\r\n yAxis: yAxisIndex,\r\n zIndex: 1,\r\n marker: {\r\n enabled: false\r\n },\r\n color: settings.color\r\n };\r\n\r\n return result;\r\n }\r\n\r\n isEpochName(name) {\r\n return name.indexOf(ENUM_TREATMENT_COLUMNS.TimeStart) > -1 || name.indexOf(ENUM_TREATMENT_COLUMNS.TimeEnd) > -1;\r\n }\r\n\r\n getRawStringScale(logDataState: ILogDataState, inputChartData : IInputParamData[]){\r\n\r\n let curveDatas = logDataState.curveData;\r\n let parameterDatas = logDataState.parameterData;\r\n if(logDataState.scaleMode === ENUM_SCALE_TYPES.VerticalSection || logDataState.scaleMode === ENUM_SCALE_TYPES.MeasuredDepth){\r\n\r\n if(!isEmpty(curveDatas) && !isEmpty(parameterDatas)){\r\n let headersNames = ['Treatment', 'Vertical Section'].concat(parameterDatas[0].name).concat(logDataState.curveItem.name);\r\n if(logDataState.scaleMode === ENUM_SCALE_TYPES.MeasuredDepth){\r\n headersNames = ['Treatment', 'Measured Depth'].concat(parameterDatas[0].name).concat(logDataState.curveItem.name);\r\n }\r\n let headersUnits = [',ft'].concat(parameterDatas[0].unit.replace('(', '').replace(')', '')).concat(logDataState.curveItem.unit ? logDataState.curveItem.unit : '');\r\n\r\n parameterDatas.reverse();\r\n const channelData = [];\r\n parameterDatas.forEach(parameterData => {\r\n let channelDataRow = [];\r\n let treatmentName = parameterData.treatmentName.split(' ');\r\n if(treatmentName.length > 1){\r\n channelDataRow.push(treatmentName[1]);\r\n }\r\n //channelDataRow.push(parameterData.treatmentName);\r\n channelDataRow.push(parameterData.xValue);\r\n channelDataRow.push(parameterData.yValue);\r\n\r\n let logChan = curveDatas.filter(dataRow => {\r\n const xValue = dataRow.xValue;\r\n return xValue == parameterData.xValue;\r\n });\r\n if(logChan.length > 0){\r\n channelDataRow.push(logChan[0].yValue ? logChan[0].yValue : '');\r\n }else{\r\n channelDataRow.push('');\r\n }\r\n channelData.push(channelDataRow);\r\n });\r\n const result = [\r\n headersNames,\r\n headersUnits,\r\n channelData.join('\\n')\r\n ]\r\n const stringData = result.join('\\n');\r\n\r\n return stringData;\r\n }\r\n }else{\r\n if(!isEmpty(inputChartData) && !isEmpty(curveDatas)){\r\n let headersNames = ['Treatment'].concat(inputChartData[0].paramName).concat(logDataState.curveItem.name);\r\n let headersUnits = [''].concat(inputChartData[0].paramUnit.replace('(', '').replace(')', '')).concat(logDataState.curveItem.unit ? logDataState.curveItem.unit.replace('(', '').replace(')', '') : '');\r\n\r\n inputChartData.reverse();\r\n const channelData = [];\r\n\r\n inputChartData.forEach(data => {\r\n let channelDataRow = [];\r\n\r\n let treatmentName = data.name.split(' ');\r\n if(treatmentName.length > 1){\r\n channelDataRow.push(treatmentName[1]);\r\n }\r\n //channelDataRow.push(data.name);\r\n channelDataRow.push(data.paramValue);\r\n\r\n let logChan = curveDatas.filter(dataRow => {\r\n const xValue = dataRow.xValue;\r\n return xValue == data.avgMDValue;\r\n });\r\n if(logChan.length > 0){\r\n channelDataRow.push(logChan[0].yValue ? logChan[0].yValue : '');\r\n }else{\r\n channelDataRow.push('');\r\n }\r\n channelData.push(channelDataRow);\r\n });\r\n\r\n const result = [\r\n headersNames,\r\n headersUnits,\r\n channelData.join('\\n')\r\n ]\r\n const stringData = result.join('\\n');\r\n\r\n return stringData;\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { IInputDataChart } from '../../models';\r\n\r\nexport interface IInputDataWell {\r\n wellId: number;\r\n wellName: string;\r\n treatmentId: number;\r\n treatmentNumber: number;\r\n realtimeData: IInputDataChart[];\r\n fracproData: IInputDataChart[];\r\n flowPathType?: number;\r\n channelSettings?: any;\r\n mappedChannels?: any[];\r\n aliasName?: string;\r\n color?: string;\r\n}\r\n\r\nexport interface IWellOptions {\r\n wellId: number;\r\n wellName: string;\r\n selectedTreatmentList?: any[];\r\n aliasName?: string;\r\n wellColor?: string;\r\n longitude?: number;\r\n latitude?: number;\r\n tzTimeZone?: string;\r\n stTimeZone?: string;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class MultiWellChartService {\r\n\r\n private zoomBufferDataSubject: BehaviorSubject = new BehaviorSubject(null);\r\n private wellOptionsDataSubject: BehaviorSubject = new BehaviorSubject(null);\r\n public onWellAliasNameChangeSubject: Subject = new Subject();\r\n public onWellAliasColorChangeSubject: Subject = new Subject();\r\n\r\n constructor() { }\r\n\r\n setZoomBufferData(data: IInputDataWell[]) {\r\n this.zoomBufferDataSubject.next(data);\r\n }\r\n\r\n getZoomBufferData(): Observable {\r\n return this.zoomBufferDataSubject.asObservable();\r\n }\r\n\r\n setWellOptionsData(data: IWellOptions[]) {\r\n this.wellOptionsDataSubject.next(data);\r\n }\r\n\r\n getWellOptionsData() {\r\n return this.wellOptionsDataSubject.asObservable();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isEmpty, isObject } from 'lodash';\r\nimport { TreatmentPlotService } from '../../components/treatment-plot/treatment-plot.service';\r\nimport { IInputDataChart } from '../../models';\r\n\r\n@Injectable()\r\nexport class RealtimeChartService {\r\n private inputDataCache = null;\r\n\r\n constructor(\r\n ) { }\r\n\r\n setInputDataCache(inputData) {\r\n this.inputDataCache = inputData;\r\n }\r\n\r\n // realtime chart grid data\r\n getFracproGridDataDefault() {\r\n const gridModel = [\r\n {\r\n heading: 'Realtime',\r\n dataGrid: [\r\n [\r\n { name: 'Elapsed Time', mnemonic: 'Time', unit: 'min', value: null, cName: 'C0', decimal: 1, dataFlow: 'realtime', measureType: undefined },\r\n { name: 'Model Time', mnemonic: 'Time', unit: 'min', value: null, cName: 'F0', decimal: 1, measureType: undefined },\r\n { name: 'Surf Pressure', mnemonic: 'Surf Pressure', unit: 'psi', value: null, cName: null, decimal: 0, measureType: undefined },\r\n { name: 'Slurry Rate', mnemonic: 'Slurry Rate', unit: 'bpm', value: null, cName: null, decimal: 1, measureType: undefined },\r\n ],\r\n [\r\n { name: 'Stage Number', mnemonic: 'Surf Stage Number', unit: null, value: null, cName: null, measureType: undefined },\r\n { name: 'Stage Name', mnemonic: 'Stage Name', unit: null, value: null, cName: null, measureType: undefined },\r\n { name: 'Proppant Name', mnemonic: 'Proppant Name', unit: null, value: null, cName: null, measureType: undefined },\r\n { name: 'Fluid Name', mnemonic: 'Fluid Name', unit: null, value: null, cName: null, measureType: undefined },\r\n ],\r\n [\r\n { name: 'Prop Conc', mnemonic: 'Prop Conc', unit: 'ppg', value: null, cName: null, decimal: 2, measureType: undefined },\r\n { name: 'Btm Prop Conc', mnemonic: 'Btm Prop Conc', unit: 'ppg', value: null, cName: null, decimal: 2, measureType: undefined },\r\n { name: 'Btm Pressure', mnemonic: 'Btmh Pressure', unit: 'psi', value: null, cName: null, decimal: 0, measureType: undefined },\r\n ]\r\n ]\r\n },\r\n {\r\n heading: 'Totals',\r\n dataGrid: [\r\n [\r\n { name: 'Prop Total', mnemonic: 'Surf Prop Tot', unit: null, value: null, cName: null, decimal: 2, measureType: undefined },\r\n { name: 'Stage Prop Total', mnemonic: 'Prop Stage Tot', unit: null, value: null, cName: null, decimal: 2, measureType: undefined },\r\n ],\r\n [\r\n { name: 'Clean Total', mnemonic: 'Surf Clean Tot', unit: 'bbls', value: null, cName: null, decimal: 2 , measureType: undefined},\r\n { name: 'Stage Clean Total', mnemonic: 'Clean Stage Tot', unit: null, value: null, cName: null, decimal: 2, measureType: undefined },\r\n ],\r\n [\r\n { name: 'Slurry Total', mnemonic: 'Surf Slry Tot', unit: null, value: null, cName: null, decimal: 2, measureType: undefined },\r\n { name: 'Stage Slurry Total', mnemonic: 'Slurry Stage Tot', unit: 'bbls', value: null, cName: null, decimal: 2, measureType: undefined },\r\n ]\r\n ]\r\n }\r\n ];\r\n return gridModel;\r\n }\r\n\r\n getFracproGridData(channelMapping) {\r\n const gridData = this.getFracproGridDataDefault();\r\n\r\n if (!isEmpty(channelMapping)) {\r\n // update cName and unit\r\n gridData.forEach(model => {\r\n model.dataGrid.forEach(grid => {\r\n grid.forEach(channel => {\r\n const mappedItem = channelMapping.find(item => channel.mnemonic === item.name);\r\n if (mappedItem) {\r\n channel.cName = mappedItem.cName;\r\n channel.unit = mappedItem.unit;\r\n channel.measureType = mappedItem.measureType;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n return gridData;\r\n }\r\n\r\n getCNameGridData(gridData) {\r\n const result = [];\r\n if (!isEmpty(gridData)) {\r\n // update cName and unit\r\n gridData.forEach(model => {\r\n model.dataGrid.forEach(grid => {\r\n grid.forEach(channel => {\r\n if (channel.cName) {\r\n result.push(channel.cName);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n getFracproCNameGridData(channelMapping) {\r\n return this.getCNameGridData(this.getFracproGridData(channelMapping));\r\n }\r\n\r\n setChannelValueGridData(gridData, fracproInputData: IInputDataChart, realtimeInputData: IInputDataChart, predictedCNames?: string[]) {\r\n fracproInputData = isObject(fracproInputData) && fracproInputData ? fracproInputData : { columns: [], values: [] };\r\n realtimeInputData = isObject(realtimeInputData) && realtimeInputData ? realtimeInputData : { columns: [], values: [] };\r\n if (!isEmpty(gridData)) {\r\n const fracproValues = fracproInputData.values;\r\n const fracproColumns = fracproInputData.columns;\r\n const realtimeValues = realtimeInputData.values;\r\n const realtimeColumns = realtimeInputData.columns;\r\n // update cName and unit\r\n gridData.forEach(model => {\r\n model.dataGrid.forEach(grid => {\r\n grid.forEach(channel => {\r\n if (channel && channel.cName) {\r\n // update realtime data\r\n if (channel.dataFlow === 'realtime') {\r\n if (!isEmpty(realtimeColumns) && !isEmpty(realtimeValues)) {\r\n // if there is predictCName\r\n if (predictedCNames && predictedCNames.length) {\r\n const lastTime = this.getBaseTimeByLastDataPoint(realtimeInputData, predictedCNames);\r\n if (lastTime) {\r\n channel.value = lastTime / 60;\r\n }\r\n } else {\r\n const indexDataRow = realtimeValues.length - 1;\r\n const lastDataRow = realtimeValues[indexDataRow];\r\n // set last value as channel value\r\n if (!isEmpty(lastDataRow)) {\r\n const channelIndex = realtimeColumns.findIndex(value => value === channel.cName);\r\n // convert time from seconds to min\r\n if (channel.cName === 'C0') {\r\n channel.value = lastDataRow[channelIndex] / 60;\r\n } else {\r\n channel.value = lastDataRow[channelIndex];\r\n }\r\n }\r\n }\r\n\r\n }\r\n } else { // udpate fracpro data\r\n if (!isEmpty(fracproColumns) && !isEmpty(fracproValues)) {\r\n // get last data row\r\n const indexDataRow = fracproValues.length - 1;\r\n const lastDataRow = fracproValues[indexDataRow];\r\n // set last value as channel value\r\n if (!isEmpty(lastDataRow)) {\r\n const channelIndex = fracproColumns.findIndex(value => value === channel.cName);\r\n // convert time from seconds to min\r\n if (channel.cName === 'F0') {\r\n channel.value = lastDataRow[channelIndex] / 60;\r\n } else {\r\n channel.value = lastDataRow[channelIndex];\r\n }\r\n }\r\n }\r\n }\r\n // fix decimal\r\n if (typeof channel.decimal === 'number' && typeof channel.value === 'number' && !isNaN(channel.value)) {\r\n channel.value = channel.value.toFixed(channel.decimal) * 1;\r\n }\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n getBaseTimeByLastDataPoint(inputData: IInputDataChart, predictChannelsMap?: string[]) {\r\n if (inputData && !isEmpty(inputData.values)) {\r\n const filterIndex: number[] = [];\r\n for (let i = 0; i < inputData.columns.length; i++) {\r\n if (inputData.columns[i] === 'time') continue;\r\n if (inputData.columns[i].includes('C0')) continue;\r\n if (predictChannelsMap.includes(inputData.columns[i])) continue;\r\n filterIndex.push(i);\r\n }\r\n\r\n const getLastDataValue = (data: any[]) => {\r\n const n = data.length;\r\n for (let i = n - 1; i >= 0; i--) {\r\n for (const index of filterIndex) {\r\n if (data[i][index] === null) continue;\r\n return data[i];\r\n }\r\n }\r\n };\r\n\r\n const lastDataPoint = getLastDataValue(inputData.values);\r\n if (!lastDataPoint) return 0;\r\n const index = inputData.columns.indexOf('C0');\r\n if (index < 0) return 0;\r\n return lastDataPoint[index];\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as Highcharts from 'highcharts';\r\nimport { isEmpty, isObject, isNumber, isString, extend, forEach, groupBy, meanBy, uniqBy, lowerFirst, isNil } from 'lodash';\r\nimport { CHART_MESSAGES, EpochTimeParameters, DEFAULT_DESIGN_COLOR, DEFAULT_ACTUAL_COLOR, CHART_OPTION, TREATMENT_UNIT_TYPE } from '../../helpers/app.constants';\r\nimport { ILogDataState, ENUM_SCALE_TYPES } from './log-data-curve-parameter-chart.service';\r\nimport { ITreatmentItem } from '../../models/treatment.model';\r\nimport { Helper } from '../../helpers/helper';\r\nimport { SelectItem } from '../../components/select/select-item';\r\nimport { UnitSystemService } from '../unit-system.service';\r\n\r\ntype ScaleOption = ENUM_SCALE_TYPES.VerticalSection | ENUM_SCALE_TYPES.MeasuredDepth | ENUM_SCALE_TYPES.Treatment;\r\n\r\nexport interface IChartDataPoint {\r\n id?: string;\r\n name: string;\r\n treatmentName?: string;\r\n xValue: number;\r\n yValue: number;\r\n avgMDValue?: number;\r\n color?: string;\r\n unit?: string;\r\n shape?: string;\r\n}\r\n\r\nexport interface IInputParamData {\r\n id: number;\r\n name: string;\r\n paramName: string;\r\n paramValue: number;\r\n paramUnit?: string;\r\n avgMDValue?: number;\r\n}\r\n\r\nexport interface IAxisSetting {\r\n id: any;\r\n name: string;\r\n unit?: string;\r\n color?: string;\r\n shape?: string;\r\n min?: number;\r\n max?: number;\r\n dataKey?: string;\r\n type?: string;\r\n designValue?: string;\r\n actualValue?: string;\r\n designShape?: string;\r\n actualShape?: string;\r\n designColor?: string;\r\n actualColor?: string;\r\n timeStart?: number;\r\n wellId?: number;\r\n treatmentId?: number;\r\n treatmentNumber?: number;\r\n wellName?: string;\r\n measureType?: string;\r\n}\r\n\r\nexport interface IScatterPlotChartSetting {\r\n xAxis: IAxisSetting;\r\n yAxis: IAxisSetting[];\r\n curveYAxis?: IAxisSetting[];\r\n designActualYAxis?: IAxisSetting[];\r\n fdiYAxis?: IAxisSetting[];\r\n scale?: ScaleOption[];\r\n}\r\n\r\nexport interface IScatterChartInputState {\r\n xAxisMode?: string;\r\n itemsComparing: IAxisSetting[];\r\n xAxisSettings: IAxisSetting[];\r\n yAxisSettings: IAxisSetting[];\r\n chartSettings?: IScatterPlotChartSetting;\r\n inputData: IInputParamData[];\r\n logDataState?: ILogDataState;\r\n designActualData?: any;\r\n fdiOffsetWellsData?: IInputParamData[];\r\n groupOption?: string;\r\n}\r\n\r\nexport interface IParsedChartOptions {\r\n xAxis: any[];\r\n yAxis: any[];\r\n seriesData: any[];\r\n tooltip?: any;\r\n}\r\n\r\nexport enum ENUM_AXIS_TYPE {\r\n DesignActual = 'designActual'\r\n}\r\n\r\n@Injectable()\r\nexport class ScatterPlotParameterChartService {\r\n\r\n constructor(private unitSystemService: UnitSystemService) { }\r\n\r\n getDefaultOptions(xAxisMode?: string, isDarkMode?: boolean): Highcharts.Options {\r\n const options: Highcharts.Options = {\r\n chart: {\r\n style: {\r\n fontFamily: 'Open Sans'\r\n },\r\n backgroundColor: !isDarkMode ? '#ffffff' : '#181a1b',\r\n borderColor: !isDarkMode ? undefined : '#b1aba1',\r\n plotBackgroundColor: !isDarkMode ? '#ffffff' : '#181a1b',\r\n zoomType: 'x',\r\n resetZoomButton: {\r\n theme: {\r\n display: 'none'\r\n }\r\n },\r\n spacing: [10, 5, 5, 5]\r\n },\r\n boost: {\r\n enabled: false\r\n },\r\n lang: {\r\n noData: CHART_MESSAGES.en.noData\r\n },\r\n title: {\r\n text: '',\r\n },\r\n exporting: {\r\n enabled: false\r\n },\r\n credits: {\r\n enabled: false\r\n },\r\n xAxis: [],\r\n yAxis: [],\r\n tooltip: {\r\n shared: true,\r\n shadow: false,\r\n useHTML: true,\r\n borderColor: '#000',\r\n borderRadius: 14,\r\n footerFormat: '',\r\n valueDecimals: 2\r\n },\r\n legend: {\r\n itemDistance: 50,\r\n maxHeight: 88,\r\n margin: 5,\r\n itemMarginBottom: 0,\r\n itemMarginTop: 0,\r\n enabled: false,\r\n floating: false,\r\n verticalAlign: 'top',\r\n align: 'right',\r\n y: 5,\r\n itemStyle: {color: !isDarkMode ? '' : '#e8e6e3'},\r\n itemHoverStyle: { color: !isDarkMode ? '' : '#f5f5f5' },\r\n itemHiddenStyle: { color: !isDarkMode ? '#333333b3' : '#a7a7a7' }\r\n },\r\n series: [],\r\n time: {\r\n useUTC: CHART_OPTION.useUTC\r\n },\r\n plotOptions: {\r\n series: {\r\n marker: {\r\n enabled: true,\r\n radius: 5\r\n },\r\n states: {\r\n inactive: {\r\n opacity: 1\r\n },\r\n hover: {\r\n lineWidth: 2\r\n }\r\n },\r\n turboThreshold: 0\r\n },\r\n line: {\r\n animation: false,\r\n findNearestPointBy: 'xy',\r\n }\r\n },\r\n };\r\n const tooltipOption = this.getTooltipOption(xAxisMode);\r\n options.tooltip = extend(options.tooltip, tooltipOption);\r\n\r\n return options;\r\n }\r\n\r\n getXAxisOptionDefault(axisTitle: string = '', type?: 'datetime', axisSetting?: Partial, isReverted?: boolean, isDarkMode?: boolean) {\r\n if (!isReverted && axisSetting) {\r\n if (axisSetting.min > axisSetting.max) {\r\n isReverted = true;\r\n }\r\n }\r\n const option: Highcharts.XAxisOptions | any = {\r\n labels: {\r\n style: {\r\n color: !isDarkMode ? undefined : 'red'\r\n }\r\n },\r\n title: {\r\n text: axisTitle,\r\n useHTML: false,\r\n style: {\r\n wordWrap: 'break-word',\r\n width: 300,\r\n fontFamily: 'Open Sans',\r\n fontWeight: 'bold',\r\n color: !isDarkMode ? '#333333' : '#a8a095'\r\n }\r\n },\r\n showEmpty: false,\r\n lineWidth: 1,\r\n tickWidth: 1,\r\n alignTicks: true,\r\n gridLineWidth: 1,\r\n showFirstLabel: true,\r\n showLastLabel: true,\r\n min: axisSetting ? (axisSetting.min > axisSetting.max ? axisSetting.max : axisSetting.min) : null,\r\n max: axisSetting ? (axisSetting.min > axisSetting.max ? axisSetting.min : axisSetting.max) : null,\r\n reversed: !!isReverted\r\n };\r\n if (type && type === 'datetime') {\r\n option.type = type;\r\n option.labels = {\r\n // tslint:disable-next-line:object-literal-shorthand\r\n formatter: function () {\r\n const utcTimestamp = new Date(this.value * 1000).getTime();\r\n return Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', utcTimestamp);\r\n }\r\n };\r\n }\r\n\r\n return option;\r\n }\r\n\r\n getXAxisOptionCategories(settings: IAxisSetting[], isHidden?: boolean, isDarkMode?: boolean) {\r\n const categories = [];\r\n if (settings && !isEmpty(settings)) {\r\n settings.forEach(item => {\r\n categories.push(item.name);\r\n });\r\n }\r\n const option: Highcharts.XAxisOptions = this.getXAxisOptionDefault('Treatment', undefined, undefined, undefined, isDarkMode);\r\n option.categories = categories;\r\n if (isHidden) {\r\n option.visible = false;\r\n }\r\n\r\n return option;\r\n }\r\n\r\n getYAxisOption(axisTitle: string = '', type?: 'datetime', isOpposite?: boolean, axisSetting?: Partial, unsetColor = false) {\r\n const option: Highcharts.YAxisOptions = {\r\n showEmpty: false,\r\n gridLineWidth: 1,\r\n lineWidth: 1,\r\n tickWidth: 1,\r\n showFirstLabel: true,\r\n showLastLabel: true,\r\n title: {\r\n text: axisTitle,\r\n useHTML: false,\r\n style: {\r\n wordWrap: 'break-word',\r\n width: 300,\r\n fontFamily: 'Open Sans',\r\n fontWeight: 'bold',\r\n color: unsetColor ? undefined : axisSetting.color\r\n }\r\n },\r\n opposite: !!isOpposite,\r\n min: axisSetting ? (axisSetting.min > axisSetting.max ? axisSetting.max : axisSetting.min) : null,\r\n max: axisSetting ? (axisSetting.min > axisSetting.max ? axisSetting.min : axisSetting.max) : null,\r\n reversed: (axisSetting && axisSetting.min > axisSetting.max),\r\n alignTicks: false,\r\n startOnTick: false,\r\n endOnTick: false,\r\n minPadding: 0,\r\n };\r\n if (type && type === 'datetime') {\r\n option.type = type;\r\n option.labels = {\r\n // tslint:disable-next-line:object-literal-shorthand\r\n formatter: function () {\r\n const utcTimestamp = new Date(this.value * 1000).getTime();\r\n return Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', utcTimestamp);\r\n }\r\n };\r\n }\r\n\r\n return option;\r\n }\r\n\r\n getSeriesData(yAxisIndex, dataSeries: number[] | any[], extraInfo?) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n const seriesColor = extraInfo.seriesColor;\r\n const seriesName = extraInfo.seriesName;\r\n const seriesShape = isString(extraInfo.seriesShape) ? extraInfo.seriesShape.toLowerCase() : 'circle';\r\n const dataType = extraInfo.dataType ? extraInfo.dataType : 'scatter'\r\n const xAxisIndex = isNumber(extraInfo.xAxisIndex) ? extraInfo.xAxisIndex : 0\r\n let result = {\r\n id: seriesName,\r\n name: seriesName,\r\n type: dataType,\r\n data: dataSeries,\r\n color: seriesColor,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n yAxis: yAxisIndex,\r\n xAxis: xAxisIndex,\r\n zIndex: undefined\r\n };\r\n if (extraInfo.seriesIndex) {\r\n result.zIndex = extraInfo.seriesIndex\r\n }\r\n if (dataType === 'line') {\r\n result.zIndex = 1;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getTooltipOption(xAxisMode?: string, isEpochX?: boolean, isEpochY?: boolean, isMultiWells?: boolean) {\r\n const symbol = '●';\r\n let tooltipOptions = {};\r\n let prefixHeader = '';\r\n if (!isMultiWells) {\r\n prefixHeader = 'Treatment ';\r\n }\r\n let headerFormat = `${prefixHeader}{series.name}`;\r\n if (xAxisMode !== 'parameter') {\r\n tooltipOptions = {\r\n shared: true,\r\n useHTML: true,\r\n borderColor: '#000',\r\n formatter: function () {\r\n const tbRows = [];\r\n let treatmentName;\r\n this.points.forEach((activePoint, index) => {\r\n if (!treatmentName) {\r\n treatmentName = activePoint.point.treatmentName;\r\n }\r\n\r\n const tooltipPointMaker = `${symbol}`;\r\n const value = Highcharts.numberFormat(activePoint.y, 2)\r\n const dataRow = `\r\n \r\n \r\n \r\n \r\n `\r\n tbRows.push(dataRow);\r\n\r\n if (activePoint.point.isDesignActual) {\r\n const percentDev = (activePoint.point.actualValue - activePoint.point.designValue) / activePoint.point.designValue * 100;\r\n const devDataRow = `\r\n \r\n \r\n \r\n \r\n `\r\n tbRows.push(devDataRow);\r\n }\r\n });\r\n\r\n return `\r\n
\r\n ${treatmentName ? treatmentName : ''}\r\n
${tooltipPointMaker} ${activePoint.series.name}: ${value}
%Dev: ${Highcharts.numberFormat(percentDev, 2)}
\r\n ${tbRows.join('')}\r\n
\r\n \r\n `;\r\n }\r\n };\r\n } else {\r\n tooltipOptions = {\r\n headerFormat: headerFormat,\r\n pointFormatter: function () {\r\n const tooltipPointMaker = `${symbol}`;\r\n const tooltipPointFormat = `\r\n \r\n ${tooltipPointMaker} ${this.xLabel}: \r\n ${isEpochX ? Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x * 1000) : Highcharts.numberFormat(this.x, 2)}\r\n \r\n \r\n ${tooltipPointMaker} ${this.yLabel}: \r\n ${isEpochY ? Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.y * 1000) : Highcharts.numberFormat(this.y, 2)}\r\n \r\n `;\r\n\r\n return tooltipPointFormat;\r\n }\r\n };\r\n }\r\n\r\n return tooltipOptions;\r\n }\r\n\r\n convertPos = (paramData, name?: string) => {\r\n const unitTypeKey = Object.keys(TREATMENT_UNIT_TYPE).find(key => {\r\n return paramData.paramName && key.toLowerCase() === paramData.paramName.toLowerCase()\r\n });\r\n const unitType = TREATMENT_UNIT_TYPE[unitTypeKey];\r\n let unit = paramData.paramUnit;\r\n if (!isNil(unitType)) {\r\n unit = this.unitSystemService.getUnit(unitType);\r\n if (!isNil(unit)) unit = `(${unit})`;\r\n else unit = paramData.paramUnit;\r\n }\r\n\r\n return {\r\n value: !isNil(unitType) ? this.unitSystemService.convert(paramData.paramValue, unitType) : (paramData.paramValue * 1),\r\n label: name ? `${name} ${unit || ''}` : `${paramData.paramName} ${unit || ''}`\r\n };\r\n }\r\n\r\n parseSeriesDataByCategories(itemsComparing: IAxisSetting[], yAxisSettings: IAxisSetting[], inputData: IInputParamData[], beginYAxisIndex = 0) {\r\n const seriesData = [];\r\n if (!isEmpty(itemsComparing) && !isEmpty(yAxisSettings) && !isEmpty(inputData)) {\r\n forEach(yAxisSettings, (ySetting, yAxisIndex) => {\r\n const seriesDataPoints = [];\r\n // create default data series\r\n let seriesNames = `${ySetting.name}`;\r\n forEach(itemsComparing, (itemComparing) => {\r\n let dataPoint = null;\r\n const paramDataByItemComparing = inputData.find(item => {\r\n return item.id === itemComparing.id && item.paramName === ySetting.id;\r\n });\r\n if (paramDataByItemComparing) {\r\n const dataPointConverted = this.convertPos(paramDataByItemComparing, ySetting.name);\r\n seriesNames = dataPointConverted.label;\r\n if (isNumber(dataPointConverted.value)) {\r\n const seriesShape = isString(ySetting.shape) ? ySetting.shape.toLowerCase() : 'circle';\r\n dataPoint = {\r\n id: itemComparing.id,\r\n y: dataPointConverted.value,\r\n name: dataPointConverted.label,\r\n groupName: itemComparing.name,\r\n treatmentName: paramDataByItemComparing.name,\r\n avgMD: paramDataByItemComparing.avgMDValue,\r\n color: ySetting.color,\r\n marker: {\r\n symbol: seriesShape\r\n }\r\n };\r\n // replace correct data point\r\n seriesDataPoints.push(dataPoint);\r\n }\r\n }\r\n\r\n });\r\n // create series by items comparing\r\n const seriesInfo = {\r\n seriesName: seriesNames,\r\n seriesColor: ySetting.color,\r\n seriesShape: ySetting.shape,\r\n };\r\n const seriesObj = this.getLineFakeScatterSeriesData(seriesDataPoints, seriesInfo, beginYAxisIndex + yAxisIndex);\r\n seriesData.push(seriesObj);\r\n });\r\n }\r\n\r\n return seriesData;\r\n }\r\n\r\n getLineFakeScatterSeriesData(dataSeries: number[] | any[], extraInfo?, yAxisIndex?: number, fdiTreatmentId?: number) {\r\n extraInfo = isObject(extraInfo) ? extraInfo : {};\r\n const seriesColor = extraInfo.seriesColor;\r\n const seriesName = extraInfo.seriesName;\r\n const seriesShape = isString(extraInfo.seriesShape) ? extraInfo.seriesShape.toLowerCase() : 'circle';\r\n const result = {\r\n id: seriesName,\r\n name: seriesName,\r\n type: 'line',\r\n data: dataSeries,\r\n color: seriesColor,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n lineWidth: 0,\r\n zIndex: 2,\r\n states: {\r\n inactive: {\r\n opacity: 1\r\n },\r\n hover: {\r\n lineWidth: 0,\r\n lineWidthPlus: 0\r\n }\r\n },\r\n yAxis: yAxisIndex\r\n };\r\n return result;\r\n }\r\n\r\n parseSeriesDataByParameter(itemsComparing, xAxisSettings, yAxisSettings, inputData) {\r\n let seriesData = [];\r\n\r\n try {\r\n if (!isEmpty(itemsComparing) && !isEmpty(xAxisSettings) && !isEmpty(yAxisSettings) && !isEmpty(inputData)) {\r\n forEach(yAxisSettings, (ySetting, yAxisIndex) => {\r\n forEach(itemsComparing, (itemComparing) => {\r\n const dataValues = [];\r\n forEach(xAxisSettings, (xSetting) => {\r\n let dataPoint = null;\r\n const paramDataX = inputData.find(item => {\r\n return item.id === itemComparing.id && item.paramName === xSetting.id;\r\n });\r\n if (paramDataX) {\r\n const pointX = this.convertPos(paramDataX);\r\n if (isNumber(pointX.value)) {\r\n dataPoint = { x: pointX.value, y: null, xLabel: pointX.label };\r\n }\r\n }\r\n\r\n if (dataPoint) {\r\n dataValues.push(dataPoint);\r\n }\r\n const paramDataY = inputData.find(item => {\r\n return item.id === itemComparing.id && item.paramName === ySetting.id;\r\n });\r\n if (paramDataY) {\r\n const pointY = this.convertPos(paramDataY);\r\n dataPoint.yLabel = pointY.label;\r\n if (isNumber(pointY.value)) {\r\n dataPoint.y = pointY.value;\r\n }\r\n }\r\n });\r\n const seriesInfo = {\r\n seriesName: itemComparing.name,\r\n seriesColor: ySetting.color,\r\n seriesShape: ySetting.shape,\r\n };\r\n const seriesObj = this.getSeriesData(yAxisIndex, dataValues, seriesInfo);\r\n seriesData.push(seriesObj);\r\n });\r\n });\r\n }\r\n } catch (err) {\r\n return seriesData;\r\n }\r\n\r\n return seriesData;\r\n }\r\n\r\n parseDesignActualSeriesDataByWellMode(wellItems, yAxisSetting, yAxisIndex, designActualData) {\r\n let seriesData = [];\r\n\r\n try {\r\n if (yAxisSetting && !isEmpty(wellItems) && !isEmpty(designActualData)) {\r\n // create default data series\r\n const designSeriesData = [];\r\n const actualSeriesData = [];\r\n forEach(wellItems, (well, index) => {\r\n const dataByWell = designActualData.filter(data => data.wellId === well.wellId);\r\n if (!isEmpty(dataByWell)) {\r\n const designValue = meanBy(dataByWell, `${yAxisSetting.designValue}`);\r\n const actualValue = meanBy(dataByWell, `${yAxisSetting.actualValue}`);\r\n const seriesShape = isString(yAxisSetting.shape) ? yAxisSetting.shape.toLowerCase() : 'triangle';\r\n designSeriesData.push({\r\n y: designValue,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n name: `${yAxisSetting.name} (Design)`,\r\n color: yAxisSetting.designColor\r\n });\r\n actualSeriesData.push({\r\n y: actualValue,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n name: `${yAxisSetting.name} (Actual)`,\r\n color: yAxisSetting.actualColor,\r\n designValue,\r\n actualValue,\r\n isDesignActual: true\r\n });\r\n }\r\n });\r\n const designDataType = yAxisSetting.designShape === 'Line' ? 'line' : 'column';\r\n const actualDataType = yAxisSetting.actualShape === 'Line' ? 'line' : 'column';\r\n // create series by items comparing\r\n const seriesInfo = {\r\n seriesShape: yAxisSetting.shape,\r\n xAxisIndex: 1,\r\n seriesIndex: -1\r\n };\r\n const designSeries = this.getSeriesData(yAxisIndex, designSeriesData, { ...seriesInfo, seriesName: `${yAxisSetting.name} (Design)`, seriesColor: DEFAULT_DESIGN_COLOR, dataType: designDataType });\r\n const actualSeries = this.getSeriesData(yAxisIndex, actualSeriesData, { ...seriesInfo, seriesName: `${yAxisSetting.name} (Actual)`, seriesColor: DEFAULT_ACTUAL_COLOR, dataType: actualDataType });\r\n seriesData.push(designSeries);\r\n seriesData.push(actualSeries);\r\n }\r\n } catch (err) {\r\n return seriesData;\r\n }\r\n\r\n return seriesData;\r\n }\r\n\r\n parseDesignActualSeriesDataByTreatmentMode(treatmentComparingItems, yAxisSetting, yAxisIndex, designActualData) {\r\n let seriesData = [];\r\n\r\n try {\r\n if (yAxisSetting && !isEmpty(treatmentComparingItems) && !isEmpty(designActualData)) {\r\n // create default data series\r\n const designSeriesData = [];\r\n const actualSeriesData = [];\r\n forEach(treatmentComparingItems, (treatment) => {\r\n const treatmentDetailData = designActualData.find(daTreatmentItem => {\r\n return treatment.treatmentId === daTreatmentItem.id;\r\n });\r\n if (treatmentDetailData) {\r\n const designValue = treatmentDetailData[yAxisSetting.designValue];\r\n const actualValue = treatmentDetailData[yAxisSetting.actualValue];\r\n\r\n const seriesShape = isString(yAxisSetting.shape) ? yAxisSetting.shape.toLowerCase() : 'circle';\r\n designSeriesData.push({\r\n y: designValue,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n name: `${yAxisSetting.name} (Design)`,\r\n color: yAxisSetting.designColor\r\n });\r\n actualSeriesData.push({\r\n y: actualValue,\r\n marker: {\r\n symbol: seriesShape\r\n },\r\n name: `${yAxisSetting.name} (Actual)`,\r\n color: yAxisSetting.actualColor,\r\n designValue,\r\n actualValue,\r\n isDesignActual: true\r\n });\r\n }\r\n });\r\n const designDataType = yAxisSetting.designShape === 'Line' ? 'line' : 'column';\r\n const actualDataType = yAxisSetting.actualShape === 'Line' ? 'line' : 'column';\r\n // create series by items comparing\r\n const seriesInfo = {\r\n seriesShape: yAxisSetting.shape,\r\n dataType: 'column',\r\n seriesIndex: -1\r\n };\r\n const designSeries = this.getSeriesData(yAxisIndex, designSeriesData, { ...seriesInfo, seriesName: `${yAxisSetting.name} (Design)`, seriesColor: DEFAULT_DESIGN_COLOR, dataType: designDataType });\r\n const actualSeries = this.getSeriesData(yAxisIndex, actualSeriesData, { ...seriesInfo, seriesName: `${yAxisSetting.name} (Actual)`, seriesColor: DEFAULT_ACTUAL_COLOR, dataType: actualDataType });\r\n seriesData.push(designSeries);\r\n seriesData.push(actualSeries);\r\n }\r\n } catch (err) {\r\n return seriesData;\r\n }\r\n\r\n return seriesData;\r\n }\r\n\r\n getLeftYAxisOption(yAxisSettings: IAxisSetting[], isDesignActual = false) {\r\n const yAxisOpts = yAxisSettings.map(setting => {\r\n let yAxisType;\r\n if (EpochTimeParameters.indexOf(setting.name) > -1) {\r\n yAxisType = 'datetime';\r\n }\r\n const isUnsetColor = !!isDesignActual;\r\n return this.getYAxisOption(setting.name, yAxisType, false, setting, isUnsetColor);\r\n });\r\n\r\n return yAxisOpts;\r\n }\r\n\r\n parseChartOptions(\r\n itemsComparing: IAxisSetting[],\r\n chartSettings: IScatterPlotChartSetting,\r\n inputData: IInputParamData[],\r\n xAxisMode?: string,\r\n isMultiWells?: boolean,\r\n designActualData?,\r\n groupOption?: string,\r\n fdiOffsetData?: IInputParamData[],\r\n isDarkMode?: boolean\r\n ): IParsedChartOptions {\r\n let xAxisType;\r\n let xAxisOpts = [];\r\n let seriesData = [];\r\n const xAxisSettings = chartSettings.xAxis;\r\n const yAxisSettings = chartSettings.yAxis;\r\n const designActualYAxis = chartSettings.designActualYAxis;\r\n const fdiYAxisSettings = chartSettings.fdiYAxis;\r\n if (xAxisMode === 'parameter') {\r\n const xAxisTitle = xAxisSettings.name;\r\n if (EpochTimeParameters.indexOf(xAxisSettings.name) > -1) {\r\n xAxisType = 'datetime';\r\n }\r\n const reversed = (xAxisSettings && xAxisSettings.min > xAxisSettings.max);\r\n let xAxisOpt = this.getXAxisOptionDefault(xAxisTitle, xAxisType, xAxisSettings, reversed, isDarkMode);\r\n xAxisOpts.push(xAxisOpt);\r\n seriesData = this.parseSeriesDataByParameter(itemsComparing, [xAxisSettings], yAxisSettings, inputData);\r\n } else {\r\n let xAxisOpt = this.getXAxisOptionCategories(itemsComparing, undefined, isDarkMode);\r\n xAxisOpts.push(xAxisOpt);\r\n seriesData = this.parseSeriesDataByCategories(itemsComparing, yAxisSettings, inputData);\r\n if (!isEmpty(designActualYAxis)) {\r\n if (groupOption === 'treatment') {\r\n designActualYAxis.forEach((setting, index) => {\r\n const designActualSeries = this.parseDesignActualSeriesDataByTreatmentMode(itemsComparing, setting, index + yAxisSettings.length, designActualData);\r\n seriesData = seriesData.concat(designActualSeries);\r\n });\r\n } else {\r\n const itemsGroupByWell = groupBy(itemsComparing, 'wellId');\r\n const wellItems = [];\r\n Object.values(itemsGroupByWell).forEach(items => {\r\n if (!isEmpty(items)) {\r\n wellItems.push(items[0]);\r\n }\r\n });\r\n const categories = [];\r\n wellItems.forEach(item => {\r\n categories.push(item.wellName);\r\n });\r\n const designActualXAxis: Highcharts.XAxisOptions = this.getXAxisOptionDefault('Well', undefined, undefined, undefined, isDarkMode);\r\n designActualXAxis.categories = categories;\r\n xAxisOpts.push(designActualXAxis);\r\n\r\n designActualYAxis.forEach((setting, index) => {\r\n const designActualSeries = this.parseDesignActualSeriesDataByWellMode(wellItems, setting, index + yAxisSettings.length, designActualData);\r\n seriesData = seriesData.concat(designActualSeries);\r\n });\r\n }\r\n }\r\n // parse data for FDI\r\n if (!isEmpty(fdiYAxisSettings)) {\r\n const curYAxisIndex = yAxisSettings.length + designActualYAxis.length;\r\n const fdiSeries = this.parseFDISeriesDataByCategories(itemsComparing, fdiYAxisSettings, fdiOffsetData, curYAxisIndex);\r\n seriesData = seriesData.concat(fdiSeries);\r\n }\r\n\r\n }\r\n // get left y axis\r\n let yAxisOpts = this.getLeftYAxisOption(yAxisSettings);\r\n if (!isEmpty(designActualYAxis)) {\r\n yAxisOpts = yAxisOpts.concat(this.getLeftYAxisOption(designActualYAxis, true));\r\n }\r\n // make fdi y axis\r\n if (!isEmpty(fdiYAxisSettings)) {\r\n yAxisOpts = yAxisOpts.concat(this.getLeftYAxisOption(fdiYAxisSettings));\r\n }\r\n\r\n // get tooltip options\r\n const tooltipOption = this.getTooltipOption(xAxisMode, xAxisType === 'datetime', false, isMultiWells);\r\n\r\n return {\r\n xAxis: xAxisOpts,\r\n yAxis: yAxisOpts,\r\n seriesData: seriesData,\r\n tooltip: tooltipOption\r\n };\r\n }\r\n\r\n parseMultiDataToStringText(\r\n inputChartData: any[],\r\n selectedXAxisOption: SelectItem[],\r\n selectedYAxisOption: SelectItem[],\r\n selectedWells: any[]\r\n ): string {\r\n const separateSelectedWell = (wells: any[]) => {\r\n const mainWells: any[] = [];\r\n const offsetWells: any[] = [];\r\n for (const well of wells) {\r\n if (!well.treatmentList || !well.treatmentList.length) continue;\r\n let isOffset = false;\r\n for (const treatment of well.treatmentList) {\r\n if (treatment.treatmentNumber === -10) {\r\n isOffset = true;\r\n break;\r\n }\r\n }\r\n if (isOffset) offsetWells.push(well);\r\n else mainWells.push(well);\r\n }\r\n return { mainWells, offsetWells };\r\n };\r\n\r\n const getInputValue = (inputData: any[], treatmentId: number, paramName: string, fdiOffsetId?: number) => {\r\n const findData = !fdiOffsetId ?\r\n inputData.find(x => x.treatmentId === treatmentId && x.paramName === paramName) :\r\n inputData.find(x => x.treatmentId === treatmentId && x.fdiTreatmentId === fdiOffsetId && x.paramName === paramName)\r\n if (!findData) return null;\r\n return { paramValue: findData.paramValue, paramUnit: findData.paramUnit };\r\n };\r\n\r\n const getWellFromTreatmentId = (wells: any[], treatmentId: number) => {\r\n for (const well of wells) {\r\n if (!well.treatmentList || !well.treatmentList.length) continue;\r\n for (const treatment of well.treatmentList) {\r\n if (treatment.id === treatmentId) return well;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n const { mainWells: selectedMainWells, offsetWells: selectedOffsetWells } = separateSelectedWell(selectedWells);\r\n const rowValues: any[] = [];\r\n for (const well of selectedMainWells) {\r\n for (const treatment of well.selectedTreatmentList) {\r\n const filterOffsetData = inputChartData.filter(x => x.wellId === well.wellId);\r\n const rowValue: any[] = [];\r\n let fdiTreatmentId = 0;\r\n\r\n for (const axisOption of selectedYAxisOption) {\r\n const findOffsetData = filterOffsetData.find(x => x.treatmentId === treatment.id && x.paramName === axisOption.id);\r\n if (findOffsetData) fdiTreatmentId = findOffsetData.fdiTreatmentId;\r\n const getValue = findOffsetData ?\r\n getInputValue(inputChartData, treatment.id, axisOption.id, findOffsetData.fdiTreatmentId) :\r\n getInputValue(inputChartData, treatment.id, axisOption.id);\r\n rowValue.push(getValue ? getValue.paramValue : '');\r\n }\r\n\r\n rowValue.unshift(treatment.treatmentName);\r\n if (fdiTreatmentId) {\r\n const findFdiWell = getWellFromTreatmentId(selectedOffsetWells, fdiTreatmentId);\r\n if (findFdiWell) rowValue.unshift(findFdiWell.wellName);\r\n else rowValue.unshift('');\r\n } else {\r\n rowValue.unshift('');\r\n }\r\n rowValue.unshift(well.wellName);\r\n\r\n const parseRowValue = Helper.concatString(rowValue, ',');\r\n rowValues.push(parseRowValue);\r\n }\r\n }\r\n const parseRowValues = Helper.concatString(rowValues, '\\r\\n');\r\n\r\n const headerValue: any[] = [];\r\n headerValue.push('WellName');\r\n headerValue.push('OffsetWellName');\r\n headerValue.push('Treatment');\r\n for (const axisOption of selectedYAxisOption) {\r\n headerValue.push(axisOption.id);\r\n }\r\n const parseHeaderValue = Helper.concatString(headerValue, ',');\r\n return parseHeaderValue + '\\r\\n' + parseRowValues;\r\n }\r\n\r\n getRawStringByParamOptions(\r\n inputChartData: IInputParamData[], selectedAxisOptions: { id: any; text: string }[], selectedTreatments: ITreatmentItem[],\r\n designActualYAxisOption?: IAxisSetting, designActualData?\r\n ) {\r\n let headersNames = ['Treatment', ...selectedAxisOptions.map(item => item.text)];\r\n const paramsUnitData = selectedAxisOptions.map(opt => {\r\n const paramItem = inputChartData.find(dbt => dbt.paramName === opt.id);\r\n if (paramItem) {\r\n return paramItem.paramUnit.replace('(', '').replace(')', '');\r\n }\r\n return;\r\n });\r\n let headersUnits = ['', ...paramsUnitData];\r\n if (!isEmpty(designActualYAxisOption) && designActualData) {\r\n headersNames = headersNames.concat([`${designActualYAxisOption.name} (Design)`, `${designActualYAxisOption.name} (Actual)`]);\r\n headersUnits = headersUnits.concat(['', '']);\r\n }\r\n\r\n const channelData = [];\r\n selectedTreatments.forEach(trm => {\r\n const dataByTreatment = inputChartData.filter(dataItem => dataItem.id === trm.id);\r\n const paramsDataRow = selectedAxisOptions.map(opt => {\r\n const paramItem = dataByTreatment.find(dbt => dbt.paramName === opt.id);\r\n if (paramItem) {\r\n return paramItem.paramValue;\r\n }\r\n return;\r\n });\r\n const dataRow = [trm.treatmentNumber, ...paramsDataRow];\r\n if (!isEmpty(designActualYAxisOption) && designActualData) {\r\n const dvaDataByTreatment = designActualData.find(dataItem => dataItem.id === trm.id);\r\n if (dvaDataByTreatment) {\r\n const designValue = dvaDataByTreatment[designActualYAxisOption.designValue];\r\n const actualValue = dvaDataByTreatment[designActualYAxisOption.actualValue];\r\n dataRow.push(designValue);\r\n dataRow.push(actualValue);\r\n }\r\n }\r\n\r\n channelData.push(dataRow);\r\n })\r\n const result = [\r\n headersNames,\r\n headersUnits,\r\n channelData.join('\\n')\r\n ]\r\n const stringData = result.join('\\n');\r\n\r\n return stringData;\r\n }\r\n\r\n getRawStringNonScale(\r\n inputChartData: IInputParamData[], selectedXAxisOption, selectedYAxisOption,\r\n selectedTreatments: ITreatmentItem[],\r\n designActualYAxisOption?, designActualData?\r\n ) {\r\n if (!isEmpty(inputChartData)) {\r\n inputChartData.reverse();\r\n let stringData;\r\n if (!isEmpty(selectedXAxisOption) && selectedXAxisOption[0].id === 'treatment') {\r\n stringData = this.getRawStringByParamOptions(inputChartData, selectedYAxisOption, selectedTreatments, designActualYAxisOption, designActualData);\r\n } else if (!isEmpty(selectedXAxisOption) && selectedXAxisOption[0].id !== 'treatment') {\r\n const axisParamOptions = [...selectedXAxisOption, ...selectedYAxisOption];\r\n stringData = this.getRawStringByParamOptions(inputChartData, axisParamOptions, selectedTreatments);\r\n }\r\n return stringData;\r\n }\r\n }\r\n\r\n parseFDISeriesDataByCategories(itemsComparing: IAxisSetting[], yAxisSettings: IAxisSetting[], inputData: IInputParamData[], beginYAxisIndex = 0) {\r\n if (isEmpty(itemsComparing) || isEmpty(yAxisSettings) || isEmpty(inputData)) return [];\r\n\r\n const seriesData = [];\r\n forEach(yAxisSettings, (ySetting, yAxisIndex) => {\r\n const seriesDataPoints = [];\r\n let seriesNames = `${ySetting.name}`;\r\n\r\n forEach(itemsComparing, (itemComparing) => {\r\n let dataPoint = null;\r\n const paramDataByItemComparing = inputData.find(item => {\r\n return item.id === itemComparing.id && item.paramName === ySetting.id;\r\n });\r\n if (paramDataByItemComparing) {\r\n const dataPointConverted = this.convertPos(paramDataByItemComparing, ySetting.name);\r\n seriesNames = dataPointConverted.label;\r\n\r\n if (isNumber(dataPointConverted.value)) {\r\n const seriesShape = isString(ySetting.shape) ? ySetting.shape.toLowerCase() : 'circle';\r\n dataPoint = {\r\n id: itemComparing.id,\r\n y: dataPointConverted.value,\r\n name: dataPointConverted.label,\r\n groupName: itemComparing.name,\r\n treatmentName: paramDataByItemComparing.name,\r\n avgMD: paramDataByItemComparing.avgMDValue,\r\n color: ySetting.color,\r\n marker: {\r\n symbol: seriesShape\r\n }\r\n };\r\n // replace correct data point\r\n seriesDataPoints.push(dataPoint);\r\n }\r\n }\r\n\r\n });\r\n // create series by items comparing\r\n const seriesInfo = {\r\n seriesName: seriesNames,\r\n seriesColor: ySetting.color,\r\n seriesShape: ySetting.shape,\r\n };\r\n const seriesObj = this.getLineFakeScatterSeriesData(seriesDataPoints, seriesInfo, beginYAxisIndex + yAxisIndex);\r\n seriesData.push(seriesObj);\r\n });\r\n\r\n for (const series of seriesData) {\r\n const newData = Helper.createListOf(null, itemsComparing.length);\r\n for (const data of series.data) {\r\n const iter = itemsComparing.findIndex(x => x.name === data.groupName);\r\n if (iter < 0) continue;\r\n newData[iter] = data;\r\n }\r\n series.data = newData;\r\n }\r\n\r\n return seriesData;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { IInputDataChart } from '../../models';\r\n\r\nexport interface IInputDataTreatment {\r\n treatmentId: number;\r\n treatmentNumber: number;\r\n realtimeData: IInputDataChart[];\r\n fracproData: IInputDataChart[];\r\n channelSettings?: any\r\n};\r\n\r\n@Injectable()\r\nexport class SingleWellMultiTreatmentChartService {\r\n private zoomBufferDataSubject: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor() { }\r\n\r\n setZoomBufferData(data: IInputDataTreatment[]) {\r\n this.zoomBufferDataSubject.next(data);\r\n }\r\n\r\n getZoomBufferData(): Observable {\r\n return this.zoomBufferDataSubject.asObservable();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService } from '../../core/services/api.service';\r\n\r\n@Injectable()\r\nexport class CompaniesService {\r\n prefixPath = '/companies';\r\n\r\n constructor(private apiService: ApiService) {\r\n\r\n }\r\n create(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}`, param, finalize);\r\n }\r\n update(id: number, param: any, finalize?: VoidFunction) {\r\n return this.apiService.put(`${this.prefixPath}/${id}`, param, finalize);\r\n }\r\n delete(id: number, finalize?: VoidFunction): Observable {\r\n return this.apiService.delete(`${this.prefixPath}/${id}`, finalize);\r\n }\r\n getListCompany(filter?: string): Observable {\r\n if (filter) {\r\n return this.apiService.get(`${this.prefixPath}/companies?filter=${filter}`);\r\n } else {\r\n return this.apiService.get(`${this.prefixPath}`);\r\n }\r\n }\r\n getCompanyId(id?: number): Observable {\r\n if (id) {\r\n return this.apiService.get(`${this.prefixPath}/${id}`);\r\n } else {\r\n return this.apiService.get(`${this.prefixPath}/`);\r\n }\r\n }\r\n getWellByCompanyId(id?: number): Observable {\r\n if (id) {\r\n return this.apiService.get(`${this.prefixPath}/getWells?companyId=${id}`);\r\n } else {\r\n return this.apiService.get(`${this.prefixPath}/getWells`);\r\n }\r\n }\r\n getEquipmentChannels(companyId: number, equipmentId: string): Observable {\r\n return this.apiService.get(`${this.prefixPath}/${companyId}/equipments/${equipmentId}/getEquipmentChannel`);\r\n }\r\n UpdatePolicyInWell(companyId: number,months:number): Observable {\r\n return this.apiService.put(`${this.prefixPath}/applyPolicy?companyId=${companyId}&months=${months}`,\"sddf\");\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IChannelItem, IChannelSettingModel, IChannelSettingItemModel, IInputDataChart, IInputDataMultiFlow } from '../models';\r\nimport { IOffsetWellCompare } from '../models/offset-well-compare.model';\r\nimport { cloneDeep, isEmpty, isNumber } from 'lodash';\r\nimport { ChannelSelectionService, DIGITS_AFTER_DECIMAL_DEFAULT } from './channel-selection.service';\r\nimport { DATETIME_CHANNEL_NAME, TIMEFLOAT_CHANNEL_NAME } from './charts/base-chart.service';\r\nimport { Helper } from '../helpers/helper';\r\nimport { CHANNEL_FILTER_PROPS, TIME_SETTING_TYPE, YAxisMap, YAXIS_KEYS } from '../helpers/app.constants';\r\nimport { UnitSystemService } from './unit-system.service';\r\n\r\n@Injectable()\r\nexport class CompareOffsetChannelsService {\r\n\r\n constructor(\r\n private channelSelectionService: ChannelSelectionService,\r\n private unitSystemService: UnitSystemService\r\n ) { }\r\n\r\n mergeOffsetChannels(curChannels: IChannelItem[], offsetWellSettings: IOffsetWellCompare[]) {\r\n const offsetChannels = [];\r\n if (!isEmpty(offsetWellSettings)) {\r\n offsetWellSettings.forEach(item => {\r\n if (!isEmpty(item.realtimeChannels)) {\r\n const channel = { ...item.realtimeChannels[0] };\r\n channel.isOffset = true;\r\n channel.isRealtime = item.isRealtime;\r\n channel.wellId = item.wellId;\r\n channel.treatmentId = item.treatmentId;\r\n channel.originName = channel.name;\r\n channel.name = this.createChannelName(item.wellName, item.treatmentName, channel.name);\r\n channel.digits = channel.digits !== undefined && channel.digits !== null ? channel.digits : DIGITS_AFTER_DECIMAL_DEFAULT;\r\n\r\n // if (item.isSmoothData) {\r\n // channel.isSmoothData = item.isSmoothData;\r\n // channel.smoothRange = item.smoothRange;\r\n // }\r\n\r\n const isExisted = curChannels.find(channelName => channelName.name === channel.name);\r\n if (!isExisted) {\r\n offsetChannels.push(channel);\r\n }\r\n // else {\r\n // isExisted.isSmoothData = item.isSmoothData;\r\n // isExisted.smoothRange = item.smoothRange;\r\n // }\r\n }\r\n\r\n // this add addtional bourdet der to channel selection\r\n if (!isEmpty(item.realtimeChannels) && item.hasBourdetDer) {\r\n const channel = { ...item.realtimeChannels[0] };\r\n channel.isOffset = true;\r\n channel.isRealtime = item.isRealtime;\r\n channel.wellId = item.wellId;\r\n channel.treatmentId = item.treatmentId;\r\n channel.originName = channel.name;\r\n channel.name = this.createChannelName(item.wellName, item.treatmentName, channel.name, true);\r\n channel.isSmoothData = item.isSmoothData;\r\n channel.smoothRange = item.smoothRange;\r\n channel.isBourdetDer = item.hasBourdetDer;\r\n channel.bourdetDerRange = item.bourdetDerRange;\r\n channel.digits = channel.digits !== undefined && channel.digits !== null ? channel.digits : DIGITS_AFTER_DECIMAL_DEFAULT;\r\n\r\n const isExisted = curChannels.find(channelName => channelName.name === channel.name);\r\n if (!isExisted) {\r\n offsetChannels.push(channel);\r\n } else {\r\n isExisted.isSmoothData = item.isSmoothData;\r\n isExisted.smoothRange = item.smoothRange;\r\n isExisted.isBourdetDer = item.hasBourdetDer;\r\n isExisted.bourdetDerRange = item.bourdetDerRange;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return [...curChannels, ...offsetChannels];\r\n }\r\n\r\n\r\n setSettingChannel(settings, key, offsetWellSetting, isBourdetDer, curChannels, mapChannelMinMax) {\r\n const setting = settings[key];\r\n const selectedChannel = { ...offsetWellSetting.realtimeChannels[0] };\r\n const offsetChannelName = this.createChannelName(offsetWellSetting.wellName, offsetWellSetting.treatmentName, selectedChannel.name, isBourdetDer);\r\n const offsetChannel = curChannels.find(item => item.name === offsetChannelName);\r\n const isExistedIndex = setting.channels.findIndex(item => item.name === offsetChannelName);\r\n offsetChannel.isBourdetDer = isBourdetDer;\r\n offsetChannel.isRealtime = offsetWellSetting.isRealtime;\r\n const channel = this.channelSelectionService.formatChannelModel(offsetChannel, true, true);\r\n const isCompare = offsetWellSetting.hasOwnProperty('isCompare') ? offsetWellSetting.isCompare : false;\r\n\r\n if (isExistedIndex < 0 && offsetChannel) {\r\n setting.channels.push(mapChannelMinMax(channel, isBourdetDer, isCompare));\r\n }\r\n else {\r\n setting.channels[isExistedIndex] = Object.assign(setting.channels[isExistedIndex], mapChannelMinMax(channel, isBourdetDer, isCompare));\r\n }\r\n }\r\n\r\n\r\n mergeSettingsOffsetChannels(channelSettings: IChannelSettingModel, offsetWellSetting: IOffsetWellCompare, curChannels: IChannelItem[]) {\r\n const settings = cloneDeep(channelSettings);\r\n const yAxisMap = {\r\n Left: YAxisMap.firstLeft,\r\n Leftmost: YAxisMap.secondLeft,\r\n Right: YAxisMap.firstRight,\r\n Rightmost: YAxisMap.secondRight,\r\n };\r\n\r\n const mapChannelMinMax = (channel, bourdetDer = false, isCompare) => {\r\n const min = offsetWellSetting.realtimeChannels[0].min;\r\n const max = offsetWellSetting.realtimeChannels[0].max;\r\n channel.min = min;\r\n channel.max = max;\r\n channel.channel.min = min;\r\n channel.channel.max = max;\r\n channel.isCompare = isCompare;\r\n\r\n if (bourdetDer === true) {\r\n delete channel.min;\r\n delete channel.max;\r\n delete channel.channel.min;\r\n delete channel.channel.max;\r\n }\r\n\r\n return channel;\r\n };\r\n\r\n for (const key in settings) {\r\n if (yAxisMap[offsetWellSetting.axisType] === key) {\r\n this.setSettingChannel(settings, key, offsetWellSetting, false, curChannels, mapChannelMinMax);\r\n }\r\n else if (yAxisMap['Right'] === key) {\r\n // add additional bourdet der\r\n if (offsetWellSetting.hasBourdetDer) {\r\n this.setSettingChannel(settings, key, offsetWellSetting, true, curChannels, mapChannelMinMax);\r\n }\r\n }\r\n }\r\n return settings;\r\n }\r\n\r\n createChannelName(wellName, treatmentName, channelName, bourdet?) {\r\n // if (bourdet) return `${wellName}-${treatmentName}-${channelName}-BD`;\r\n // return `${wellName}-${treatmentName}-${channelName}`;\r\n if (!isNaN(treatmentName)) treatmentName = '#' + treatmentName;\r\n if (treatmentName === 'Monitor' || treatmentName === 'Monitoring') treatmentName = '';\r\n if (treatmentName) treatmentName = '.' + treatmentName;\r\n if (channelName) channelName = '.' + channelName;\r\n const name = wellName + treatmentName + channelName;\r\n return bourdet ? name + '-BD' : name;\r\n }\r\n\r\n checkIsExistOffsetChannel(channelSettings: IChannelSettingModel) {\r\n if (!channelSettings) return false;\r\n if (!isEmpty(channelSettings.firstLeft.channels)) return true;\r\n if (!isEmpty(channelSettings.secondLeft.channels)) return true;\r\n if (!isEmpty(channelSettings.firstRight.channels)) return true;\r\n if (!isEmpty(channelSettings.secondRight.channels)) return true;\r\n return false;\r\n }\r\n\r\n getOffsetChannelInfo(channelSettings: IChannelSettingModel, offsetInputData): {\r\n index: number;\r\n channel: IChannelSettingItemModel\r\n } {\r\n const result = {\r\n index: 0,\r\n channel: null\r\n };\r\n if (!offsetInputData) return result;\r\n\r\n const yAxisKeys = YAXIS_KEYS;\r\n yAxisKeys.forEach((key, index) => {\r\n if (channelSettings.hasOwnProperty(key)) {\r\n const setting = channelSettings[key];\r\n const offsetChannel = setting.channels.find(channel => Helper.filterMulti(channel, offsetInputData, CHANNEL_FILTER_PROPS));\r\n if (offsetChannel) {\r\n result.channel = offsetChannel;\r\n result.index = index;\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n mergeChannelSettings(channelSettings: IChannelSettingModel, offsetChannelSettings: IChannelSettingModel): IChannelSettingModel {\r\n let result;\r\n if (channelSettings && offsetChannelSettings) {\r\n result = cloneDeep(channelSettings);\r\n const yAxisKeys = YAXIS_KEYS;\r\n yAxisKeys.forEach((key, index) => {\r\n if (channelSettings[key] && offsetChannelSettings[key]) {\r\n if (!isEmpty(offsetChannelSettings[key].channels)) {\r\n result[key].channels = [...result[key].channels, ...offsetChannelSettings[key].channels]\r\n }\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n populateOffsetData = (data, defaultOffsetTime: number) => {\r\n const mapTime = d => {\r\n if (typeof d === 'number') return d;\r\n return new Date(d).getTime();\r\n };\r\n\r\n const calcTime = (d: number, offset: number, returnT: string) => {\r\n if (returnT === 'number') return d + offset;\r\n return new Date(d + offset).toISOString().substring(0, 19) + 'Z';\r\n };\r\n\r\n const generateLinearData = (data, startIndex: number, endIndex: number) => {\r\n const dataColumn = data[startIndex].length;\r\n const startTime = mapTime(data[startIndex][0]);\r\n const endTime = mapTime(data[endIndex][0]);\r\n const dataPopulate = Math.floor((endTime - startTime) / defaultOffsetTime);\r\n const returnType = typeof data[startIndex][0];\r\n\r\n const a = [];\r\n for (let i = 0; i < dataPopulate; i++) {\r\n const d = [];\r\n d[0] = calcTime(startTime, defaultOffsetTime * (i + 1), returnType);\r\n d[1] = data[startIndex][1] + (defaultOffsetTime / 1000) * (i + 1);\r\n for (let j = 2; j < dataColumn; j++) {\r\n d[j] = Helper.calcLinear(data[startIndex][j], data[endIndex][j], data[startIndex][1], data[endIndex][1], d[1]);\r\n }\r\n a.push(d);\r\n }\r\n return a;\r\n };\r\n\r\n if (data.length < 2) return data;\r\n const res = [data[0]];\r\n const n = data.length;\r\n for (let i = 1; i < n; i++) {\r\n const nextTime = mapTime(data[i][0]);\r\n const initTime = mapTime(data[i - 1][0]);\r\n const offsetTime = nextTime - initTime;\r\n if (offsetTime === defaultOffsetTime) res.push(data[i]);\r\n else {\r\n const generateData = generateLinearData(data, i - 1, i);\r\n res.push(...generateData);\r\n }\r\n }\r\n\r\n res.push(data[n - 1]);\r\n return res;\r\n }\r\n\r\n getOffsetChannelDataSeries(yAxisIndex: number, channelItem: IChannelSettingItemModel, primaryInputData: IInputDataChart, offsetInputData: IInputDataChart, highChartSeries: Highcharts.Series[], timeFormat?: string, unitSetting?: number) {\r\n // const offsetInputValues = offsetInputData.values.length <= 1 ? offsetInputData : this.populateOffsetData(offsetInputData.values, 1000);\r\n const offsetInputValues = offsetInputData.values;\r\n if (!channelItem || !primaryInputData || !offsetInputValues) return [];\r\n if (!offsetInputValues || !offsetInputValues.length) return [];\r\n\r\n let values = offsetInputValues;\r\n const columns = offsetInputData.columns;\r\n let xAxisChannelName = DATETIME_CHANNEL_NAME;\r\n if (timeFormat && timeFormat === TIME_SETTING_TYPE.OffsetTime) {\r\n xAxisChannelName = TIMEFLOAT_CHANNEL_NAME;\r\n }\r\n\r\n // find index of time channel\r\n const timeIndex = columns.findIndex(value => value === xAxisChannelName);\r\n let dataSeries = [];\r\n const dataIndex = typeof yAxisIndex === 'number' && !isNaN(yAxisIndex) ? yAxisIndex : 0;\r\n const channelIndex = columns.findIndex(value => value === channelItem.cName);\r\n\r\n // convert offset channel base time\r\n let startIndex = 0;\r\n let offsetMismatch = 0;\r\n const lastIndex = values.length - 1;\r\n if (channelItem.isRealtime) {\r\n // find index of time channel\r\n const timeFLoatIndex = columns.findIndex(value => value === TIMEFLOAT_CHANNEL_NAME);\r\n const dateTimeIndex = columns.findIndex(value => value === DATETIME_CHANNEL_NAME);\r\n // find primary base time\r\n let basePrimaryTimestamp = 0;\r\n let basePrimaryTime0 = 1;\r\n let curPrimaryTimestamp = 0;\r\n let baseOffsetTimestamp = 0;\r\n let baseOffsetTime0 = 1;\r\n\r\n if (primaryInputData.values[0]) {\r\n basePrimaryTimestamp = new Date(primaryInputData.values[0][dateTimeIndex]).getTime();\r\n basePrimaryTime0 = primaryInputData.values[0][timeFLoatIndex];\r\n }\r\n if (primaryInputData.values[primaryInputData.values.length - 1]) {\r\n curPrimaryTimestamp = new Date(primaryInputData.values[primaryInputData.values.length - 1][dateTimeIndex]).getTime();\r\n }\r\n if (offsetInputValues[0]) {\r\n baseOffsetTimestamp = new Date(offsetInputValues[0][dateTimeIndex]).getTime();\r\n baseOffsetTime0 = offsetInputValues[0][timeFLoatIndex];\r\n }\r\n\r\n // in case offset channel starts earlier than primary channel, filter data which outside primary timestamp\r\n if (baseOffsetTimestamp < basePrimaryTimestamp && basePrimaryTimestamp < curPrimaryTimestamp) {\r\n for (let i = startIndex; i <= lastIndex; i++) {\r\n const timestamp = new Date(values[i][dateTimeIndex]).getTime();\r\n if (timestamp >= basePrimaryTimestamp) break;\r\n startIndex++;\r\n }\r\n }\r\n\r\n // calculate offset time mismatched\r\n offsetMismatch = (Math.round(baseOffsetTimestamp / 1000) - baseOffsetTime0) - (Math.round(basePrimaryTimestamp / 1000) - basePrimaryTime0);\r\n if (!values || !values.length) return [];\r\n }\r\n\r\n // parse to chart data point\r\n const seriesId = `${channelItem.channelName || channelItem.name}_${dataIndex}_offset`;\r\n const isXValueNameChange = xAxisChannelName === DATETIME_CHANNEL_NAME;\r\n\r\n const currentChartSeries = highChartSeries.find(x => x.options.id === seriesId);\r\n const lastChartSeriesData = !currentChartSeries || !currentChartSeries.data || !currentChartSeries.data.length ? null : currentChartSeries.data[currentChartSeries.data.length - 1];\r\n\r\n const measureType = channelItem.measureType;\r\n const unitCoefficient = this.unitSystemService.getUnitCoefficient(measureType, unitSetting);\r\n\r\n if (lastChartSeriesData) {\r\n for (let i = lastIndex; i >= startIndex; i--) {\r\n const dataRow = values[i];\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] + offsetMismatch : new Date(dataRow[timeIndex]).getTime();\r\n if (xValue > lastChartSeriesData.x) continue;\r\n startIndex = i;\r\n break;\r\n }\r\n\r\n if (unitCoefficient) {\r\n for (let i = startIndex; i <= lastIndex; i++) {\r\n const dataRow = values[i];\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] + offsetMismatch : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = this.unitSystemService.convertValue(dataRow[channelIndex], unitCoefficient);\r\n const value = { x: xValue, y: yValue, groupId: seriesId };\r\n dataSeries.push(value);\r\n }\r\n } else {\r\n for (let i = startIndex; i <= lastIndex; i++) {\r\n const dataRow = values[i];\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] + offsetMismatch : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = dataRow[channelIndex] as number;\r\n const value = { x: xValue, y: yValue, groupId: seriesId };\r\n dataSeries.push(value);\r\n }\r\n }\r\n } else {\r\n if (unitCoefficient) {\r\n dataSeries = values.map(dataRow => {\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] + offsetMismatch : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = this.unitSystemService.convertValue(dataRow[channelIndex], unitCoefficient);\r\n return { x: xValue, y: yValue, groupId: seriesId };\r\n });\r\n } else {\r\n dataSeries = values.map(dataRow => {\r\n const xValue = !isXValueNameChange ? dataRow[timeIndex] + offsetMismatch : new Date(dataRow[timeIndex]).getTime();\r\n const yValue = dataRow[channelIndex] as number;\r\n return { x: xValue, y: yValue, groupId: seriesId };\r\n });\r\n }\r\n }\r\n\r\n const unit = (measureType && measureType.trim() && !!unitSetting) ? (unitCoefficient ? unitCoefficient.unit : undefined) : channelItem.unit;\r\n const channelUnit = Helper.getValidUnit(unit, true);\r\n let seriesName = `${channelItem.channelName || channelItem.name} ${channelUnit}`;\r\n if (channelItem.isBourdetDer) seriesName = Helper.insertString(seriesName, '/sec', -1);\r\n const seriesColor = channelItem.color;\r\n\r\n return [{\r\n id: seriesId,\r\n name: seriesName,\r\n type: 'line',\r\n data: dataSeries,\r\n yAxis: dataIndex,\r\n color: seriesColor,\r\n boostThreshold: 10000,\r\n connectNulls: true\r\n }];\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { forEach, isNil } from 'lodash';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport 'rxjs/add/operator/map';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { ApiService } from '../../core/services/api.service';\r\nimport { DefaultSize } from '../helpers/app.constants';\r\nimport { ChannelMappingService } from './channel-mapping.service';\r\n\r\n@Injectable()\r\nexport class CompareWellsService {\r\n prefixPath = '/wells';\r\n\r\n constructor(private apiService: ApiService, private channelMappingService: ChannelMappingService) {\r\n\r\n }\r\n\r\n updateWellColor(wellId: number, color: string, finalize?: VoidFunction) {\r\n return this.apiService.put(`${this.prefixPath}/${wellId}`, {wellColor: color}, finalize);\r\n }\r\n\r\n getChannelSingleCompare(wellId: number): Observable {\r\n return this.apiService.get(`${this.prefixPath}/${wellId}/getListChannelForSingleCompare?wellId=${wellId}`);\r\n }\r\n getChannelSingleCompareByTreatment(wellId: number, treatmentId: number): Observable {\r\n return this.apiService.get(`${this.prefixPath}/${wellId}/getListChannelForSingleCompareFirstTreatment?treatmentId=${treatmentId}`);\r\n }\r\n getFracproChannelSingleCompare(wellId: number): Observable {\r\n let param = new HttpParams();\r\n param = param.set('wellId', wellId.toString());\r\n param = param.set('flowPathType', '0');\r\n return this.apiService.get(`${this.prefixPath}/${wellId}/getListFracProChannelForSingleCompare`, param);\r\n }\r\n getChannelsCompareSingle(wellId: number, treatmentId?: number) {\r\n let getReatlimeChannels = this.getChannelSingleCompare(wellId).pipe(catchError(err => of({})));\r\n if (treatmentId) {\r\n getReatlimeChannels = this.getChannelSingleCompareByTreatment(wellId, treatmentId).pipe(catchError(err => of({})));\r\n }\r\n return forkJoin(\r\n getReatlimeChannels,\r\n this.getFracproChannelSingleCompare(wellId).pipe(catchError(err => of({})))\r\n ).pipe(map(response => {\r\n const result = {\r\n realtimeChannels: [],\r\n fracproChannels: []\r\n };\r\n if (response && response.length > 0) {\r\n response.forEach((res, index) => {\r\n if (res.result) {\r\n if (index === 0) {\r\n // realtime channels result\r\n result.realtimeChannels = res.result;\r\n } else {\r\n result.fracproChannels = res.result;\r\n }\r\n }\r\n });\r\n }\r\n return result;\r\n }));\r\n }\r\n getChannelsCompareMultiple(wellIds: number[]) {\r\n const request$ = wellIds.map(wellId => {\r\n return forkJoin(\r\n this.getChannelMultiCompare(wellId).pipe(catchError(err => of({}))),\r\n this.getFracproChannelMultiCompare(wellId).pipe(catchError(err => of({})))\r\n )\r\n })\r\n return forkJoin(request$).pipe(map(response => {\r\n const result = {\r\n realtimeChannels: [],\r\n fracproChannels: []\r\n };\r\n if (response && response.length > 0) {\r\n const hadnelChannels = (list: any[]) => {\r\n if (!list || !list.length) return [];\r\n return list.reduce((ac, a) => {\r\n let temp = ac.find(x => x.name === a.name);\r\n if (!temp) ac.push({ ...a,\r\n channelMappedGroup: [a]\r\n })\r\n else temp.channelMappedGroup.push(a)\r\n return ac;\r\n }, []);\r\n };\r\n let realtimeChannels: any[] = [];\r\n let fracproChannels: any[] = [];\r\n\r\n response.forEach((res, index) => {\r\n if (res && res.length) {\r\n if (res[0] && res[0].result) realtimeChannels = realtimeChannels.concat(res[0].result);\r\n if (res[1] && res[1].result) fracproChannels = fracproChannels.concat(res[1].result);\r\n }\r\n });\r\n\r\n result.realtimeChannels = hadnelChannels(realtimeChannels);\r\n result.fracproChannels = hadnelChannels(fracproChannels);\r\n }\r\n return result;\r\n }));\r\n }\r\n getChannelMultiCompare(wellId: number, param?: any): Observable {\r\n return this.apiService.get(`${this.prefixPath}/${wellId}/getListChannelForSingleCompare`, param);\r\n }\r\n getFracproChannelMultiCompare(wellId: number, param?: any): Observable {\r\n // there is no need to fetch data if treatment is kind of monitor\r\n // since monitor treatments do NOT have fracpro data to begin\r\n if (param && param[0] && param[0].treatmentNumber < 0) return of({ result: [] });\r\n return this.apiService.get(`${this.prefixPath}/${wellId}/getListFracProChannelForSingleCompare`, param);\r\n }\r\n getParamSingleCompare(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getListParamForSingleCompare`);\r\n }\r\n getParamMultiCompare(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getListParamForMultiCompare`);\r\n }\r\n getTreatmentMultiCompare(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/getListTreatmentForMultiCompare`);\r\n }\r\n compareSingleWell(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/compareSingleWell`, param, finalize);\r\n }\r\n compareSingleWellChart(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/compareSingleWellChart`, param, finalize);\r\n }\r\n compareMultiWell(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/compareMultiWell`, param, finalize);\r\n }\r\n compareMultiWellChart(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/compareMultiWellChart`, param, finalize);\r\n }\r\n getPivotPointData(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/treatments/getDataForPivotPoint`, param, finalize);\r\n }\r\n getDataForPivotPoints(param: { treatmentIds: number[], paramNames: string[] }, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/treatments/getDataForPivotPoints`, param, finalize);\r\n }\r\n getWellSummary(id: number) {\r\n return this.apiService.get(`${this.prefixPath}/${id}/getWellSummary`);\r\n }\r\n getListWellTreatment(wellId: number) {\r\n let param = new HttpParams();\r\n param = param.set('wellId', wellId.toString());\r\n return this.apiService.get(`${this.prefixPath}/getListWellTreatment`, param);\r\n }\r\n getListWellData() {\r\n return this.apiService.get(`${this.prefixPath}/getListWell`);\r\n }\r\n getListWellName() {\r\n return this.apiService.get(`${this.prefixPath}/getListWellName`);\r\n }\r\n getListWell(paramObject: any, page: number, pageSize: number, sortField?: string, sortType: boolean = true) {\r\n let param = new HttpParams();\r\n if (paramObject) {\r\n forEach(paramObject, (item, key) => {\r\n if (item) {\r\n param = param.set(key.toString(), item);\r\n }\r\n });\r\n }\r\n if (page) {\r\n param = param.set('page', page.toString());\r\n }\r\n if (pageSize) {\r\n param = param.set('pageSize', pageSize.toString());\r\n }\r\n if (sortField) {\r\n param = param.set('sortField', sortField);\r\n param = param.set('sortType', sortType.toString());\r\n }\r\n return this.apiService.get(`${this.prefixPath}/GetListWellPaging`, param);\r\n }\r\n\r\n getListWellsForComparing(pageSize?: number) {\r\n if (isNil(pageSize)) {\r\n pageSize = DefaultSize.wellPage;\r\n }\r\n return this.getListWell({}, null, pageSize).pipe(map(res => {\r\n return res.result ? res.result.items : [];\r\n }));\r\n }\r\n\r\n deleteWells(paramObject: number[], finalize?: VoidFunction): Observable {\r\n let param = new HttpParams();\r\n forEach(paramObject, (id, key) => {\r\n if (id) {\r\n param = param.append('wellIds', id.toString());\r\n }\r\n });\r\n return this.apiService.deleteParam(`${this.prefixPath}`, param, finalize);\r\n }\r\n deletePostWells(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/delete`, param, finalize, { requestTimeout: 30 * 60 * 1000 }); // 30 min request timeout\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment-timezone';\r\nimport {MomentZoneOffset} from 'moment';\r\nimport {CountryModel} from '../../models/country.model';\r\n\r\n@Injectable()\r\nexport class CountriesAndTimezonesService {\r\n constructor() {\r\n }\r\n\r\n getCountries(): CountryModel[] {\r\n return CountryModel.init();\r\n }\r\n\r\n getCountriesCode(): any {\r\n return moment.tz.countries();\r\n }\r\n\r\n parseCountryOffsetToTz(country: string, offsetTime?: number): string {\r\n const countries = this.getCountries();\r\n\r\n const existCountry = countries.find(x => {\r\n return x.englishName === country || x.localName === country;\r\n });\r\n if (!existCountry) {\r\n return null;\r\n }\r\n\r\n return this.parseCountryCodeOffsetToTz(existCountry.alpha2Code, offsetTime);\r\n }\r\n // get timezone from country name & offsetTime\r\n parseCountryCodeOffsetToTz(countryCode: string, offsetTime?: number): string {\r\n let result: any;\r\n let timezones: MomentZoneOffset[];\r\n\r\n if (offsetTime !== null && offsetTime !== undefined) {\r\n timezones = moment.tz.zonesForCountry(countryCode, true);\r\n\r\n result = timezones\r\n .filter(tz => tz.offset === offsetTime)\r\n .map(x => x.name);\r\n } else {\r\n result = moment.tz.zonesForCountry(countryCode);\r\n }\r\n\r\n return result && result.length > 0 ? JSON.stringify(result) : null;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../core/services';\r\n\r\n@Injectable()\r\nexport class DataFilesService {\r\n prefixWellsPath = `/wells`;\r\n\r\n constructor(\r\n private apiService: ApiService\r\n ) { }\r\n\r\n private getWellPath(wellId) {\r\n return `${this.prefixWellsPath}/${wellId}/dataFiles`;\r\n }\r\n private getTreatmentPath(wellId, treatmentId) {\r\n return `${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/dataFiles`;\r\n }\r\n\r\n uploadByWell(wellId, file: File) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n return this.apiService.postFile(`${this.getWellPath(wellId)}/${file.name}`, formData);\r\n }\r\n\r\n getByWell(wellId: number) {\r\n return this.apiService.get(`${this.getWellPath(wellId)}/details`);\r\n }\r\n\r\n deleteByWell(wellId, fileName) {\r\n return this.apiService.delete(`${this.getWellPath(wellId)}/${fileName}`);\r\n }\r\n\r\n uploadByTreatment(wellId, treatmentId, file: File) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n return this.apiService.postFile(`${this.getTreatmentPath(wellId, treatmentId)}/${file.name}`, formData);\r\n }\r\n\r\n getByTreatment(wellId: number, treatmentId: number) {\r\n return this.apiService.get(`${this.getTreatmentPath(wellId, treatmentId)}/details`);\r\n }\r\n\r\n deleteByTreatment(wellId, treatmentId, fileName) {\r\n return this.apiService.delete(`${this.getTreatmentPath(wellId, treatmentId)}/${fileName}`);\r\n }\r\n\r\n uploadDataFiles(file: File, wellId, treatmentId?) {\r\n if (treatmentId) {\r\n return this.uploadByTreatment(wellId, treatmentId, file);\r\n }\r\n return this.uploadByWell(wellId, file);\r\n }\r\n\r\n getDataFiles(wellId: number, treatmentId?: number) {\r\n if (treatmentId) {\r\n return this.getByTreatment(wellId, treatmentId);\r\n }\r\n return this.getByWell(wellId);\r\n }\r\n\r\n deleteDataFiles(fileName, wellId, treatmentId?) {\r\n if (treatmentId) {\r\n return this.deleteByTreatment(wellId, treatmentId, fileName);\r\n }\r\n return this.deleteByWell(wellId, fileName);\r\n }\r\n\r\n getCurvesDasFile(fileName, wellId) {\r\n return this.apiService.get(`${this.getWellPath(wellId)}/las/${fileName}/depths`);\r\n }\r\n\r\n getLogDataCurveDasFile(fileName, wellId, curveName) {\r\n if (curveName) {\r\n curveName = curveName.trim();\r\n }\r\n return this.apiService.get(`${this.getWellPath(wellId)}/las/${fileName}/depths/values?columnName=${curveName}`);\r\n }\r\n}\r\n","// tslint:disable: jsdoc-format\r\n// tslint:disable: quotemark\r\n\r\nimport { Injectable } from \"@angular/core\";\r\nimport { IChannelItem } from \"../models/channel.model\";\r\nimport { ApiService } from \"../../core/services/api.service\";\r\nimport { forkJoin, Observable, of } from \"rxjs\";\r\nimport { map } from 'rxjs/operators';\r\nimport { ENUM_DIAGNOSTIC_DEFAULTS, ENUM_LOS_DEFAULTS } from \"../helpers/app.constants\";\r\nimport { IDiagnosticParam } from \"../models/diagnostic-points.model\";\r\nimport { Helper } from \"../helpers/helper\";\r\n\r\n\r\n/**\r\n1. ISIP: Treatment\\ initialShutinPresTime. When user updates this point, AI needs to update following dependent values as well\r\n a. initialShutinPres: This is value of real time channel “Treating Pressure” at time initialShutinPresTime. If this channel is not present use Fracpro channel “Surf Pressure”. If none is present , set the value to 0.\r\n b. initialShutinPres5: This is value of real time channel “Treating Pressure” at time initialShutinPresTime + 300. If this channel is not present use Fracpro channel “Surf Pressure”. If none is present , set the value to 0.\r\n c. initialShutinPres10: This is value of real time channel “Treating Pressure” at time initialShutinPresTime + 600 . If this channel is not present use Fracpro channel “Surf Pressure”. If none is present , set the value to 0.\r\n d. initialShutinPres15: This is value of real time channel “Treating Pressure” at time initialShutinPresTime + 900 . If this channel is not present use Fracpro channel “Surf Pressure”. If none is present , set the value to 0.\r\n\r\n2. Ball Seat: Treatment\\ BallseatTime. When user updates this point, AI needs to update the following dependent values as well\r\n a. BallseatPressure: This is value of real time channel “Treating Pressure” at time BallseatTime. If this channel is not present use Fracpro channel “Surf Pressure”. If none is present , set the value to 0.\r\n b. BallseatRate: This is value of real time channel “Slurry Flow Rate” at time BallseatTime. If this channel is not present use Fracpro channel “Slurry Rate”. If none is present , set the value to 0.\r\n c. BreakdownVolume: This is value of Fracpro channel “Clean Total” at time BallseatTime. If not present , set the value to 0.\r\n\r\n 3. Breakdown: treatment\\ BreakdownTime. When user updates this point, AI needs to update the following dependent values as well\r\n a. BreakdownPres: This is value of real time channel “Treating Pressure” at time BreakdownTime. If this channel is not present use Fracpro channel “Surf Pressure”. If none is present , set the value to 0.\r\n b. BreakdownRate: This is value of real time channel “Slurry Flow Rate” at time BreakdownTime. If this channel is not present use Fracpro channel “Slurry Rate”. If none is present , set the value to 0.\r\n c. BreakdownVolume: This is value of Fracpro channel “Clean Total” at time BreakdownTime. If not present , set the value to 0.\r\n\r\n 4. WellOpen: treatment\\ WellOpenTime. When user updates this point, AI needs to update the following dependent values as well\r\n a. WellheadOpeningPressure: This is value of real time channel “Treating Pressure” at time WellOpenTime. If this channel is not present use Fracpro channel “Surf Pressure”. If none is present , set the value to 0.\r\n**/\r\n\r\nexport interface IDefaultDiagnosticPointRequestBody {\r\n treatmentColumnName: string;\r\n timeOffSet: number;\r\n realtimeCName?: string;\r\n fracproCName?: string;\r\n baseTreatmentDataTime?: string;\r\n}\r\n\r\nexport interface IDefaultFpDiagnosticPointRequestBody {\r\n name: string;\r\n timeOffSet: number;\r\n}\r\n\r\nexport interface IDefaultDiagnosticPointResponse {\r\n treatmentColumnName: string;\r\n timeOffset: number;\r\n value: number;\r\n}\r\n\r\nexport interface IDefaultFpDiagnosticPointResponse {\r\n name: string;\r\n timeOffset: number;\r\n}\r\n\r\nexport interface IDefaultDiagnosticPointResponseResult {\r\n result: IDefaultDiagnosticPointResponse[];\r\n}\r\n\r\nexport interface IDefaultFpDiagnosticPointResponseResult {\r\n result: IDefaultFpDiagnosticPointResponse[];\r\n}\r\n\r\nexport enum ENUM_REALTIME_CHANNELS {\r\n treatingPressure = \"Treating Pressure\",\r\n slurryFlowRate = \"Slurry Flow Rate\",\r\n}\r\n\r\nexport enum ENUM_FRACPRO_CHANNELS {\r\n surfPressure = \"Surf Pressure\",\r\n slurryRate = \"Slurry Rate\",\r\n cleanTotal = \"Clean Total\"\r\n}\r\n\r\nexport enum ENUM_TREATMENT_PROPS {\r\n initialShutinPres = \"initialShutinPres\",\r\n initialShutinPres5 = \"initialShutinPres5\",\r\n initialShutinPres10 = \"initialShutinPres10\",\r\n initialShutinPres15 = \"initialShutinPres15\",\r\n ballseatPressure = \"BallseatPressure\",\r\n ballseatRate = \"BallseatRate\",\r\n ballseatVolume = \"BallseatVolume\",\r\n breakdownPres = \"BreakdownPres\",\r\n breakdownRate = \"BreakdownRate\",\r\n breakdownVolume = \"BreakdownVolume\",\r\n wellheadOpeningPressure = \"WellheadOpeningPressure\",\r\n wellClose = \"WellClose\",\r\n\r\n Equalize = 'Equalize',\r\n StartStage = 'StartStage',\r\n AcidStart = 'AcidStart',\r\n AcidEnd = 'AcidEnd',\r\n DesignRate = 'DesignRate',\r\n DiverterStart = 'DiverterStart',\r\n DiverterEnd = 'DiverterEnd',\r\n EndStage = 'EndStage',\r\n\r\n MinMaxStart = 'MinMaxStart',\r\n MinMaxEnd = 'MinMaxEnd'\r\n}\r\n\r\nexport const DEFAULTS_LOS_GROUP_ID = ['MinMaxStart', 'MinMaxEnd']\r\nexport const DEFAULT_DIAGNOSTIC_GROUP_ID = ['BallSeatTime', 'BreakDownTime', 'InitialShutinPresTime', 'WellOpenTime', 'WellClose', 'Equalize', 'StartStage', 'AcidStart', 'AcidEnd', 'DesignRate', 'DiverterStart', 'DiverterEnd', 'EndStage'];\r\nexport const DEFAULT_FP_DIAGNOSTIC_GROUP_ID = ['WellClose', 'Equalize', 'StartStage', 'AcidStart', 'AcidEnd', 'DesignRate', 'DiverterStart', 'DiverterEnd', 'EndStage'];\r\n\r\nexport const TREATMENT_DEPENTDENT_VALUES: { [key: string]: { treatmentProp: string; realtimeChannel?: string; fracproChannel?: string }[] } = {\r\n [ENUM_DIAGNOSTIC_DEFAULTS.InitialShutinPresTime]: [\r\n { treatmentProp: ENUM_TREATMENT_PROPS.initialShutinPres, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n { treatmentProp: ENUM_TREATMENT_PROPS.initialShutinPres5, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n { treatmentProp: ENUM_TREATMENT_PROPS.initialShutinPres10, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n { treatmentProp: ENUM_TREATMENT_PROPS.initialShutinPres15, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n ],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.BallSeatTime]: [\r\n { treatmentProp: ENUM_TREATMENT_PROPS.ballseatPressure, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n { treatmentProp: ENUM_TREATMENT_PROPS.ballseatRate, realtimeChannel: ENUM_REALTIME_CHANNELS.slurryFlowRate, fracproChannel: ENUM_FRACPRO_CHANNELS.slurryRate },\r\n { treatmentProp: ENUM_TREATMENT_PROPS.ballseatVolume, fracproChannel: ENUM_FRACPRO_CHANNELS.cleanTotal },\r\n ],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.BreakDownTime]: [\r\n { treatmentProp: ENUM_TREATMENT_PROPS.breakdownPres, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n { treatmentProp: ENUM_TREATMENT_PROPS.breakdownRate, realtimeChannel: ENUM_REALTIME_CHANNELS.slurryFlowRate, fracproChannel: ENUM_FRACPRO_CHANNELS.slurryRate },\r\n { treatmentProp: ENUM_TREATMENT_PROPS.breakdownVolume, fracproChannel: ENUM_FRACPRO_CHANNELS.cleanTotal },\r\n ],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.WellOpenTime]: [\r\n { treatmentProp: ENUM_TREATMENT_PROPS.wellheadOpeningPressure, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n ],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.WellClose]: [\r\n { treatmentProp: ENUM_TREATMENT_PROPS.wellClose, realtimeChannel: ENUM_REALTIME_CHANNELS.treatingPressure, fracproChannel: ENUM_FRACPRO_CHANNELS.surfPressure },\r\n ],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.Equalize]: [{ treatmentProp: ENUM_TREATMENT_PROPS.Equalize }],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.StartStage]: [{ treatmentProp: ENUM_TREATMENT_PROPS.StartStage }],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.AcidStart]: [{ treatmentProp: ENUM_TREATMENT_PROPS.AcidStart }],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.AcidEnd]: [{ treatmentProp: ENUM_TREATMENT_PROPS.AcidEnd }],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.DesignRate]: [{ treatmentProp: ENUM_TREATMENT_PROPS.DesignRate }],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.DiverterStart]: [{ treatmentProp: ENUM_TREATMENT_PROPS.DiverterStart }],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.DiverterEnd]: [{ treatmentProp: ENUM_TREATMENT_PROPS.DiverterEnd }],\r\n [ENUM_DIAGNOSTIC_DEFAULTS.EndStage]: [{ treatmentProp: ENUM_TREATMENT_PROPS.EndStage }],\r\n\r\n [ENUM_LOS_DEFAULTS.MinMaxStart]: [{ treatmentProp: ENUM_TREATMENT_PROPS.MinMaxStart }],\r\n [ENUM_LOS_DEFAULTS.MinMaxEnd]: [{ treatmentProp: ENUM_TREATMENT_PROPS.MinMaxEnd }],\r\n};\r\n\r\n@Injectable()\r\nexport class DefaultDiagnosticPointsService {\r\n prefix: string = '/wells';\r\n\r\n constructor(\r\n private apiService: ApiService,\r\n ) { }\r\n\r\n parseRequestToId(requestId: string): string {\r\n switch (requestId) {\r\n case ENUM_TREATMENT_PROPS.initialShutinPres: return ENUM_DIAGNOSTIC_DEFAULTS.InitialShutinPresTime;\r\n case ENUM_TREATMENT_PROPS.ballseatPressure: return ENUM_DIAGNOSTIC_DEFAULTS.BallSeatTime;\r\n case ENUM_TREATMENT_PROPS.breakdownPres: return ENUM_DIAGNOSTIC_DEFAULTS.BreakDownTime;\r\n case ENUM_TREATMENT_PROPS.wellheadOpeningPressure: return ENUM_DIAGNOSTIC_DEFAULTS.WellOpenTime;\r\n case ENUM_TREATMENT_PROPS.wellClose: return ENUM_DIAGNOSTIC_DEFAULTS.WellClose;\r\n\r\n case ENUM_TREATMENT_PROPS.Equalize: return ENUM_DIAGNOSTIC_DEFAULTS.Equalize;\r\n case ENUM_TREATMENT_PROPS.StartStage: return ENUM_DIAGNOSTIC_DEFAULTS.StartStage;\r\n case ENUM_TREATMENT_PROPS.AcidStart: return ENUM_DIAGNOSTIC_DEFAULTS.AcidStart;\r\n case ENUM_TREATMENT_PROPS.AcidEnd: return ENUM_DIAGNOSTIC_DEFAULTS.AcidEnd;\r\n case ENUM_TREATMENT_PROPS.DesignRate: return ENUM_DIAGNOSTIC_DEFAULTS.DesignRate;\r\n case ENUM_TREATMENT_PROPS.DiverterStart: return ENUM_DIAGNOSTIC_DEFAULTS.DiverterStart;\r\n case ENUM_TREATMENT_PROPS.DiverterEnd: return ENUM_DIAGNOSTIC_DEFAULTS.DiverterEnd;\r\n case ENUM_TREATMENT_PROPS.EndStage: return ENUM_DIAGNOSTIC_DEFAULTS.EndStage;\r\n\r\n case ENUM_TREATMENT_PROPS.MinMaxStart: return ENUM_LOS_DEFAULTS.MinMaxStart;\r\n case ENUM_TREATMENT_PROPS.MinMaxEnd: return ENUM_LOS_DEFAULTS.MinMaxEnd;\r\n default: return null;\r\n }\r\n }\r\n\r\n update(wellId, treatmentId, flowPathType: number = 0, body: IDefaultDiagnosticPointRequestBody[]): Observable {\r\n return this.apiService.put(`${this.prefix}/${wellId}/treatments/${treatmentId}/flowPaths/${flowPathType}/defaultDiagnostic`, body);\r\n }\r\n\r\n updateDefaultfpDiagnostic(wellId, treatmentId, flowPathType: number = 0, body: { name: string, timeOffSet: number }[]): Observable {\r\n return this.apiService.put(`${this.prefix}/${wellId}/treatments/${treatmentId}/flowPaths/${flowPathType}/defaultfpDiagnostic`, body);\r\n }\r\n\r\n private setDiagnosPayload = (diagName: string, timeOffsetParam: number, realtimeChannels: IChannelItem[], fracproChannels: IChannelItem[], baseTreatmentDataTime?: string) => {\r\n const dependentValues = TREATMENT_DEPENTDENT_VALUES[diagName] || [];\r\n const isFpDiagnostic = DEFAULT_FP_DIAGNOSTIC_GROUP_ID.concat(DEFAULTS_LOS_GROUP_ID).includes(diagName);\r\n const result: {\r\n fpDiagnostic: IDefaultFpDiagnosticPointRequestBody[], diagnostic: IDefaultDiagnosticPointRequestBody[]\r\n } = { fpDiagnostic: [], diagnostic: [] };\r\n\r\n dependentValues.forEach((dpValue, index) => {\r\n let timeOffSet = timeOffsetParam;\r\n if (diagName === ENUM_DIAGNOSTIC_DEFAULTS.InitialShutinPresTime) {\r\n timeOffSet = timeOffSet + (300 * index);\r\n }\r\n\r\n if (!!isFpDiagnostic) {\r\n result.fpDiagnostic.push({ timeOffSet: Math.round(timeOffSet), name: dpValue.treatmentProp });\r\n } else {\r\n const payload: IDefaultDiagnosticPointRequestBody = {\r\n treatmentColumnName: dpValue.treatmentProp,\r\n timeOffSet: Math.round(timeOffSet),\r\n baseTreatmentDataTime: baseTreatmentDataTime,\r\n realtimeCName: null,\r\n fracproCName: null\r\n };\r\n\r\n let channel = realtimeChannels.find(item => item.name === dpValue.realtimeChannel);\r\n if (channel) {\r\n payload.realtimeCName = channel.cName;\r\n } else {\r\n channel = fracproChannels.find(item => item.name === dpValue.fracproChannel);\r\n if (channel) payload.fracproCName = channel.cName;\r\n }\r\n if (!channel) payload.timeOffSet = 0;\r\n result.diagnostic.push(payload);\r\n }\r\n\r\n });\r\n return result;\r\n };\r\n\r\n handleUpdate(\r\n wellId, treatmentId, flowPathType: number = 0, params: IDiagnosticParam[],\r\n realtimeChannels: IChannelItem[], fracproChannels: IChannelItem[], baseTreatmentDataTime?: string\r\n ): Observable<{ fpDiagnostic: IDefaultDiagnosticPointResponse[], diagnostic: IDefaultDiagnosticPointResponse[] }> {\r\n let reqBody: {\r\n fpDiagnostic: IDefaultFpDiagnosticPointRequestBody[], diagnostic: IDefaultDiagnosticPointRequestBody[]\r\n } = { fpDiagnostic: [], diagnostic: [] };\r\n\r\n params.forEach(param => {\r\n const payload = this.setDiagnosPayload(param.name, param.timeOffSet, realtimeChannels, fracproChannels, baseTreatmentDataTime);\r\n reqBody.fpDiagnostic = reqBody.fpDiagnostic.concat(payload.fpDiagnostic);\r\n reqBody.diagnostic = reqBody.diagnostic.concat(payload.diagnostic);\r\n });\r\n\r\n const fpDiagnostic$ = !reqBody.fpDiagnostic.length ? of([]) : this.updateDefaultfpDiagnostic(wellId, treatmentId, flowPathType, reqBody.fpDiagnostic);\r\n const diagnostic$ = !reqBody.diagnostic.length ? of([]) : this.update(wellId, treatmentId, flowPathType, reqBody.diagnostic);\r\n return forkJoin( fpDiagnostic$, diagnostic$ ).pipe(map(response => {\r\n const isNull = !response || !response.length;\r\n return {\r\n fpDiagnostic: isNull ? [] : Helper.getList(response[0], 'result'),\r\n diagnostic: isNull ? [] : Helper.getList(response[1], 'result')\r\n };\r\n }));\r\n }\r\n\r\n}\r\n","import { DiagnosticCompanyStorageService } from './storage/diagnostic-company-storage.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../core/services';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { Observable, of, forkJoin } from 'rxjs';\r\nimport { delay, flatMap, map } from 'rxjs/operators';\r\nimport { includes, isEmpty, filter } from 'lodash';\r\nimport { CompareWellsService } from './compare-wells.service';\r\nimport { DIAGNOSTIC_DEFAULTS, LOS_DEFAULTS, DEFAULT_PIVOTPOINTS_GROUP_ID } from '../helpers/app.constants';\r\nimport { IDiagnosticPoint } from '../models/diagnostic-points.model';\r\nimport { Helper } from '../helpers/helper';\r\nimport { each } from 'highcharts';\r\n\r\n@Injectable()\r\nexport class DiagnosticPointsService {\r\n prefixCompany = `/companies`;\r\n prefixWell = `/wells`;\r\n\r\n constructor(\r\n private apiService: ApiService,\r\n private compareWellsService: CompareWellsService,\r\n private diagnosticCompanyStorageService: DiagnosticCompanyStorageService\r\n ) { }\r\n\r\n getByCompany(companyId): Observable {\r\n let param = new HttpParams();\r\n param = param.set('companyId', companyId);\r\n\r\n return this.apiService.get(`${this.prefixCompany}/diagnostics`, param);\r\n }\r\n createByCompany(companyId, body: any, finalize?: VoidFunction): Observable {\r\n companyId = companyId ? companyId : '';\r\n return this.apiService.post(`${this.prefixCompany}/diagnostics?companyId=${companyId}`, body, finalize);\r\n }\r\n updateByCompany(companyId, diagnosticId, body: any, finalize?: VoidFunction): Observable {\r\n companyId = companyId ? companyId : '';\r\n let param = new HttpParams();\r\n param = param.set('companyId', companyId);\r\n param = param.set('diagnosticId', diagnosticId);\r\n return this.apiService.put(`${this.prefixCompany}/diagnostics`, body, finalize, null, param);\r\n }\r\n deleteByCompany(companyId, diagnosticId): Observable {\r\n companyId = companyId ? companyId : '';\r\n diagnosticId = diagnosticId ? diagnosticId : '';\r\n return this.apiService.delete(`${this.prefixCompany}/diagnostics?companyId=${companyId}&diagnosticId=${diagnosticId}`);\r\n }\r\n getByWell(wellId): Observable {\r\n let param = new HttpParams();\r\n param = param.set('wellId', wellId);\r\n\r\n return this.apiService.get(`${this.prefixWell}/diagnostics`, param);\r\n }\r\n addByWell(wellId, param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixWell}/diagnostic?wellId=${wellId}`, param, finalize);\r\n }\r\n deleteByWell(wellId, diagnosticId): Observable {\r\n return this.apiService.delete(`${this.prefixWell}/diagnostics?wellId=${wellId}&diagnosticId=${diagnosticId}`);\r\n }\r\n getByCompanyAndWell(companyId, wellId) {\r\n let requests$: Observable;\r\n companyId = companyId ? companyId : '';\r\n const companyStorage = this.diagnosticCompanyStorageService.getCompanyStorage(companyId);\r\n if (companyStorage) {\r\n requests$ = of(Object.values(companyStorage));\r\n } else {\r\n requests$ = this.getByCompany(companyId)\r\n .pipe(flatMap(res => {\r\n const result = res.result || [];\r\n this.diagnosticCompanyStorageService.setCompanyStorage(companyId, result);\r\n return of(result);\r\n }));\r\n }\r\n\r\n return requests$\r\n .pipe(flatMap((diagByCompany: any[]) => {\r\n return this.getByWell(wellId)\r\n .pipe(map(res => {\r\n const result = filter(diagByCompany, item => {\r\n return includes(res.result, item.id);\r\n });\r\n return result;\r\n }));\r\n }));\r\n }\r\n getByWellTreatment(wellId, treatmentId) {\r\n return this.apiService.get(`${this.prefixWell}/${wellId}/treatments/${treatmentId}/diagnostics`);\r\n }\r\n updateByWellTreatment(wellId, treatmentId, param: any, finalize?: VoidFunction) {\r\n return this.apiService.put(`${this.prefixWell}/${wellId}/treatments/${treatmentId}/diagnostics`, param, finalize);\r\n }\r\n getByCompanyWellTreatment(companyId, wellId, treatmentId) {\r\n return this.getByCompanyAndWell(companyId, wellId).pipe(\r\n flatMap(listDiags => {\r\n return this.getByWellTreatment(wellId, treatmentId)\r\n .pipe(flatMap(res => {\r\n if (res && !isEmpty(res.result)) {\r\n // update time offset\r\n listDiags.forEach(item => {\r\n const diagPoint = res.result.find(dp => dp.id === item.id);\r\n if (diagPoint) {\r\n item.timeOffSet = diagPoint.timeOffSet;\r\n }\r\n });\r\n }\r\n return of(listDiags);\r\n }));\r\n })\r\n );\r\n }\r\n getDataForPivotPoints(treatmentId, paramNames?: string[], companyId?): Observable {\r\n const requestBody: { treatmentIds: number[], paramNames: string[] } = {\r\n treatmentIds: !treatmentId ? [] : [treatmentId],\r\n paramNames: DIAGNOSTIC_DEFAULTS.map(item => item.id).concat(DEFAULT_PIVOTPOINTS_GROUP_ID)\r\n };\r\n if (paramNames && paramNames.length) {\r\n each(paramNames, (value, key) => {\r\n if (!requestBody.paramNames.includes(value)) requestBody.paramNames.push(value.toString());\r\n });\r\n }\r\n return this.compareWellsService.getDataForPivotPoints(requestBody)\r\n .pipe(\r\n map(res => res.result),\r\n map((data: any[]) => {\r\n let companiesDiagnostics: any[] = [];\r\n if (companyId !== undefined) {\r\n const companiesStorage = this.diagnosticCompanyStorageService.getCompanyStorage(companyId);\r\n if (companiesStorage) companiesDiagnostics = companiesStorage;\r\n }\r\n const result: IDiagnosticPoint[] = data.map(point => {\r\n const defaultPoint = DIAGNOSTIC_DEFAULTS.concat(LOS_DEFAULTS).find(item => point.paramName === item.id);\r\n\r\n if (defaultPoint) {\r\n return Object.assign({\r\n id: defaultPoint.id,\r\n name: defaultPoint.text,\r\n timeOffSet: point.paramValue,\r\n color: defaultPoint.color || Helper.randomHexColor(),\r\n isDefault: true\r\n }) as IDiagnosticPoint;\r\n }\r\n const companyPoint = companiesDiagnostics.find(item => item.name === point.paramName);\r\n return Object.assign({\r\n id: companyPoint ? `${companyPoint.id}` : point.paramName,\r\n name: point.paramName,\r\n timeOffSet: point.paramValue,\r\n color: point.color || Helper.randomHexColor(),\r\n isDefault: false\r\n }) as IDiagnosticPoint;\r\n });\r\n\r\n return result;\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../core/services';\r\nimport { Observable, of } from 'rxjs';\r\nimport { HttpParams } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class FracproChannelsService {\r\n prefixPath = `/Setting/version/channels`;\r\n\r\n constructor(private apiService: ApiService) { }\r\n\r\n getLatestVersion(): Observable {\r\n return this.apiService.get(`${this.prefixPath}`);\r\n }\r\n\r\n update(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.put(`${this.prefixPath}`, param, finalize);\r\n }\r\n}\r\n","\r\nexport * from './user.service';\r\nexport * from './companies.service';\r\nexport * from './user-auth.service';\r\nexport * from './user-roles.service';\r\nexport * from './channel-mapping.service';\r\nexport * from './diagnostic-points.service';\r\nexport * from './fracpro-channels.service';\r\nexport * from './toaster.service';\r\nexport * from './charts.service';\r\nexport * from './channel-selection.service';\r\nexport * from './loading-overlay.service';\r\nexport * from './channel-settings-storage.service';\r\nexport * from './realtime-treatment-storage.service';\r\nexport * from './local-data-storage.service';\r\nexport * from './pivot-point.service';\r\nexport * from './navbar-scale-chart.service';\r\nexport * from './plot-template.service';\r\nexport * from './version-build-check.service';\r\nexport * from './storage/search-well-options-storage.service';\r\nexport * from './storage/diagnostic-company-storage.service';\r\nexport * from './storage/channel-mapping-storage.service';\r\nexport * from './storage/fracpro-channel-storage.service';\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class LoadingOverlayService {\r\n private isLoadingSubject = new BehaviorSubject(false);\r\n public isLoading = this.isLoadingSubject.asObservable();\r\n\r\n constructor() { }\r\n\r\n setLoading(value: boolean) {\r\n this.isLoadingSubject.next(value);\r\n }\r\n\r\n show() {\r\n this.isLoadingSubject.next(true);\r\n }\r\n\r\n hide() {\r\n this.isLoadingSubject.next(false);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport const KEY_DESIGN_ACTUAL_SETTING = 'designActualSetting';\r\n\r\n@Injectable()\r\nexport class LocalDataStorageService {\r\n\r\n constructor() { }\r\n\r\n setOption(optionKey, value) {\r\n if (optionKey) {\r\n localStorage.setItem(`${optionKey}`, JSON.stringify(value));\r\n }\r\n }\r\n\r\n getOption(optionKey) {\r\n if (optionKey) {\r\n try {\r\n const stringData = localStorage.getItem(`${optionKey}`);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n removeOption(optionKey) {\r\n if (optionKey) {\r\n localStorage.removeItem(`${optionKey}`);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavbarScaleChartService {\r\n private isLoadingSubject = new Subject();\r\n public isLoading = this.isLoadingSubject.asObservable();\r\n\r\n constructor() { }\r\n\r\n setLoading(value: boolean) {\r\n this.isLoadingSubject.next(value);\r\n }\r\n\r\n getLoading() {\r\n return this.isLoadingSubject.asObservable();\r\n }\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { forEach } from 'lodash';\r\nimport { ApiService } from '../../core/services/api.service';\r\n\r\n@Injectable()\r\nexport class PadService {\r\n prefixPath = '/wells/pad';\r\n\r\n constructor(private apiService: ApiService) {\r\n\r\n }\r\n\r\n getListPads(paramObject: any, page: number, pageSize: number, sortField?: string, sortType: boolean = true) {\r\n let param = new HttpParams();\r\n if (paramObject) {\r\n forEach(paramObject, (item, key) => {\r\n if (item) {\r\n param = param.set(key.toString(), item);\r\n }\r\n });\r\n }\r\n if (page) {\r\n param = param.set('page', page.toString());\r\n }\r\n if (pageSize) {\r\n param = param.set('pageSize', pageSize.toString());\r\n }\r\n if (sortField) {\r\n param = param.set('sortField', sortField);\r\n param = param.set('sortType', sortType.toString());\r\n }\r\n return this.apiService.get(`${this.prefixPath}`, param);\r\n }\r\n\r\n getPadByName(padName: string) {\r\n let param = new HttpParams();\r\n if (padName) {\r\n param = param.set('padName', padName.toString());\r\n }\r\n\r\n return this.apiService.get(`${this.prefixPath}/detail`, param);\r\n }\r\n\r\n deletePads(paramObject: number[], finalize?: VoidFunction): Observable {\r\n let param = new HttpParams();\r\n forEach(paramObject, (id, key) => {\r\n if (id) {\r\n param = param.append('padIds', id.toString());\r\n }\r\n });\r\n return this.apiService.deleteParam(`${this.prefixPath}`, param, finalize);\r\n }\r\n\r\n deletePostPads(param: {data: string[]}, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.prefixPath}/deletePadName`, param, finalize, { requestTimeout: 30 * 60 * 1000 }); // 30 min request timeout\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isEmpty, isNumber, forEach, cloneDeep } from 'lodash';\r\nimport { TIMEFLOAT_CHANNEL_NAME, FRACPRO_TIMEFLOAT_CNAME } from './charts/base-chart.service';\r\n\r\nexport interface IPivotPointItem {\r\n treatmentId: number;\r\n treatmentNumber: number;\r\n paramName: string;\r\n paramValue: number;\r\n color?: string;\r\n paramNameDisplay?: string;\r\n}\r\n\r\n@Injectable()\r\nexport class PivotPointService {\r\n\r\n constructor() { }\r\n\r\n public getMaxPivotPoint(pivotPointData: IPivotPointItem[]): IPivotPointItem {\r\n if (!pivotPointData || !pivotPointData.length) return null;\r\n if (pivotPointData.length === 1) return pivotPointData[0];\r\n let max = pivotPointData[0];\r\n for (let i = 1; i < pivotPointData.length; i++) {\r\n if (pivotPointData[i].paramValue <= max.paramValue) continue;\r\n max = pivotPointData[i];\r\n }\r\n return max;\r\n }\r\n\r\n public handleUpdateTimeByPivotData(treatmentData, pivotPointData: IPivotPointItem[]) {\r\n const cloneData = cloneDeep(treatmentData);\r\n const maxPoint = this.getMaxPivotPoint(pivotPointData);\r\n if (!maxPoint) return cloneData;\r\n const maxValue = maxPoint.paramValue;\r\n if (!isNumber(maxValue)) return cloneData;\r\n const treatmentPivotData = pivotPointData.find(item => item.treatmentId === cloneData.treatmentId);\r\n if (!treatmentPivotData) return cloneData;\r\n const diffValue = maxValue - treatmentPivotData.paramValue; // in seconds\r\n if (!isNumber(diffValue) || isNaN(diffValue)) return cloneData;\r\n\r\n const dataFlowsKeys = ['realtimeData', 'fracproData'];\r\n forEach(dataFlowsKeys, key => {\r\n if (!isEmpty(cloneData[key])) {\r\n const dataFlow = cloneData[key][0];\r\n const values = dataFlow.values;\r\n const columns = dataFlow.columns;\r\n const offsetTimeCName = key === 'fracproData' ? FRACPRO_TIMEFLOAT_CNAME : TIMEFLOAT_CHANNEL_NAME;\r\n // find index of time channel\r\n const offsetTimeIndex = columns.findIndex(value => value === offsetTimeCName);\r\n if (offsetTimeIndex > -1) {\r\n forEach(values, (dataRow) => {\r\n const dataTime = dataRow[offsetTimeIndex];\r\n const shiftedValue = dataTime + diffValue;\r\n // update new time valule\r\n dataRow[offsetTimeIndex] = shiftedValue;\r\n });\r\n }\r\n }\r\n });\r\n\r\n return cloneData;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IPlotTemplate } from '../models/plot-template.model';\r\nimport { IChannelSettingModel } from '../models';\r\nimport { ApiService } from '../../core/services';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport * as _ from 'lodash';\r\nimport { YAxisMap } from '../helpers/app.constants';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class PlotTemplateService {\r\n prefixPath = `/wells`;\r\n\r\n constructor(\r\n private apiService: ApiService\r\n ) { }\r\n\r\n channelSettingsToPlotTemplate(channelSettings: IChannelSettingModel): IPlotTemplate {\r\n if (channelSettings) {\r\n const plotTemplate: IPlotTemplate = {};\r\n const yAxisMap = {\r\n yAxisLeft: YAxisMap.firstLeft,\r\n yAxisLeftMost: YAxisMap.secondLeft,\r\n yAxisRight: YAxisMap.firstRight,\r\n yAxisRightMost: YAxisMap.secondRight,\r\n };\r\n\r\n _.each(yAxisMap, (value, key) => {\r\n const yAxisChannelSettingKey = yAxisMap[key];\r\n\r\n plotTemplate[key] = {\r\n min: channelSettings[yAxisChannelSettingKey].min,\r\n max: channelSettings[yAxisChannelSettingKey].max,\r\n channels: channelSettings[yAxisChannelSettingKey].channels.map(item => {\r\n return {\r\n name: item.name,\r\n color: item.color\r\n };\r\n })\r\n };\r\n });\r\n\r\n return plotTemplate;\r\n }\r\n return;\r\n }\r\n\r\n getByWell(wellId): Observable {\r\n return this.apiService.get(`${this.prefixPath}/${wellId}/plotTemplates`);\r\n }\r\n\r\n createByWell(wellId, body) {\r\n let param = new HttpParams();\r\n param = param.set('wellId', wellId);\r\n\r\n return this.apiService.post(`${this.prefixPath}/${wellId}/plotTemplates`, body, null, null, param);\r\n }\r\n\r\n updateByWell(wellId, plotTemplateId , body) {\r\n let param = new HttpParams();\r\n param = param.set('wellId', wellId);\r\n param = param.set('plotTemplateId', plotTemplateId);\r\n\r\n return this.apiService.put(`${this.prefixPath}/${wellId}/plotTemplates/${plotTemplateId}`, body, null, null, param);\r\n }\r\n\r\n deleteByWell(wellId, id) {\r\n return this.apiService.delete(`${this.prefixPath}/${wellId}/plotTemplates/${id}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport const PAD_COMPARE_WELL = 'padCompareWell';\r\nexport const PAD_COMPARE_PARAM_MULTI_WELL = 'padCompareParamMultiWell';\r\nexport const PAD_COMPARE_PARAM_SINGLE_WELL = 'padCompareParamSingleWell';\r\nexport const KEY_TEMPLATE = 'template';\r\nexport const KEY_TEMPLATE_ID = 'templateId';\r\nexport const KEY_OFFSET_CHANNEL_SETTINGS = 'offsetChannelSettings';\r\nexport const KEY_LAST_MIN_FILTER = 'lastMinFilter';\r\nexport const KEY_TIME_FORMAT = 'timeFormat';\r\n\r\n@Injectable()\r\nexport class RealtimeTreatmentStorageService {\r\n constructor() { }\r\n\r\n setOption(id, option, value, key: string = 'well') {\r\n if (option && id !== undefined) {\r\n localStorage.setItem(`${key}_${id}_${option}`, JSON.stringify(value));\r\n }\r\n }\r\n\r\n getOption(id, optionKey, keyType: string = 'well') {\r\n if (optionKey && id !== undefined) {\r\n try {\r\n const stringData = localStorage.getItem(`${keyType}_${id}_${optionKey}`);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n removeOption(id, optionKey, keyType: string = 'well') {\r\n if (optionKey) {\r\n localStorage.removeItem(`${keyType}_${id}_${optionKey}`);\r\n }\r\n }\r\n\r\n popOption(id, optionKey, keyType = 'well') {\r\n if (optionKey && id !== undefined) {\r\n try {\r\n const stringData = localStorage.getItem(`${keyType}_${id}_${optionKey}`);\r\n const arr = JSON.parse(stringData);\r\n arr.pop();\r\n this.setOption(id, optionKey, arr, keyType);\r\n } catch (error) {\r\n return;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n setRealtimeTreatmentsData(values) {\r\n if (values) {\r\n sessionStorage.setItem(`treatment_realtime_data`, JSON.stringify(values));\r\n }\r\n }\r\n\r\n getRealtimeTreatmentsData() {\r\n try {\r\n const stringData = sessionStorage.getItem(`treatment_realtime_data`);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n removeRealtimeTreatmentsData() {\r\n sessionStorage.removeItem(`treatment_realtime_data`);\r\n }\r\n\r\n clearAll() {\r\n localStorage.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { isBoolean, isNumber } from 'lodash';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { ENUM_THEMES } from '../helpers/app.constants';\r\n\r\nexport const KEY_SCROLLBAR_SETTINGS = 'scrollbarSettings';\r\nexport const DEFAULT_REALTIME_BOURDET = false;\r\nexport const OFFSET_DATA_BEFORE_TREATMENT_START = '30'; // min\r\nexport const OFFSET_DATA_AFTER_TREATMENT_END = '60'; // min\r\nexport const SCROLLBAR_SAMPLING_RATE = '20'; // min\r\nexport const HIGHT_VOLUME_SAMPLING_RATE = '10'; // sec\r\nexport const HIGH_RES_TIME_RATE = '120'; // min\r\nexport const REALTIME_REQUEST_RATE = '5'; // sec\r\n\r\nexport interface IScrollbarChartSettings {\r\n themes: string;\r\n scrollbarSamplingRate: string;\r\n highVolumeSamplingRate: string;\r\n highResTimeRate: string;\r\n // offsetDataBeforeTreatmentStart: string;\r\n // offsetDataAfterTreatmentEnd: string;\r\n showWellAliasInTag: boolean;\r\n multiWellScrollbar: boolean;\r\n realtimeRequestRate: string;\r\n realtimeBourdet: boolean;\r\n}\r\n\r\n@Injectable()\r\nexport class ScrollbarChartSettingsService {\r\n private dataState: BehaviorSubject;\r\n\r\n constructor() {\r\n this.dataState = new BehaviorSubject({\r\n themes: ENUM_THEMES.Light,\r\n scrollbarSamplingRate: SCROLLBAR_SAMPLING_RATE,\r\n highVolumeSamplingRate: HIGHT_VOLUME_SAMPLING_RATE,\r\n highResTimeRate: HIGH_RES_TIME_RATE,\r\n realtimeRequestRate: REALTIME_REQUEST_RATE,\r\n // offsetDataBeforeTreatmentStart: OFFSET_DATA_BEFORE_TREATMENT_START,\r\n // offsetDataAfterTreatmentEnd: OFFSET_DATA_AFTER_TREATMENT_END,\r\n showWellAliasInTag: true,\r\n multiWellScrollbar: true,\r\n realtimeBourdet: DEFAULT_REALTIME_BOURDET\r\n });\r\n }\r\n\r\n setDataState(data: IScrollbarChartSettings) {\r\n this.dataState.next(data);\r\n }\r\n\r\n getDataState(): Observable {\r\n return this.dataState.asObservable();\r\n }\r\n\r\n setLocalStorage(id, optionKey, value) {\r\n if (optionKey) {\r\n localStorage.setItem(`company_${id}_${optionKey}`, JSON.stringify(value));\r\n }\r\n }\r\n\r\n getLocalStorage(id: number, optionKey: string) {\r\n if (optionKey) {\r\n try {\r\n const stringData = localStorage.getItem(`company_${id}_${optionKey}`);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n getRealtimeBourdetStorage(id: number) {\r\n const dataState = this.getLocalStorage(id, KEY_SCROLLBAR_SETTINGS);\r\n if (!dataState || dataState.realtimeBourdet === null || dataState.realtimeBourdet === undefined) return DEFAULT_REALTIME_BOURDET;\r\n if (!isBoolean(dataState.realtimeBourdet)) return DEFAULT_REALTIME_BOURDET;\r\n return dataState.realtimeBourdet;\r\n }\r\n\r\n getRealtimeRequestRate(id: number) {\r\n const dataState = this.getLocalStorage(id, KEY_SCROLLBAR_SETTINGS);\r\n const defaultRequestRate = parseInt(REALTIME_REQUEST_RATE, 10) * 1000;\r\n if (!dataState || !dataState.realtimeRequestRate === null) return defaultRequestRate;\r\n const realtimeRequestRate = parseInt(dataState.realtimeRequestRate, 10);\r\n if (!isNumber(realtimeRequestRate)) return defaultRequestRate;\r\n if (realtimeRequestRate <= 0) return defaultRequestRate;\r\n return realtimeRequestRate * 1000;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../../core/services';\r\n\r\n@Injectable()\r\nexport class SessionService {\r\n prefixSessionsPath = `/sessions`;\r\n prefixTokenPath = `/tokens`;\r\n\r\n constructor(\r\n private apiService: ApiService\r\n ) { }\r\n\r\n getCurrentUser() {\r\n return this.apiService.get(`${this.prefixSessionsPath}/currentUser`);\r\n }\r\n\r\n getWellsToken(wellId: number) {\r\n return this.apiService.get(`${this.prefixTokenPath}/auth/wells/${wellId}`);\r\n }\r\n\r\n getWellTreatmentsToken(wellId: number, treatmentId: number) {\r\n return this.apiService.get(`${this.prefixTokenPath}/auth/wells/${wellId}/treatments/${treatmentId}`);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst STORAGE_KEY = 'channel_mapping';\r\nconst STORAGE_TENANT = 'company';\r\n\r\n@Injectable()\r\nexport class ChannelMappingStorageService {\r\n\r\n constructor() {}\r\n\r\n private getTenantItem(tenantId) {\r\n return tenantId ? [STORAGE_KEY, STORAGE_TENANT, tenantId].join('_') : STORAGE_KEY;\r\n }\r\n\r\n setChannelMapped(tenantId, value) {\r\n const item = this.getTenantItem(tenantId);\r\n if (!value) return;\r\n localStorage.setItem(item, JSON.stringify(value));\r\n }\r\n\r\n getChannelMapped(tenantId) {\r\n const item = this.getTenantItem(tenantId);\r\n try {\r\n const stringData = localStorage.getItem(item);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n removeChannelMapped(tenantId) {\r\n const item = this.getTenantItem(tenantId);\r\n localStorage.removeItem(item);\r\n }\r\n\r\n clearChannelMapped() {\r\n for (const obj in localStorage) {\r\n if (localStorage.hasOwnProperty(obj) && obj.includes(STORAGE_KEY)) {\r\n localStorage.removeItem(obj);\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class CompareWellStorageService {\r\n\r\n constructor() {}\r\n\r\n setColor(wellId: number, value: string) {\r\n const item = 'well_' + wellId + '_color';\r\n if (!value) return;\r\n localStorage.setItem(item, value);\r\n }\r\n\r\n getColor(wellId: number) {\r\n const item = 'well_' + wellId + '_color';\r\n try {\r\n const stringData = localStorage.getItem(item);\r\n if (stringData) return stringData;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n removeColor(wellId: number) {\r\n const item = 'well_' + wellId + '_color';\r\n localStorage.removeItem(item);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class DiagnosticCompanyStorageService {\r\n\r\n constructor() {}\r\n\r\n setCompanyStorage(companyId, value) {\r\n const key = companyId ? `company_${companyId}` : `company`;\r\n const values = value ? (Array.isArray(value) ? value : [value]) : [];\r\n sessionStorage.setItem(`${key}`, JSON.stringify(values));\r\n }\r\n\r\n getCompanyStorage(companyId) {\r\n const key = companyId ? `company_${companyId}` : `company`;\r\n try {\r\n const stringData = sessionStorage.getItem(`${key}`);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n removeCompanyStorage(companyId) {\r\n const key = companyId ? `company_${companyId}` : `company`;\r\n sessionStorage.removeItem(`${key}`);\r\n }\r\n\r\n clearAll() {\r\n sessionStorage.clear();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\nconst STORAGE_KEY = 'fracpro_channel';\r\nconst STORAGE_TENANT = 'company';\r\n\r\n@Injectable()\r\nexport class FracproChannelStorageService {\r\n\r\n constructor() {}\r\n\r\n setFracproChannels(value) {\r\n if (!value) return;\r\n localStorage.setItem(STORAGE_KEY, JSON.stringify(value));\r\n }\r\n\r\n getFracproChannels() {\r\n try {\r\n const stringData = localStorage.getItem(STORAGE_KEY);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n removeFracproChannel() {\r\n localStorage.removeItem(STORAGE_KEY);\r\n }\r\n\r\n clearFracproChannels() {\r\n for (const obj in localStorage) {\r\n if (localStorage.hasOwnProperty(obj) && obj.includes(STORAGE_KEY)) {\r\n localStorage.removeItem(obj);\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class SearchPadPadOptionsStorageService {\r\n constructor() { }\r\n\r\n setListOptions(data: any, userId: number) {\r\n if (userId) data['userId'] = userId;\r\n const value = data ? JSON.stringify(data) : undefined;\r\n localStorage.setItem(`search_pad_list_opt`, value);\r\n }\r\n\r\n getListOptions(userId: number) {\r\n try {\r\n const stringData = localStorage.getItem(`search_pad_list_opt`);\r\n const data = JSON.parse(stringData);\r\n if (userId) {\r\n if (data['userId'] === userId) return data;\r\n else null;\r\n } else return data;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n removeListOptions() {\r\n localStorage.removeItem(`search_pad_list_opt`);\r\n }\r\n\r\n clearAll() {\r\n localStorage.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport const SEARCH_WELL_LIST_OPT = 'search_well_list_opt';\r\nexport const SEARCH_WELL_SELECTED = 'search_well_selected';\r\n\r\n@Injectable()\r\nexport class SearchWellOptionsStorageService {\r\n constructor() { }\r\n\r\n setListOptions(data: any, userId: number) {\r\n if (userId) data['userId'] = userId;\r\n const value = data ? JSON.stringify(data) : undefined;\r\n localStorage.setItem(SEARCH_WELL_LIST_OPT, value);\r\n }\r\n\r\n getListOptions(userId: number) {\r\n try {\r\n const stringData = localStorage.getItem(SEARCH_WELL_LIST_OPT);\r\n const data = JSON.parse(stringData);\r\n if (userId) {\r\n if (data['userId'] === userId) return data;\r\n else null;\r\n } else return data;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n removeListOptions() {\r\n localStorage.removeItem(SEARCH_WELL_LIST_OPT);\r\n }\r\n\r\n clearAll() {\r\n localStorage.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ITreatmentItem } from '../../models/treatment.model';\r\n\r\n@Injectable()\r\nexport class TreatmentDetailsStorageService {\r\n private treatmentsDetailsData: {[id: number]: ITreatmentItem} = {};\r\n private commentType: {[id: number]: string} = {};\r\n private filterSettings: {[id: number]: string} = {};\r\n\r\n constructor() { }\r\n\r\n setCommentType(treatmentId: number, commentType: string) {\r\n if (treatmentId) {\r\n this.getCommentType(treatmentId);\r\n this.commentType[treatmentId] = commentType;\r\n localStorage.setItem(`treatment_details_comment_type`, JSON.stringify(this.commentType));\r\n }\r\n }\r\n\r\n getCommentType(treatmentId?: number): any | string {\r\n const stringData = localStorage.getItem(`treatment_details_comment_type`);\r\n if (stringData) {\r\n this.commentType = JSON.parse(stringData);\r\n }\r\n if (!this.commentType) {\r\n this.commentType = {};\r\n }\r\n if (!treatmentId) {\r\n return this.commentType;\r\n } else {\r\n return this.commentType[treatmentId];\r\n }\r\n }\r\n\r\n setFilterSettings(treatmentId: number, filterSettings) {\r\n if (treatmentId) {\r\n this.getFilterSettings(treatmentId);\r\n this.filterSettings[treatmentId] = filterSettings;\r\n sessionStorage.setItem(`treatment_details_filterSettings`, JSON.stringify(this.filterSettings));\r\n }\r\n }\r\n\r\n getFilterSettings(treatmentId?: number): any {\r\n const stringData = sessionStorage.getItem(`treatment_details_filterSettings`);\r\n if (stringData) {\r\n this.filterSettings = JSON.parse(stringData);\r\n }\r\n if (!this.filterSettings) {\r\n this.filterSettings = {};\r\n }\r\n if (!treatmentId) {\r\n return this.filterSettings;\r\n } else {\r\n return this.filterSettings[treatmentId];\r\n }\r\n }\r\n\r\n setTreatmentData(treatmentId: number, treatmentItem: ITreatmentItem) {\r\n this.getTreatmentData();\r\n if (treatmentId) {\r\n this.treatmentsDetailsData[treatmentId] = treatmentItem;\r\n sessionStorage.setItem(`treatment_details`, JSON.stringify(this.treatmentsDetailsData));\r\n }\r\n }\r\n\r\n getTreatmentData(treatmentId?: number): any | ITreatmentItem {\r\n const stringData = sessionStorage.getItem(`treatment_details`);\r\n if (stringData) {\r\n this.treatmentsDetailsData = JSON.parse(stringData);\r\n }\r\n if (!this.treatmentsDetailsData) {\r\n this.treatmentsDetailsData = {};\r\n }\r\n if (!treatmentId) {\r\n return this.treatmentsDetailsData;\r\n } else {\r\n return this.treatmentsDetailsData[treatmentId];\r\n }\r\n }\r\n\r\n removeTreatmentData() {\r\n sessionStorage.removeItem(`treatment_details`);\r\n }\r\n\r\n clearAll() {\r\n sessionStorage.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { ENUM_THEMES } from '../helpers/app.constants';\r\n\r\n@Injectable()\r\nexport class ThemesSettingsService {\r\n private dataState: BehaviorSubject;\r\n\r\n constructor() {\r\n this.dataState = new BehaviorSubject({\r\n themes: ENUM_THEMES.Light,\r\n });\r\n }\r\n\r\n setDataState(data: any) {\r\n this.dataState.next(data);\r\n }\r\n\r\n getDataState(): Observable {\r\n return this.dataState.asObservable();\r\n }\r\n\r\n setLocalStorage(value, optionKey?: string) {\r\n const key = optionKey ? `themes_settings_${optionKey}` : `themes_settings`;\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n getLocalStorage(optionKey?: string) {\r\n const key = optionKey ? `themes_settings_${optionKey}` : `themes_settings`;\r\n try {\r\n const stringData = localStorage.getItem(key);\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable()\r\nexport class ToasterService {\r\n constructor(\r\n private toastrService: ToastrService\r\n ) { }\r\n\r\n showSuccess(message: string) {\r\n this.toastrService.success(message, '');\r\n }\r\n\r\n showError(message: string) {\r\n this.toastrService.error(message, '');\r\n }\r\n\r\n handleError(resData) {\r\n let message = 'Oops! Something went wrong. Please contact us for support.';\r\n if (resData && resData.error && resData.error.message) {\r\n if(resData.error.message == \"Create Azure error: Another object with the same value for property userPrincipalName already exists.\"){\r\n message = 'User email already registered.'\r\n } else {\r\n message = resData.error.message;\r\n }\r\n } else if (resData && !!resData.notInternet) {\r\n message = resData.message;\r\n }\r\n this.toastrService.error(message, 'Error');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { find, findLast, isEmpty, findLastIndex } from 'lodash';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ITreatmentLogTemplateResponse } from '../models/treatment-log-template.model';\r\n\r\ninterface IDataPoint {\r\n id: string;\r\n name: string;\r\n xValue: number;\r\n yValue: number;\r\n treatmentName?: string;\r\n unit?: string;\r\n avgMDValue?: number;\r\n}\r\nexport interface ILogCurvesParam {id: string; name: string; values: any}\r\nexport interface IResTreatmentLogParser {\r\n curveData: IDataPoint[];\r\n parameterData?: IDataPoint[]\r\n}\r\n\r\n@Injectable()\r\nexport class TreatmentLogParserService {\r\n private readonly plotTemplatesDataSubject: Subject = new Subject();\r\n public scatterPlotTemplatesData$ = this.plotTemplatesDataSubject.asObservable();\r\n\r\n constructor() { }\r\n\r\n public setPlotTemplates(data: ITreatmentLogTemplateResponse[]): void {\r\n this.plotTemplatesDataSubject.next(data);\r\n }\r\n\r\n public unsetPlotTemplates(): void {\r\n this.plotTemplatesDataSubject.next(null);\r\n }\r\n\r\n parseCurveDataByTreatment(logCurves: ILogCurvesParam[], treatmentAvgMDItems) {\r\n const curveData = [];\r\n if (!isEmpty(logCurves) && !isEmpty(treatmentAvgMDItems)) {\r\n logCurves.forEach(log => {\r\n // interpolate and find the value corresponding avgMD\r\n // (y2-y1)/(x2-x1) = (y-y1)/(x-x1)\r\n const logCurveData = log.values;\r\n treatmentAvgMDItems.forEach(avgData => {\r\n // find equal depth\r\n let y = null;\r\n const equalDepthDataRow = find(logCurveData, (dataRow) => {\r\n return dataRow[0] === avgData.avgMD;\r\n });\r\n if (equalDepthDataRow) {\r\n y = equalDepthDataRow[1];\r\n } else {\r\n // find smaller depth\r\n const smallerDepthDataRow = findLast(logCurveData, (dataRow) => {\r\n return dataRow[0] < avgData.avgMD;\r\n });\r\n // find greater depth\r\n const greaterDepthDataRow = find(logCurveData, (dataRow) => {\r\n return dataRow[0] > avgData.avgMD;\r\n });\r\n if (smallerDepthDataRow && greaterDepthDataRow) {\r\n const x1 = smallerDepthDataRow[0];\r\n const y1 = smallerDepthDataRow[1];\r\n const x2 = greaterDepthDataRow[0];\r\n const y2 = greaterDepthDataRow[1];\r\n const x = avgData.avgMD;\r\n y = (((y2-y1)/(x2-x1))*x - ((y2-y1)/(x2-x1))*x1) + y1;\r\n }\r\n }\r\n curveData.push({\r\n id: log.name,\r\n name: log.name,\r\n xValue: avgData.avgMD,\r\n yValue: y,\r\n });\r\n });\r\n });\r\n }\r\n\r\n return curveData;\r\n }\r\n\r\n parseDataByVerticalSection(\r\n logCurves: ILogCurvesParam[], treatmentAvgMDItems: any[],\r\n trajectoryData: any[], parameterInputData: any[]\r\n ): IResTreatmentLogParser {\r\n // parse log data curve\r\n // interpolate and find the value corresponding VS\r\n // (y2-y1)/(x2-x1) = (y-y1)/(x-x1)\r\n // find available depth range by trajectoryData\r\n const indexItemVSEqual0 = findLastIndex(trajectoryData, (item) => {\r\n return item.VS === 0;\r\n });\r\n const firstItem = trajectoryData[indexItemVSEqual0];\r\n const lastItem = trajectoryData[trajectoryData.length - 1];\r\n const minDepth = firstItem.MD;\r\n const maxDepth = lastItem.MD;\r\n let allCurveData: IDataPoint[] = [];\r\n let allParameterData: IDataPoint[] = [];\r\n logCurves.forEach(log => {\r\n const logCurveData = log.values.filter(dataRow => {\r\n return dataRow[0] >= minDepth && dataRow[0] <= maxDepth;\r\n });\r\n // convert log data depth to VS\r\n let convertedLogData = [];\r\n logCurveData.forEach(dataRow => {\r\n const logCurveMD = dataRow[0];\r\n // find equal depth\r\n let y = null;\r\n const equalDepthTrajectoryItem = find(trajectoryData, (item) => {\r\n return item.MD === logCurveMD;\r\n });\r\n if (equalDepthTrajectoryItem) {\r\n y = equalDepthTrajectoryItem.VS;\r\n } else {\r\n // find smaller depth\r\n const smallerDepthTrajectoryItem = findLast(trajectoryData, (item) => {\r\n return item.MD < logCurveMD;\r\n });\r\n // find greater depth\r\n const greaterDepthTrajectoryItem = find(trajectoryData, (item) => {\r\n return item.MD > logCurveMD;\r\n });\r\n if (smallerDepthTrajectoryItem && greaterDepthTrajectoryItem) {\r\n const x1 = smallerDepthTrajectoryItem.MD;\r\n const y1 = smallerDepthTrajectoryItem.VS;\r\n const x2 = greaterDepthTrajectoryItem.MD;\r\n const y2 = greaterDepthTrajectoryItem.VS;\r\n const x = logCurveMD;\r\n y = (((y2-y1)/(x2-x1))*x - ((y2-y1)/(x2-x1))*x1) + y1;\r\n }\r\n }\r\n convertedLogData.push({\r\n VS: y,\r\n MD: logCurveMD,\r\n yValue: dataRow[1]\r\n });\r\n });\r\n\r\n // parse parameter data\r\n const convertedParameterData = [];\r\n treatmentAvgMDItems.forEach(avgData => {\r\n // find equal depth\r\n let y = null;\r\n const equalDepthDataRow = find(trajectoryData, (item) => {\r\n return item.MD === avgData.avgMD;\r\n });\r\n if (equalDepthDataRow) {\r\n y = equalDepthDataRow.VS;\r\n } else {\r\n // find smaller depth\r\n const smallerDepthDataRow = findLast(trajectoryData, (item) => {\r\n return item.MD < avgData.avgMD;\r\n });\r\n // find greater depth\r\n const greaterDepthDataRow = find(trajectoryData, (item) => {\r\n return item.MD > avgData.avgMD;\r\n });\r\n if (smallerDepthDataRow && greaterDepthDataRow) {\r\n const x1 = smallerDepthDataRow.MD;\r\n const y1 = smallerDepthDataRow.VS;\r\n const x2 = greaterDepthDataRow.MD;\r\n const y2 = greaterDepthDataRow.VS;\r\n const x = avgData.avgMD;\r\n y = (((y2-y1)/(x2-x1))*x - ((y2-y1)/(x2-x1))*x1) + y1;\r\n }\r\n }\r\n if (parameterInputData) {\r\n const parametersDataByTreatment = parameterInputData.filter(data => {\r\n return data.id === avgData.id;\r\n });\r\n parametersDataByTreatment.forEach(inputDataItem => {\r\n if (inputDataItem) {\r\n convertedParameterData.push({\r\n VS: y,\r\n MD: avgData.avgMD,\r\n yValue: inputDataItem.paramValue,\r\n paramName: inputDataItem.paramName,\r\n treatmentName: inputDataItem.name,\r\n unit: inputDataItem.paramUnit\r\n });\r\n }\r\n })\r\n }\r\n });\r\n // set parameter data\r\n const parameterData = convertedParameterData.map(item => ({\r\n id: log.id,\r\n name: item.paramName,\r\n treatmentName: item.treatmentName,\r\n unit: item.unit,\r\n xValue: item.VS,\r\n yValue: item.yValue,\r\n avgMDValue: item.MD\r\n }));\r\n allParameterData = allParameterData.concat(parameterData);\r\n\r\n const noEqualVSItems = []\r\n convertedParameterData.forEach(item => {\r\n const equalXValueItem = convertedLogData.find(paramItem => paramItem.VS === item.VS);\r\n if (!equalXValueItem) {\r\n let yVal = null;\r\n // find smaller depth\r\n const smallerVSItem = findLast(convertedLogData, (paramItem) => {\r\n return paramItem.VS < item.VS;\r\n });\r\n // find greater depth\r\n const greaterVSItem = find(convertedLogData, (paramItem) => {\r\n return paramItem.VS > item.VS;\r\n });\r\n if (smallerVSItem && greaterVSItem) {\r\n const x1 = smallerVSItem.VS;\r\n const y1 = smallerVSItem.yValue;\r\n const x2 = greaterVSItem.VS;\r\n const y2 = greaterVSItem.yValue;\r\n const x = item.VS;\r\n yVal = (((y2-y1)/(x2-x1))*x - ((y2-y1)/(x2-x1))*x1) + y1;\r\n noEqualVSItems.push({\r\n VS: item.VS,\r\n MD: item.MD,\r\n yValue: yVal\r\n });\r\n }\r\n }\r\n });\r\n console.log('not equal = ', noEqualVSItems);\r\n if (!isEmpty(noEqualVSItems)) {\r\n convertedLogData = convertedLogData.concat(noEqualVSItems);\r\n }\r\n // set log curve data\r\n const curveData = convertedLogData.map(item => ({\r\n id: log.id,\r\n name: log.name,\r\n xValue: item.VS,\r\n yValue: item.yValue\r\n }));\r\n allCurveData = allCurveData.concat(curveData)\r\n });\r\n\r\n return {\r\n curveData: allCurveData,\r\n parameterData: allParameterData\r\n };\r\n }\r\n\r\n parseDataByMeasuredDepth(\r\n logCurves: ILogCurvesParam[], treatmentAvgMDItems: any[],\r\n trajectoryData: any[], parameterInputData: any[]\r\n ): IResTreatmentLogParser {\r\n // parse log data curve\r\n // interpolate and find the value corresponding VS\r\n // (y2-y1)/(x2-x1) = (y-y1)/(x-x1)\r\n // find available depth range by trajectoryData\r\n const indexItemVSEqual0 = findLastIndex(trajectoryData, (item) => {\r\n return item.VS === 0;\r\n });\r\n const firstItem = trajectoryData[indexItemVSEqual0];\r\n const lastItem = trajectoryData[trajectoryData.length - 1];\r\n let allCurveData: IDataPoint[] = [];\r\n let allParameterData: IDataPoint[] = [];\r\n logCurves.forEach(log => {\r\n const logCurveData = log.values;\r\n let convertedLogData = [];\r\n logCurveData.forEach(dataRow => {\r\n const logCurveMD = dataRow[0];\r\n\r\n convertedLogData.push({\r\n MD: logCurveMD,\r\n yValue: dataRow[1]\r\n });\r\n });\r\n\r\n logCurveData.forEach(dataRow => {\r\n const logCurveMD = dataRow[0];\r\n // find equal depth\r\n let y = null;\r\n const equalDepthTrajectoryItem = find(treatmentAvgMDItems, (item) => {\r\n return item.avgMD === logCurveMD && item.avgMD >= logCurveData[0].MD && item.avgMD <= logCurveData[logCurveData.length - 1].MD;\r\n });\r\n if (equalDepthTrajectoryItem) {\r\n y = equalDepthTrajectoryItem.avgMD;\r\n } else {\r\n // find smaller depth\r\n const smallerDepthTrajectoryItem = findLast(treatmentAvgMDItems, (item) => {\r\n return item.avgMD < logCurveMD && item.avgMD >= logCurveData[0].MD && item.avgMD <= logCurveData[logCurveData.length - 1].MD;\r\n });\r\n // find greater depth\r\n const greaterDepthTrajectoryItem = find(treatmentAvgMDItems, (item) => {\r\n return item.avgMD > logCurveMD && item.avgMD >= logCurveData[0].MD && item.avgMD <= logCurveData[logCurveData.length - 1].MD;\r\n });\r\n if (smallerDepthTrajectoryItem && greaterDepthTrajectoryItem) {\r\n const x1 = smallerDepthTrajectoryItem.avgMD;\r\n const y1 = dataRow[1];\r\n const x2 = greaterDepthTrajectoryItem.avgMD;\r\n const y2 = dataRow[1];\r\n const x = logCurveMD;\r\n y = (((y2-y1)/(x2-x1))*x - ((y2-y1)/(x2-x1))*x1) + y1;\r\n }\r\n }\r\n convertedLogData.push({\r\n MD: y,\r\n yValue: dataRow[1]\r\n });\r\n });\r\n\r\n // parse parameter data\r\n const convertedParameterData = [];\r\n treatmentAvgMDItems.forEach(avgData => {\r\n\r\n if (parameterInputData) {\r\n const parametersDataByTreatment = parameterInputData.filter(data => {\r\n return data.id === avgData.id;\r\n });\r\n parametersDataByTreatment.forEach(inputDataItem => {\r\n if (inputDataItem) {\r\n convertedParameterData.push({\r\n MD: avgData.avgMD,\r\n yValue: inputDataItem.paramValue,\r\n paramName: inputDataItem.paramName,\r\n treatmentName: inputDataItem.name,\r\n unit: inputDataItem.paramUnit\r\n });\r\n }\r\n })\r\n }\r\n });\r\n // set parameter data\r\n const parameterData = convertedParameterData.map(item => ({\r\n id: log.id,\r\n name: item.paramName,\r\n treatmentName: item.treatmentName,\r\n unit: item.unit,\r\n xValue: item.MD,\r\n yValue: item.yValue,\r\n avgMDValue: item.MD\r\n }));\r\n allParameterData = allParameterData.concat(parameterData);\r\n // set log curve data\r\n const curveData = convertedLogData.map(item => ({\r\n id: log.id,\r\n name: log.name,\r\n xValue: item.MD,\r\n yValue: item.yValue\r\n })).reverse();\r\n allCurveData = allCurveData.concat(curveData);\r\n });\r\n\r\n return {\r\n curveData: allCurveData,\r\n parameterData: allParameterData\r\n };\r\n }\r\n\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../core/services';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class TreatmentLogTemplateService {\r\n prefixPath = `/wells`;\r\n\r\n constructor(\r\n private apiService: ApiService\r\n ) { }\r\n\r\n getTemplates() {\r\n return this.apiService.get(`${this.prefixPath}/scatterPlotTemplates`).pipe(map(res => res.result));\r\n }\r\n\r\n createTemplate(body) {\r\n return this.apiService.post(`${this.prefixPath}/scatterPlotTemplates`, body);\r\n }\r\n\r\n updateTemplate(plotTemplateId, body) {\r\n let param = new HttpParams();\r\n param = param.set('plotTemplateId', plotTemplateId);\r\n\r\n return this.apiService.put(`${this.prefixPath}/scatterPlotTemplates/${plotTemplateId}`, body, null, null, param);\r\n }\r\n\r\n deleteTemplate(id) {\r\n return this.apiService.delete(`${this.prefixPath}/scatterPlotTemplates/${id}`);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport interface IComparePadViewData {\r\n padName: string;\r\n isPadWell: boolean;\r\n}\r\n\r\n@Injectable()\r\nexport class TreatmentSettingsService {\r\n inputData: IComparePadViewData;\r\n\r\n constructor() { }\r\n\r\n setInputData(inputData: IComparePadViewData): void {\r\n this.inputData = inputData;\r\n }\r\n\r\n getInputData(): IComparePadViewData {\r\n return this.inputData;\r\n }\r\n\r\n resetData() {\r\n this.inputData = null;\r\n }\r\n\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { isEmpty, isNil } from 'lodash';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { catchError, map, switchMap, tap } from 'rxjs/operators';\r\nimport { ApiService } from '../../core/services/api.service';\r\nimport { Helper } from '../helpers/helper';\r\n\r\n@Injectable()\r\nexport class TreatmentService {\r\n\r\n constructor(\r\n private apiService: ApiService\r\n ) { }\r\n\r\n public static COMPARE_CHANNEL_PROP = ['wellId', 'treatmentId', 'cName', 'isShowBourdetDer', 'isRealTime', 'isSmoothData'];\r\n prefixPath = `/wells/treatments`;\r\n prefixWellsPath = `/wells`;\r\n\r\n private toUrlQueryString(queryParams) {\r\n let queryString = '';\r\n if (typeof queryParams === 'object' && queryParams !== null) {\r\n queryString = '?';\r\n const keysData = Object.keys(queryParams);\r\n keysData.forEach((key, index) => {\r\n queryString = queryString + key + '=' + queryParams[key];\r\n if (index !== keysData.length - 1) {\r\n queryString = queryString + '&';\r\n }\r\n });\r\n }\r\n return queryString;\r\n }\r\n\r\n handleToggleLiveButton() {\r\n // handle show live icon\r\n return this.getRealTimeTreatmentInProgress()\r\n .pipe(tap((res) => {\r\n this.handleMenuRealtime(res.result);\r\n }));\r\n }\r\n\r\n public handleMenuRealtime(treatmentInProgress: any[]): void {\r\n const menuRealtime = document.querySelector('a[title=\"Realtime\"]');\r\n if (menuRealtime) {\r\n if (treatmentInProgress && treatmentInProgress.length > 0) {\r\n if ((' ' + menuRealtime.className + ' ').indexOf(' menu-realtime ') === -1) {\r\n menuRealtime.classList.add('menu-realtime');\r\n }\r\n } else {\r\n menuRealtime.classList.remove('menu-realtime');\r\n }\r\n }\r\n }\r\n\r\n createWellManual(param: any, finalize?: VoidFunction) {\r\n return this.apiService.post(`${this.prefixWellsPath}/createManual`, param, finalize);\r\n }\r\n\r\n getWellDetail(wellId: number) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}`);\r\n }\r\n\r\n suggestWellApi(companyId, queryText) {\r\n let param = new HttpParams();\r\n param = param.set('input', queryText.toString());\r\n if (companyId) {\r\n param = param.set('companyId', companyId);\r\n }\r\n return this.apiService.get(`${this.prefixPath}/suggestWellAPI`, param);\r\n }\r\n\r\n getCurrentWellInfo(wellId: string) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/getCurrentInfo`);\r\n }\r\n\r\n getListCompanyByType(type: number) {\r\n let param = new HttpParams();\r\n param = param.set('type', type.toString());\r\n return this.apiService.get(`/companies/getByType`, param);\r\n }\r\n\r\n uploadXMLCreateWell(file) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return this.apiService.postFile(`${this.prefixWellsPath}/createByXML`, formData, {\r\n reportProgress: true,\r\n observe: 'events'\r\n });\r\n }\r\n\r\n uploadTreatmentFile(file, queryParams?) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n\r\n return this.apiService.postFile(`${this.prefixWellsPath}/${queryParams.wellId}/treatments/${queryParams.treatmentId}/csv`, formData);\r\n }\r\n\r\n deleteTreatmentFile(wellId: number, treatmentId: number, csvFileName: string) {\r\n let param = new HttpParams();\r\n if (csvFileName) {\r\n param = param.set('fileName', csvFileName);\r\n }\r\n return this.apiService.deleteParam(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/csv`, param);\r\n }\r\n\r\n getListTreatments(wellId) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments`);\r\n }\r\n\r\n getTreatment(wellId, treatmentId, isAll = 'false') {\r\n let param = new HttpParams();\r\n param = param.set('isAll', isAll);\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/realtime`, param);\r\n }\r\n\r\n createTreatmentManual(wellId: number, param: any, finalize?: VoidFunction) {\r\n return this.apiService.post(`${this.prefixWellsPath}/${wellId}/treatments/createTreatmentManual`, param, finalize);\r\n }\r\n\r\n updateTreatment(queryParams, dataParam: any, finalize?: VoidFunction) {\r\n return this.apiService.patch(`${this.prefixWellsPath}/${queryParams.wellId}/treatments/${queryParams.treatmentId}`, dataParam, finalize);\r\n }\r\n\r\n getAllRealTimeTreatment(page: number, pageSize: number) {\r\n let param = new HttpParams();\r\n param = param.set('page', page.toString());\r\n param = param.set('pageSize', pageSize.toString());\r\n return this.apiService.get(`${this.prefixPath}/getAllRealTimeTreatmentPaging`, param);\r\n }\r\n\r\n getRecentRealTimeTreatment(isFieldEngineer: boolean) {\r\n if (isFieldEngineer) {\r\n return this.apiService.get(`${this.prefixPath}/getRecentRealTimeTreatment?role=Field%20Engineer`);\r\n } else {\r\n return this.apiService.get(`${this.prefixPath}/getRecentRealTimeTreatment`);\r\n }\r\n }\r\n\r\n getRealTimeTreatmentInProgress() {\r\n return this.apiService.get(`${this.prefixPath}/inProgress`);\r\n }\r\n\r\n getRealTimeTreatmentInProgressPaging(page: number, pageSize: number) {\r\n let param = new HttpParams();\r\n param = param.set('page', page.toString());\r\n param = param.set('pageSize', pageSize.toString());\r\n return this.apiService.get(`${this.prefixPath}/inProgressPaging`, param);\r\n }\r\n\r\n public getTreatmentInProgressData(): Observable {\r\n return this.apiService.get(`${this.prefixPath}/inProgressData`)\r\n .pipe(switchMap(response => {\r\n if (response && response.result) return of(response.result);\r\n else return of([]);\r\n }));\r\n }\r\n\r\n public getTreatmentInProgressDataPaging(page: number, pageSize: number): Observable<{ totalCount: number, items: any[] }> {\r\n let param = new HttpParams();\r\n param = param.set('page', page.toString());\r\n param = param.set('pageSize', pageSize.toString());\r\n\r\n return this.apiService.get(`${this.prefixPath}/inProgressDataPaging`, param)\r\n .pipe(switchMap(response => {\r\n if (response && response.result) return of(response.result);\r\n else return of({ totalCount: 0, items: [] });\r\n }));\r\n }\r\n\r\n getRealtimeChannels(wellId, treatmentId) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/channels`).map(res => this.filterRealtimeChannel(res));\r\n }\r\n\r\n getFracProChannels(wellId, treatmentId, flowPathType?: number) {\r\n flowPathType = typeof flowPathType === 'number' && !isNaN(flowPathType) ? flowPathType : 0;\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/flowpaths/${flowPathType}/channels`);\r\n }\r\n\r\n private filterRealtimeChannel(resData) {\r\n const filterChannel = channel => {\r\n if (channel.name.includes('_BD')) return false;\r\n if (channel.name.includes('_Smth')) return false;\r\n if (!channel.cName) return false;\r\n\r\n return true;\r\n };\r\n resData.result.items = resData.result.items.filter(x => filterChannel(x));\r\n return resData;\r\n }\r\n\r\n getChannelsForSettings(wellId: number, treatmentId: number, flowPathType: number = 0, isMonitor?: boolean) {\r\n const fracProChannels$ = !isMonitor ? this.getFracProChannels(wellId, treatmentId, flowPathType).pipe(catchError(err => of({}))) : of([]);\r\n return forkJoin(\r\n this.getRealtimeChannels(wellId, treatmentId).pipe(catchError(err => of({}))),\r\n fracProChannels$\r\n ).pipe(map(response => {\r\n const isNull = !response || !response.length;\r\n return {\r\n realtimeChannels: isNull ? [] : Helper.getList(response[0], 'result.items'),\r\n fracProChannels: isNull ? [] : Helper.getList(response[1], 'result')\r\n };\r\n }));\r\n }\r\n\r\n getListTreatment(wellId: number) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/getListTreatment`);\r\n }\r\n\r\n getTreatmentData(wellId: number, treatmentId: number): Observable {\r\n if (!wellId || !treatmentId) return of(null)\r\n\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}//treatments/${treatmentId}/data`)\r\n .pipe(map(response => { return !response || !response.result ? null : response.result; }));\r\n }\r\n\r\n getTreatmentsData(wellId: number, treatmentIds: number[]): Observable {\r\n if (!treatmentIds || !treatmentIds.length) return of([])\r\n\r\n const body = { treatments: treatmentIds };\r\n return this.apiService.post(`${this.prefixWellsPath}/${wellId}/treatments/data`, body)\r\n .pipe(map(response => { return !response || !response.result ? [] : response.result; }));\r\n }\r\n\r\n getTreatmentDetail(wellId: number, treatmentId: number) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/details`);\r\n }\r\n\r\n getTreatmentDetailWebApi(wellId: number, treatmentId: number) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}`);\r\n }\r\n\r\n updateChannel(params, queryParams?, finalize?: VoidFunction) {\r\n return this.apiService.put(`${this.prefixWellsPath}/${queryParams.wellId}/treatments/${queryParams.treatmentId}/channels`, params, finalize);\r\n }\r\n\r\n checkDuplicateUpdateChannel(params, queryParams?, finalize?: VoidFunction) {\r\n return this.apiService.put(`${this.prefixWellsPath}/${queryParams.wellId}/treatments/${queryParams.treatmentId}/checkDuplicateUpdateChannel`, params, finalize);\r\n }\r\n\r\n updateInProgress(wellId, treatmentId, params, finalize?: VoidFunction) {\r\n return this.apiService.put(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/updateInProgress`, params, finalize);\r\n }\r\n\r\n checkDataStatus(url) {\r\n return this.apiService.get(url, null, { overrideBaseUrl: true });\r\n }\r\n\r\n getListFlowPaths(wellId: number, treatmentId: number) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/flowPaths/getList`);\r\n }\r\n\r\n getChannelsMinMax(wellId: number, treatmentId: number, flowpathType: number, cNames: string[]) {\r\n return this.apiService.post(`/wells/${wellId}/treatments/${treatmentId}/getMinMax?flowpathType=${flowpathType}`, { items: cNames });\r\n }\r\n getChannelsMinMaxEquipment(equipmentId: number, cNames: string[]) {\r\n const param: any = {\r\n items: cNames\r\n };\r\n return this.apiService.post(`/companies/equipments/${equipmentId}/getMinMax`, param);\r\n }\r\n getCompareChannelsMinMax(channels: string[], wells: { wellId: number; treatmentId: number; flowPathType: number }[]) {\r\n const param: any = {\r\n channels,\r\n wells\r\n };\r\n return this.apiService.post(`${this.prefixPath}/getMinMax`, param);\r\n }\r\n\r\n uploadDataFiles(file: any, queryParams) {\r\n let path = `${this.prefixPath}/uploadFile`;\r\n if (typeof queryParams === 'object' && queryParams !== null) {\r\n const queryString = this.toUrlQueryString(queryParams);\r\n path = path + queryString;\r\n }\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n return this.apiService.postFile(`${path}`, formData);\r\n }\r\n\r\n getDataFiles(wellId: number, treatmentId: number) {\r\n let param = new HttpParams();\r\n if (wellId) {\r\n param = param.set('wellId', wellId.toString());\r\n }\r\n if (treatmentId) {\r\n param = param.set('treatmentId', treatmentId.toString());\r\n }\r\n return this.apiService.get(`${this.prefixPath}/getDataFile`, param);\r\n }\r\n\r\n deleteDataFiles(paramObject: any, finalize?: VoidFunction) {\r\n let param = new HttpParams();\r\n if (paramObject.wellId) {\r\n param = param.set('wellId', paramObject.wellId.toString());\r\n }\r\n param = param.set('id', paramObject.id.toString());\r\n if (paramObject.treatmentId) {\r\n param = param.set('treatmentId', paramObject.treatmentId.toString());\r\n }\r\n return this.apiService.deleteParam(`${this.prefixPath}/deleteFile`, param, finalize);\r\n }\r\n\r\n checkIsViewDataFile(serviceCompany: string, operatorCompany: string) {\r\n let param = new HttpParams();\r\n if (serviceCompany) {\r\n param = param.set('serviceName', serviceCompany);\r\n }\r\n if (operatorCompany) {\r\n param = param.set('operatorName', operatorCompany);\r\n }\r\n return this.apiService.get(`${this.prefixPath}/checkIsViewDataFile`, param);\r\n }\r\n\r\n deleteTreatment(wellId, treatmentId) {\r\n return this.apiService.delete(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}`);\r\n }\r\n\r\n getListComments(wellId: number, treatmentId: number) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/comments`);\r\n }\r\n\r\n checkSeperateRealTimeData(wellId: number, treatmentId: number) {\r\n return this.apiService.get(`${this.prefixWellsPath}/${wellId}/treatments/${treatmentId}/checkSeperateRealTimeData`);\r\n }\r\n\r\n updateWellAliasName(wellId: number, aliasName: string) {\r\n let param = new HttpParams();\r\n param = param.set('wellId', wellId.toString());\r\n param = param.set('aliasName', aliasName);\r\n return this.apiService.put(`${this.prefixWellsPath}/updateAliasWellName`, {}, null, null, param);\r\n }\r\n\r\n}\r\n","import { formatNumber } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { isNil } from 'lodash';\r\nimport { ApiService } from '../../core/services';\r\nimport { UserAuthService } from './user-auth.service';\r\n\r\nexport class UnitsCoefficient {\r\n name: string;\r\n units: string[];\r\n m: number[];\r\n c: number[];\r\n}\r\n\r\n@Injectable()\r\nexport class UnitSystemService {\r\n\r\n private coefficientData: UnitsCoefficient[] = [];\r\n\r\n constructor(private apiService: ApiService,\r\n private userAuthService: UserAuthService) {\r\n this.ensureCoefficient();\r\n }\r\n\r\n ensureCoefficient() {\r\n if (this.coefficientData.length) return;\r\n const localData = this.loadUnitSystem();\r\n if (localData && localData.length) this.coefficientData = localData;\r\n else {\r\n this.apiService.get('/Setting/unitConverter').subscribe(res => {\r\n this.coefficientData = res.result;\r\n this.setUnitSystem(res.result);\r\n }, err => {\r\n //\r\n });\r\n }\r\n }\r\n\r\n convert(value: number, measurementName: string, unit?: number): number {\r\n const convertUnit = unit === null || unit === undefined ? this.loadUnitSettings() : unit;\r\n if (!convertUnit) return value;\r\n const coefficient = this.getCoefficient(measurementName);\r\n if (coefficient === null || coefficient === undefined) return value;\r\n return value * coefficient.m[convertUnit] + coefficient.c[convertUnit];\r\n }\r\n\r\n convertValue(value: number, coefficient: {m: number, c: number}): number {\r\n return value * coefficient.m + coefficient.c;\r\n }\r\n\r\n revert(value: number, measurementName: string, unit?: number): number {\r\n const convertUnit = unit === null || unit === undefined ? this.loadUnitSettings() : unit;\r\n if (!convertUnit) return value;\r\n const coefficient = this.getCoefficient(measurementName);\r\n if (coefficient === null || coefficient === undefined) return value;\r\n return (value - coefficient.c[convertUnit]) / coefficient.m[convertUnit];\r\n }\r\n\r\n revertValue(value: number, coefficient: {m: number, c: number}): number {\r\n return (value - coefficient.c) / coefficient.m;\r\n }\r\n\r\n getUnit(measurementName: string, unitTarget?: number, unitSource?: string): string {\r\n const convertUnit = unitTarget === null || unitTarget === undefined ? this.loadUnitSettings() : unitTarget;\r\n if (convertUnit === null || convertUnit === undefined) return unitSource;\r\n if (convertUnit === 0 && unitSource) return unitSource;\r\n const coefficient = this.getCoefficient(measurementName);\r\n if (coefficient === null || coefficient === undefined) return undefined;\r\n return coefficient.units[convertUnit];\r\n }\r\n\r\n getDefaultOptions() {\r\n return [\r\n { id: 0, text: 'Oil field'},\r\n { id: 1, text: 'Metric bar'},\r\n { id: 2, text: 'Metric kpa'},\r\n { id: 3, text: 'Metric mpa'},\r\n { id: 4, text: 'Metric atm'},\r\n ];\r\n }\r\n\r\n private getCoefficient(measurement: string): UnitsCoefficient | null {\r\n if (!this.coefficientData.length) return null;\r\n for (const c of this.coefficientData) {\r\n if (c.name === measurement) return c;\r\n }\r\n return null;\r\n }\r\n\r\n getUnitCoefficient(measureType: string, unitSetting: number): {m: number, c: number, unit: string} {\r\n if (measureType && measureType.trim() && !!unitSetting) {\r\n const coefficient = this.getCoefficient(measureType);\r\n if (coefficient !== null && coefficient !== undefined) return { m: coefficient.m[unitSetting], c: coefficient.c[unitSetting], unit: coefficient.units[unitSetting] };\r\n else return undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n setUnitSettings(value: number) {\r\n localStorage.setItem('unit-settings', value.toString());\r\n }\r\n\r\n loadUnitSettings(): number {\r\n try {\r\n const stringData = localStorage.getItem('unit-settings');\r\n if (!isNil(stringData)) return parseInt(stringData, 10);\r\n else {\r\n const userInfo = this.userAuthService.getUserInfo();\r\n if (userInfo && !isNil(userInfo.unitSystem)) {\r\n this.setUnitSettings(userInfo.unitSystem);\r\n return userInfo.unitSystem;\r\n }\r\n else return 0;\r\n }\r\n } catch (error) {\r\n return 0;\r\n }\r\n }\r\n\r\n setUnitSystem(value) {\r\n localStorage.setItem('unit-system', JSON.stringify(value));\r\n }\r\n\r\n loadUnitSystem(): UnitsCoefficient[] {\r\n try {\r\n const stringData = localStorage.getItem('unit-system');\r\n return JSON.parse(stringData);\r\n } catch (error) {\r\n return [];\r\n }\r\n }\r\n\r\n getFractionDigits(value, decimal?: number): number {\r\n if (!value) return isNil(decimal) ? 0 : decimal;\r\n else {\r\n if (!isNil(decimal)) return decimal;\r\n else {\r\n const arr: string[] = value.toString().split('.');\r\n if (!arr.length || arr.length < 2) return 0;\r\n else return arr[1].length;\r\n }\r\n }\r\n }\r\n\r\n getValueConvert(measureType: string, value, decimal?: number): number | string {\r\n const fractionDigits = this.getFractionDigits(value, decimal);\r\n\r\n const parseValue = (val: number) => {\r\n if (Number.isInteger(val)) return val;\r\n else return formatNumber(Number(val), 'en-US', `1.0-${fractionDigits}`);\r\n }\r\n\r\n if ((typeof value === 'string' && isNaN(Number(value))) || isNaN(value)) return value;\r\n else if (isNil(measureType) || !measureType.length) return parseValue(value);\r\n else return parseValue(this.convert(value, measureType));\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { CookieStorageService } from '../../core/services';\r\nimport { Router } from '@angular/router';\r\nimport { BehaviorSubject, throwError, Observable, from } from 'rxjs';\r\nimport { distinctUntilChanged, catchError, map, switchMap, tap } from 'rxjs/operators';\r\nimport { User } from '../models';\r\nimport { UserService } from './user.service';\r\nimport { BroadcastService, MsalService } from '@azure/msal-angular';\r\nimport { InteractionRequiredAuthError, ServerError } from 'msal';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {Driver, NgForage, NgForageCache} from 'ngforage';\r\n\r\n\r\n@Injectable()\r\nexport class UserAuthService {\r\n private currentUserSubject = new BehaviorSubject(null as User);\r\n public currentUser = this.currentUserSubject.asObservable().pipe(distinctUntilChanged());\r\n public currentTokenSubject = new BehaviorSubject('');\r\n private readonly JWT_TOKEN = 'jwtToken';\r\n private readonly REFRESH_TOKEN = 'REFRESH_TOKEN';\r\n constructor(\r\n private cookieStorageService: CookieStorageService,\r\n private router: Router,\r\n private userService: UserService,\r\n private authService: MsalService,\r\n private cookieService: CookieService,\r\n private readonly ngf: NgForage,\r\n private readonly cache: NgForageCache,\r\n ) { \r\n this.currentTokenSubject = new BehaviorSubject(localStorage.getItem(this.JWT_TOKEN));\r\n this.ngf.name = 'FracProAI';\r\n this.cache.driver = Driver.INDEXED_DB;\r\n }\r\n\r\n async populateUser() {\r\n try {\r\n const response = await this.userService.getCurrentUser().toPromise();\r\n this.currentUserSubject.next(response.result);\r\n\r\n return response.result;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n public get currentTokenValue(): string {\r\n return this.currentTokenSubject.value;\r\n }\r\n setAuth(user) {\r\n // Save JWT sent from server in cookies\r\n if (user) {\r\n \r\n let expireTime = 60;\r\n if (user.idTokenClaims.exp) {\r\n expireTime = user.idTokenClaims.exp / 86400; // in day\r\n }\r\n this.setExpireInSeconds(expireTime);\r\n this.cache.setItem(this.JWT_TOKEN, user.accessToken);\r\n this.cookieStorageService.saveAccessToken(user.accessToken, expireTime);\r\n // this.populateUser();\r\n }\r\n }\r\n\r\n setExpireInSeconds(expireInSeconds: number) {\r\n this.cookieStorageService.setCookies('expireInSeconds', JSON.stringify(expireInSeconds), expireInSeconds);\r\n }\r\n\r\n purgeAuth() {\r\n // Remove JWT from cookies\r\n this.cookieStorageService.destroyAccessToken();\r\n // Set current user to an empty object\r\n this.currentUserSubject.next(null as User);\r\n // localStorage.clear();\r\n }\r\n\r\n isAuthenticated() {\r\n const accessToken = this.cookieStorageService.getAccessToken();\r\n\r\n return !!(accessToken);\r\n }\r\n\r\n getUserInfo() {\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n isCarboUser() {\r\n return this.currentUserSubject.value &&\r\n this.currentUserSubject.value.companyType &&\r\n this.currentUserSubject.value.companyType.toLowerCase() === 'carbo';\r\n }\r\n resetSession(){\r\n \r\n \r\n this.currentTokenSubject.next(null);\r\n this.currentUserSubject.next(null);\r\n localStorage.clear();\r\n localStorage.removeItem(this.JWT_TOKEN);\r\n localStorage.removeItem(this.REFRESH_TOKEN);\r\n localStorage.removeItem('user');\r\n // this.cache.removeCached(this.JWT_TOKEN);\r\n this.cookieStorageService.destroyAccessToken();\r\n this.cookieStorageService.destroyUserId();\r\n }\r\n clearCookies() {\r\n const cookies = document.cookie.split(\";\");\r\n for (let i = 0; i < cookies.length; i++) {\r\n const cookie = cookies[i];\r\n const eqPos = cookie.indexOf(\"=\");\r\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\r\n document.cookie = name + \"=;expires=Thu, 01 Jan 1970 00:00:00 GMT\";\r\n }\r\n }\r\n logout() {\r\n // const accessToken = this.cookieStorageService.getAccessToken();\r\n // this.authService.clearCacheForScope(accessToken);\r\n \r\n // console.log(\"loggg==>\", accessToken)\r\n this.clearCookies();\r\n this.cookieStorageService.destroyAll();\r\n localStorage.clear();\r\n // console.log(\"loggg111==>\", accessToken)\r\n sessionStorage.clear();\r\n this.resetSession();\r\n \r\n this.purgeAuth();\r\n // console.log(\"loggg12221==>\", accessToken)\r\n this.authService.logout();\r\n \r\n \r\n // const accounts = this.authService.getAllAccounts()[0];\r\n // debugger;\r\n // this.authService.ssoSilent({loginHint: accounts.idTokenClaims.emails[0]})\r\n // .catch((err)=>{\r\n // if(accounts && err instanceof InteractionRequiredAuthError){\r\n // //this is a particularly dirty hack but doing this does give single sign out behavior that closes all sessions.\r\n // document.cookie = 'msal.interaction.status=; Max-Age=0';\r\n // this.authService.logout();\r\n // this.cookieStorageService.destroyAll();\r\n // sessionStorage.clear();\r\n // this.purgeAuth();\r\n // }else{\r\n // this.authService.logout();\r\n // this.cookieStorageService.destroyAll();\r\n // sessionStorage.clear();\r\n // this.purgeAuth();\r\n // }\r\n // });\r\n \r\n // const postLogoutRedirectUri = 'http://localhost:4200/pages/dashboard'; // Replace with your post logout redirect URI\r\n \r\n // this.authService.logout(postLogoutRedirectUri);\r\n // this.cookieStorageService.destroyAll();\r\n // sessionStorage.clear();\r\n // this.purgeAuth();\r\n \r\n // this.authService.logout();\r\n // this.cookieStorageService.destroyAll();\r\n // sessionStorage.clear();\r\n// this.authService.getPostLogoutRedirectUri();\r\n// const account = this.authService.getAllAccounts()[0];\r\n// console.log(\"account===>\", account.idTokenClaims.emails[0])\r\n// if (account) {\r\n// const request = {\r\n// // Try to get the session ID\r\n// loginHint: account.idTokenClaims.emails[0] // Fallback to login hint if sid is not available\r\n// };\r\n\r\n// // Attempt to silently log out the user\r\n// this.authService.ssoSilent(request)\r\n// .catch((err) => {\r\n// if (account && err instanceof InteractionRequiredAuthError) {\r\n// // Clear the MSAL interaction status cookie\r\n// document.cookie = 'msal.interaction.status=; Max-Age=0';\r\n// // Log out using MSAL\r\n// this.authService.logout();\r\n// }\r\n// });\r\n// } else {\r\n// // Log out directly if no account is found\r\n// this.authService.logout();\r\n// }\r\n\r\n// // Retrieve the access token from cookies\r\n// const accessToken = this.cookieStorageService.getAccessToken();\r\n// console.log(\"accessToken44444=>\", accessToken);\r\n \r\n// // Clear the cache for the retrieved access token\r\n// this.authService.clearCacheForScope(accessToken);\r\n \r\n// // Log out using MSAL (to ensure proper session termination)\r\n// this.authService.logout();\r\n \r\n// // Destroy all cookies related to authentication\r\n// this.cookieStorageService.destroyAll();\r\n \r\n// // Clear session storage\r\n// sessionStorage.clear();\r\n \r\n// // Purge any additional authentication-related information\r\n// this.purgeAuth();\r\n \r\n // this.router.navigate(['/auth/login']);\r\n }\r\n logout1(){\r\n \r\n // this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n // this.router.navigateByUrl(this.router.url);\r\n // });\r\n location.reload(); \r\n // this.router.navigate(['pages', '/']);\r\n // this.router.navigate(['/']);\r\n }\r\n// getToken(token){\r\n// console.log(\"too==>\", token)\r\n// const accountVal = token;\r\n// if (accountVal) {\r\n// this.authService.acquireTokenSilent({\r\n// scopes: ['https://prodlinqx.onmicrosoft.com/api_26m/scope_rw_26m.read'],\r\n// account: accountVal,\r\n// }).then((token) => {\r\n// console.log(\"tokkkkeeen====>\", token.accessToken)\r\n// this.storeJwtToken(token.accessToken)\r\n// // this.setCurUser();\r\n// });\r\n// }\r\n// }\r\ngetToken() {\r\n const accountVal = this.authService.getAccount();\r\n if (accountVal) {\r\n return this.authService.acquireTokenSilent({\r\n scopes: ['https://prodlinqx.onmicrosoft.com/PROD_WebApi_Scope/prod_scp_rw'],\r\n account: accountVal,\r\n });\r\n } else {\r\n console.error(\"No account value provided.\");\r\n // Handle the case where no account value is provided\r\n }\r\n}\r\nrefreshToken() {\r\n return this.authService.acquireTokenSilent({\r\n scopes: ['https://prodlinqx.onmicrosoft.com/PROD_WebApi_Scope/prod_scp_rw'],\r\n account: this.authService.getAccount(),\r\n })\r\n // catchError(error => {\r\n // console.error('Error refreshing token:', error);\r\n // this.logout();\r\n // return throwError(error);\r\n // })\r\n // );\r\n}\r\n\r\n// public refreshToken(){\r\n// console.log(\"refresh===>\", this.authService.getAllAccounts)\r\n// return this.authService.acquireTokenSilent({\r\n// scopes: [' https://prodlinqx.onmicrosoft.com/DevAI_scp/DevAI_scp_rw'],\r\n// account: this.authService.getAccount(),\r\n// }).then((response)=>{\r\n// const accessToken = response.accessToken;\r\n// if (accessToken) {\r\n// this.storeJwtToken(accessToken);\r\n// }\r\n// });\r\n // this.authService.acquireTokenSilent({\r\n // scopes: ['https://prodlinqx.onmicrosoft.com/api_26m/scope_rw_26m'],\r\n // account: this.authService.getAllAccounts[0],\r\n // }).then((response) => {\r\n // console.log(\"Token1 Response:\", response);\r\n // const result = response;\r\n // const accessToken = response.accessToken;\r\n // if (accessToken) {\r\n // console.log(\"Refresh Token:\", accessToken);\r\n // this.storeJwtToken(accessToken);\r\n // // this.setAuth(result);\r\n // // Call any additional functions or handle the token as needed\r\n // } else {\r\n // console.error(\"No access token found in token response.\");\r\n // }\r\n // }).catch((error) => {\r\n // console.error(\"Error acquiring token silently:\", error);\r\n // console.log(\"err===>\", error.InteractionRequiredAuthError)\r\n // if (error instanceof InteractionRequiredAuthError || ServerError) {\r\n // console.log(\"User interaction is required. Prompting user to sign in.\");\r\n // // Prompt the user to sign in interactively\r\n // // this.authService.loginPopup();\r\n \r\n // } else {\r\n // // Handle other errors appropriately\r\n // console.error(\"Unhandled error:\", error);\r\n // }\r\n // });\r\n // } else {\r\n // console.error(\"No account value provided.\");\r\n // // Handle the case where no account value is provided\r\n // }\r\n\r\n\r\npublic storeJwtToken(jwt: string) {\r\n localStorage.setItem(this.JWT_TOKEN, jwt);\r\n\r\n this.currentTokenSubject.next(jwt);\r\n // return this.cache.setItem(this.JWT_TOKEN, jwt);\r\n this.cookieStorageService.setItem(this.JWT_TOKEN, jwt);\r\n}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { User } from '../models';\r\nimport { isArray } from 'util';\r\nimport { UserRoleType } from '../../shared/helpers/app.constants';\r\n\r\n@Injectable()\r\nexport class UserRolesService {\r\n\r\n constructor() { }\r\n\r\n toUserRole(user: User) {\r\n if (user && isArray(user.roles)) {\r\n return user.roles[0];\r\n }\r\n return '';\r\n }\r\n\r\n isCarboAdmin(role: string) {\r\n return role.toLowerCase() === UserRoleType.carboAdmin;\r\n }\r\n\r\n isClientAdmin(role: string) {\r\n return role.toLowerCase() === UserRoleType.clientAdmin;\r\n }\r\n\r\n isAdmin(role: string) {\r\n return this.isCarboAdmin(role) || this.isClientAdmin(role);\r\n }\r\n\r\n isFieldEngineer(role: string) {\r\n return role.toLowerCase() === UserRoleType.fieldEngineer;\r\n }\r\n\r\n isDataEngineer(role: string) {\r\n return role.toLowerCase() === UserRoleType.dataEngineer;\r\n }\r\n\r\n isAnalyst(role: string) {\r\n return role.toLowerCase() === UserRoleType.analyst;\r\n }\r\n\r\n getRoles() {\r\n return [\r\n { name: 'Analyst', value: 'Analyst' },\r\n { name: 'Data Engineer', value: 'Data Engineer' },\r\n { name: 'Field Engineer', value: 'Field Engineer' },\r\n { name: 'Admin', value: 'Carbo Admin' },\r\n { name: 'Admin', value: 'Admin' },\r\n ];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../core/services';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class UserService {\r\n userProfilePath = `/userProfile`;\r\n\r\n constructor(private apiService: ApiService) { }\r\n\r\n getCurrentUser(): Observable {\r\n return this.apiService.get(`${this.userProfilePath}`);\r\n }\r\n updateCurrentUser(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.put(`${this.userProfilePath}`, param, finalize);\r\n }\r\n sendSupportRequest(param: any, finalize?: VoidFunction): Observable {\r\n return this.apiService.post(`${this.userProfilePath}/support`, param, finalize);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { first } from 'rxjs/operators';\r\n\r\nconst DEFAULT_HASH = 'DEFAULT_HASH_NO_CHANGE';\r\nconst INTERVAL_CHECK = 1000 * 60 * 5; // 5 minutes\r\n\r\n@Injectable()\r\nexport class VersionBuildCheckService {\r\n\r\n // this will be replaced by actual hash post-build.js\r\n private currentHash = DEFAULT_HASH;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Checks in every set frequency the version of frontend application\r\n * @param url\r\n * @param {number} frequency - in milliseconds, defaults to 5 minutes\r\n */\r\n public initVersionCheck(url, callbackVersionChanged?, frequency = INTERVAL_CHECK) {\r\n this.checkVersion(url, callbackVersionChanged);\r\n // setInterval(() => {\r\n // this.checkVersion(url, callbackVersionChanged);\r\n // }, frequency);\r\n }\r\n\r\n /**\r\n * Will do the call and check if the hash has changed or not\r\n * @param url\r\n */\r\n public checkVersion(url, callbackVersionChanged?) {\r\n // timestamp these requests to invalidate caches\r\n this.http.get(url + '?t=' + new Date().getTime())\r\n .pipe(first())\r\n .subscribe(\r\n (response: any) => {\r\n const hash = response.hash;\r\n const hashChanged = this.hasHashChanged(this.currentHash, hash);\r\n\r\n // If new version, do something\r\n if (hashChanged) {\r\n if (typeof callbackVersionChanged === 'function') {\r\n callbackVersionChanged();\r\n }\r\n }\r\n // store the new hash so we wouldn't trigger versionChange again\r\n // only necessary in case you did not force refresh\r\n this.currentHash = hash;\r\n },\r\n (err) => {\r\n console.error(err, 'Could not get version');\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Checks if hash has changed.\r\n * This file has the JS hash, if it is a different one than in the version.json\r\n * we are dealing with version change\r\n * @param currentHash\r\n * @param newHash\r\n * @returns {boolean}\r\n */\r\n private hasHashChanged(currentHash, newHash) {\r\n if (!currentHash || currentHash === DEFAULT_HASH) {\r\n return false;\r\n }\r\n\r\n return currentHash !== newHash;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from '../../core/services';\r\nimport { map } from 'rxjs/operators';\r\nimport { WELL_SEARCH_OPTIONS } from '../helpers/app.constants';\r\nimport { forkJoin } from 'rxjs';\r\n\r\nexport interface ISettingItem {\r\n name: string;\r\n order: number;\r\n}\r\n\r\n@Injectable()\r\nexport class WellSearchSettingsService {\r\n prefixPath = `/filterSettings`;\r\n\r\n constructor(\r\n private apiService: ApiService\r\n ) { }\r\n\r\n getSettings() {\r\n return this.apiService.get(`${this.prefixPath}`).pipe(map(res => res.result));\r\n }\r\n\r\n createSetting(body: ISettingItem) {\r\n return this.apiService.post(`${this.prefixPath}`, body);\r\n }\r\n\r\n updateSettings(id, body: ISettingItem) {\r\n return this.apiService.put(`${this.prefixPath}?filterSettingId=${id}`, body);\r\n }\r\n\r\n deleteSetting(id) {\r\n return this.apiService.delete(`${this.prefixPath}?filterSettingId=${id}`);\r\n }\r\n\r\n getDefaultSettings() {\r\n return WELL_SEARCH_OPTIONS.filter(item => item.default);\r\n }\r\n\r\n createDefaultSettings() {\r\n const defaultItems = this.getDefaultSettings();\r\n const req$ = defaultItems.map((item, index) => {\r\n return this.createSetting({\r\n name: item.name,\r\n order: index\r\n });\r\n });\r\n\r\n return forkJoin(req$);\r\n }\r\n}\r\n","import { WellsCompareLogDataService } from './../pages/wells/wells-compare-log-data.service';\r\nimport { WellsCompareResolver } from './../pages/wells/wells-compare.resolver';\r\nimport { TreatmentSettingsService } from './services/treatment-settings.service';\r\nimport { WellsCompareDataService } from './../pages/wells/wells-compare-data.service';\r\nimport { CustomRelatedColumnComponent } from './components/custom-smart-table/custom-related-column.component';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ClickOutsideModule } from 'ng-click-outside';\r\nimport { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';\r\nimport { Ng2SmartTableModule } from 'ng2-smart-table';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { HighchartsChartModule } from 'highcharts-angular';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { NgxLoadingModule, ngxLoadingAnimationTypes } from 'ngx-loading';\r\nimport { NgxCleaveDirectiveModule } from 'ngx-cleave-directive';\r\nimport { UiSwitchModule } from 'ngx-toggle-switch';\r\nimport { Ng5SliderModule } from 'ng5-slider';\r\n\r\nimport { HeaderComponent } from './components/header/header.component';\r\n\r\nimport { SearchWellApiComponent } from './components/search-well-api/search-well-api.component';\r\nimport { DefaultLayoutComponent } from './layouts';\r\nimport { AuthGuardService, NoAuthGuardService, AdminGuardService, DataEngineerGuardService, ServiceCompanyGuardService } from './guards';\r\nimport { UserAuthService, UserService, CompaniesService, UserRolesService, PivotPointService, DiagnosticPointsService,\r\n ChannelMappingService, ToasterService, ChartsService, ChannelSelectionService, LoadingOverlayService, ChannelSettingsStorageService,\r\n NavbarScaleChartService, RealtimeTreatmentStorageService, LocalDataStorageService, FracproChannelsService, PlotTemplateService, VersionBuildCheckService,\r\n SearchWellOptionsStorageService, DiagnosticCompanyStorageService, ChannelMappingStorageService, FracproChannelStorageService\r\n} from './services';\r\nimport { ErrorMessageComponent, CompanySelectorComponent, InputTagsComponent, SelectChannelsComponent, DiagnosticPointsSelectComponent } from './components';\r\nimport { CompareWellsTimeControlComponent } from './components/compare-wells-time-control/compare-wells-time-control.component';\r\nimport { NoWhiteSpaceDirective } from './directives/no-white-space.directive';\r\nimport { DecimalFormatDirective } from './directives/decimal-format.directive';\r\nimport { SortableTableHeaderDirective } from './directives/sortable-table-header.directive';\r\nimport { ModalConfirmComponent } from './components/modals/confirm/modal-confirm.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { CustomColorComponent } from './components/custom-smart-table/custom-color.component';\r\nimport { EditCustomColorComponent } from './components/custom-smart-table/edit-custom-color.component';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\nimport { EditCustomInputNumberComponent } from './components/custom-smart-table/edit-custom-input-number';\r\nimport { EditCustomChannelsSelectComponent } from './components/custom-smart-table/edit-custom-channels-select.component';\r\nimport { CustomChannelsSelectComponent } from './components/custom-smart-table/custom-channels-select.component';\r\nimport { CustomDateComponent } from './components/custom-smart-table/custom-date.component';\r\nimport { CustomSwitchColumnComponent } from './components/custom-smart-table/custome-switch-column/custome-switch-column.component';\r\nimport { TreatmentService } from './services/treatment.service';\r\nimport { BaseChartService, RealtimeChartService, ScatterPlotParameterChartService, LogDataCurveParameterChartService, SingleWellMultiTreatmentChartService, MultiWellChartService } from './services/charts';\r\nimport { EllipsisLinesDirective } from './directives/ellipsis-lines.directive';\r\nimport { CompareWellsService } from './services/compare-wells.service';\r\nimport { PadService } from './services/pad.service';\r\nimport { CompareWellsTimeControlService } from './components/compare-wells-time-control/compare-wells-time-control.service';\r\nimport { ScrollbarChartSettingsService } from './services/scrollbar-chart-settings.service';\r\nimport { ThemesSettingsService } from './services/themes-settings.service';\r\nimport {\r\n MultiFlowDataChartComponent,\r\n SingleWellMultiTreatmentChartComponent, MultiWellChartComponent,\r\n ScatterPlotParameterChartComponent\r\n} from './components/charts';\r\nimport { TimeSettingsComponent } from './components/modals/time-settings/time-settings.component';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { InputNoUnsetDirective } from './directives/input-no-unset.directive';\r\nimport { InputNumberInRangeDirective } from './directives/input-number-in-range.directive';\r\nimport { RenameChannelComponent } from './components/rename-channel/rename-channel.component';\r\nimport { NumberValidator } from './validators/number.validator';\r\nimport { MultipleInputComponent } from './components/multiple-input/multiple-input.component';\r\nimport { CustomNumberComponent } from './components/custom-smart-table/custom-number.component';\r\nimport { CustomNumberDecimal1Component } from './components/custom-smart-table/custom-number-decimal-1.component';\r\nimport { CustomNumberDecimal3Component } from './components/custom-smart-table/custom-number-decimal-3.component';\r\nimport { ChannelSelectionComponent } from './components/modals/channel-selection/channel-selection.component';\r\nimport { ChannelSettingYaxisComponent } from './components/channel-setting-yaxis/channel-setting-yaxis.component';\r\nimport { ScatterPlotParameterSettingsComponent } from './components/modals/scatter-plot-parameter-settings/scatter-plot-parameter-settings.component';\r\nimport { PivotPointComponent } from './components/modals/pivot-point/pivot-point.component';\r\nimport { OffsetWellCompareComponent } from './components/modals/offset-well-compare/offset-well-compare.component';\r\nimport { ExportChartDropdownComponent } from './components/export-chart-dropdown/export-chart-dropdown.component';\r\nimport { PlotTemplateDropdownComponent } from './components/plot-template-dropdown/plot-template-dropdown.component';\r\nimport { PivotPointSelectComponent } from './components/pivot-point-select/pivot-point-select.component';\r\nimport { TreatmentPlotComponent } from './components/treatment-plot/treatment-plot.component';\r\nimport { TreatmentLogChartSettingsComponent } from './components/modals/treatment-log-chart-settings/treatment-log-chart-settings.component';\r\nimport { SelectParametersComponent } from './components/select-parameters/select-parameters.component';\r\nimport { TreatmentPlotService } from './components/treatment-plot/treatment-plot.service';\r\nimport { DataFilesService } from './services/data-files.service';\r\nimport { SessionService } from './services/session/session.service';\r\nimport { CompareOffsetChannelsService } from './services/compare-offset-channels.service';\r\nimport { DefaultDiagnosticPointsService } from './services/default-diagnostic-points.service';\r\nimport { TreatmentLogParserService } from './services/treatment-log-parser.service';\r\nimport { TreatmentLogTemplateService } from './services/treatment-log-template.service';\r\nimport { SelectMultiTreatmentsComponent } from './components/select-multi-treatments/select-multi-treatments.component';\r\nimport { TableWellsSelectionComponent } from './components/table-wells-selection/table-wells-selection.component';\r\nimport { WellsSelectionModalComponent } from './components/modals/wells-selection-modal/wells-selection-modal.component';\r\nimport { SelectItemsComponent } from './components/select-items/select-items.component';\r\nimport { SelectDesignActualComponent } from './components/select-design-actual/select-design-actual.component';\r\nimport { SearchWellListComponent } from './components/search-well-list/search-well-list.component';\r\nimport { WellListTableComponent } from '../pages/wells/well-list-table/well-list-table.component';\r\nimport { TreatmentLogTemplateDropdownComponent } from './components/treatment-log-template-dropdown/treatment-log-template-dropdown.component';\r\nimport { WellGridViewComponent } from './components/well-grid-view/well-grid-view.component';\r\nimport { SearchPadListComponent } from './components/search-pad-list/search-pad-list.component';\r\nimport { PadListTableComponent } from './../pages/pad/pad-list-table/pad-list-table.component';\r\n\r\nimport { SearchPadListService } from './components/search-pad-list/shared/services/search-pad-list.service';\r\nimport { SearchPadListControlService } from './components/search-pad-list/shared/services/search-pad-list-control.service';\r\nimport { HistoricalWellsService } from '../pages/manage/historical-wells/historical-wells.service';\r\nimport { SearchWellListService } from './components/search-well-list/search-well-list.service';\r\nimport { SearchWellListControlService } from './components/search-well-list/search-well-list-control.service';\r\nimport { WellSearchSettingsService } from './services/well-search-settings.service';\r\nimport { TreatmentPlotDataStoreService } from './components/treatment-plot/treatment-plot-data-store.service';\r\nimport { TreatmentPlotFdiService } from './components/treatment-plot/treatment-plot-fdi.service';\r\nimport { TreatmentPlotFdiApiService } from './components/treatment-plot/treatment-plot-fdi-api.service';\r\nimport { TreatmentPlotTimeConverterService } from './components/treatment-plot/treatment-plot-time-converter.service';\r\nimport { TreatmentPlotFdiStoreService } from './components/treatment-plot/treatment-plot-fdi-store.service';\r\nimport { TreatmentDetailsStorageService } from './services/storage/treatment-details-storage.service';\r\nimport { SearchPadPadOptionsStorageService } from './services/storage/search-pad-options-storage.service';\r\n\r\nimport { CountriesAndTimezonesService } from './services/countries-and-timezones/countries-and-timezones.service';\r\n\r\nimport { WellCompletionDatePipe } from './pipes/well-completion-date.pipe';\r\nimport { ConfirmTemplateModalComponent } from './components/modals/confirm-template-modal/confirm-template-modal.component';\r\nimport { TreatmentPlotFdiDropdownComponent } from './components/treatment-plot-fdi-dropdown/treatment-plot-fdi-dropdown.component';\r\nimport { FdiWellSelectionModalComponent } from './components/modals/fdi-well-selection-modal/fdi-well-selection-modal.component';\r\nimport { TreatmentPlotFdiInfoComponent } from './components/treatment-plot-fdi-info/treatment-plot-fdi-info.component';\r\nimport { BourdetDerivativeComponent } from './components/modals/bourdet-derivative/bourdet-derivative.component';\r\nimport {\r\n NbActionsModule,\r\n NbCardModule,\r\n NbLayoutModule,\r\n NbMenuModule,\r\n NbRouteTabsetModule,\r\n NbSearchModule,\r\n NbSidebarModule,\r\n NbTabsetModule,\r\n NbThemeModule,\r\n NbUserModule,\r\n NbCheckboxModule,\r\n NbPopoverModule,\r\n NbContextMenuModule,\r\n NbProgressBarModule,\r\n NbCalendarModule,\r\n NbCalendarRangeModule,\r\n NbStepperModule,\r\n NbButtonModule,\r\n NbInputModule,\r\n NbAccordionModule,\r\n NbDialogModule,\r\n NbWindowModule,\r\n NbListModule,\r\n NbAlertModule,\r\n NbSpinnerModule,\r\n NbRadioModule,\r\n NbSelectModule,\r\n NbTooltipModule,\r\n} from '@nebular/theme';\r\n\r\nimport {\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n NgbPaginationModule,\r\n NgbModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS } from 'ng-pick-datetime-moment/moment-adapter/moment-date-time-adapter.class';\r\nimport { OwlMomentDateTimeModule } from 'ng-pick-datetime-moment';\r\nimport { FDIParameterSelectComponent } from './components/modals/fdi-parameter-select/fdi-parameter-select.component';\r\nimport { CompareWellStorageService } from './services/storage/compare-wells-storage.service';\r\nimport { RealtimeTreatmentService } from '../pages/treatments/realtime/realtime-treatment/realtime-treatment.service';\r\nimport { PadRealtimeDataService } from '../pages/pad/pad-realtime-data.service';\r\nimport { PadRealtimeResolver } from '../pages/pad/pad-realtime.resolver';\r\nimport { UnitSystemService } from './services/unit-system.service';\r\n\r\nconst BASE_MODULES = [CommonModule, FormsModule, ReactiveFormsModule, ColorPickerModule, Ng2SmartTableModule, TextMaskModule, NgbModule];\r\n\r\nconst LIB_MODULES = [\r\n ClickOutsideModule,\r\n NgbDatepickerModule,\r\n NgbTimepickerModule,\r\n NgbPaginationModule,\r\n OwlDateTimeModule,\r\n OwlNativeDateTimeModule,\r\n OwlMomentDateTimeModule,\r\n NgSelectModule,\r\n HighchartsChartModule,\r\n NgxCleaveDirectiveModule,\r\n UiSwitchModule,\r\n Ng5SliderModule\r\n];\r\n\r\nconst NB_MODULES = [\r\n NbCardModule,\r\n NbLayoutModule,\r\n NbTabsetModule,\r\n NbRouteTabsetModule,\r\n NbMenuModule,\r\n NbUserModule,\r\n NbActionsModule,\r\n NbSearchModule,\r\n NbSidebarModule,\r\n NbCheckboxModule,\r\n NbPopoverModule,\r\n NbContextMenuModule,\r\n // NgbModule,\r\n // NbSecurityModule, // *nbIsGranted directive,\r\n NbProgressBarModule,\r\n NbCalendarModule,\r\n NbCalendarRangeModule,\r\n NbStepperModule,\r\n NbButtonModule,\r\n NbListModule,\r\n NbInputModule,\r\n NbAccordionModule,\r\n NbWindowModule,\r\n NbAlertModule,\r\n NbSpinnerModule,\r\n NbRadioModule,\r\n NbSelectModule,\r\n NbTooltipModule,\r\n];\r\n\r\nconst FOR_ROOT_MODULES = [\r\n NbDialogModule.forRoot(),\r\n ToastrModule.forRoot({\r\n preventDuplicates: true\r\n }),\r\n NgxLoadingModule.forRoot({\r\n animationType: ngxLoadingAnimationTypes.circle,\r\n primaryColour: '#007ea3',\r\n secondaryColour: '#ffffff',\r\n })\r\n];\r\n\r\nconst EXPORT_MODULES = [\r\n NgxLoadingModule\r\n];\r\n\r\nconst NB_THEME_PROVIDERS = [\r\n ...NbThemeModule.forRoot(\r\n {\r\n name: 'default',\r\n },\r\n ).providers,\r\n ...NbSidebarModule.forRoot().providers,\r\n ...NbMenuModule.forRoot().providers,\r\n ...NbDialogModule.forRoot().providers,\r\n ...NbWindowModule.forRoot().providers,\r\n];\r\n\r\nconst COMPONENTS = [\r\n HeaderComponent,\r\n DefaultLayoutComponent,\r\n ErrorMessageComponent,\r\n CompanySelectorComponent,\r\n SelectComponent,\r\n SearchWellApiComponent,\r\n MultiFlowDataChartComponent,\r\n SingleWellMultiTreatmentChartComponent,\r\n MultiWellChartComponent,\r\n ScatterPlotParameterChartComponent,\r\n ExportChartDropdownComponent,\r\n DiagnosticPointsSelectComponent,\r\n PlotTemplateDropdownComponent,\r\n PivotPointSelectComponent,\r\n TreatmentPlotComponent,\r\n TreatmentPlotFdiDropdownComponent,\r\n TreatmentPlotFdiInfoComponent,\r\n CompareWellsTimeControlComponent,\r\n TreatmentLogTemplateDropdownComponent,\r\n\r\n NoWhiteSpaceDirective,\r\n DecimalFormatDirective,\r\n SortableTableHeaderDirective,\r\n EllipsisLinesDirective,\r\n InputNoUnsetDirective,\r\n InputNumberInRangeDirective,\r\n RenameChannelComponent,\r\n InputTagsComponent,\r\n MultipleInputComponent,\r\n SelectChannelsComponent,\r\n ChannelSettingYaxisComponent,\r\n SelectParametersComponent,\r\n SelectMultiTreatmentsComponent,\r\n TableWellsSelectionComponent,\r\n SelectItemsComponent,\r\n SelectDesignActualComponent,\r\n SearchWellListComponent,\r\n WellListTableComponent,\r\n WellGridViewComponent,\r\n SearchPadListComponent,\r\n PadListTableComponent\r\n];\r\n\r\nconst PIPES = [\r\n WellCompletionDatePipe\r\n]\r\n\r\nconst SHARED_PROVIDERS = [\r\n AuthGuardService,\r\n NoAuthGuardService,\r\n AdminGuardService,\r\n DataEngineerGuardService,\r\n ServiceCompanyGuardService,\r\n VersionBuildCheckService,\r\n\r\n UserAuthService,\r\n UserService,\r\n CompaniesService,\r\n UserRolesService,\r\n ChannelMappingService,\r\n ToasterService,\r\n TreatmentService,\r\n ChartsService,\r\n ChannelSelectionService,\r\n CompareWellsService,\r\n PadService,\r\n LoadingOverlayService,\r\n NavbarScaleChartService,\r\n SearchWellOptionsStorageService,\r\n ChannelSettingsStorageService,\r\n RealtimeTreatmentStorageService,\r\n DiagnosticCompanyStorageService,\r\n ChannelMappingStorageService,\r\n FracproChannelStorageService,\r\n CompareWellStorageService,\r\n LocalDataStorageService,\r\n PivotPointService,\r\n DiagnosticPointsService,\r\n FracproChannelsService,\r\n PlotTemplateService,\r\n TreatmentPlotService,\r\n TreatmentPlotDataStoreService,\r\n DataFilesService,\r\n SessionService,\r\n CompareOffsetChannelsService,\r\n DefaultDiagnosticPointsService,\r\n TreatmentLogParserService,\r\n TreatmentLogTemplateService,\r\n TreatmentPlotFdiService,\r\n TreatmentPlotFdiApiService,\r\n TreatmentPlotTimeConverterService,\r\n TreatmentPlotFdiStoreService,\r\n TreatmentDetailsStorageService,\r\n SearchPadPadOptionsStorageService,\r\n\r\n BaseChartService,\r\n RealtimeChartService,\r\n ScatterPlotParameterChartService,\r\n LogDataCurveParameterChartService,\r\n SingleWellMultiTreatmentChartService,\r\n MultiWellChartService,\r\n CompareWellsTimeControlService,\r\n ScrollbarChartSettingsService,\r\n SearchWellListService,\r\n SearchWellListControlService,\r\n HistoricalWellsService,\r\n WellSearchSettingsService,\r\n SearchPadListControlService,\r\n SearchPadListService,\r\n\r\n CountriesAndTimezonesService,\r\n\r\n NumberValidator,\r\n\r\n WellsCompareResolver,\r\n WellsCompareLogDataService,\r\n WellsCompareDataService,\r\n TreatmentSettingsService,\r\n PadRealtimeDataService,\r\n PadRealtimeResolver,\r\n\r\n RealtimeTreatmentService,\r\n ThemesSettingsService,\r\n UnitSystemService\r\n];\r\n\r\nconst MODALS = [\r\n ModalConfirmComponent,\r\n CustomRelatedColumnComponent,\r\n CustomColorComponent,\r\n EditCustomColorComponent,\r\n EditCustomInputNumberComponent,\r\n EditCustomChannelsSelectComponent,\r\n CustomChannelsSelectComponent,\r\n CustomDateComponent,\r\n CustomNumberComponent,\r\n CustomNumberDecimal1Component,\r\n CustomNumberDecimal3Component,\r\n TimeSettingsComponent,\r\n FDIParameterSelectComponent,\r\n ChannelSelectionComponent,\r\n ScatterPlotParameterSettingsComponent,\r\n PivotPointComponent,\r\n OffsetWellCompareComponent,\r\n TreatmentLogChartSettingsComponent,\r\n WellsSelectionModalComponent,\r\n ConfirmTemplateModalComponent,\r\n FdiWellSelectionModalComponent,\r\n BourdetDerivativeComponent,\r\n CustomSwitchColumnComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [...BASE_MODULES, ...NB_MODULES, ...LIB_MODULES, ...FOR_ROOT_MODULES],\r\n exports: [...BASE_MODULES, ...NB_MODULES, ...COMPONENTS, ...MODALS, ...LIB_MODULES, ...EXPORT_MODULES, ...PIPES],\r\n declarations: [...COMPONENTS, ...MODALS, ...PIPES],\r\n entryComponents: [...MODALS]\r\n})\r\nexport class SharedModule {\r\n static forRoot(): ModuleWithProviders {\r\n // tslint:disable-next-line:no-angle-bracket-type-assertion\r\n return {\r\n ngModule: SharedModule,\r\n providers: [...NB_THEME_PROVIDERS, ...SHARED_PROVIDERS, { provide: OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS, useValue: { useUtc: true } }],\r\n };\r\n }\r\n}\r\n","import {FormGroup, ValidatorFn} from '@angular/forms';\r\n\r\nexport class NumberValidator {\r\n public static nonZero(min: number): ValidatorFn {\r\n return (control: FormGroup): {[key: string]: any} => {\r\n const input = control.value;\r\n if (input === '') {\r\n return null;\r\n }\r\n const isValid = input <= min;\r\n if (isValid) {\r\n return {minValue: {min}};\r\n } else {\r\n return null;\r\n }\r\n };\r\n }\r\n public static compareNumber(startNumber, endNumber): ValidatorFn {\r\n return (control: FormGroup) => {\r\n/* if (!control.controls[startNumber].value || !control.controls[endNumber].value) {\r\n return null;\r\n }*/\r\n if (control.controls[startNumber].value <= control.controls[endNumber].value) {\r\n control.controls[endNumber].setErrors(null);\r\n return null;\r\n } else {\r\n control.controls[endNumber].setErrors({\r\n minNumber: control.controls[startNumber].value,\r\n });\r\n return {\r\n validateNewer: {\r\n valid: false,\r\n }\r\n };\r\n }\r\n };\r\n }\r\n}\r\n","import { IAppConfig } from \"../app/app-init.service\";\r\n\r\ndeclare var window: any;\r\n\r\nexport class DynamicEnvironment {\r\n\tconstructor() {\r\n\t}\r\n\r\n\tgetAppConfig(): IAppConfig {\r\n\t\tif (window && window.appConfig) {\r\n\t\t\treturn window.appConfig;\r\n\t\t}\r\n\t\treturn { \r\n\t\t\tbaseURL: 'http://localhost' \r\n\t\t};\r\n\t}\r\n}","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nimport { DynamicEnvironment } from \"./dynamic-environment\";\r\n\r\nclass Environment extends DynamicEnvironment {\r\n version = '0.1.9';\r\n production = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public get api_url() {\r\n return `${this.getAppConfig().baseURL}/api/v1`;\r\n }\r\n\r\n public get api_url_temp() {\r\n return `${this.getAppConfig().baseURL}/api`;\r\n }\r\n}\r\n\r\nexport const environment = new Environment();\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""}