├── projects ├── test-app │ ├── README.md │ ├── src │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── locales │ │ │ │ └── la.json │ │ ├── locale │ │ │ └── .gitkeep │ │ ├── favicon.ico │ │ ├── hslayers-app │ │ │ ├── hslayers-app.component.scss │ │ │ ├── hslayers-app.component.html │ │ │ ├── popup-widget.component.html │ │ │ ├── hslayers-app.module.ts │ │ │ ├── popup-widget.component.ts │ │ │ └── some-panel │ │ │ │ ├── some-panel.component.ts │ │ │ │ └── some-panel.module.ts │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ ├── environment.hmr.ts │ │ │ └── environment.ts │ │ ├── styles.scss │ │ └── index.html │ ├── custom-icons.txt │ ├── package-lock.json │ ├── custom-webpack.config.js │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── test │ │ └── test.ts ├── cesium-test-app │ ├── README.md │ ├── src │ │ ├── app │ │ │ ├── app.component.sass │ │ │ ├── app.component.html │ │ │ └── app.module.ts │ │ ├── styles.sass │ │ ├── favicon.ico │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ └── main.ts │ ├── package-lock.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ ├── custom-webpack.config.js │ └── test │ │ └── test.ts ├── decoupling-test-app │ ├── README.md │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── locale │ │ │ └── .gitkeep │ │ ├── hslayers-app │ │ │ ├── hslayers-app.component.sass │ │ │ └── hslayers-app.component.html │ │ ├── styles.sass │ │ ├── favicon.ico │ │ └── main.ts │ ├── package-lock.json │ ├── custom-webpack.config.js │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── test │ │ └── test.ts ├── hslayers-app │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── locale │ │ │ └── .gitkeep │ │ ├── hslayers-app │ │ │ ├── hslayers-app.component.sass │ │ │ └── hslayers-app.component.html │ │ ├── styles.sass │ │ ├── favicon.ico │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ ├── environment.hmr.ts │ │ │ └── environment.ts │ │ └── main.ts │ ├── tsconfig.app.json │ ├── package-lock.json │ ├── tsconfig.spec.json │ ├── custom-webpack.config.js │ └── test │ │ └── test.ts ├── hslayers-cesium-app │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── app │ │ │ ├── app.component.sass │ │ │ └── app.component.html │ │ ├── styles.sass │ │ ├── environments │ │ │ └── environment.prod.ts │ │ ├── favicon.ico │ │ └── main.ts │ ├── package-lock.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ ├── custom-webpack.config.js │ └── test │ │ └── test.ts ├── hslayers │ ├── config │ │ ├── index.ts │ │ ├── ng-package.json │ │ └── public-api.ts │ ├── core │ │ ├── index.ts │ │ ├── map │ │ │ ├── map.component.html │ │ │ └── map.directive.ts │ │ ├── ng-package.json │ │ ├── map-host.directive.ts │ │ ├── layout.directive.ts │ │ └── public-api.ts │ ├── types │ │ ├── index.ts │ │ ├── map-swipe.type.ts │ │ ├── add-data │ │ │ ├── datasetType.type.ts │ │ │ ├── async-upload.type.ts │ │ │ ├── overwrite-response.ts │ │ │ ├── file │ │ │ │ ├── file-descriptor.type.ts │ │ │ │ ├── file.type.ts │ │ │ │ ├── file-data-object.type.ts │ │ │ │ └── file-form-data.type.ts │ │ │ ├── services-supported.const.ts │ │ │ ├── url.type.ts │ │ │ ├── recursive-options.type.ts │ │ │ └── arcgis-response-type.ts │ │ ├── utils │ │ │ └── measurement.ts │ │ ├── access-rights.model.ts │ │ ├── get-capabilities │ │ │ └── capabilities-response-wrapper.ts │ │ ├── bounding-box-object.type.ts │ │ ├── query │ │ │ ├── widget-item.type.ts │ │ │ └── widgets.type.ts │ │ ├── ng-package.json │ │ ├── type-intersection.type.ts │ │ ├── authentication.ts │ │ ├── wfs-filter │ │ │ └── wfs-attributes.type.ts │ │ ├── layer-manager │ │ │ ├── folder.type.ts │ │ │ ├── terrain-layer-descriptor.type.ts │ │ │ └── hs-sublayer.interface.ts │ │ ├── compositions │ │ │ ├── user-data.type.ts │ │ │ ├── serialized-image.type.ts │ │ │ ├── serialized-style.type.ts │ │ │ └── composition-data.type.ts │ │ ├── button.interface.ts │ │ ├── clicked-coordinates.type.ts │ │ ├── layman │ │ │ ├── upsert-layer-object.type.ts │ │ │ ├── status-state.type.ts │ │ │ ├── about-layman-response.type.ts │ │ │ └── get-layers.interface.ts │ │ ├── save-map │ │ │ ├── status-data.type.ts │ │ │ └── wfs-sync-params.type.ts │ │ ├── feature-descriptor.ts │ │ ├── filters │ │ │ └── filter-types.ts │ │ └── dom-feature-link.type.ts │ ├── common │ │ ├── pager │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── pager.module.ts │ │ ├── pipes │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── filter.pipe.ts │ │ ├── toast │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── add-to-map │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── confirm │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── dialogs │ │ │ ├── index.ts │ │ │ ├── dialog-container.component.html │ │ │ ├── ng-package.json │ │ │ ├── dialog-component.interface.ts │ │ │ ├── dialog-host.directive.ts │ │ │ ├── public-api.ts │ │ │ ├── dialog-item.ts │ │ │ └── compositions-warning │ │ │ │ └── warning-dialog.component.ts │ │ ├── dimensions │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── download │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── extensions │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── filters │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── layers │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── layman │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── types │ │ │ │ ├── get-layers-response.type.ts │ │ │ │ ├── post-patch-layer-response.type.ts │ │ │ │ ├── current-user-response.type.ts │ │ │ │ └── delete-layer-response.type.ts │ │ │ ├── parse-base64-style.ts │ │ │ └── public-api.ts │ │ ├── panels │ │ │ ├── index.ts │ │ │ ├── panel-container.component.html │ │ │ ├── ng-package.json │ │ │ ├── panel-item.ts │ │ │ ├── panel-host.directive.ts │ │ │ ├── panel-helpers.module.ts │ │ │ ├── panel-component.interface.ts │ │ │ ├── public-api.ts │ │ │ └── panel-container.service.interface.ts │ │ ├── upload │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── upload.module.ts │ │ ├── widgets │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── clipboard-text │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── history-list │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ ├── history-list.component.html │ │ │ └── history-list.module.ts │ │ ├── layer-table │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ └── wms-layer-highlight.directive.ts │ │ ├── query-popup │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── widgets │ │ │ │ ├── layer-name.component.html │ │ │ │ ├── dynamic-text.component.html │ │ │ │ └── clear-layer.component.html │ │ │ ├── popup-data.ts │ │ │ └── public-api.ts │ │ ├── remove-multiple │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── remove-layer-dialog.module.ts │ │ ├── color-map-picker │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── colormap-picker.module.ts │ │ ├── dialog-csw-layers │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── csw-layers-dialog.component.scss │ │ ├── get-feature-info │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── json-get-feature-info.type.ts │ │ └── dialog-set-permissions │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ ├── services │ │ ├── log │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── log.service.ts │ │ ├── map │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── add-data │ │ │ ├── index.ts │ │ │ └── ng-package.json │ │ ├── draw │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── external │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── language │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── layout │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── panels │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ ├── overlay │ │ │ │ └── overlay-container.service.ts │ │ │ └── toolbar │ │ │ │ └── toolbar-panel-container.service.ts │ │ ├── query │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── queues │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── save-map │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ └── saver-service.interface.ts │ │ ├── share │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── sidebar │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── styler │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── style-part-base.component.ts │ │ ├── utils │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ ├── attribution-utils.ts │ │ │ └── format-utils.ts │ │ ├── compositions │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── endpoints │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── event-bus │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── layer-manager │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── get-capabilities │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ └── get-capabilities.interface.ts │ │ ├── layer-shifting │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ └── panel-constructor │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ ├── components │ │ ├── draw │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── info │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── info.module.ts │ │ ├── legend │ │ │ ├── index.ts │ │ │ ├── legend-layer-vector │ │ │ │ ├── legend-layer-vector.component.html │ │ │ │ └── legend-layer-vector.component.ts │ │ │ ├── ng-package.json │ │ │ ├── legend-layer-static │ │ │ │ ├── legend-layer-static.component.html │ │ │ │ └── types │ │ │ │ │ └── layer-legend.type.ts │ │ │ ├── legend-descriptor.interface.ts │ │ │ ├── legend-custom-category.type.ts │ │ │ └── public-api.ts │ │ ├── print │ │ │ ├── index.ts │ │ │ ├── types │ │ │ │ ├── styler.type.ts │ │ │ │ ├── title-object.type.ts │ │ │ │ ├── legend-object.type.ts │ │ │ │ ├── xy-positions.type.ts │ │ │ │ ├── imprint-object.type.ts │ │ │ │ ├── scale-object.type.ts │ │ │ │ ├── text-style.type.ts │ │ │ │ └── print-object.type.ts │ │ │ ├── ng-package.json │ │ │ ├── constants │ │ │ │ ├── position-options.ts │ │ │ │ └── scale-styling-options.ts │ │ │ └── imprint-styler │ │ │ │ └── imprint-styler.component.ts │ │ ├── query │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── query.tokens.ts │ │ │ ├── public-api.ts │ │ │ └── attribute-row │ │ │ │ └── attribute-row.component.html │ │ ├── search │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── limitTo.pipe.ts │ │ │ ├── public-api.ts │ │ │ ├── search.component.html │ │ │ └── search-input.component.html │ │ ├── share │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── styler │ │ │ ├── index.ts │ │ │ ├── img │ │ │ │ └── convert.sh │ │ │ ├── ng-package.json │ │ │ ├── symbolizers │ │ │ │ ├── symbolizer-kind.enum.ts │ │ │ │ ├── symbolizer.component.ts │ │ │ │ └── slider │ │ │ │ │ ├── slider.component.html │ │ │ │ │ └── slider.component.ts │ │ │ ├── styles.ts │ │ │ └── edit-dialog │ │ │ │ └── edit-dialog.component.ts │ │ ├── add-data │ │ │ ├── index.ts │ │ │ ├── file │ │ │ │ ├── shp │ │ │ │ │ └── public-api.ts │ │ │ │ ├── raster │ │ │ │ │ ├── public-api.ts │ │ │ │ │ └── raster-timeseries │ │ │ │ │ │ └── raster-timeseries.component.scss │ │ │ │ ├── public-api.ts │ │ │ │ └── file-type-values.ts │ │ │ ├── enums │ │ │ │ └── load-types.const.ts │ │ │ ├── ng-package.json │ │ │ ├── vector │ │ │ │ ├── public-api.ts │ │ │ │ └── vector-url │ │ │ │ │ └── vector-url.component.html │ │ │ ├── common │ │ │ │ ├── url │ │ │ │ │ ├── public-api.ts │ │ │ │ │ ├── progress │ │ │ │ │ │ ├── progress.component.html │ │ │ │ │ │ └── progress.component.ts │ │ │ │ │ ├── add │ │ │ │ │ │ └── add.component.html │ │ │ │ │ └── url.component.html │ │ │ │ ├── common.component.scss │ │ │ │ ├── public-api.ts │ │ │ │ └── target-position │ │ │ │ │ └── target-position.component.html │ │ │ ├── catalogue │ │ │ │ └── public-api.ts │ │ │ ├── public-api.ts │ │ │ └── url │ │ │ │ ├── wms │ │ │ │ ├── wms.component.html │ │ │ │ ├── wms.component.ts │ │ │ │ └── wms.module.ts │ │ │ │ ├── arcgis │ │ │ │ ├── arcgis.component.html │ │ │ │ ├── arcgis.component.ts │ │ │ │ └── arcgis.module.ts │ │ │ │ ├── wmts │ │ │ │ └── wmts.component.ts │ │ │ │ ├── wfs │ │ │ │ └── wfs.component.ts │ │ │ │ ├── public-api.ts │ │ │ │ └── add-data-url-values.ts │ │ ├── geolocation │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ └── geolocation.module.ts │ │ ├── language │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ ├── translate-testing.module.ts │ │ │ └── language.component.html │ │ ├── map-swipe │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ └── map-swipe.module.ts │ │ ├── measure │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── save-map │ │ │ ├── index.ts │ │ │ ├── notAvailable.png │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── sidebar │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── toolbar │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ ├── ng-package.json │ │ │ ├── toolbar.component.html │ │ │ └── toolbar.module.ts │ │ ├── wfs-filter │ │ │ ├── index.ts │ │ │ ├── public-api.ts │ │ │ └── ng-package.json │ │ ├── compositions │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ └── public-api.ts │ │ ├── feature-table │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ └── feature-table.component.html │ │ ├── layer-manager │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── widgets │ │ │ │ ├── layer-editor-widget-container.service.ts │ │ │ │ ├── legend-widget.component.html │ │ │ │ ├── wms-source-widget │ │ │ │ │ └── wms-source-widget.component.html │ │ │ │ ├── type-widget.component.ts │ │ │ │ ├── layer-type-switcher-widget │ │ │ │ │ └── layer-type-switcher-widget.component.html │ │ │ │ ├── layer-folder-widget │ │ │ │ │ └── layer-folder-widget.component.html │ │ │ │ ├── opacity-widget.component.html │ │ │ │ ├── type-widget.component.html │ │ │ │ └── extent-widget │ │ │ │ │ └── extent-widget.component.html │ │ │ ├── logical-list │ │ │ │ └── layer-manager-layerlist.component.html │ │ │ └── dimensions │ │ │ │ └── date-preformat.pipe.ts │ │ └── trip-planner │ │ │ ├── index.ts │ │ │ ├── ng-package.json │ │ │ ├── public-api.ts │ │ │ ├── ors-profiles.const.ts │ │ │ └── route-profile-selector.component.ts │ ├── .versionrc │ ├── assets │ │ └── img │ │ │ ├── osm.png │ │ │ ├── blank.png │ │ │ ├── orto.png │ │ │ ├── default.png │ │ │ ├── tester.png │ │ │ ├── notAvailable.png │ │ │ ├── pin_white_blue.png │ │ │ ├── pin_white_red32.png │ │ │ ├── hslayers-ng-logo.png │ │ │ ├── pin_white_blue24.png │ │ │ ├── pin_white_blue32.png │ │ │ └── hslayers-ng-favicon_32x32.jpg │ ├── test │ │ ├── print-legend.service.mock.ts │ │ ├── print-title.service.mock.ts │ │ ├── print-imprint.service.mock.ts │ │ ├── print.service.mock.ts │ │ ├── print-scale.service.mock.ts │ │ ├── layer-manager-layerlist.service.mock.ts │ │ ├── styler.service.mock.ts │ │ ├── data │ │ │ └── service-endpoints.ts │ │ ├── testing-utils.ts │ │ └── test.ts │ ├── .browserslistrc │ ├── public-api.ts │ ├── tsconfig.lib.prod.json │ ├── tsconfig.json │ ├── .compodocrc.json │ ├── ng-package.json │ ├── tsconfig.spec.json │ ├── css │ │ └── bootstrap-utilities.scss │ └── tsconfig.lib.json ├── hslayers-server │ ├── .npmignore │ ├── .gitignore │ ├── .eslintrc.json │ └── src │ │ └── oauth2 │ │ └── session.js ├── hslayers-cesium │ ├── src │ │ ├── hscesium.component.html │ │ ├── param-cache-map-item.class.ts │ │ ├── ol-cesium-object-map-item.class.ts │ │ ├── hscesium.component.scss │ │ ├── toggle-view │ │ │ ├── toggle-view.component.scss │ │ │ └── toggle-view.component.html │ │ ├── public-api.ts │ │ └── query-popup.service.ts │ ├── ng-package.json │ ├── tsconfig.lib.prod.json │ ├── .compodocrc.json │ ├── tsconfig.spec.json │ └── test │ │ └── test.ts └── hslayers-sensors │ ├── src │ └── components │ │ └── sensors │ │ ├── types │ │ ├── aggregate.type.ts │ │ ├── senslog-endpoint.type.ts │ │ ├── interval.type.ts │ │ ├── senslog-sensor.type.ts │ │ └── senslog-response.type.ts │ │ └── sensor-unit.class.ts │ ├── ng-package.json │ ├── tsconfig.lib.prod.json │ ├── tsconfig.spec.json │ └── .compodocrc.json ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── build+test_server.yml │ └── build+test_libs_apps.yml ├── cypress ├── fixtures │ └── data-mocks.json ├── plugins │ └── index.ts ├── tsconfig.json └── tests │ ├── index.cy.ts │ └── language.cy.ts ├── .editorconfig ├── tsconfig.spec.json ├── .githooks └── pre-commit ├── .browserslistrc ├── .gitignore ├── Makefile └── cypress.config.ts /projects/test-app/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/cesium-test-app/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/test-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/test-app/src/locale/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/locale/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/src/locale/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/app/app.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/test-app/custom-icons.txt: -------------------------------------------------------------------------------- 1 | truck-fast 2 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/src/app/app.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/hslayers-app/hslayers-app.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/src/hslayers-app/hslayers-app.component.sass: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers/common/pager/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/pipes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/toast/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/log/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/map/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/add-to-map/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/confirm/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/dimensions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/download/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/extensions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/filters/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/layers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/layman/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/upload/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/draw/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/info/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/query/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/search/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/share/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/styler/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/add-data/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/draw/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/external/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/language/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/layout/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/panels/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/query/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/queues/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/save-map/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/share/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/sidebar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/styler/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/clipboard-text/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/dimensions/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './dimension'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/history-list/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/layer-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/query-popup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/remove-multiple/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/geolocation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/language/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/map-swipe/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/measure/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/save-map/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/sidebar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/toolbar/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/wfs-filter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/compositions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/endpoints/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/event-bus/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/layer-manager/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/color-map-picker/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialog-csw-layers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/get-feature-info/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/compositions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/feature-table/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/trip-planner/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/get-capabilities/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/layer-shifting/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/layout/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './layout.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/panel-constructor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/queues/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './queues.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/sidebar/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './sidebar.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/.versionrc: -------------------------------------------------------------------------------- 1 | { 2 | "path": ".", 3 | "tag-prefix": "hslayers-ng", 4 | } -------------------------------------------------------------------------------- /projects/hslayers/common/add-to-map/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './add-to-map.component'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialog-set-permissions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-api'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/download/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './download.directive'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/widgets/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './recursive-dd.component'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/endpoints/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './endpoints.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/event-bus/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './event-bus.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/external/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './external.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/log/public-api.ts: -------------------------------------------------------------------------------- 1 | export {HsLogService} from './log.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/types/map-swipe.type.ts: -------------------------------------------------------------------------------- 1 | export type LayerSwipeSide = 'left' | 'right'; 2 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/src/hslayers-app/hslayers-app.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/hslayers-app/hslayers-app.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /projects/hslayers/common/confirm/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './confirm-dialog.component'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/components/wfs-filter/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './wfs-filter.component'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/clipboard-text/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './clipboard-text.component'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/layer-shifting/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './layer-shifting.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialog-csw-layers/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './csw-layers-dialog.component'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/get-feature-info/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './json-get-feature-info.type'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/panel-container.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /projects/hslayers/core/map/map.component.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialog-set-permissions/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './set-permissions.component'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/draw/public-api.ts: -------------------------------------------------------------------------------- 1 | export {TMP_LAYER_TITLE, HsDrawService} from './draw.service'; 2 | -------------------------------------------------------------------------------- /projects/hslayers/services/map/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './map.service'; 2 | export * from './projections'; 3 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/styles.sass: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /projects/hslayers-server/.npmignore: -------------------------------------------------------------------------------- 1 | *.db 2 | data/ 3 | test/ 4 | .env 5 | .env.* 6 | !.env.example 7 | .eslintrc.json 8 | -------------------------------------------------------------------------------- /projects/hslayers/common/pager/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './pager.component'; 2 | export * from './pager.module'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/common/toast/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './toast.component'; 2 | export * from './toast.service'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/components/info/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './info.component'; 2 | export * from './info.module'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/datasetType.type.ts: -------------------------------------------------------------------------------- 1 | export type DatasetType = 'url' | 'catalogue' | 'file' | 'OWS'; 2 | -------------------------------------------------------------------------------- /projects/test-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/test-app/src/favicon.ico -------------------------------------------------------------------------------- /projects/test-app/src/hslayers-app/hslayers-app.component.scss: -------------------------------------------------------------------------------- 1 | hslayers { 2 | height: 95vh; 3 | display: block 4 | } -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @jmacura @FilipLeitner 2 | **/package*.json @jmacura 3 | ./projects/hslayers-server/** @fzadrazil 4 | 5 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/styles.sass: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/src/styles.sass: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/src/styles.sass: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /projects/hslayers/assets/img/osm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/osm.png -------------------------------------------------------------------------------- /projects/hslayers/test/print-legend.service.mock.ts: -------------------------------------------------------------------------------- 1 | export class HsPrintLegendServiceMock { 2 | constructor() {} 3 | } 4 | -------------------------------------------------------------------------------- /projects/test-app/src/assets/locales/la.json: -------------------------------------------------------------------------------- 1 | { 2 | "PANEL_HEADER": { 3 | "LANGUAGE": "Linguam mutare" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers-app/src/favicon.ico -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/hscesium.component.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /projects/hslayers-server/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | data/ 3 | .env 4 | .env.* 5 | !.env.example 6 | hslayers-server.db-journal 7 | -------------------------------------------------------------------------------- /projects/hslayers/assets/img/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/blank.png -------------------------------------------------------------------------------- /projects/hslayers/assets/img/orto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/orto.png -------------------------------------------------------------------------------- /projects/hslayers/common/extensions/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './feature-extensions'; 2 | export * from './layer-extensions'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/file/shp/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './shp.component'; 2 | export * from './shp.module'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/components/toolbar/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './toolbar.component'; 2 | export * from './toolbar.module'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/services/query/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './query-base.service'; 2 | export * from './query-vector.service'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/async-upload.type.ts: -------------------------------------------------------------------------------- 1 | export type AsyncUpload = {async?: boolean; filesToAsyncUpload?: File[]}; 2 | -------------------------------------------------------------------------------- /projects/test-app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hslayers-ng-app", 3 | "version": "4.0.0", 4 | "lockfileVersion": 1 5 | } 6 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/cesium-test-app/src/favicon.ico -------------------------------------------------------------------------------- /projects/hslayers/assets/img/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/default.png -------------------------------------------------------------------------------- /projects/hslayers/assets/img/tester.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/tester.png -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/dialog-container.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /projects/test-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | hmr: true, 4 | }; 5 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | hmr: true, 4 | }; 5 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | hmr: true, 4 | }; 5 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/file/raster/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './raster.module'; 2 | export * from './raster.component'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/types/utils/measurement.ts: -------------------------------------------------------------------------------- 1 | export type Measurement = { 2 | size: number; 3 | type: string; 4 | unit: string; 5 | }; 6 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hslayers-ng-app", 3 | "version": "4.0.0", 4 | "lockfileVersion": 1 5 | } 6 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/decoupling-test-app/src/favicon.ico -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | hmr: true, 4 | }; 5 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers-cesium-app/src/favicon.ico -------------------------------------------------------------------------------- /projects/hslayers/assets/img/notAvailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/notAvailable.png -------------------------------------------------------------------------------- /projects/hslayers/services/compositions/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './compositions-parser.service'; 2 | export * from './layer-parser.service'; 3 | -------------------------------------------------------------------------------- /projects/test-app/src/hslayers-app/hslayers-app.component.html: -------------------------------------------------------------------------------- 1 | Polygon 1 2 | Polygon 2 3 | -------------------------------------------------------------------------------- /projects/hslayers/assets/img/pin_white_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/pin_white_blue.png -------------------------------------------------------------------------------- /projects/hslayers/assets/img/pin_white_red32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/pin_white_red32.png -------------------------------------------------------------------------------- /projects/hslayers/common/color-map-picker/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './colormap-picker.component'; 2 | export * from './colormap-picker.module'; 3 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/legend-layer-vector/legend-layer-vector.component.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /projects/hslayers/assets/img/hslayers-ng-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/hslayers-ng-logo.png -------------------------------------------------------------------------------- /projects/hslayers/assets/img/pin_white_blue24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/pin_white_blue24.png -------------------------------------------------------------------------------- /projects/hslayers/assets/img/pin_white_blue32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/pin_white_blue32.png -------------------------------------------------------------------------------- /projects/hslayers/common/pipes/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './epsg.pipe'; 2 | export * from './filter.pipe'; 3 | export * from './trackByProperty.pipe'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/services/panel-constructor/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './panel-constructor.service'; 2 | export * from './overlay-constructor.service'; 3 | -------------------------------------------------------------------------------- /projects/test-app/src/hslayers-app/popup-widget.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /projects/hslayers/components/share/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './share.component'; 2 | export * from './share.module'; 3 | export * from './share.service'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/.browserslistrc: -------------------------------------------------------------------------------- 1 | defaults 2 | not < 0.5% 3 | safari >= 12 4 | not Firefox ESR 5 | not dead 6 | not IE 9-11 # For IE 9-11 support, remove 'not'. 7 | -------------------------------------------------------------------------------- /projects/hslayers/common/upload/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './file-drop.directive'; 2 | export * from './upload.component'; 3 | export * from './upload.module'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/styler.type.ts: -------------------------------------------------------------------------------- 1 | export type Styler = { 2 | visible: boolean; 3 | name: 'title' | 'legend' | 'imprint' | 'scale'; 4 | }; 5 | -------------------------------------------------------------------------------- /projects/hslayers/components/save-map/notAvailable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/components/save-map/notAvailable.png -------------------------------------------------------------------------------- /projects/hslayers/services/share/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './share-thumbnail.service'; 2 | export * from './share-url.service'; 3 | export * from './get-params'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/types/access-rights.model.ts: -------------------------------------------------------------------------------- 1 | export interface AccessRightsModel { 2 | 'access_rights.write': string; 3 | 'access_rights.read': string; 4 | } 5 | -------------------------------------------------------------------------------- /projects/hslayers/assets/img/hslayers-ng-favicon_32x32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hslayers/hslayers-ng/HEAD/projects/hslayers/assets/img/hslayers-ng-favicon_32x32.jpg -------------------------------------------------------------------------------- /projects/hslayers/services/styler/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './styler.service'; 2 | export * from './default-style'; 3 | export * from './style-part-base.component'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/overwrite-response.ts: -------------------------------------------------------------------------------- 1 | export enum OverwriteResponse { 2 | cancel = 'cancel', 3 | add = 'add', 4 | overwrite = 'overwrite', 5 | } 6 | -------------------------------------------------------------------------------- /projects/hslayers/types/get-capabilities/capabilities-response-wrapper.ts: -------------------------------------------------------------------------------- 1 | export type CapabilitiesResponseWrapper = { 2 | response: any; 3 | error?: boolean; 4 | }; 5 | -------------------------------------------------------------------------------- /projects/hslayers/types/bounding-box-object.type.ts: -------------------------------------------------------------------------------- 1 | export type BoundingBoxObject = { 2 | east: string; 3 | south: string; 4 | west: string; 5 | north: string; 6 | }; 7 | -------------------------------------------------------------------------------- /projects/test-app/src/styles.scss: -------------------------------------------------------------------------------- 1 | @use "../custom-fa-icons.css"; 2 | 3 | :root { 4 | --hs-panelspace-normal-height: 50vh; 5 | --hs-panelspace-collapsed-height: 5vh; 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/enums/load-types.const.ts: -------------------------------------------------------------------------------- 1 | export const DEFAULT_SHP_LOAD_TYPE = 'wms' as const; 2 | export const DEFAULT_VECTOR_LOAD_TYPE = 'wfs' as const; 3 | -------------------------------------------------------------------------------- /projects/hslayers/test/print-title.service.mock.ts: -------------------------------------------------------------------------------- 1 | export function mockHsPrintTitleService() { 2 | return jasmine.createSpyObj('HsPrintTitleService', ['drawTitleCanvas']); 3 | } 4 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/file/file-descriptor.type.ts: -------------------------------------------------------------------------------- 1 | export type FileDescriptor = { 2 | name: string; 3 | type: string; 4 | content: ArrayBuffer | string; 5 | }; 6 | -------------------------------------------------------------------------------- /projects/hslayers/types/query/widget-item.type.ts: -------------------------------------------------------------------------------- 1 | import {Type} from '@angular/core'; 2 | 3 | export type WidgetItem = { 4 | name: string; 5 | component: Type; 6 | }; 7 | -------------------------------------------------------------------------------- /projects/hslayers/common/history-list/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './history-list.component'; 2 | export * from './history-list.module'; 3 | export * from './history-list.service'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/components/geolocation/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './geolocation.component'; 2 | export * from './geolocation.module'; 3 | export * from './geolocation.service'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/components/styler/img/convert.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for f in *.svg; 4 | do 5 | rsvg-convert -a -w 32 -f svg $f -o ${f}_new 6 | mv ${f}_new $f 7 | done 8 | -------------------------------------------------------------------------------- /projects/hslayers/core/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/test/print-imprint.service.mock.ts: -------------------------------------------------------------------------------- 1 | export function mockHsPrintImprintService() { 2 | return jasmine.createSpyObj('HsPrintImprintService', ['drawImprintCanvas']); 3 | } 4 | -------------------------------------------------------------------------------- /projects/hslayers/config/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/types/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/param-cache-map-item.class.ts: -------------------------------------------------------------------------------- 1 | import {ImageryLayer} from 'cesium'; 2 | 3 | export class ParamCacheMapItem { 4 | cache: any; 5 | imageryLayer: ImageryLayer; 6 | } 7 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/src/components/sensors/types/aggregate.type.ts: -------------------------------------------------------------------------------- 1 | export type Aggregate = { 2 | sensor_id; 3 | max; 4 | min; 5 | avg; 6 | sensor_name; 7 | color: string; 8 | }; 9 | -------------------------------------------------------------------------------- /projects/hslayers/common/layers/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/layman/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/pager/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/panels/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/pipes/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/toast/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/upload/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/title-object.type.ts: -------------------------------------------------------------------------------- 1 | import {TextStyle} from './text-style.type'; 2 | 3 | export type TitleObj = { 4 | text?: string; 5 | textStyle: TextStyle; 6 | }; 7 | -------------------------------------------------------------------------------- /projects/hslayers/services/draw/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/log/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/map/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/types/type-intersection.type.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Creates intersection of two types with working unwrapped tooltip 3 | */ 4 | export type IntersectWithTooltip = {[P in keyof T]: T[P]}; 5 | -------------------------------------------------------------------------------- /cypress/fixtures/data-mocks.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } 6 | -------------------------------------------------------------------------------- /projects/hslayers/common/add-to-map/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/confirm/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/dimensions/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/download/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/extensions/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/filters/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/layer-table/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/query-popup/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/remove-multiple/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './remove-layer-dialog.component'; 2 | export * from './remove-layer-dialog.service'; 3 | export * from './remove-layer-dialog.module'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/common/widgets/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/draw/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/info/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/legend/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/measure/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/print/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/query/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/search/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/share/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/sidebar/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/styler/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/styler/symbolizers/symbolizer-kind.enum.ts: -------------------------------------------------------------------------------- 1 | export enum Kinds { 2 | fill = 'Fill', 3 | icon = 'Icon', 4 | line = 'Line', 5 | text = 'Text', 6 | mark = 'Mark', 7 | } 8 | -------------------------------------------------------------------------------- /projects/hslayers/components/toolbar/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/add-data/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/endpoints/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/event-bus/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/external/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/language/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/layout/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/panels/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/query/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/queues/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/save-map/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/share/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/sidebar/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/styler/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/utils/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/clipboard-text/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/color-map-picker/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/get-feature-info/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/history-list/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/query-popup/widgets/layer-name.component.html: -------------------------------------------------------------------------------- 1 | {{'LAYERS.' + layerDescriptor.title | translate : {fallbackValue: layerDescriptor.title} }} 2 | -------------------------------------------------------------------------------- /projects/hslayers/common/remove-multiple/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/compositions/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/geolocation/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/language/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/map-swipe/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/query/query.tokens.ts: -------------------------------------------------------------------------------- 1 | import {InjectionToken, Type} from '@angular/core'; 2 | 3 | export const QUERY_INFO_PANEL = new InjectionToken>( 4 | 'QUERY_INFO_PANEL', 5 | ); 6 | -------------------------------------------------------------------------------- /projects/hslayers/components/save-map/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/trip-planner/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/wfs-filter/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/compositions/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/layer-manager/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/layer-shifting/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/types/authentication.ts: -------------------------------------------------------------------------------- 1 | export interface HsAuthState { 2 | user?: string; 3 | authenticated?: boolean; 4 | } 5 | 6 | export interface HsAuthAction { 7 | type: 'login' | 'logout'; 8 | } 9 | -------------------------------------------------------------------------------- /cypress/plugins/index.ts: -------------------------------------------------------------------------------- 1 | // Plugins enable you to tap into, modify, or extend the internal behavior of Cypress 2 | // For more info, visit https://on.cypress.io/plugins-api 3 | module.exports = (on, config) => {}; 4 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialog-csw-layers/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/feature-table/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/components/measure/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './measure.component'; 2 | export * from './measure.module'; 3 | export * from './measure.service'; 4 | export * from './measure-toolbar.component'; 5 | -------------------------------------------------------------------------------- /projects/hslayers/services/get-capabilities/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/panel-constructor/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/services/panels/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './panel-container.service'; 2 | export * from './overlay/overlay-container.service'; 3 | export * from './toolbar/toolbar-panel-container.service'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialog-set-permissions/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", 3 | "lib": { 4 | "entryFile": "public-api.ts" 5 | } 6 | } -------------------------------------------------------------------------------- /projects/hslayers/common/layer-table/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './layer-table.component'; 2 | export * from './wms-layer-highlight.directive'; 3 | export * from './nested-layers-table/nested-layers-table.component'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/panel-item.ts: -------------------------------------------------------------------------------- 1 | import {Type} from '@angular/core'; 2 | 3 | export class HsPanelItem { 4 | constructor( 5 | public component: Type, 6 | public data: any, 7 | ) {} 8 | } 9 | -------------------------------------------------------------------------------- /projects/hslayers/test/print.service.mock.ts: -------------------------------------------------------------------------------- 1 | export function mockHsPrintService() { 2 | return jasmine.createSpyObj('HsPrintService', [ 3 | 'print', 4 | 'download', 5 | 'createMapImage', 6 | ]); 7 | } 8 | -------------------------------------------------------------------------------- /projects/hslayers/components/map-swipe/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './map-swipe.component'; 2 | export * from './map-swipe.module'; 3 | export * from './map-swipe.service'; 4 | export * from './swipe-control/swipe.control'; 5 | -------------------------------------------------------------------------------- /projects/hslayers/services/save-map/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './layman.service'; 2 | export * from './save-map.service'; 3 | export * from './layer-synchronizer.service'; 4 | export * from './saver-service.interface'; 5 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/ol-cesium-object-map-item.class.ts: -------------------------------------------------------------------------------- 1 | import {DataSource, ImageryLayer} from 'cesium'; 2 | 3 | export class OlCesiumObjectMapItem { 4 | olObject: any; 5 | csObject: ImageryLayer | DataSource; 6 | } 7 | -------------------------------------------------------------------------------- /projects/hslayers/public-api.ts: -------------------------------------------------------------------------------- 1 | // public-api.ts is required by ng-packagr and cannot be empty. 2 | const DO_NOT_IMPORT = 3 | 'Do not import from hslayers-ng; Submodules must be imported directly.'; 4 | export default DO_NOT_IMPORT; 5 | -------------------------------------------------------------------------------- /projects/hslayers/common/query-popup/widgets/dynamic-text.component.html: -------------------------------------------------------------------------------- 1 | @for (feature of layerDescriptor.features; track feature) { 2 |
3 | } -------------------------------------------------------------------------------- /projects/hslayers/components/language/public-api.ts: -------------------------------------------------------------------------------- 1 | export {HsLanguageComponent} from './language.component'; 2 | export {HsLanguageModule} from './language.module'; 3 | export {TranslateTestingModule} from './translate-testing.module'; 4 | -------------------------------------------------------------------------------- /projects/hslayers/types/query/widgets.type.ts: -------------------------------------------------------------------------------- 1 | export const QUERY_POPUP_WIDGETS = [ 2 | 'layer-name', 3 | 'feature-info', 4 | 'clear-layer', 5 | ] as const; 6 | export type QueryPopupWidgetsType = (typeof QUERY_POPUP_WIDGETS)[number]; 7 | -------------------------------------------------------------------------------- /projects/hslayers/services/language/public-api.ts: -------------------------------------------------------------------------------- 1 | export {HsLanguageService} from './language.service'; 2 | export {HsMissingTranslationHandler} from './missing-translation.service'; 3 | export {HsTranslateLoader} from './translate.service'; 4 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/hslayers-cesium", 4 | "assets": [], 5 | "lib": { 6 | "entryFile": "src/public-api.ts" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /projects/hslayers/components/sidebar/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './impressum.component'; 2 | export * from './mini-sidebar.component'; 3 | export * from './sidebar.component'; 4 | export * from './sidebar.module'; 5 | export * from './sortBy.pipe'; 6 | -------------------------------------------------------------------------------- /projects/hslayers/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.lib.json", 3 | "compilerOptions": { 4 | "declarationMap": false 5 | }, 6 | "angularCompilerOptions": { 7 | "compilationMode": "partial" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers/types/wfs-filter/wfs-attributes.type.ts: -------------------------------------------------------------------------------- 1 | export interface WfsFeatureAttribute { 2 | name: string; 3 | type: string; 4 | isNumeric: boolean; 5 | values?: string[] | number[]; 6 | range?: {min: number; max: number}; 7 | } 8 | -------------------------------------------------------------------------------- /projects/hslayers/common/layers/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './hs.source.SPOI'; 2 | export * from './hs.source.SparqlJson'; 3 | export * from './hs.source.interpolated'; 4 | export * from './hs.source.WfsSource'; 5 | export * from './wfs-get-feature'; 6 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/vector/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './vector-url-parser.service'; 2 | export * from './vector-file/vector-file.component'; 3 | export * from './vector-url/vector-url.component'; 4 | export * from './vector.module'; 5 | -------------------------------------------------------------------------------- /projects/hslayers/types/layer-manager/folder.type.ts: -------------------------------------------------------------------------------- 1 | import {HsLayerDescriptor} from './layer-descriptor.interface'; 2 | 3 | export type HsLayermanagerFolder = { 4 | layers: HsLayerDescriptor[]; 5 | zIndex: number; 6 | visible?: boolean; 7 | }; 8 | -------------------------------------------------------------------------------- /cypress/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "target": "es2020", 6 | "sourceMap": false, 7 | "types": ["cypress", "node", "cypress-real-events"] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/hslayers-sensors", 4 | "assets": ["src/assets"], 5 | "lib": { 6 | "entryFile": "src/public-api.ts" 7 | } 8 | } -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/services-supported.const.ts: -------------------------------------------------------------------------------- 1 | export const SERVICES_SUPPORTED_BY_URL = [ 2 | 'wms', 3 | 'wfs', 4 | 'wmts', 5 | 'kml', 6 | 'gpx', 7 | 'geojson', 8 | 'arcgis', 9 | 'geosparql', 10 | 'xyz', 11 | ] as const; 12 | -------------------------------------------------------------------------------- /projects/hslayers/components/draw/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './draw-layer-metadata/draw-layer-metadata.component'; 2 | export * from './draw-toolbar/draw-toolbar.component'; 3 | export * from './draw.component'; 4 | export * from './draw-panel/draw-panel.component'; 5 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/url/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './add/add.component'; 2 | export * from './details/details.component'; 3 | export * from './progress/progress.component'; 4 | export * from './url.component'; 5 | export * from './url.module'; 6 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/legend-object.type.ts: -------------------------------------------------------------------------------- 1 | import {xPos, yPos} from './xy-positions.type'; 2 | 3 | export type LegendObj = { 4 | include?: boolean; 5 | width?: number; 6 | bcColor?: string; 7 | posX?: xPos; 8 | posY?: yPos; 9 | }; 10 | -------------------------------------------------------------------------------- /projects/hslayers/components/feature-table/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './feature-filter.pipe'; 2 | export * from './feature-table.component'; 3 | export * from './feature-table.module'; 4 | export * from './feature-table.service'; 5 | export * from './layer-features.component'; 6 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/xy-positions.type.ts: -------------------------------------------------------------------------------- 1 | export const xpos = ['left', 'right', 'center'] as const; 2 | export type xPos = (typeof xpos)[number]; 3 | 4 | export const ypos = ['top', 'middle', 'bottom'] as const; 5 | export type yPos = (typeof ypos)[number]; 6 | -------------------------------------------------------------------------------- /cypress/tests/index.cy.ts: -------------------------------------------------------------------------------- 1 | describe('Hslayers application', () => { 2 | beforeEach(() => { 3 | cy.visit('/'); 4 | }); 5 | 6 | it('should display Hslayers map and sidebar elements', () => { 7 | cy.get('hs-map'); 8 | cy.get('hs-sidebar'); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/constants/position-options.ts: -------------------------------------------------------------------------------- 1 | export const POSITION_OPTIONS = { 2 | positionsX: ['left', 'center', 'right'], 3 | positionsY: ['top', 'middle', 'bottom'], 4 | }; 5 | 6 | export const CANVAS_SIZES = [50, 100, 200, 300, 400, 500, 600, 800, 1000]; 7 | -------------------------------------------------------------------------------- /projects/hslayers/core/map-host.directive.ts: -------------------------------------------------------------------------------- 1 | import {Directive, ViewContainerRef, inject} from '@angular/core'; 2 | @Directive({ 3 | selector: '[hsMapHost]', 4 | standalone: false, 5 | }) 6 | export class HsMapHostDirective { 7 | viewContainerRef = inject(ViewContainerRef); 8 | } 9 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.lib.json", 3 | "compilerOptions": { 4 | "declarationMap": false 5 | }, 6 | "angularCompilerOptions": { 7 | "compilationMode": "partial", 8 | "enableResourceInlining": true, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/legend-layer-static/legend-layer-static.component.html: -------------------------------------------------------------------------------- 1 | @if (layerLegend.legendType === 'image') { 2 | 3 | } 4 | @if (layerLegend.legendType === 'svg') { 5 |
6 |
7 | } -------------------------------------------------------------------------------- /projects/hslayers/components/save-map/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './form/form.component'; 2 | export * from './form/advanced-options/advanced-options.component'; 3 | export * from './save-map-manager.service'; 4 | export * from './save-map.component'; 5 | export * from './save-map.module'; 6 | -------------------------------------------------------------------------------- /projects/hslayers/core/map/map.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ViewContainerRef, inject } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[map]', 5 | standalone: true, 6 | }) 7 | export class HsMapDirective { 8 | viewContainerRef = inject(ViewContainerRef); 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers/services/utils/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './layer-utils'; 2 | export * from './normalize-sld'; 3 | export * from './proxy.service'; 4 | export * from './utils'; 5 | export * from './extent-utils'; 6 | export * from './attribution-utils'; 7 | export * from './format-utils'; 8 | -------------------------------------------------------------------------------- /projects/hslayers/test/print-scale.service.mock.ts: -------------------------------------------------------------------------------- 1 | export function mockHsPrintScaleService() { 2 | return jasmine.createSpyObj('HsPrintScaleService', [ 3 | 'setToDefaultScale', 4 | 'scaleChanged', 5 | 'drawScaleCanvas', 6 | 'init', 7 | 'get', 8 | ]); 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.lib.json", 3 | "compilerOptions": { 4 | "declarationMap": false 5 | }, 6 | "angularCompilerOptions": { 7 | "compilationMode": "partial", 8 | "enableResourceInlining": true, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": [], 6 | "target": "ES2022" 7 | }, 8 | "files": ["src/main.ts", "src/polyfills.ts"], 9 | "include": ["src/**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers/common/filters/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './filter.component'; 2 | export * from './filters.component'; 3 | export * from './filters.service'; 4 | export * from './comparison-filter/comparison-filter.component'; 5 | export * from './add-filter-button/add-filter-button.component'; 6 | -------------------------------------------------------------------------------- /projects/hslayers/common/get-feature-info/json-get-feature-info.type.ts: -------------------------------------------------------------------------------- 1 | export type jsonGetFeatureInfo = { 2 | bbox?: number[]; 3 | crs?: any; 4 | features?: any[]; 5 | numberReturned?: number; 6 | timeStamp?: string; 7 | totalFeatures?: string | number; 8 | type?: string; 9 | }; 10 | -------------------------------------------------------------------------------- /projects/hslayers/core/layout.directive.ts: -------------------------------------------------------------------------------- 1 | import {Directive, ViewContainerRef, inject} from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[hslayout]', 5 | standalone: false, 6 | }) 7 | export class HsLayoutHostDirective { 8 | viewContainerRef = inject(ViewContainerRef); 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "types": [ 5 | "jasmine", 6 | "node" 7 | ], 8 | "typeRoots": [ 9 | "../../node_modules/@types" 10 | ], 11 | "resolveJsonModule": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/hscesium.component.scss: -------------------------------------------------------------------------------- 1 | .hs-cesium-container { 2 | height: 100%; 3 | margin: 0; 4 | padding: 0; 5 | overflow: hidden; 6 | position: absolute; 7 | left: 0; 8 | top: 0; 9 | width: 100%; 10 | margin-right: 0; 11 | } 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/imprint-object.type.ts: -------------------------------------------------------------------------------- 1 | import {TextStyle} from './text-style.type'; 2 | 3 | export type ImprintObj = { 4 | include?: boolean; 5 | author?: string; 6 | width?: number; 7 | height?: number; 8 | abstract?: string; 9 | textStyle?: TextStyle; 10 | }; 11 | -------------------------------------------------------------------------------- /projects/hslayers/test/layer-manager-layerlist.service.mock.ts: -------------------------------------------------------------------------------- 1 | export function mockHsLayerListService() { 2 | return jasmine.createSpyObj('HsLayerListService', [ 3 | 'toggleSublayersVisibility', 4 | 'filterLayers', 5 | 'changeSublayerVisibilityState', 6 | 'isLayerQueryable', 7 | ]); 8 | } 9 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/url.type.ts: -------------------------------------------------------------------------------- 1 | import {SERVICES_SUPPORTED_BY_URL} from './services-supported.const'; 2 | 3 | export type AddDataUrlType = (typeof SERVICES_SUPPORTED_BY_URL)[number]; 4 | //https://stackoverflow.com/questions/40863488/how-can-i-iterate-over-a-custom-literal-type-in-typescript 5 | -------------------------------------------------------------------------------- /projects/test-app/custom-webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | 3 | module.exports = { 4 | devtool: false, 5 | plugins: [ 6 | new webpack.SourceMapDevToolPlugin( { 7 | filename: '[file].map', 8 | exclude: ['vendor.js'], 9 | } ) 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /projects/hslayers/.compodocrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tsconfig": "./tsconfig.lib.json", 3 | "output": "../../docs/hslayers", 4 | "name": "HSLayers-NG documentation", 5 | "theme": "material", 6 | "customFavicon": ".assets/img/hslayers-ng-favicon_32x32.jpg", 7 | "customLogo": ".assets/img/hslayers-ng-logo.png" 8 | } -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/catalogue/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './catalogue-metadata/catalogue-metadata.component'; 2 | export * from './catalogue-metadata/catalogue-metadata.service'; 3 | export * from './catalogue.component'; 4 | export * from './catalogue-list-item/catalogue-list-item.component'; 5 | -------------------------------------------------------------------------------- /projects/hslayers/components/language/translate-testing.module.ts: -------------------------------------------------------------------------------- 1 | import {NgModule} from '@angular/core'; 2 | import {TranslateModule} from '@ngx-translate/core'; 3 | 4 | @NgModule({ 5 | imports: [TranslateModule.forRoot()], 6 | exports: [TranslateModule], 7 | }) 8 | export class TranslateTestingModule {} 9 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/scale-object.type.ts: -------------------------------------------------------------------------------- 1 | import {Units} from 'ol/control/ScaleLine'; 2 | 3 | export type ScaleObj = { 4 | include?: boolean; 5 | scaleType?: 'scaleline' | 'scalebar'; 6 | scaleBarSteps?: number; 7 | scaleBarText?: boolean; 8 | scaleUnits?: Units; 9 | }; 10 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/dialog-component.interface.ts: -------------------------------------------------------------------------------- 1 | import {ViewRef} from '@angular/core'; 2 | 3 | import {HsDialogItem} from './dialog-item'; 4 | 5 | export interface HsDialogComponent { 6 | cleanup?(): void; 7 | dialogItem?: HsDialogItem; 8 | viewRef: ViewRef; 9 | data: any; 10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/dialog-host.directive.ts: -------------------------------------------------------------------------------- 1 | import {Directive, ViewContainerRef, inject} from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[hsDialogHost]', 5 | standalone: true, 6 | }) 7 | export class HsDialogHostDirective { 8 | viewContainerRef = inject(ViewContainerRef); 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/panel-host.directive.ts: -------------------------------------------------------------------------------- 1 | import {Directive, ViewContainerRef, inject} from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[hsPanelHost]', 5 | standalone: false, 6 | }) 7 | export class HsPanelHostDirective { 8 | viewContainerRef = inject(ViewContainerRef); 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers/components/search/limitTo.pipe.ts: -------------------------------------------------------------------------------- 1 | import {Pipe, PipeTransform} from '@angular/core'; 2 | 3 | @Pipe({name: 'limitTo', standalone: true}) 4 | export class limitToPipe implements PipeTransform { 5 | transform(value: any[], limit: number): any[] { 6 | return value.slice(0, limit); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /projects/hslayers/services/save-map/saver-service.interface.ts: -------------------------------------------------------------------------------- 1 | import {CompoData, MapComposition} from 'hslayers-ng/types'; 2 | 3 | export interface HsSaverService { 4 | save( 5 | compositionJson: MapComposition, 6 | compoData: CompoData, 7 | saveAsNew: boolean, 8 | ): Promise; 9 | } 10 | -------------------------------------------------------------------------------- /projects/hslayers-app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hslayers-ng-app", 3 | "version": "16.2.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "hslayers-ng-app", 9 | "version": "16.2.0", 10 | "license": "MIT" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/file/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './file.component'; 2 | export * from './file.module'; 3 | export * from './file-type-values'; 4 | export * from './raster/public-api'; 5 | export * from './shp/public-api'; 6 | export * from './file-base.component'; 7 | export * from './file.service'; 8 | -------------------------------------------------------------------------------- /projects/cesium-test-app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hslayers-cesium-app", 3 | "version": "6.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "hslayers-cesium-app", 9 | "version": "6.0.0", 10 | "license": "MIT" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/src/components/sensors/types/senslog-endpoint.type.ts: -------------------------------------------------------------------------------- 1 | export type SensLogEndpoint = { 2 | url: string; 3 | user_id: number; 4 | group: string; 5 | user: string; 6 | liteApiPath?: string; 7 | mapLogApiPath?: string; 8 | senslog1Path?: string; 9 | senslog2Path?: string; 10 | }; 11 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/legend-layer-static/types/layer-legend.type.ts: -------------------------------------------------------------------------------- 1 | import {SafeHtml, SafeResourceUrl} from '@angular/platform-browser'; 2 | 3 | export type LayerLegend = { 4 | lastLegendImage?: any; 5 | legendType?: 'image' | 'svg'; 6 | svgContent?: SafeHtml; 7 | legendImage?: SafeResourceUrl; 8 | }; 9 | -------------------------------------------------------------------------------- /projects/hslayers/components/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 |
2 | 6 |
7 | -------------------------------------------------------------------------------- /projects/hslayers/components/trip-planner/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './layer-selector.component'; 2 | export * from './ors-profiles.const'; 3 | export * from './route-profile-selector.component'; 4 | export * from './trip-planner.component'; 5 | export * from './trip-planner.module'; 6 | export * from './trip-planner.service'; 7 | -------------------------------------------------------------------------------- /projects/hslayers/types/compositions/user-data.type.ts: -------------------------------------------------------------------------------- 1 | import { 2 | PointOfContact, 3 | ResponsibleOrganization, 4 | TheUserSchema, 5 | } from './map-composition.type'; 6 | 7 | export type UserData = { 8 | user?: TheUserSchema; 9 | contact?: PointOfContact; 10 | organization?: ResponsibleOrganization; 11 | }; 12 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hslayers-cesium-app", 3 | "version": "16.2.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "hslayers-cesium-app", 9 | "version": "16.2.0", 10 | "license": "MIT" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers/components/search/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './limitTo.pipe'; 2 | export * from './search-input.component'; 3 | export * from './search-results.component'; 4 | export * from './search.component'; 5 | export * from './search.module'; 6 | export * from './search.service'; 7 | export * from './search-toolbar.component'; 8 | -------------------------------------------------------------------------------- /projects/hslayers/test/styler.service.mock.ts: -------------------------------------------------------------------------------- 1 | export class HsStylerServiceMock { 2 | constructor() {} 3 | /** 4 | * Style clustered layer features using cluster style or individual feature style mock function. 5 | * @param layer - Any vector layer 6 | */ 7 | styleClusteredLayer() { 8 | return; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers/types/button.interface.ts: -------------------------------------------------------------------------------- 1 | export interface HsButton { 2 | fits?: boolean; 3 | panel?; 4 | module?: string; 5 | order?: number; 6 | title?; 7 | description?; 8 | icon?: string; 9 | condition?: boolean; 10 | content?; 11 | important?: boolean; 12 | click?; 13 | visible?: boolean; 14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers/types/clicked-coordinates.type.ts: -------------------------------------------------------------------------------- 1 | import {Coordinate} from 'ol/coordinate'; 2 | 3 | export type ClickedCoordinates = { 4 | coordinates: { 5 | name: string; 6 | mapProjCoordinate: Coordinate; 7 | epsg4326Coordinate: Coordinate; 8 | projections: {name: string; value: any}[]; 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Newline ending every file 7 | [*] 8 | insert_final_newline = true 9 | charset = utf-8 10 | 11 | # 2 space indentation and set default charset 12 | [*.{js,ts}] 13 | indent_style = space 14 | indent_size = 2 15 | -------------------------------------------------------------------------------- /projects/cesium-test-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": ["node", "cesium"], 6 | "target": "ES2022", 7 | "skipLibCheck": true 8 | }, 9 | "files": ["src/main.ts", "src/polyfills.ts"], 10 | "include": ["src/**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 2 | 3 | import {AppModule} from './hslayers-app/hslayers-app.module'; 4 | 5 | setTimeout(() => { 6 | const bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule); 7 | bootstrap().catch((err) => console.log(err)); 8 | }, 0); 9 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/toggle-view/toggle-view.component.scss: -------------------------------------------------------------------------------- 1 | .btn-3d-toggle { 2 | color: var(--bs-secondary); 3 | background-color: var(--bs-light); 4 | border-color: var(--bs-secondary); 5 | 6 | &.btn-3d-active, &:hover, &:active, &:focus { 7 | color: var(--bs-light); 8 | background-color: var(--bs-secondary); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/text-style.type.ts: -------------------------------------------------------------------------------- 1 | import {xPos, yPos} from './xy-positions.type'; 2 | 3 | export type TextStyle = { 4 | textColor?: string; 5 | bcColor?: string; 6 | textSize?: string; 7 | fontFamily?: string; 8 | fontStyle?: string; 9 | textDraw?: 'fill' | 'stroke'; 10 | posX?: xPos; 11 | posY?: yPos; 12 | }; 13 | -------------------------------------------------------------------------------- /projects/hslayers/config/public-api.ts: -------------------------------------------------------------------------------- 1 | export { 2 | HsConfig, 3 | HsConfigObject, 4 | SymbolizerIcon, 5 | MapSwipeOptions, 6 | KeyNumberDict, 7 | ToastPosition, 8 | DefaultPanel, 9 | } from './config.service'; 10 | 11 | export { 12 | HsConfigValidationService, 13 | HsConfigValidationRule, 14 | } from './config-validation.service'; 15 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": ["node", "cesium"], 6 | "target": "ES2022" 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialog-csw-layers/csw-layers-dialog.component.scss: -------------------------------------------------------------------------------- 1 | .accordion-button::after { 2 | margin-left: 0 !important; 3 | } 4 | 5 | .accordion-button:hover { 6 | background-color: rgb(239 239 239) 7 | } 8 | 9 | .accordion-button i:hover { 10 | color: #dc3545 !important; 11 | } 12 | 13 | .ml-auto { 14 | margin-left: auto; 15 | } 16 | -------------------------------------------------------------------------------- /projects/hslayers/test/data/service-endpoints.ts: -------------------------------------------------------------------------------- 1 | export const testingServiceEndpoints = { 2 | 'wms': [ 3 | 'http://cteco.uconn.edu/ctmaps/services/Coastal/BluePlan_ESA_Pillar1/MapServer/WmsServer?', 4 | 'https://geoportal.cuzk.cz/WMS_ZM100_PUB/WMService.aspx?SERVICE=WMS&', 5 | 'https://watlas.lesprojekt.cz/geoserver/layman_wms/ows', 6 | ], 7 | } as const; 8 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ], 9 | "resolveJsonModule": true 10 | }, 11 | "files": [], 12 | "include": [ 13 | "**/*.spec.ts", 14 | "**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './catalogue/public-api'; 2 | export * from './common/public-api'; 3 | export * from './file/public-api'; 4 | export * from './url/public-api'; 5 | export * from './vector/public-api'; 6 | export * from './add-data.component'; 7 | export * from './add-data.module'; 8 | export * from './enums/load-types.const'; 9 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/file/file.type.ts: -------------------------------------------------------------------------------- 1 | export const FILES_SUPPORTED = [ 2 | 'kml', 3 | 'gpx', 4 | 'geojson', 5 | 'shp', 6 | 'raster', 7 | 'raster-ts', 8 | ] as const; 9 | export type AddDataFileType = (typeof FILES_SUPPORTED)[number]; 10 | //https://stackoverflow.com/questions/40863488/how-can-i-iterate-over-a-custom-literal-type-in-typescript 11 | -------------------------------------------------------------------------------- /projects/test-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ES2022", 5 | "outDir": "./out-tsc/app", 6 | "types": [], 7 | "skipLibCheck": true, 8 | }, 9 | "files": [ 10 | "src/main.ts", 11 | "src/polyfills.ts" 12 | ], 13 | "include": [ 14 | "src/**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/.compodocrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tsconfig": "./tsconfig.lib.json", 3 | "output": "../../docs/hslayers-cesium", 4 | "name": "HSLayers-NG Cesium module documentation", 5 | "theme": "material", 6 | "customFavicon": "../../projects/hslayers/assets/img/hslayers-ng-favicon_32x32.jpg", 7 | "customLogo": "../../projects/hslayers/assets/img/hslayers-ng-logo.png" 8 | } -------------------------------------------------------------------------------- /projects/hslayers/common/layman/types/get-layers-response.type.ts: -------------------------------------------------------------------------------- 1 | import {AccessRightsModel} from 'hslayers-ng/types'; 2 | 3 | export type GetLayersResponse = { 4 | access_rights: AccessRightsModel; 5 | bounding_box: number[]; 6 | name: string; 7 | title: string; 8 | updated_at: string; 9 | url: string; 10 | uuid: string; 11 | workspace: string; 12 | }; 13 | -------------------------------------------------------------------------------- /projects/hslayers/components/search/search.component.html: -------------------------------------------------------------------------------- 1 | @if (isVisible$ | async) { 2 |
3 | 4 |
5 | 6 | 7 |
8 |
9 | } -------------------------------------------------------------------------------- /projects/hslayers/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/hslayers", 4 | "assets": [ 5 | "assets", 6 | "css/hslayers-ng.scss", 7 | "css/icons/hslayers-ng-fa-icons.css", 8 | "css/icons/create-fa-icons.py" 9 | ], 10 | "lib": { 11 | "entryFile": "public-api.ts" 12 | } 13 | } -------------------------------------------------------------------------------- /projects/hslayers/services/panels/overlay/overlay-container.service.ts: -------------------------------------------------------------------------------- 1 | import {HsPanelContainerService} from '../panel-container.service'; 2 | import {Injectable} from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root', 6 | }) 7 | export class HsOverlayContainerService extends HsPanelContainerService { 8 | constructor() { 9 | super(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/hslayers/types/layman/upsert-layer-object.type.ts: -------------------------------------------------------------------------------- 1 | import {AccessRightsModel} from '../access-rights.model'; 2 | 3 | export type UpsertLayerObject = { 4 | title?: string; 5 | name?: string; 6 | crs?: string; 7 | workspace?: string; 8 | access_rights?: AccessRightsModel; 9 | style?: string; //sld param is deprecated in Layman. Use style instead 10 | }; 11 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/.compodocrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tsconfig": "./tsconfig.lib.json", 3 | "output": "../../docs/hslayers-sensors", 4 | "name": "HSLayers-NG Sensors module documentation", 5 | "theme": "material", 6 | "customFavicon": "../../projects/hslayers/assets/img/hslayers-ng-favicon_32x32.jpg", 7 | "customLogo": "../../projects/hslayers/assets/img/hslayers-ng-logo.png" 8 | } -------------------------------------------------------------------------------- /projects/hslayers/components/trip-planner/ors-profiles.const.ts: -------------------------------------------------------------------------------- 1 | export const profiles = [ 2 | 'driving-car', 3 | 'driving-hgv', 4 | 'cycling-regular', 5 | 'cycling-road', 6 | 'cycling-mountain', 7 | 'cycling-electric', 8 | 'foot-walking', 9 | 'foot-hiking', 10 | 'wheelchair', 11 | ] as const; 12 | 13 | export type RouteProfile = (typeof profiles)[number]; 14 | -------------------------------------------------------------------------------- /projects/hslayers/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": ["jasmine", "node"], 6 | "typeRoots": ["../../node_modules/@types"], 7 | "resolveJsonModule": true 8 | }, 9 | "files": ["test/test.ts"], 10 | "include": ["test/**/*.spec.ts", "test/**/*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /projects/hslayers/types/compositions/serialized-image.type.ts: -------------------------------------------------------------------------------- 1 | import {Color} from 'ol/color'; 2 | import {ColorLike, PatternDescriptor} from 'ol/colorlike'; 3 | 4 | export type SerializedImage = { 5 | fill?: Color | ColorLike | PatternDescriptor; 6 | stroke?: {color: Color | ColorLike; width: number}; 7 | radius?: number; 8 | src?: string; 9 | type?: string; 10 | }; 11 | -------------------------------------------------------------------------------- /projects/hslayers/types/save-map/status-data.type.ts: -------------------------------------------------------------------------------- 1 | export type StatusData = { 2 | success?: boolean; 3 | overWriteNeeded?: boolean; 4 | resultCode?: string; 5 | error?: any; 6 | status?: boolean; 7 | /** 8 | * Whether it is possible for current user to edit composition with 9 | * existing name 10 | */ 11 | canEditExistingComposition?: boolean; 12 | }; 13 | -------------------------------------------------------------------------------- /projects/hslayers/common/query-popup/popup-data.ts: -------------------------------------------------------------------------------- 1 | import {Feature, Map} from 'ol'; 2 | import {Geometry} from 'ol/geom'; 3 | 4 | import {HsFeatureLayer} from './query-popup.service.model'; 5 | 6 | export class HsQueryPopupData { 7 | map: Map; 8 | hoverPopup: any; 9 | featuresUnderMouse: Feature[] = []; 10 | featureLayersUnderMouse: HsFeatureLayer[] = []; 11 | } 12 | -------------------------------------------------------------------------------- /projects/hslayers/services/panels/toolbar/toolbar-panel-container.service.ts: -------------------------------------------------------------------------------- 1 | import {HsPanelContainerService} from '../panel-container.service'; 2 | import {Injectable} from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root', 6 | }) 7 | export class HsToolbarPanelContainerService extends HsPanelContainerService { 8 | constructor() { 9 | super(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/src/components/sensors/types/interval.type.ts: -------------------------------------------------------------------------------- 1 | export type Interval = { 2 | name: '1H' | '1D' | '1W' | '1M' | '6M' | 'Custom'; 3 | amount?: number; 4 | unit?: 'hours' | 'days' | 'weeks' | 'months'; 5 | loading?: boolean; 6 | timeFormat: string; 7 | }; 8 | 9 | export type CustomInterval = Interval & { 10 | fromTime: any; 11 | toTime: any; 12 | }; 13 | -------------------------------------------------------------------------------- /projects/hslayers/types/layman/status-state.type.ts: -------------------------------------------------------------------------------- 1 | export const STATE_VALUES = [ 2 | 'PENDING', 3 | 'STARTED', 4 | 'FAILURE', 5 | 'NOT_AVAILABLE', 6 | ] as const; 7 | 8 | /** 9 | * Status information about GeoServer import and availability of WMS layer. No status object means the source is available. 10 | */ 11 | export type StatusStateType = (typeof STATE_VALUES)[number]; 12 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ], 9 | "resolveJsonModule":true 10 | }, 11 | "files": [ 12 | "test/test.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers/common/layman/types/post-patch-layer-response.type.ts: -------------------------------------------------------------------------------- 1 | export type PostPatchLayerResponse = { 2 | name?: string; 3 | uuid?: string; 4 | url?: string; 5 | files_to_upload?: { 6 | file?: string; 7 | layman_original_parameter?: string; 8 | }[]; 9 | code?: number; 10 | detail?: any; 11 | error?: { 12 | message: string; 13 | }; 14 | message?: string; 15 | }; 16 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/layer-editor-widget-container.service.ts: -------------------------------------------------------------------------------- 1 | import {HsPanelContainerService} from 'hslayers-ng/services/panels'; 2 | import {Injectable} from '@angular/core'; 3 | 4 | @Injectable({ 5 | providedIn: 'root', 6 | }) 7 | export class HsLayerEditorWidgetContainerService extends HsPanelContainerService { 8 | constructor() { 9 | super(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/constants/scale-styling-options.ts: -------------------------------------------------------------------------------- 1 | export const SCALE_STYLING_OPTIONS = { 2 | scaleType: ['scaleline', 'scalebar'], 3 | scaleUnits: [ 4 | {name: 'degrees', value: 'degrees'}, 5 | {name: 'us inch', value: 'us'}, 6 | {name: 'nautical mile', value: 'nautical'}, 7 | {name: 'metric', value: 'metric'}, 8 | ], 9 | scaleBarSteps: [2, 4, 6, 8], 10 | }; 11 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/custom-webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | 3 | module.exports = { 4 | devtool: false, 5 | // optimization: { 6 | // splitChunks: { 7 | // maxSize: 50000 8 | // } 9 | // }, 10 | plugins: [ 11 | new webpack.SourceMapDevToolPlugin({ 12 | filename: '[file].map', 13 | exclude: ['vendor.js'], 14 | }), 15 | ], 16 | }; 17 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/public-api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of hslayers-cesium 3 | */ 4 | 5 | export * from './hscesium.module'; 6 | export * from './hscesium.component'; 7 | export * from './hscesium.service'; 8 | export * from './hscesium-time.service'; 9 | export * from './hscesium-layers.service'; 10 | export * from './hscesium-camera.service'; 11 | export * from './hscesium-config.service'; 12 | -------------------------------------------------------------------------------- /projects/hslayers/types/compositions/serialized-style.type.ts: -------------------------------------------------------------------------------- 1 | import {Color} from 'ol/color'; 2 | import {ColorLike, PatternDescriptor} from 'ol/colorlike'; 3 | 4 | import {SerializedImage} from './serialized-image.type'; 5 | 6 | export type SerializedStyle = { 7 | fill?: Color | ColorLike | PatternDescriptor; 8 | stroke?: {color: Color | ColorLike; width: number}; 9 | image?: SerializedImage; 10 | }; 11 | -------------------------------------------------------------------------------- /projects/hslayers/common/pipes/filter.pipe.ts: -------------------------------------------------------------------------------- 1 | import {Pipe, PipeTransform} from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'filter', 5 | standalone: true, 6 | }) 7 | export class FilterPipe implements PipeTransform { 8 | transform( 9 | items: Array, 10 | filterCallback: (item: any) => boolean, 11 | ): Array { 12 | return items.filter((item) => filterCallback(item)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers/core/public-api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Main hslayers-ng entrypoint 3 | */ 4 | export * from './hslayers.component'; 5 | export * from './hslayers.module'; 6 | export * from './layout.directive'; 7 | export * from './hslayers.service'; 8 | export * from './map-host.directive'; 9 | export * from './map/map.component'; 10 | export * from './map/map.directive'; 11 | export * from './safeTakeUntilDestroyed'; 12 | -------------------------------------------------------------------------------- /projects/test-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ], 9 | "resolveJsonModule":true 10 | }, 11 | "files": [ 12 | "test/test.ts", 13 | "src/polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": [], 6 | "target": "ES2022" 7 | }, 8 | "files": ["src/main.ts", "src/polyfills.ts"], 9 | "paths": { 10 | "hslayers-ng": ["./dist/hslayers"], 11 | "hslayers-ng/*": ["./dist/hslayers/*"] 12 | }, 13 | "include": ["src/**/*.d.ts"] 14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ], 9 | "resolveJsonModule":true 10 | }, 11 | "files": [ 12 | "test/test.ts", 13 | "src/polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/types/print-object.type.ts: -------------------------------------------------------------------------------- 1 | import {ImprintObj} from './imprint-object.type'; 2 | import {LegendObj} from './legend-object.type'; 3 | import {ScaleObj} from './scale-object.type'; 4 | import {TitleObj} from './title-object.type'; 5 | 6 | export type PrintModel = { 7 | titleObj?: TitleObj; 8 | scaleObj?: ScaleObj; 9 | legendObj?: LegendObj; 10 | imprintObj?: ImprintObj; 11 | }; 12 | -------------------------------------------------------------------------------- /projects/cesium-test-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ], 9 | "resolveJsonModule":true 10 | }, 11 | "files": [ 12 | "test/test.ts", 13 | "src/polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/url/progress/progress.component.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | 7 |
8 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ], 9 | "resolveJsonModule":true 10 | }, 11 | "files": [ 12 | "test/test.ts", 13 | "src/polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ], 9 | "resolveJsonModule":true 10 | }, 11 | "files": [ 12 | "test/test.ts", 13 | "src/polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/logical-list/layer-manager-layerlist.component.html: -------------------------------------------------------------------------------- 1 | @if ((filteredLayers | async ).length>0) { 2 |
3 |
    4 | @for (layer of filteredLayers | async ; track layer) { 5 | 8 | } 9 |
10 |
11 | } 12 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/recursive-options.type.ts: -------------------------------------------------------------------------------- 1 | import {LayerOptions} from '../compositions/composition-layer-options.type'; 2 | 3 | export type AddLayersRecursivelyOptions = { 4 | checkedOnly?: boolean; 5 | /** 6 | * Whether to go through full depth of layer tree or to stop on first queryable. 7 | * For now utilized for WMS only. 8 | */ 9 | shallow?: boolean; 10 | layerOptions?: LayerOptions; 11 | }; 12 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/panel-helpers.module.ts: -------------------------------------------------------------------------------- 1 | import {NgModule} from '@angular/core'; 2 | 3 | import {HsPanelContainerComponent} from './panel-container.component'; 4 | import {HsPanelHostDirective} from './panel-host.directive'; 5 | @NgModule({ 6 | declarations: [HsPanelHostDirective, HsPanelContainerComponent], 7 | imports: [], 8 | exports: [HsPanelContainerComponent], 9 | }) 10 | export class HsPanelHelpersModule {} 11 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/legend-descriptor.interface.ts: -------------------------------------------------------------------------------- 1 | import {SafeHtml} from '@angular/platform-browser'; 2 | 3 | import {Layer} from 'ol/layer'; 4 | import {Source} from 'ol/source'; 5 | 6 | export interface HsLegendDescriptor { 7 | autoLegend?: boolean; 8 | lyr: Layer; 9 | title: string; 10 | type: string; 11 | subLayerLegends?: Array; 12 | visible: boolean; 13 | svg?: SafeHtml; 14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers/components/styler/styles.ts: -------------------------------------------------------------------------------- 1 | import {Circle, Fill, Stroke, Style} from 'ol/style'; 2 | 3 | export const simple_style = new Style({ 4 | fill: new Fill({ 5 | color: 'rgba(255, 255, 255, 1)', 6 | }), 7 | stroke: new Stroke({ 8 | color: '#ffcc33', 9 | width: 1, 10 | }), 11 | image: new Circle({ 12 | radius: 7, 13 | fill: new Fill({ 14 | color: '#ffcc33', 15 | }), 16 | }), 17 | }); 18 | -------------------------------------------------------------------------------- /projects/hslayers/types/feature-descriptor.ts: -------------------------------------------------------------------------------- 1 | import {Geometry} from 'ol/geom'; 2 | import {Feature} from 'ol/index'; 3 | 4 | export type HsFeatureAttribute = { 5 | name; 6 | value; 7 | sanitizedValue?; 8 | }; 9 | 10 | export type HsFeatureDescriptor = { 11 | name: string; 12 | feature: Feature; 13 | attributes: HsFeatureAttribute[]; 14 | stats: any[]; 15 | layer?: string; 16 | hstemplate?: any; 17 | }; 18 | -------------------------------------------------------------------------------- /projects/hslayers/types/filters/filter-types.ts: -------------------------------------------------------------------------------- 1 | import { 2 | CombinationFilter, 3 | ComparisonFilter, 4 | NegationFilter, 5 | } from 'geostyler-style'; 6 | 7 | export type LogicalOperatorType = 'AND' | 'OR' | 'NOT'; 8 | export type ComparisonOperatorType = 'COMPARE'; 9 | export type FilterType = LogicalOperatorType | ComparisonOperatorType; 10 | 11 | export type Filter = ComparisonFilter | NegationFilter | CombinationFilter; 12 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/file/raster/raster-timeseries/raster-timeseries.component.scss: -------------------------------------------------------------------------------- 1 | ::ng-deep { 2 | 3 | .accordion-button, 4 | .accordion-body { 5 | padding: 0.5rem !important; 6 | } 7 | } 8 | 9 | .verification-pending { 10 | label { 11 | color: var(--bs-warning); 12 | opacity: 1 !important; 13 | } 14 | 15 | input { 16 | border-color: var(--bs-warning); 17 | } 18 | } -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/wms/wms.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | @if (hsAddDataCommonService.loadingInfo) { 5 | 6 | } 7 | 8 |
-------------------------------------------------------------------------------- /projects/hslayers-sensors/src/components/sensors/types/senslog-sensor.type.ts: -------------------------------------------------------------------------------- 1 | export class SenslogSensor { 2 | phenomenon_name: string; 3 | phenomenon_name_translated?: string; 4 | sensor_id: string | number; 5 | sensor_name: string; 6 | sensor_type: string; 7 | uom: string; 8 | unit_id: number; 9 | unit_description: string; 10 | lastObservationTimestamp?: string; 11 | lastObservationValue?: string; 12 | checked: boolean; 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers/common/query-popup/widgets/clear-layer.component.html: -------------------------------------------------------------------------------- 1 |
2 | @if (isLayerEditable(layerDescriptor.layer)) { 3 | 5 | {{'QUERY.featurePopup.clearLayer' | translate }} 6 | 7 | } 8 |
9 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/url/add/add.component.html: -------------------------------------------------------------------------------- 1 |
3 | 5 | 7 |
8 | -------------------------------------------------------------------------------- /projects/hslayers/components/feature-table/feature-table.component.html: -------------------------------------------------------------------------------- 1 | @if (isVisible$ | async) { 2 |
3 | 4 |
5 | @for (layer of layers; track layer) { 6 |
7 | 8 |
9 | } 10 |
11 |
12 | } -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './dialog-component.interface'; 2 | export * from './dialog-container.component'; 3 | export * from './dialog-container.service'; 4 | export * from './dialog-host.directive'; 5 | export * from './dialog-item'; 6 | 7 | export * from './overwrite-layer/overwrite-layer.component'; 8 | export * from './rename-layer/rename-layer.component'; 9 | export * from './compositions-warning/warning-dialog.component'; 10 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/arcgis/arcgis.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | @if (hsAddDataCommonService.loadingInfo) { 5 | 6 | } 7 | 8 |
9 | -------------------------------------------------------------------------------- /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # Pre-commit hook to check for focused tests (fdescribe and fit) 3 | 4 | if grep -rn 'fdescribe(' ./projects/hslayers/test || grep -rn 'fit(' ./projects/hslayers/test; then 5 | echo "Error: Found focused tests (fdescribe or fit). Please remove them before committing." 6 | echo "Pre-commit hook failed. Commit aborted." 7 | exit 1 8 | else 9 | echo "No focused tests found." 10 | fi 11 | 12 | echo "Pre-commit hook completed." 13 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/toggle-view/toggle-view.component.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /projects/hslayers/common/layman/types/current-user-response.type.ts: -------------------------------------------------------------------------------- 1 | export type CurrentUserResponse = { 2 | authenticated?: boolean; 3 | claims?: { 4 | email?: string; 5 | email_verified?: boolean; 6 | family_name?: string; 7 | given_name?: string; 8 | iss?: string; 9 | middle_name?: string; 10 | name?: string; 11 | preferred_username?: string; 12 | screen_name?: string; 13 | }; 14 | username?: string; 15 | code?: number; 16 | }; 17 | -------------------------------------------------------------------------------- /projects/hslayers/types/layer-manager/terrain-layer-descriptor.type.ts: -------------------------------------------------------------------------------- 1 | export type HsTerrainLayerDescriptor = { 2 | title?: string; 3 | url: string; 4 | active?: boolean; //FIXME: why active and visible? What is the difference?? 5 | visible?: boolean; 6 | /** 7 | * https://cesium.com/learn/cesiumjs/ref-doc/CesiumTerrainProvider.html#.ConstructorOptions 8 | */ 9 | options?; 10 | type?: 'terrain'; 11 | abstract?: string; 12 | grayed?: boolean; 13 | }; 14 | -------------------------------------------------------------------------------- /.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # You can see what browsers were selected by your queries by running: 6 | # npx browserslist 7 | 8 | > 0.5% 9 | last 2 versions 10 | Firefox ESR 11 | not dead 12 | not IE 9-11 # For IE 9-11 support, remove 'not'. -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/common.component.scss: -------------------------------------------------------------------------------- 1 | .hsl-custom-select { 2 | height: calc(1.5em + 0.75rem + 2px); 3 | min-height: 1.5rem; 4 | padding: 0.375rem 1.75rem 0.375rem 0.75rem; 5 | display: inline-block; 6 | font-size: 1rem; 7 | font-weight: 400; 8 | width: 100%; 9 | border: 1px solid #ced4da 10 | } 11 | 12 | hs-url-details .input-group-text { 13 | min-width: 13ch; 14 | display: flex; 15 | justify-content: center; 16 | } -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/vector/vector-url/vector-url.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | @if (data.showDetails) { 6 |
7 | 8 | 9 |
10 | } 11 | 12 |
13 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/legend-widget.component.html: -------------------------------------------------------------------------------- 1 | @if (olLayer && hsLayerEditorService.legendVisible()) { 2 |
3 |
4 | 5 | {{ "COMMON.legend" | translate }} 6 |
7 |
8 | 9 |
10 |
11 | } 12 | -------------------------------------------------------------------------------- /projects/hslayers/services/log/log.service.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | import {Injectable} from '@angular/core'; 3 | @Injectable({ 4 | providedIn: 'root', 5 | }) 6 | export class HsLogService { 7 | warn(...attrs): void { 8 | console.warn(attrs); 9 | } 10 | log(...attrs): void { 11 | console.log(attrs); 12 | } 13 | error(...attrs): void { 14 | console.error(attrs); 15 | } 16 | info(...attrs): void { 17 | console.info(attrs); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/hslayers/types/layman/about-layman-response.type.ts: -------------------------------------------------------------------------------- 1 | export type AboutLayman = { 2 | about: { 3 | applications: { 4 | layman: { 5 | version: string; 6 | releaseTimestamp: string; //DateTime 7 | }; 8 | laymanTestClient: { 9 | version: string; 10 | }; 11 | }; 12 | data: { 13 | layman: { 14 | lastSchemaMigration: string; 15 | lastDataMigration: string; 16 | }; 17 | }; 18 | }; 19 | }; 20 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/wms-source-widget/wms-source-widget.component.html: -------------------------------------------------------------------------------- 1 | @if (isEnabled | async) { 2 |
3 | @for (o of options; track o) { 4 | 8 | } 9 |
10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers/common/color-map-picker/colormap-picker.module.ts: -------------------------------------------------------------------------------- 1 | import {CommonModule} from '@angular/common'; 2 | import {NgModule} from '@angular/core'; 3 | import {TranslatePipe} from '@ngx-translate/core'; 4 | 5 | import {ColormapPickerComponent} from './colormap-picker.component'; 6 | 7 | @NgModule({ 8 | declarations: [ColormapPickerComponent], 9 | imports: [CommonModule, TranslatePipe], 10 | exports: [ColormapPickerComponent], 11 | }) 12 | export class HsColormapPickerModule {} 13 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/type-widget.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | 3 | import {HsLayerEditorWidgetBaseComponent} from './layer-editor-widget-base.component'; 4 | 5 | @Component({ 6 | selector: 'hs-type-widget', 7 | templateUrl: './type-widget.component.html', 8 | standalone: false, 9 | }) 10 | export class HsTypeWidgetComponent extends HsLayerEditorWidgetBaseComponent { 11 | showCheck = false; 12 | name = 'type-widget'; 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers/components/query/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './attribute-row/attribute-row.component'; 2 | export * from './default-info-panel-body/default-info-panel-body.component'; 3 | export * from './feature-common.service'; 4 | export * from './feature-list/feature-list.component'; 5 | export * from './feature/feature.component'; 6 | export * from './query-wms.service'; 7 | export * from './query-wmts.service'; 8 | export * from './query.component'; 9 | export * from './query.tokens'; 10 | -------------------------------------------------------------------------------- /projects/hslayers/test/testing-utils.ts: -------------------------------------------------------------------------------- 1 | const orgConsoleError = window.console.error; 2 | 3 | export function patchConsoleToFailOnError(): void { 4 | window.console.error = function (...args: any[]) { 5 | orgConsoleError.apply(this, args); 6 | try { 7 | throw new Error('console.error'); 8 | } catch (err) { 9 | window.console.info('console.error', args, err); 10 | } 11 | fail('console.error was called, this is not allowed in a unit test run'); 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers/types/layer-manager/hs-sublayer.interface.ts: -------------------------------------------------------------------------------- 1 | export interface HsSublayer { 2 | /** 3 | * Unique identifier for the layer 4 | */ 5 | name: string; 6 | title: string; 7 | /** 8 | * Visibility state of this layer 9 | */ 10 | visible: boolean; 11 | /** 12 | * Previous visibility state 13 | */ 14 | previousVisible: boolean; 15 | /** 16 | * Nested sublayers, if any 17 | */ 18 | sublayers?: HsSublayer[]; 19 | maxResolution?: number; 20 | } 21 | -------------------------------------------------------------------------------- /projects/hslayers/services/get-capabilities/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './arcgis-get-capabilities.service'; 2 | export * from './capability-cache.service'; 3 | export * from './dimension-time.service'; 4 | export * from './dimension.service'; 5 | export * from './get-capabilities.interface'; 6 | export * from './wfs-get-capabilities.service'; 7 | export * from './wms-get-capabilities.service'; 8 | export * from './wmts-get-capabilities.service'; 9 | export * from './xyz-get-capabilities.service'; 10 | -------------------------------------------------------------------------------- /projects/hslayers/common/remove-multiple/remove-layer-dialog.module.ts: -------------------------------------------------------------------------------- 1 | import {CommonModule} from '@angular/common'; 2 | import {NgModule} from '@angular/core'; 3 | import {TranslatePipe} from '@ngx-translate/core'; 4 | 5 | import {HsRmLayerDialogComponent} from './remove-layer-dialog.component'; 6 | 7 | @NgModule({ 8 | declarations: [HsRmLayerDialogComponent], 9 | imports: [CommonModule, TranslatePipe], 10 | exports: [HsRmLayerDialogComponent], 11 | }) 12 | export class HsRmLayerDialogModule {} 13 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/dialog-item.ts: -------------------------------------------------------------------------------- 1 | import {Type} from '@angular/core'; 2 | 3 | export class HsDialogItem { 4 | resolve: (value?: unknown) => void; 5 | reject: (reason?: any) => void; 6 | waitResult(): Promise { 7 | const promise = new Promise((resolve, reject) => { 8 | this.resolve = resolve; 9 | this.reject = reject; 10 | }); 11 | return promise; 12 | } 13 | constructor( 14 | public component: Type, 15 | public data: any, 16 | ) {} 17 | } 18 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './common.module'; 2 | export * from './url/public-api'; 3 | export * from './advanced-options/advanced-options.component'; 4 | export * from './new-layer-form/new-layer-form.component'; 5 | export * from './save-to-layman/save-to-layman.component'; 6 | export * from './target-position/target-position.component'; 7 | export * from './add-layer-authorized/add-layer-authorized.component'; 8 | export * from './url/add-as-toggle/add-as-toggle.component'; 9 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/layer-type-switcher-widget/layer-type-switcher-widget.component.html: -------------------------------------------------------------------------------- 1 | @if (isEnabled | async) { 2 |
3 | @for (t of types; track t) { 4 | 8 | } 9 |
10 | } 11 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/legend-custom-category.type.ts: -------------------------------------------------------------------------------- 1 | export type HsCustomLegendCategory = { 2 | /** 3 | * Unique category name 4 | */ 5 | name: string; 6 | /** 7 | * rgb(a) or hex encoded color string 8 | * (mutually exclusive with path) 9 | */ 10 | color?: string; 11 | /** 12 | * Path to an icon 13 | * (mutually exclusive with color) 14 | */ 15 | path?: string; 16 | /** 17 | * Optional height of the icon in pixels 18 | */ 19 | height?: number; 20 | }; 21 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import {enableProdMode} from '@angular/core'; 2 | import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 3 | 4 | import {AppModule} from './app/app.module'; 5 | import {environment} from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | setTimeout(() => { 12 | const bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule); 13 | bootstrap().catch((err) => console.log(err)); 14 | }, 0); 15 | -------------------------------------------------------------------------------- /projects/hslayers/services/utils/attribution-utils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Replace Urls in text by anchor html tag with url, useful for attribution to be clickable 3 | * 4 | * @param url - String to look for Urls 5 | * @returns Text with added anchors 6 | */ 7 | export function addAnchors(url: string): string { 8 | if (!url) { 9 | return null; 10 | } 11 | const exp = 12 | /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi; 13 | return url.replace(exp, "$1"); 14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/url/progress/progress.component.ts: -------------------------------------------------------------------------------- 1 | import {ChangeDetectionStrategy, Component, inject} from '@angular/core'; 2 | 3 | import {HsEventBusService} from 'hslayers-ng/services/event-bus'; 4 | 5 | @Component({ 6 | selector: 'hs-url-progress', 7 | templateUrl: './progress.component.html', 8 | changeDetection: ChangeDetectionStrategy.OnPush, 9 | standalone: false, 10 | }) 11 | export class HsUrlProgressComponent { 12 | hsEventBusService = inject(HsEventBusService); 13 | } 14 | -------------------------------------------------------------------------------- /projects/hslayers/components/styler/symbolizers/symbolizer.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | import {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler'; 4 | import {Kinds} from './symbolizer-kind.enum'; 5 | 6 | @Component({ 7 | selector: 'hs-symbolizer', 8 | templateUrl: './symbolizer.component.html', 9 | standalone: false, 10 | }) 11 | export class HsSymbolizerComponent extends HsStylerPartBaseComponent { 12 | @Input() symbolizer; 13 | 14 | kinds = Kinds; 15 | } 16 | -------------------------------------------------------------------------------- /projects/hslayers/services/layer-manager/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './layer-manager.service'; 2 | export * from './layer-selector.service'; 3 | export * from './layer-editor-vector-layer.service'; 4 | export * from './layer-manager-metadata.service'; 5 | export * from './layer-manager-copy-layer.service'; 6 | export * from './layer-manager-utils.service'; 7 | export * from './layer-manager-visibility.service'; 8 | export * from './layer-manager-folder.service'; 9 | export * from './layer-manager-loading-progress.service'; 10 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import {BrowserModule} from '@angular/platform-browser'; 2 | import {NgModule} from '@angular/core'; 3 | 4 | import {HsCesiumModule} from 'hslayers-cesium'; 5 | import {HslayersModule} from 'hslayers-ng/core'; 6 | 7 | import {AppComponent} from './app.component'; 8 | 9 | @NgModule({ 10 | declarations: [AppComponent], 11 | imports: [BrowserModule, HslayersModule, HsCesiumModule], 12 | providers: [], 13 | bootstrap: [AppComponent], 14 | }) 15 | export class AppModule {} 16 | -------------------------------------------------------------------------------- /projects/hslayers/services/get-capabilities/get-capabilities.interface.ts: -------------------------------------------------------------------------------- 1 | import {Layer} from 'ol/layer'; 2 | import {Source} from 'ol/source'; 3 | 4 | import {CapabilitiesResponseWrapper} from 'hslayers-ng/types'; 5 | 6 | export interface IGetCapabilities { 7 | getPathFromUrl(str: string): string; 8 | params2String(obj): string; 9 | request( 10 | service_url: string, 11 | owrCache?: boolean, 12 | ): Promise; 13 | service2layers?(caps: any, path?: string): Layer[]; 14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers/types/compositions/composition-data.type.ts: -------------------------------------------------------------------------------- 1 | import {Layer} from 'ol/layer'; 2 | 3 | import {AccessRightsModel} from '../access-rights.model'; 4 | import {BoundingBoxObject} from '../bounding-box-object.type'; 5 | 6 | export type CompoData = { 7 | name?: string; 8 | title?: string; 9 | abstract?: string; 10 | keywords?: string; 11 | layers?: Layer[]; 12 | id?: string; 13 | thumbnail?: any; 14 | bbox?: BoundingBoxObject; 15 | access_rights?: AccessRightsModel; 16 | workspace?: string; 17 | }; 18 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/panel-component.interface.ts: -------------------------------------------------------------------------------- 1 | import {Observable} from 'rxjs'; 2 | import {ViewRef} from '@angular/core'; 3 | 4 | export interface HsPanelComponent { 5 | unpinned?: boolean; 6 | viewRef: ViewRef; 7 | data: any; 8 | name: string; 9 | isVisible$: Observable; 10 | /** 11 | * Optional function so panel can clean up 12 | * after itself (delete data, related components etc.) 13 | * when destroyed manually by HsPanelContainerService.destroy 14 | */ 15 | cleanup?(): void; 16 | } 17 | -------------------------------------------------------------------------------- /projects/test-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hslayers demo 7 | 8 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /projects/hslayers/components/styler/edit-dialog/edit-dialog.component.ts: -------------------------------------------------------------------------------- 1 | import {Component} from '@angular/core'; 2 | import {HsConfirmDialogComponent} from 'hslayers-ng/common/confirm'; 3 | 4 | @Component({ 5 | selector: 'hs-styles-edit-dialog', 6 | templateUrl: './edit-dialog.component.html', 7 | standalone: false, 8 | }) 9 | export class HsStylerEditDialogComponent extends HsConfirmDialogComponent { 10 | exitWithoutSave() { 11 | this.hsDialogContainerService.destroy(this); 12 | this.dialogItem.resolve('exit'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers/components/styler/symbolizers/slider/slider.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{label}}
4 | @if (warning !== undefined) { 5 | ! 6 | } 7 |
8 | 10 |
11 |
12 |
-------------------------------------------------------------------------------- /projects/cesium-test-app/custom-webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | 3 | module.exports = { 4 | devtool: false, 5 | resolve: { 6 | fallback: { 7 | fs: false, 8 | Buffer: false, 9 | http: false, 10 | https: false, 11 | zlib: false, 12 | url: false 13 | }, 14 | }, 15 | module: { 16 | unknownContextCritical: false, 17 | }, 18 | plugins: [ 19 | new webpack.SourceMapDevToolPlugin({ 20 | filename: "[file].map", 21 | exclude: ["vendor.js"], 22 | }), 23 | ], 24 | }; 25 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/src/components/sensors/types/senslog-response.type.ts: -------------------------------------------------------------------------------- 1 | import {SenslogSensor} from './senslog-sensor.type'; 2 | 3 | /** 4 | * @example 5 | * asWKT : "POINT(16.7336889 48.8248517)" 6 | * time_stamp: "2024-04-19 13:00:00+02" 7 | */ 8 | export type UnitPosition = { 9 | asWKT: string; 10 | time_stamp: string; 11 | }; 12 | 13 | export type SenslogResponse = { 14 | description: string; 15 | is_mobile: boolean; 16 | sensors: SenslogSensor[]; 17 | unit_id: number; 18 | unit_position: UnitPosition; 19 | unit_type: string; 20 | }; 21 | -------------------------------------------------------------------------------- /projects/hslayers/services/styler/style-part-base.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, EventEmitter, Input, Output} from '@angular/core'; 2 | 3 | @Component({ 4 | template: '
', 5 | standalone: true, 6 | }) 7 | export class HsStylerPartBaseComponent { 8 | @Output() changes = new EventEmitter(); 9 | @Output() deleteFilter = new EventEmitter(); 10 | 11 | @Input() warning: string; 12 | 13 | emitChange(): void { 14 | this.changes.emit(); 15 | } 16 | 17 | deleteRuleFilter(): void { 18 | this.deleteFilter.emit(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /projects/hslayers/css/bootstrap-utilities.scss: -------------------------------------------------------------------------------- 1 | @import "bootstrap/scss/functions"; 2 | @import "bootstrap/scss/variables"; 3 | @import "bootstrap/scss/utilities"; 4 | 5 | $utilities: map-merge($utilities, 6 | ("rotate": (property: transform, 7 | class: rotate, 8 | values: (n90: rotate(-90deg), 9 | 0: rotate(0deg), 10 | 90: rotate(90deg), 11 | 180: rotate(180deg), 12 | 270: rotate(270deg))))); 13 | 14 | // Generate utilities 15 | @import "bootstrap/scss/utilities/api"; -------------------------------------------------------------------------------- /projects/hslayers/common/pager/pager.module.ts: -------------------------------------------------------------------------------- 1 | import {CommonModule} from '@angular/common'; 2 | import {FormsModule} from '@angular/forms'; 3 | import {NgModule} from '@angular/core'; 4 | 5 | import {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap'; 6 | import {TranslatePipe} from '@ngx-translate/core'; 7 | 8 | import {HsPagerComponent} from './pager.component'; 9 | 10 | @NgModule({ 11 | declarations: [HsPagerComponent], 12 | imports: [CommonModule, TranslatePipe, FormsModule, NgbDropdownModule], 13 | exports: [HsPagerComponent], 14 | }) 15 | export class HsPagerModule {} 16 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/legend-layer-vector/legend-layer-vector.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'hs-legend-vector-layer', 5 | templateUrl: './legend-layer-vector.component.html', 6 | styles: ` 7 | :host ::ng-deep { 8 | .geostyler-legend-renderer { 9 | .legend-title { 10 | display: none; 11 | } 12 | } 13 | } 14 | `, 15 | standalone: false, 16 | }) 17 | export class HsLegendLayerVectorComponent { 18 | @Input() svg: string; 19 | 20 | constructor() {} 21 | } 22 | -------------------------------------------------------------------------------- /projects/hslayers/types/layman/get-layers.interface.ts: -------------------------------------------------------------------------------- 1 | import {HsLaymanLayerBase} from './layman-layer-base.interface'; 2 | 3 | export enum HsLaymanGetLayerWfsWmsStatus { 4 | AVAILABLE = 'AVAILABLE', 5 | PREPARING = 'PREPARING', 6 | NOT_AVAILABLE = 'NOT_AVAILABLE', 7 | } 8 | 9 | /** 10 | * Layer type for GET /layers response object 11 | * Extends base properties using HsLaymanLayerBase 12 | */ 13 | export interface HsLaymanGetLayer extends HsLaymanLayerBase { 14 | workspace?: string; 15 | publication_type?: string; 16 | wfs_wms_status?: HsLaymanGetLayerWfsWmsStatus; 17 | } 18 | -------------------------------------------------------------------------------- /projects/hslayers-app/custom-webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | 3 | module.exports = (config, options) => { 4 | // Only add source maps if Angular config has sourceMap enabled 5 | if (options.sourceMap !== false) { 6 | config.plugins.push( 7 | new webpack.SourceMapDevToolPlugin({ 8 | filename: '[file].map', 9 | exclude: ['vendor.js'], 10 | }) 11 | ); 12 | } 13 | // Ensure publicPath is set 14 | if (config.output) { 15 | config.output.publicPath = config.output.publicPath || 'auto'; 16 | } 17 | 18 | return config; 19 | }; 20 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/wms/wms.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, inject} from '@angular/core'; 2 | 3 | import { 4 | HsAddDataCommonService, 5 | HsAddDataOwsService, 6 | HsUrlWmsService, 7 | } from 'hslayers-ng/services/add-data'; 8 | 9 | @Component({ 10 | selector: 'hs-url-wms', 11 | templateUrl: './wms.component.html', 12 | standalone: false, 13 | }) 14 | export class HsUrlWmsComponent { 15 | hsAddDataCommonService = inject(HsAddDataCommonService); 16 | hsAddDataOwsService = inject(HsAddDataOwsService); 17 | hsUrlWmsService = inject(HsUrlWmsService); 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/wmts/wmts.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, inject} from '@angular/core'; 2 | 3 | import { 4 | HsAddDataCommonService, 5 | HsAddDataOwsService, 6 | HsUrlWmtsService, 7 | } from 'hslayers-ng/services/add-data'; 8 | 9 | @Component({ 10 | selector: 'hs-url-wmts', 11 | templateUrl: './wmts.component.html', 12 | standalone: false, 13 | }) 14 | export class HsUrlWmtsComponent { 15 | hsAddDataOwsService = inject(HsAddDataOwsService); 16 | hsUrlWmtsService = inject(HsUrlWmtsService); 17 | hsAddDataCommonService = inject(HsAddDataCommonService); 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers/components/legend/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './legend-custom-category.type'; 2 | export * from './legend-descriptor.interface'; 3 | export * from './legend-layer-static/legend-layer-static.component'; 4 | export * from './legend-layer-static/legend-layer-static.service'; 5 | export * from './legend-layer-vector/legend-layer-vector.component'; 6 | export * from './legend-layer/legend-layer.component'; 7 | export * from './legend.component'; 8 | export * from './legend.module'; 9 | export * from './legend.service'; 10 | export * from './legend-layer-static/types/layer-legend.type'; 11 | -------------------------------------------------------------------------------- /projects/test-app/src/hslayers-app/hslayers-app.module.ts: -------------------------------------------------------------------------------- 1 | import {BrowserModule} from '@angular/platform-browser'; 2 | import {NgModule} from '@angular/core'; 3 | 4 | import {HslayersAppComponent} from './hslayers-app.component'; 5 | import {HslayersModule} from 'hslayers-ng/core'; 6 | import {SomeModule} from './some-panel/some-panel.module'; 7 | 8 | @NgModule({ 9 | declarations: [HslayersAppComponent], 10 | imports: [BrowserModule, HslayersModule, SomeModule], 11 | providers: [], 12 | bootstrap: [HslayersAppComponent], 13 | }) 14 | export class AppModule { 15 | constructor() {} 16 | } 17 | -------------------------------------------------------------------------------- /projects/hslayers-app/test/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { 5 | BrowserDynamicTestingModule, 6 | platformBrowserDynamicTesting, 7 | } from '@angular/platform-browser-dynamic/testing'; 8 | import {getTestBed} from '@angular/core/testing'; 9 | 10 | // First, initialize the Angular testing environment. 11 | getTestBed().initTestEnvironment( 12 | BrowserDynamicTestingModule, 13 | platformBrowserDynamicTesting(), 14 | { 15 | teardown: {destroyAfterEach: false}, 16 | }, 17 | ); 18 | -------------------------------------------------------------------------------- /projects/test-app/test/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { 5 | BrowserDynamicTestingModule, 6 | platformBrowserDynamicTesting, 7 | } from '@angular/platform-browser-dynamic/testing'; 8 | import {getTestBed} from '@angular/core/testing'; 9 | 10 | // First, initialize the Angular testing environment. 11 | getTestBed().initTestEnvironment( 12 | BrowserDynamicTestingModule, 13 | platformBrowserDynamicTesting(), 14 | { 15 | teardown: {destroyAfterEach: false}, 16 | }, 17 | ); 18 | -------------------------------------------------------------------------------- /projects/cesium-test-app/test/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { 5 | BrowserDynamicTestingModule, 6 | platformBrowserDynamicTesting, 7 | } from '@angular/platform-browser-dynamic/testing'; 8 | import {getTestBed} from '@angular/core/testing'; 9 | 10 | // First, initialize the Angular testing environment. 11 | getTestBed().initTestEnvironment( 12 | BrowserDynamicTestingModule, 13 | platformBrowserDynamicTesting(), 14 | { 15 | teardown: {destroyAfterEach: false}, 16 | }, 17 | ); 18 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/file/file-type-values.ts: -------------------------------------------------------------------------------- 1 | import {AddDataFileType} from 'hslayers-ng/types'; 2 | 3 | export const AddDataFileValues: Array<{id: AddDataFileType; text: string}> = [ 4 | { 5 | id: 'kml', 6 | text: 'KML', 7 | }, 8 | { 9 | id: 'gpx', 10 | text: 'GPX', 11 | }, 12 | { 13 | id: 'geojson', 14 | text: 'GeoJSON', 15 | }, 16 | { 17 | id: 'shp', 18 | text: 'Shapefile', 19 | }, 20 | { 21 | id: 'raster', 22 | text: 'Raster image', 23 | }, 24 | { 25 | id: 'raster-ts', 26 | text: 'Raster time series', 27 | }, 28 | ]; 29 | -------------------------------------------------------------------------------- /projects/decoupling-test-app/test/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { 5 | BrowserDynamicTestingModule, 6 | platformBrowserDynamicTesting, 7 | } from '@angular/platform-browser-dynamic/testing'; 8 | import {getTestBed} from '@angular/core/testing'; 9 | 10 | // First, initialize the Angular testing environment. 11 | getTestBed().initTestEnvironment( 12 | BrowserDynamicTestingModule, 13 | platformBrowserDynamicTesting(), 14 | { 15 | teardown: {destroyAfterEach: false}, 16 | }, 17 | ); 18 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/custom-webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | 3 | module.exports = { 4 | devtool: false, 5 | resolve: { 6 | fallback: { 7 | fs: false, 8 | Buffer: false, 9 | http: false, 10 | https: false, 11 | zlib: false, 12 | url: false 13 | }, 14 | }, 15 | module: { 16 | unknownContextCritical: false, 17 | }, 18 | plugins: [ 19 | new webpack.SourceMapDevToolPlugin({ 20 | filename: "[file].map", 21 | exclude: ["vendor.js"], 22 | }), 23 | ], 24 | output: { 25 | publicPath: 'auto', 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/test/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { 5 | BrowserDynamicTestingModule, 6 | platformBrowserDynamicTesting, 7 | } from '@angular/platform-browser-dynamic/testing'; 8 | import {getTestBed} from '@angular/core/testing'; 9 | 10 | // First, initialize the Angular testing environment. 11 | getTestBed().initTestEnvironment( 12 | BrowserDynamicTestingModule, 13 | platformBrowserDynamicTesting(), 14 | { 15 | teardown: {destroyAfterEach: false}, 16 | }, 17 | ); 18 | -------------------------------------------------------------------------------- /projects/hslayers/common/layer-table/wms-layer-highlight.directive.ts: -------------------------------------------------------------------------------- 1 | import {Directive, ElementRef, HostBinding, inject} from '@angular/core'; 2 | import {isOverflown} from 'hslayers-ng/services/utils'; 3 | 4 | @Directive({ 5 | selector: '[hsWmsLayerHighlight]', 6 | standalone: true, 7 | }) 8 | export class WmsLayerHighlightDirective { 9 | private elRef = inject(ElementRef); 10 | 11 | @HostBinding('class.hs-wms-highlighted') highlighted = false; 12 | 13 | constructor() { 14 | setTimeout(() => { 15 | this.highlighted = isOverflown(this.elRef.nativeElement); 16 | }, 500); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers-server/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": false, 4 | "es6": true, 5 | "node": true, 6 | "mocha": true 7 | }, 8 | "globals": {}, 9 | "parserOptions": { 10 | "sourceType": "module", 11 | "ecmaVersion": 2020 12 | }, 13 | "overrides": [ 14 | { 15 | "files": [ 16 | "*.js" 17 | ], 18 | "extends": [ 19 | "eslint:recommended" 20 | ] 21 | }, 22 | { 23 | "files": [ 24 | "**/*.spec.js" 25 | ], 26 | "extends": [ 27 | "plugin:mocha/recommended" 28 | ] 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/arcgis/arcgis.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, inject} from '@angular/core'; 2 | 3 | import { 4 | HsAddDataCommonService, 5 | HsAddDataOwsService, 6 | HsUrlArcGisService, 7 | } from 'hslayers-ng/services/add-data'; 8 | 9 | @Component({ 10 | selector: 'hs-url-arcgis', 11 | templateUrl: './arcgis.component.html', 12 | standalone: false, 13 | }) 14 | export class HsUrlArcGisComponent { 15 | hsAddDataCommonService = inject(HsAddDataCommonService); 16 | hsUrlArcGisService = inject(HsUrlArcGisService); 17 | hsAddDataOwsService = inject(HsAddDataOwsService); 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/wfs/wfs.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, inject} from '@angular/core'; 2 | 3 | import { 4 | HsAddDataCommonService, 5 | HsAddDataOwsService, 6 | HsUrlWfsService, 7 | } from 'hslayers-ng/services/add-data'; 8 | 9 | @Component({ 10 | selector: 'hs-url-wfs', 11 | templateUrl: './wfs.component.html', 12 | standalone: false, 13 | }) 14 | export class HsUrlWfsComponent { 15 | hsUrlWfsService = inject(HsUrlWfsService); 16 | hsAddDataOwsService = inject(HsAddDataOwsService); 17 | hsAddDataCommonService = inject(HsAddDataCommonService); 18 | 19 | title = ''; 20 | } 21 | -------------------------------------------------------------------------------- /projects/hslayers/types/dom-feature-link.type.ts: -------------------------------------------------------------------------------- 1 | import {Feature} from 'ol'; 2 | import {Geometry} from 'ol/geom'; 3 | import {Layer} from 'ol/layer'; 4 | import {Source} from 'ol/source'; 5 | 6 | export type DOMFeatureLink = { 7 | domSelector: string; 8 | feature: 9 | | string 10 | | Feature 11 | | ((layer: Layer, domElement: Element) => any); 12 | event: string; 13 | actions: [ 14 | 'zoomToExtent' | 'panToCenter' | 'showPopup', 15 | ( 16 | | 'hidePopup' 17 | | ((feature: Feature, domElement: Element, event: any) => any) 18 | ), 19 | ]; 20 | }; 21 | -------------------------------------------------------------------------------- /projects/test-app/src/hslayers-app/popup-widget.component.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @angular-eslint/component-selector */ 2 | import {Component} from '@angular/core'; 3 | 4 | import {HsPanelComponent} from 'hslayers-ng/common/panels'; 5 | import {HsQueryPopupWidgetBaseComponent} from 'hslayers-ng/common/query-popup'; 6 | @Component({ 7 | selector: 'popup-widget', 8 | templateUrl: './popup-widget.component.html', 9 | standalone: false, 10 | }) 11 | export class PopupWidgetComponent 12 | extends HsQueryPopupWidgetBaseComponent 13 | implements HsPanelComponent 14 | { 15 | constructor() { 16 | super(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers/common/upload/upload.module.ts: -------------------------------------------------------------------------------- 1 | import {CommonModule} from '@angular/common'; 2 | import {FormsModule} from '@angular/forms'; 3 | import {NgModule} from '@angular/core'; 4 | import {TranslatePipe} from '@ngx-translate/core'; 5 | 6 | import {HsFileDropDirective} from './file-drop.directive'; 7 | import {HsUploadComponent} from './upload.component'; 8 | 9 | @NgModule({ 10 | declarations: [HsUploadComponent, HsFileDropDirective], 11 | imports: [CommonModule, TranslatePipe, FormsModule], 12 | providers: [], 13 | exports: [HsUploadComponent, HsFileDropDirective], 14 | }) 15 | export class HsUploadModule {} 16 | -------------------------------------------------------------------------------- /projects/hslayers/components/trip-planner/route-profile-selector.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input, inject} from '@angular/core'; 2 | 3 | import {HsTripPlannerService} from './trip-planner.service'; 4 | import {RouteProfile} from './ors-profiles.const'; 5 | 6 | @Component({ 7 | selector: 'hs-trip-planner-profile-selector', 8 | templateUrl: './route-profile-selector.component.html', 9 | standalone: false, 10 | }) 11 | export class HsTripPlannerProfileSelectorComponent { 12 | hsTripPlannerService = inject(HsTripPlannerService); 13 | 14 | @Input() selectedProfile: RouteProfile; 15 | profilesExpanded: boolean; 16 | } 17 | -------------------------------------------------------------------------------- /projects/hslayers/common/layman/parse-base64-style.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Parse QML string style and make base64 symbols usable in browser by 3 | * 4 | * Look for prop elements with source attribute 5 | * and prepend its content to v while switching : with , 6 | */ 7 | export function parseBase64Style(styleString: string) { 8 | const regex = /]*source="(data:[^"]*)"[^>]*v="base64:([^"]*)")/g; 9 | 10 | return styleString.startsWith(' { 12 | return match.replace(`v="base64:${p3}"`, `v="${p2}base64,${p3}"`); 13 | }) 14 | : styleString; 15 | } 16 | -------------------------------------------------------------------------------- /projects/hslayers/common/query-popup/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './query-popup.component'; 2 | export * from './query-popup.service'; 3 | export * from './query-popup.service.model'; 4 | export * from './query-popup-base.service'; 5 | export * from './query-popup-widget-base.component'; 6 | export * from './widgets/feature-info.component'; 7 | export * from './query-popup-widget-container.service'; 8 | export * from './widgets/clear-layer.component'; 9 | export * from './widgets/dynamic-text.component'; 10 | export * from './widgets/layer-name.component'; 11 | export * from './popup-data'; 12 | export * from './query-popup.module'; 13 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/arcgis-response-type.ts: -------------------------------------------------------------------------------- 1 | export type ArcGISRestResponseLayer = { 2 | defaultVisibility?: boolean; //FIXME: unused 3 | geometryType: string; //FIXME: unused 4 | id: number; 5 | maxScale: number; //FIXME: unused 6 | minScale: number; //FIXME: unused 7 | name: string; //FIXME: unused 8 | parentLayerId: number; //FIXME: unused 9 | subLayerIds: number[]; //FIXME: unused 10 | type: string; //FIXME: unused 11 | }; 12 | 13 | export type ArcGISRestResponseLayerExtent = { 14 | spatialReference?: any; 15 | xmin: number; 16 | ymin: number; 17 | xmax: number; 18 | ymax: number; 19 | }; 20 | -------------------------------------------------------------------------------- /projects/test-app/src/hslayers-app/some-panel/some-panel.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, OnInit} from '@angular/core'; 2 | 3 | import {HsPanelBaseComponent} from 'hslayers-ng/common/panels'; 4 | 5 | @Component({ 6 | selector: 'hs-some-panel', 7 | templateUrl: './some-panel.component.html', 8 | standalone: false, 9 | }) 10 | export class SomeComponent extends HsPanelBaseComponent implements OnInit { 11 | /* The name is very important, as it is used to manage panel's visibility */ 12 | name = 'custom'; 13 | 14 | constructor() { 15 | super(); 16 | } 17 | 18 | ngOnInit() { 19 | super.ngOnInit(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /projects/hslayers/common/history-list/history-list.component.html: -------------------------------------------------------------------------------- 1 |
2 | 6 | 11 |
12 | -------------------------------------------------------------------------------- /projects/hslayers-sensors/src/components/sensors/sensor-unit.class.ts: -------------------------------------------------------------------------------- 1 | import {Feature} from 'ol'; 2 | import {Geometry} from 'ol/geom'; 3 | import {SenslogResponse} from './types/senslog-response.type'; 4 | import {SenslogSensor} from './types/senslog-sensor.type'; 5 | 6 | export type SensorTypes = { 7 | name: string; 8 | expanded?: boolean; 9 | sensors?: SenslogSensor[]; 10 | }; 11 | 12 | /** 13 | * expanded - Wether the list of sensors for this unit is visible or not 14 | */ 15 | export type HsSensorUnit = SenslogResponse & { 16 | expanded?: boolean; 17 | sensorTypes?: SensorTypes[]; 18 | feature?: Feature; 19 | }; 20 | -------------------------------------------------------------------------------- /projects/hslayers/common/layman/types/delete-layer-response.type.ts: -------------------------------------------------------------------------------- 1 | export type DeleteAllLayersResponse = { 2 | access_rights?: { 3 | read?: string[]; 4 | write?: string[]; 5 | }; 6 | name?: string; 7 | title?: string; 8 | uuid?: string; 9 | url?: string; 10 | code?: number; 11 | detail?: any; 12 | error?: { 13 | message: string; 14 | }; 15 | message?: string; 16 | }; 17 | 18 | export type DeleteSingleLayerResponse = { 19 | name?: string; 20 | uuid?: string; 21 | url?: string; 22 | code?: number; 23 | detail?: any; 24 | error?: { 25 | message: string; 26 | }; 27 | message?: string; 28 | }; 29 | -------------------------------------------------------------------------------- /projects/hslayers/components/info/info.module.ts: -------------------------------------------------------------------------------- 1 | import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core'; 2 | import {CommonModule} from '@angular/common'; 3 | import {FormsModule} from '@angular/forms'; 4 | import {TranslatePipe} from '@ngx-translate/core'; 5 | 6 | import {HsInfoComponent} from './info.component'; 7 | import {HsPanelHelpersModule} from 'hslayers-ng/common/panels'; 8 | 9 | @NgModule({ 10 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 11 | declarations: [HsInfoComponent], 12 | imports: [FormsModule, CommonModule, HsPanelHelpersModule, TranslatePipe], 13 | exports: [HsInfoComponent], 14 | }) 15 | export class HsInfoModule {} 16 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/layer-folder-widget/layer-folder-widget.component.html: -------------------------------------------------------------------------------- 1 | @if (isEnabled | async) { 2 |
3 |
4 | 5 | {{ "COMMON.folder" | translate }} 6 |
7 |
8 | 12 |
13 |
14 | } 15 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/file/file-data-object.type.ts: -------------------------------------------------------------------------------- 1 | import {Layer} from 'ol/layer'; 2 | import {Source} from 'ol/source'; 3 | 4 | import {FileFormDataObject} from './file-form-data.type'; 5 | import {IntersectWithTooltip} from '../../type-intersection.type'; 6 | 7 | type FileDataExtension = { 8 | addUnder?: Layer; 9 | extract_styles?: boolean; 10 | folder_name?: string; 11 | loadAsType?: 'wms' | 'wfs'; 12 | saveAvailable?: boolean; 13 | saveToLayman?: boolean; 14 | type?: string; 15 | }; 16 | 17 | export type FileDataObject = IntersectWithTooltip< 18 | Partial & FileDataExtension 19 | >; 20 | -------------------------------------------------------------------------------- /projects/hslayers/components/query/attribute-row/attribute-row.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{attribute.name}} 4 | @if (!isObject) { 5 | 7 | } 8 | @if (isObject) { 9 | 12 | } 13 |
14 |
-------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.angular/cache 2 | bower_components/ 3 | node_modules/ 4 | gitsha.js 5 | hooks/ 6 | /nbproject/private/ 7 | /nbproject/ 8 | .orig 9 | #package-lock.json 10 | *.min.js 11 | bundle.js 12 | docs 13 | documentation/ 14 | po/*.mo 15 | dist 16 | dependencygraph.svg 17 | .tern-project 18 | .vscode/ 19 | .env 20 | .env.* 21 | !.env.example 22 | *.bat 23 | .vs 24 | stats.json 25 | .lingua 26 | bundle 27 | *.d.ts 28 | hslayers-server.db 29 | projects/hslayers-server/data/hsl-share.db 30 | cypress/videos 31 | cypress/screenshots 32 | cypress/downloads/* 33 | cypress/tests/__image_snapshots__ 34 | .cursorignore 35 | .cursorrules 36 | .cursor/ 37 | .venv/ 38 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/test/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | import '@angular/localize/init'; 3 | import 'zone.js'; 4 | import 'zone.js/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting, 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | import {getTestBed} from '@angular/core/testing'; 10 | 11 | // First, initialize the Angular testing environment. 12 | getTestBed().initTestEnvironment( 13 | BrowserDynamicTestingModule, 14 | platformBrowserDynamicTesting(), 15 | { 16 | teardown: {destroyAfterEach: false}, 17 | }, 18 | ); 19 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './arcgis/arcgis.component'; 2 | export * from './arcgis/arcgis.module'; 3 | export * from './wfs/wfs.component'; 4 | export * from './wfs/wfs.module'; 5 | export * from './wms/wms.component'; 6 | export * from './wms/wms.module'; 7 | export * from './wmts/wmts.component'; 8 | export * from './wmts/wmts.module'; 9 | export * from './add-data-url.component'; 10 | export * from './add-data-url.module'; 11 | export * from './add-data-url-values'; 12 | export * from './geosparql/geosparql.component'; 13 | export * from './geosparql/geosparql.module'; 14 | export * from './geosparql/geosparql.service'; 15 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/dimensions/date-preformat.pipe.ts: -------------------------------------------------------------------------------- 1 | import {Pipe, PipeTransform} from '@angular/core'; 2 | 3 | /** 4 | * Formats a shorthand date in a form YYYYMMDD into a full ISO form YYYY-MM-DD 5 | * If not used, the shorthand date is parsed as milliseconds in the DatePipe 6 | */ 7 | @Pipe({ 8 | name: 'datePreformat', 9 | standalone: true, 10 | }) 11 | export class DatePreformatPipe implements PipeTransform { 12 | transform(value: string): string { 13 | if (!value.includes('-') && value.length === 8) { 14 | return `${value.slice(0, 4)}-${value.slice(4, 6)}-${value.slice(6, 8)}`; 15 | } 16 | return value; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers/common/layman/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './access-rights/layman-access-rights.component'; 2 | export * from './layman-current-user.component'; 3 | export * from './layman-login.component'; 4 | export * from './layman.service'; 5 | export * from './types/current-user-response.type'; 6 | export * from './types/post-patch-layer-response.type'; 7 | export * from './types/get-layers-response.type'; 8 | export * from './types/delete-layer-response.type'; 9 | export * from './types/layman-user.type'; 10 | export * from './layman-utils'; 11 | export * from './transliteration-map'; 12 | export * from './parse-base64-style'; 13 | export * from './layman-layer.service'; 14 | -------------------------------------------------------------------------------- /projects/hslayers/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/lib", 5 | "declaration": true, 6 | "declarationMap": true, 7 | "experimentalDecorators": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "resolveJsonModule": true, 11 | "lib": ["dom", "es2023"] 12 | }, 13 | "angularCompilerOptions": { 14 | "skipTemplateCodegen": true, 15 | "strictMetadataEmit": true, 16 | "experimentalDecorators": true, 17 | "strictInjectionParameters": true, 18 | "enableResourceInlining": true 19 | }, 20 | "exclude": ["**/*.spec.ts", "**/*.mock.ts", "./test"] 21 | } 22 | -------------------------------------------------------------------------------- /projects/hslayers/components/toolbar/toolbar.module.ts: -------------------------------------------------------------------------------- 1 | import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core'; 2 | import {CommonModule} from '@angular/common'; 3 | import {FormsModule} from '@angular/forms'; 4 | 5 | import {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap'; 6 | 7 | import {HsPanelHelpersModule} from 'hslayers-ng/common/panels'; 8 | import {HsToolbarComponent} from './toolbar.component'; 9 | 10 | @NgModule({ 11 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 12 | declarations: [HsToolbarComponent], 13 | imports: [CommonModule, FormsModule, NgbDropdownModule, HsPanelHelpersModule], 14 | exports: [HsToolbarComponent], 15 | }) 16 | export class HsToolbarModule {} 17 | -------------------------------------------------------------------------------- /projects/hslayers/components/geolocation/geolocation.module.ts: -------------------------------------------------------------------------------- 1 | import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core'; 2 | import {CommonModule} from '@angular/common'; 3 | import {FormsModule} from '@angular/forms'; 4 | import {TranslatePipe} from '@ngx-translate/core'; 5 | 6 | import {HsGeolocationComponent} from './geolocation.component'; 7 | import {HsPanelHelpersModule} from 'hslayers-ng/common/panels'; 8 | 9 | @NgModule({ 10 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 11 | declarations: [HsGeolocationComponent], 12 | imports: [FormsModule, CommonModule, HsPanelHelpersModule, TranslatePipe], 13 | exports: [HsGeolocationComponent], 14 | }) 15 | export class HsGeolocationModule {} 16 | -------------------------------------------------------------------------------- /projects/hslayers/components/search/search-input.component.html: -------------------------------------------------------------------------------- 1 |
2 | 4 | 7 | @if (clearVisible) { 8 | 10 | } 11 |
12 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/public-api.ts: -------------------------------------------------------------------------------- 1 | export { 2 | HsPanelHeaderComponent, 3 | toArray, 4 | } from './panel-header/panel-header.component'; 5 | export {HsPanelComponent} from './panel-component.interface'; 6 | export {HsPanelBaseComponent} from './panel-base.component'; 7 | export {HsGuiOverlayBaseComponent} from './gui-overlay-base.component'; 8 | export {HsPanelContainerComponent} from './panel-container.component'; 9 | export {HsPanelContainerServiceInterface} from './panel-container.service.interface'; 10 | 11 | export {HsPanelHelpersModule} from './panel-helpers.module'; 12 | export {HsPanelHostDirective} from './panel-host.directive'; 13 | export {HsPanelItem} from './panel-item'; 14 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import {enableProdMode} from '@angular/core'; 2 | import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 3 | 4 | import {AppModule} from './hslayers-app/hslayers-app.module'; 5 | import {environment} from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | setTimeout(() => { 12 | const platform = platformBrowserDynamic(); 13 | const hslayersApps = document.querySelectorAll('hslayers-app'); 14 | 15 | hslayersApps.forEach(() => { 16 | const bootstrap = () => platform.bootstrapModule(AppModule); 17 | bootstrap().catch((err) => console.log('bootstrap', err)); 18 | }); 19 | }, 0); 20 | -------------------------------------------------------------------------------- /projects/hslayers/types/add-data/file/file-form-data.type.ts: -------------------------------------------------------------------------------- 1 | import {AccessRightsModel} from '../../access-rights.model'; 2 | import {FileDescriptor} from './file-descriptor.type'; 3 | 4 | /** 5 | * @param allowedStyles - Allowed file formats (SLD, QML or both) 6 | */ 7 | export type FileFormData = { 8 | abstract: string; 9 | access_rights: AccessRightsModel; 10 | files: FileDescriptor[]; 11 | name: string; 12 | serializedStyle: FileDescriptor; 13 | allowedStyles?: 'qml' | 'sld' | 'sldqml'; 14 | srs: string; 15 | title: string; 16 | timeRegex?: string; 17 | }; 18 | 19 | type Optional = {[P in keyof T]?: T[P]}; 20 | 21 | export type FileFormDataObject = Optional; 22 | -------------------------------------------------------------------------------- /projects/hslayers-cesium-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import {enableProdMode} from '@angular/core'; 2 | import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 3 | 4 | import {AppModule} from './app/app.module'; 5 | import {environment} from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | setTimeout(() => { 12 | const platform = platformBrowserDynamic(); 13 | const hslayerCesiumApps = document.querySelectorAll('hslayers-cesium-app'); 14 | 15 | hslayerCesiumApps.forEach(() => { 16 | const bootstrap = () => platform.bootstrapModule(AppModule); 17 | bootstrap().catch((err) => console.log('bootstrap', err)); 18 | }); 19 | }, 0); 20 | -------------------------------------------------------------------------------- /projects/hslayers-cesium/src/query-popup.service.ts: -------------------------------------------------------------------------------- 1 | import {Injectable} from '@angular/core'; 2 | 3 | import { 4 | HsQueryPopupBaseService, 5 | HsQueryPopupServiceModel, 6 | } from 'hslayers-ng/common/query-popup'; 7 | 8 | @Injectable({ 9 | providedIn: 'root', 10 | }) 11 | export class HsCesiumQueryPopupService 12 | extends HsQueryPopupBaseService 13 | implements HsQueryPopupServiceModel 14 | { 15 | registerPopup(nativeElement) { 16 | nativeElement.style.position = 'absolute'; 17 | this.hoverPopup = nativeElement; 18 | } 19 | 20 | showPopup(e): void { 21 | this.hoverPopup.style.left = e.pixel.x + 4 + 'px'; 22 | this.hoverPopup.style.top = e.pixel.y + 4 + 'px'; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | build-all: 2 | npm run build && npm run build-app && npm run build-cesium && npm run build-cesium-app && cd dist/hslayers && sudo npm link && cd ../hslayers-app && sudo npm link && cd ../hslayers-cesium-app && sudo npm link && cd ../hslayers-cesium-app && sudo npm link 3 | 4 | update-ng: 5 | npm run ng update @angular/common @angular/compiler @angular/core @angular/forms @angular/localize @angular/cdk @angular/platform-browser @angular/platform-browser-dynamic @angular/compiler-cli @angular/cli @angular-builders/custom-webpack ng-packagr 6 | 7 | update-eslint: 8 | npm run ng update eslint @eslint/compat angular-eslint typescript-eslint eslint-import-resolver-typescript eslint-plugin-import eslint-plugin-tsdoc 9 | -------------------------------------------------------------------------------- /projects/hslayers/services/utils/format-utils.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Loop through list of formats returned by GetCapabilities and select first available from the list of available formats 3 | * 4 | * @param formats - List of formats available for service 5 | * @param preferredFormats - List of preferred formats for output 6 | * @returns Either one of preferred formats or first available format 7 | */ 8 | export function getPreferredFormat( 9 | formats: string[], 10 | preferredFormats: string[], 11 | ): string { 12 | for (let i = 0; i < preferredFormats.length; i++) { 13 | if (formats.indexOf(preferredFormats[i]) > -1) { 14 | return preferredFormats[i]; 15 | } 16 | } 17 | return formats[0]; 18 | } 19 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/opacity-widget.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 | {{ (opacity * 100) | number:'1.0-0' }}% 6 |
7 |
8 |
9 | 11 |
12 |
-------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/wms/wms.module.ts: -------------------------------------------------------------------------------- 1 | import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core'; 2 | import {CommonModule} from '@angular/common'; 3 | import {FormsModule} from '@angular/forms'; 4 | 5 | import {HsAddDataCommonModule} from '../../common/common.module'; 6 | import {HsCommonUrlModule} from '../../common/url/url.module'; 7 | import {HsUrlWmsComponent} from './wms.component'; 8 | 9 | @NgModule({ 10 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 11 | imports: [ 12 | CommonModule, 13 | FormsModule, 14 | HsAddDataCommonModule, 15 | HsCommonUrlModule, 16 | ], 17 | exports: [HsUrlWmsComponent], 18 | declarations: [HsUrlWmsComponent], 19 | }) 20 | export class HsUrlWmsModule {} 21 | -------------------------------------------------------------------------------- /projects/hslayers/components/compositions/public-api.ts: -------------------------------------------------------------------------------- 1 | export * from './dialogs/delete-dialog.component'; 2 | export * from './dialogs/info-dialog.component'; 3 | export * from './dialogs/overwrite-dialog.component'; 4 | export * from './dialogs/share-dialog.component'; 5 | export * from './endpoints/compositions-layman.service'; 6 | export * from './endpoints/compositions-micka.service'; 7 | export * from './compositions-list-item.component'; 8 | export * from './compositions-map.service'; 9 | export * from './compositions-option-values'; 10 | export * from './compositions.component'; 11 | export * from './compositions.module'; 12 | export * from './compositions.service'; 13 | export * from './compositions-catalogue.service'; 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: fzadrazil, jmacura, FilipLeitner 7 | 8 | --- 9 | 10 | # Bug 11 | 12 | **Describe the bug** 13 | A clear and concise description of what the bug is. 14 | 15 | **To Reproduce** 16 | Steps to reproduce the behavior: 17 | 1. Go to '...' 18 | 2. Click on '....' 19 | 3. Scroll down to '....' 20 | 4. See error 21 | 22 | **Expected behavior** 23 | A clear and concise description of what you expected to happen. 24 | 25 | **Screenshots** 26 | If applicable, add screenshots to help explain your problem. 27 | 28 | **Additional context** 29 | Add any other context about the problem here. 30 | -------------------------------------------------------------------------------- /projects/hslayers/components/language/language.component.html: -------------------------------------------------------------------------------- 1 | @if (isVisible$ | async) { 2 |
3 | 4 | 5 |
6 |
    7 | @for (lang of availableLanguages; track lang) { 8 | 11 | } 12 |
13 |
14 |
15 | } 16 | -------------------------------------------------------------------------------- /projects/hslayers/components/styler/symbolizers/slider/slider.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | import {FillSymbolizer, MarkSymbolizer, TextSymbolizer} from 'geostyler-style'; 4 | 5 | import {HsStylerPartBaseComponent} from 'hslayers-ng/services/styler'; 6 | 7 | @Component({ 8 | selector: 'hs-symbolizer-slider', 9 | templateUrl: './slider.component.html', 10 | standalone: false, 11 | }) 12 | export class HsSliderComponent extends HsStylerPartBaseComponent { 13 | @Input() symbolizer: MarkSymbolizer | FillSymbolizer | TextSymbolizer; 14 | @Input() attribute: string; 15 | @Input() label: string; 16 | @Input() min: number; 17 | @Input() max: number; 18 | @Input() step: number; 19 | } 20 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/target-position/target-position.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{'ADDLAYERS.under' | translate }} 4 | 11 |
12 |
13 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/type-widget.component.html: -------------------------------------------------------------------------------- 1 |
2 | @if (layerDescriptor | async; as descriptor) { 3 | 4 | {{ 'LAYERMANAGER.layerEditor.' + descriptor.type | translate : {fallbackValue: descriptor.type} }} 5 | {{ "LAYERMANAGER.layerEditor.layerFrom" | translate }} 6 |
7 | @if (descriptor.source === "memory") { 8 | 9 | {{ 'LAYERMANAGER.layerEditor.memory' | translate }} 10 | 11 | } 12 | @else{} 13 |
14 |
15 | } 16 |
17 | -------------------------------------------------------------------------------- /projects/hslayers/components/map-swipe/map-swipe.module.ts: -------------------------------------------------------------------------------- 1 | import {CommonModule} from '@angular/common'; 2 | import {DragDropModule} from '@angular/cdk/drag-drop'; 3 | import {FormsModule} from '@angular/forms'; 4 | import {NgModule} from '@angular/core'; 5 | import {TranslatePipe} from '@ngx-translate/core'; 6 | 7 | import {HsMapSwipeComponent} from './map-swipe.component'; 8 | import {HsPanelHeaderComponent} from 'hslayers-ng/common/panels'; 9 | 10 | @NgModule({ 11 | declarations: [HsMapSwipeComponent], 12 | imports: [ 13 | CommonModule, 14 | HsPanelHeaderComponent, 15 | FormsModule, 16 | TranslatePipe, 17 | DragDropModule, 18 | ], 19 | exports: [HsMapSwipeComponent], 20 | }) 21 | export class HsMapSwipeModule {} 22 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/common/url/url.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 5 | 6 | @if (uri.valid) { 7 | 8 | } 9 | 10 | 11 | 12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/arcgis/arcgis.module.ts: -------------------------------------------------------------------------------- 1 | import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core'; 2 | import {CommonModule} from '@angular/common'; 3 | import {FormsModule} from '@angular/forms'; 4 | 5 | import {HsAddDataCommonModule} from '../../common/common.module'; 6 | import {HsCommonUrlModule} from '../../common/url/url.module'; 7 | import {HsUrlArcGisComponent} from './arcgis.component'; 8 | 9 | @NgModule({ 10 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 11 | imports: [ 12 | CommonModule, 13 | FormsModule, 14 | HsAddDataCommonModule, 15 | HsCommonUrlModule, 16 | ], 17 | exports: [HsUrlArcGisComponent], 18 | declarations: [HsUrlArcGisComponent], 19 | }) 20 | export class HsUrlArcGisModule {} 21 | -------------------------------------------------------------------------------- /.github/workflows/build+test_server.yml: -------------------------------------------------------------------------------- 1 | name: Build & test hslayers-server 2 | 3 | on: 4 | push: 5 | paths: 6 | - 'projects/hslayers-server/**/*' 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | strategy: 12 | matrix: 13 | node-version: [20.x, 24.x] 14 | defaults: 15 | run: 16 | working-directory: ./projects/hslayers-server/ 17 | steps: 18 | - uses: actions/checkout@v4 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v4 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - name: Install dependencies 24 | run: npm ci 25 | - name: Test 26 | run: npm run test-ci 27 | env: 28 | CI: true 29 | -------------------------------------------------------------------------------- /projects/hslayers-server/src/oauth2/session.js: -------------------------------------------------------------------------------- 1 | import 'dotenv/config'; 2 | 3 | import session from 'express-session'; 4 | import connectSQLite3 from 'connect-sqlite3'; 5 | 6 | export const createExpressSession = () => { 7 | const SQLiteStore = connectSQLite3(session); 8 | const session_store = new SQLiteStore({ 9 | table: 'sessions', 10 | db: process.env.DB_PATH 11 | }); 12 | 13 | const sessionConfig = { 14 | name: "connect-hsl.sid", 15 | secret: process.env.SESSION_SECRET, 16 | cookie: { 17 | maxAge: parseInt(process.env.SESSION_MAX_AGE, 10) * 1000, 18 | }, 19 | resave: false, 20 | saveUninitialized: true, 21 | store: session_store 22 | }; 23 | 24 | return session(sessionConfig); 25 | 26 | }; 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: 'enhancement' 6 | assignees: fzadrazil 7 | 8 | --- 9 | 10 | # Feature Request 11 | 12 | **Is your feature request related to a problem? Please describe.** 13 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 14 | 15 | **Describe the solution you'd like** 16 | A clear and concise description of what you want to happen. 17 | 18 | **Describe alternatives you've considered** 19 | A clear and concise description of any alternative solutions or features you've considered. 20 | 21 | **Additional context** 22 | Add any other context or screenshots about the feature request here. 23 | -------------------------------------------------------------------------------- /cypress.config.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/extensions */ 2 | /* eslint-disable @typescript-eslint/no-var-requires */ 3 | import {defineConfig} from 'cypress'; 4 | import {initPlugin} from '@frsource/cypress-plugin-visual-regression-diff/plugins'; 5 | 6 | export default defineConfig({ 7 | projectId: '69m3n7', 8 | fixturesFolder: 'cypress/fixtures', 9 | e2e: { 10 | // We've imported your old cypress plugins here. 11 | // You may want to clean this up later by importing these. 12 | setupNodeEvents(on, config) { 13 | initPlugin(on, config); 14 | return require('./cypress/plugins/index.ts')(on, config); 15 | }, 16 | specPattern: 'cypress/tests/**/*.cy.{js,jsx,ts,tsx}', 17 | baseUrl: 'http://localhost:4200', 18 | }, 19 | }); 20 | -------------------------------------------------------------------------------- /projects/hslayers/types/save-map/wfs-sync-params.type.ts: -------------------------------------------------------------------------------- 1 | import {Feature} from 'ol'; 2 | import {Geometry} from 'ol/geom'; 3 | import {Vector as VectorLayer} from 'ol/layer'; 4 | import {Vector as VectorSource} from 'ol/source'; 5 | 6 | /** 7 | * Object describing endpoint, layer and arrays 8 | * for each of the methods: update, del, insert containing the features to be processed 9 | */ 10 | export type WfsSyncParams = { 11 | /** Array of features to add */ 12 | add: Feature[]; 13 | /** Array of features to update */ 14 | upd: Feature[]; 15 | /** Array of features to delete */ 16 | del: Feature[]; 17 | /** OpenLayers layer which has to have a title attribute */ 18 | layer: VectorLayer>; 19 | }; 20 | -------------------------------------------------------------------------------- /projects/hslayers/common/panels/panel-container.service.interface.ts: -------------------------------------------------------------------------------- 1 | import {ReplaySubject, Subject} from 'rxjs'; 2 | import {Type, WritableSignal} from '@angular/core'; 3 | 4 | import {HsPanelComponent} from './panel-component.interface'; 5 | import {HsPanelItem} from './panel-item'; 6 | import {KeyNumberDict} from 'hslayers-ng/config'; 7 | 8 | export interface HsPanelContainerServiceInterface { 9 | panels: WritableSignal; 10 | panelObserver: ReplaySubject; 11 | panelDestroyObserver: Subject; 12 | setPanelWidth?( 13 | panelWidths: KeyNumberDict, 14 | componentRefInstance: HsPanelComponent, 15 | ); 16 | create(component: Type, data: any): void; 17 | 18 | destroy(component: HsPanelComponent): void; 19 | } 20 | -------------------------------------------------------------------------------- /projects/hslayers/common/history-list/history-list.module.ts: -------------------------------------------------------------------------------- 1 | import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core'; 2 | import {CommonModule} from '@angular/common'; 3 | import {CookieService} from 'ngx-cookie-service'; 4 | import {FormsModule} from '@angular/forms'; 5 | import {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap'; 6 | import {TranslatePipe} from '@ngx-translate/core'; 7 | 8 | import {HsHistoryListComponent} from './history-list.component'; 9 | 10 | @NgModule({ 11 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 12 | declarations: [HsHistoryListComponent], 13 | imports: [FormsModule, CommonModule, TranslatePipe, NgbDropdownModule], 14 | exports: [HsHistoryListComponent], 15 | providers: [CookieService], 16 | }) 17 | export class HsHistoryListModule {} 18 | -------------------------------------------------------------------------------- /projects/hslayers/test/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | import '@angular/localize/init'; 3 | import 'zone.js'; 4 | import 'zone.js/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting, 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | import {getTestBed} from '@angular/core/testing'; 10 | 11 | import {patchConsoleToFailOnError} from './testing-utils'; 12 | 13 | // First, initialize the Angular testing environment. 14 | getTestBed().initTestEnvironment( 15 | BrowserDynamicTestingModule, 16 | platformBrowserDynamicTesting(), 17 | { 18 | teardown: {destroyAfterEach: false}, 19 | }, 20 | ); 21 | beforeEach(() => patchConsoleToFailOnError()); 22 | -------------------------------------------------------------------------------- /projects/hslayers/components/layer-manager/widgets/extent-widget/extent-widget.component.html: -------------------------------------------------------------------------------- 1 | @if (isEnabled | async) { 2 |
3 |
4 |
5 | 7 | 10 | 12 |
13 |
14 |
15 | } -------------------------------------------------------------------------------- /projects/hslayers/components/add-data/url/add-data-url-values.ts: -------------------------------------------------------------------------------- 1 | import {AddDataUrlType} from 'hslayers-ng/types'; 2 | 3 | export const AddDataUrlValues: Array<{id: AddDataUrlType; text: string}> = [ 4 | { 5 | id: 'wms', 6 | text: 'WMS', 7 | }, 8 | { 9 | id: 'wmts', 10 | text: 'WMTS', 11 | }, 12 | { 13 | id: 'wfs', 14 | text: 'WFS', 15 | }, 16 | { 17 | id: 'arcgis', 18 | text: 'ArcGIS Map Server', 19 | }, 20 | { 21 | id: 'xyz', 22 | text: 'XYZ Tiles', 23 | }, 24 | { 25 | id: 'geosparql', 26 | text: 'GeoSPARQL', 27 | }, 28 | { 29 | id: 'kml', 30 | text: 'KML', 31 | }, 32 | { 33 | id: 'gpx', 34 | text: 'GPX', 35 | }, 36 | { 37 | id: 'geojson', 38 | text: 'GeoJSON', 39 | }, 40 | ]; 41 | -------------------------------------------------------------------------------- /.github/workflows/build+test_libs_apps.yml: -------------------------------------------------------------------------------- 1 | name: Build & test hslayers, app & sensors 2 | 3 | on: 4 | push: 5 | paths-ignore: 6 | - 'projects/hslayers-server/**/*' 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [20.x, 24.x] 16 | 17 | steps: 18 | - uses: actions/checkout@v4 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v4 21 | with: 22 | node-version: ${{ matrix.node-version }} 23 | - name: npm install, build, and test 24 | run: | 25 | npm ci --force 26 | npm run build 27 | npm run build-app 28 | npm run build-sensors 29 | npm run test:ci 30 | env: 31 | CI: true 32 | -------------------------------------------------------------------------------- /cypress/tests/language.cy.ts: -------------------------------------------------------------------------------- 1 | describe('Hslayers application', () => { 2 | it('Language panel should open', () => { 3 | cy.visit('/'); 4 | cy.get('.hs-sidebar-additional-items:first').click(); 5 | cy.get( 6 | 'hs-mini-sidebar .hs-sidebar-item.hs-panel-hidden[data-cy="language"]', 7 | ).click(); 8 | cy.get('hs-language .list-group .btn:last').click(); 9 | cy.get('hs-language hs-panel-header a.nav-link').should( 10 | 'contain.text', 11 | 'Linguam mutare', 12 | ); 13 | }); 14 | 15 | it('App should open with a language other than the default', () => { 16 | cy.visit('/?hs-lang=cs'); 17 | 18 | cy.get('hs-some-panel hs-panel-header a.nav-link').should( 19 | 'contain.text', 20 | 'Můj úžasný panel', 21 | ); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /projects/hslayers/components/print/imprint-styler/imprint-styler.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | import {FormsModule} from '@angular/forms'; 3 | import {TranslatePipe} from '@ngx-translate/core'; 4 | 5 | import {CANVAS_SIZES} from '../constants/position-options'; 6 | import {HsPrintTextStylerComponent} from '../text-styler/text-styler.component'; 7 | import {ImprintObj} from '../types/imprint-object.type'; 8 | 9 | @Component({ 10 | selector: 'hs-print-imprint-styler', 11 | templateUrl: './imprint-styler.component.html', 12 | imports: [FormsModule, HsPrintTextStylerComponent, TranslatePipe], 13 | }) 14 | export class HsPrintImprintStylerComponent { 15 | @Input() imprintObj: ImprintObj; 16 | sizes = CANVAS_SIZES; 17 | 18 | constructor() {} 19 | } 20 | -------------------------------------------------------------------------------- /projects/test-app/src/environments/environment.hmr.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | hmr: true, 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /projects/test-app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | hmr: false, 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /projects/test-app/src/hslayers-app/some-panel/some-panel.module.ts: -------------------------------------------------------------------------------- 1 | import {CUSTOM_ELEMENTS_SCHEMA, NgModule} from '@angular/core'; 2 | import {CommonModule} from '@angular/common'; 3 | import {FormsModule} from '@angular/forms'; 4 | import {TranslatePipe} from '@ngx-translate/core'; 5 | 6 | import { 7 | HsPanelHelpersModule, 8 | HsPanelHeaderComponent, 9 | } from 'hslayers-ng/common/panels'; 10 | import {SomeComponent} from './some-panel.component'; 11 | 12 | @NgModule({ 13 | schemas: [CUSTOM_ELEMENTS_SCHEMA], 14 | imports: [ 15 | CommonModule, 16 | FormsModule, 17 | TranslatePipe, 18 | HsPanelHelpersModule, 19 | HsPanelHeaderComponent, 20 | ], 21 | exports: [], 22 | declarations: [SomeComponent], 23 | providers: [], 24 | }) 25 | export class SomeModule {} 26 | -------------------------------------------------------------------------------- /projects/cesium-test-app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | hmr: false, 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/environments/environment.hmr.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | hmr: true, 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /projects/hslayers-app/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | hmr: false, 8 | }; 9 | 10 | /* 11 | * For easier debugging in development mode, you can import the following file 12 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 13 | * 14 | * This import should be commented out in production mode because it will have a negative impact 15 | * on performance if an error is thrown. 16 | */ 17 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 18 | -------------------------------------------------------------------------------- /projects/hslayers/common/dialogs/compositions-warning/warning-dialog.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, ViewRef, inject} from '@angular/core'; 2 | import {TranslatePipe} from '@ngx-translate/core'; 3 | 4 | import {HsDialogComponent} from '../dialog-component.interface'; 5 | import {HsDialogContainerService} from '../dialog-container.service'; 6 | @Component({ 7 | selector: 'hs-compositions-warning-dialog', 8 | templateUrl: './warning-dialog.component.html', 9 | imports: [TranslatePipe], 10 | }) 11 | export class HsCompositionsWarningDialogComponent implements HsDialogComponent { 12 | hsDialogContainerService = inject(HsDialogContainerService); 13 | 14 | viewRef: ViewRef; 15 | data: any; 16 | 17 | close(): void { 18 | this.hsDialogContainerService.destroy(this); 19 | } 20 | } 21 | --------------------------------------------------------------------------------