@igo2/context 1.12.0 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/bundles/igo2-context.umd.js.map +1 -1
  2. package/esm2015/lib/context-import-export/context-import-export/context-import-export.component.js +1 -1
  3. package/esm2015/lib/context-import-export/context-import-export.module.js +1 -1
  4. package/esm2015/lib/context-import-export/index.js +1 -1
  5. package/esm2015/lib/context-import-export/shared/context-export.errors.js +1 -1
  6. package/esm2015/lib/context-import-export/shared/context-export.interface.js +1 -1
  7. package/esm2015/lib/context-import-export/shared/context-export.service.js +1 -1
  8. package/esm2015/lib/context-import-export/shared/context-export.utils.js +1 -1
  9. package/esm2015/lib/context-import-export/shared/context-import.errors.js +1 -1
  10. package/esm2015/lib/context-import-export/shared/context-import.service.js +1 -1
  11. package/esm2015/lib/context-import-export/shared/context-import.utils.js +1 -1
  12. package/esm2015/lib/context-import-export/shared/index.js +1 -1
  13. package/esm2015/lib/context-manager/context-edit/context-edit-binding.directive.js +1 -1
  14. package/esm2015/lib/context-manager/context-edit/context-edit.component.js +1 -1
  15. package/esm2015/lib/context-manager/context-edit/index.js +1 -1
  16. package/esm2015/lib/context-manager/context-form/context-form.component.js +1 -1
  17. package/esm2015/lib/context-manager/context-form/index.js +1 -1
  18. package/esm2015/lib/context-manager/context-item/context-item.component.js +1 -1
  19. package/esm2015/lib/context-manager/context-item/index.js +1 -1
  20. package/esm2015/lib/context-manager/context-list/context-list-binding.directive.js +1 -1
  21. package/esm2015/lib/context-manager/context-list/context-list.component.js +1 -1
  22. package/esm2015/lib/context-manager/context-list/context-list.enum.js +1 -1
  23. package/esm2015/lib/context-manager/context-list/index.js +1 -1
  24. package/esm2015/lib/context-manager/context-manager.module.js +1 -1
  25. package/esm2015/lib/context-manager/context-permissions/context-permissions-binding.directive.js +1 -1
  26. package/esm2015/lib/context-manager/context-permissions/context-permissions.component.js +1 -1
  27. package/esm2015/lib/context-manager/context-permissions/index.js +1 -1
  28. package/esm2015/lib/context-manager/index.js +1 -1
  29. package/esm2015/lib/context-manager/shared/context.enum.js +1 -1
  30. package/esm2015/lib/context-manager/shared/context.interface.js +1 -1
  31. package/esm2015/lib/context-manager/shared/context.service.js +1 -1
  32. package/esm2015/lib/context-manager/shared/index.js +1 -1
  33. package/esm2015/lib/context-manager/shared/layer-context.directive.js +1 -1
  34. package/esm2015/lib/context-manager/shared/map-context.directive.js +1 -1
  35. package/esm2015/lib/context-map-button/bookmark-button/bookmark-button.component.js +1 -1
  36. package/esm2015/lib/context-map-button/bookmark-button/bookmark-dialog.component.js +1 -1
  37. package/esm2015/lib/context-map-button/bookmark-button/index.js +1 -1
  38. package/esm2015/lib/context-map-button/context-map-button.module.js +1 -1
  39. package/esm2015/lib/context-map-button/index.js +1 -1
  40. package/esm2015/lib/context-map-button/poi-button/index.js +1 -1
  41. package/esm2015/lib/context-map-button/poi-button/poi-button.component.js +1 -1
  42. package/esm2015/lib/context-map-button/poi-button/poi-dialog.component.js +1 -1
  43. package/esm2015/lib/context-map-button/poi-button/shared/index.js +1 -1
  44. package/esm2015/lib/context-map-button/poi-button/shared/poi.interface.js +1 -1
  45. package/esm2015/lib/context-map-button/poi-button/shared/poi.service.js +1 -1
  46. package/esm2015/lib/context-map-button/user-button/index.js +1 -1
  47. package/esm2015/lib/context-map-button/user-button/user-button.animation.js +1 -1
  48. package/esm2015/lib/context-map-button/user-button/user-button.component.js +1 -1
  49. package/esm2015/lib/context-map-button/user-button/user-dialog.component.js +1 -1
  50. package/esm2015/lib/context.module.js +1 -1
  51. package/esm2015/lib/share-map/index.js +1 -1
  52. package/esm2015/lib/share-map/share-map/share-map-api.component.js +1 -1
  53. package/esm2015/lib/share-map/share-map/share-map-url.component.js +1 -1
  54. package/esm2015/lib/share-map/share-map/share-map.component.js +1 -1
  55. package/esm2015/lib/share-map/share-map.module.js +1 -1
  56. package/esm2015/lib/share-map/shared/index.js +1 -1
  57. package/esm2015/lib/share-map/shared/share-map.service.js +1 -1
  58. package/esm2015/lib/sidenav/index.js +1 -1
  59. package/esm2015/lib/sidenav/sidenav.component.js +1 -1
  60. package/esm2015/lib/sidenav/sidenav.module.js +1 -1
  61. package/esm2015/public_api.js +1 -1
  62. package/fesm2015/igo2-context.js.map +1 -1
  63. package/ngcc.config.js +3 -3
  64. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"igo2-context.js","sources":["../../../packages/context/src/lib/context-import-export/shared/context-export.errors.ts","../../../packages/context/src/lib/context-import-export/shared/context-export.utils.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.utils.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.errors.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.service.ts","../../../packages/context/src/lib/context-import-export/shared/context-export.service.ts","../../../packages/context/src/lib/context-manager/shared/context.enum.ts","../../../packages/context/src/lib/context-manager/shared/context.service.ts","../../../packages/context/src/lib/context-import-export/context-import-export/context-import-export.component.html","../../../packages/context/src/lib/context-import-export/context-import-export/context-import-export.component.ts","../../../packages/context/src/lib/context-import-export/context-import-export.module.ts","../../../packages/context/src/lib/context-manager/shared/map-context.directive.ts","../../../packages/context/src/lib/context-manager/shared/layer-context.directive.ts","../../../packages/context/src/lib/context-manager/context-list/context-list.enum.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-dialog.component.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-dialog.component.html","../../../packages/context/src/lib/context-manager/context-item/context-item.component.html","../../../packages/context/src/lib/context-manager/context-item/context-item.component.ts","../../../packages/context/src/lib/context-manager/context-list/context-list.component.html","../../../packages/context/src/lib/context-manager/context-list/context-list.component.ts","../../../packages/context/src/lib/context-manager/context-list/context-list-binding.directive.ts","../../../packages/context/src/lib/context-manager/context-form/context-form.component.html","../../../packages/context/src/lib/context-manager/context-form/context-form.component.ts","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.html","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.ts","../../../packages/context/src/lib/context-manager/context-edit/context-edit-binding.directive.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions.component.html","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions.component.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions-binding.directive.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-button.component.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-button.component.html","../../../packages/context/src/lib/context-map-button/poi-button/poi-dialog.component.ts","../../../packages/context/src/lib/context-map-button/poi-button/poi-dialog.component.html","../../../packages/context/src/lib/context-map-button/poi-button/shared/poi.service.ts","../../../packages/context/src/lib/context-map-button/poi-button/poi-button.component.html","../../../packages/context/src/lib/context-map-button/poi-button/poi-button.component.ts","../../../packages/context/src/lib/context-map-button/user-button/user-dialog.component.ts","../../../packages/context/src/lib/context-map-button/user-button/user-dialog.component.html","../../../packages/context/src/lib/context-map-button/user-button/user-button.animation.ts","../../../packages/context/src/lib/context-map-button/user-button/user-button.component.html","../../../packages/context/src/lib/context-map-button/user-button/user-button.component.ts","../../../packages/context/src/lib/context-map-button/context-map-button.module.ts","../../../packages/context/src/lib/context-manager/context-manager.module.ts","../../../packages/context/src/lib/share-map/shared/share-map.service.ts","../../../packages/context/src/lib/share-map/share-map/share-map-api.component.html","../../../packages/context/src/lib/share-map/share-map/share-map-api.component.ts","../../../packages/context/src/lib/share-map/share-map/share-map-url.component.html","../../../packages/context/src/lib/share-map/share-map/share-map-url.component.ts","../../../packages/context/src/lib/share-map/share-map/share-map.component.html","../../../packages/context/src/lib/share-map/share-map/share-map.component.ts","../../../packages/context/src/lib/share-map/share-map.module.ts","../../../packages/context/src/lib/sidenav/sidenav.component.html","../../../packages/context/src/lib/sidenav/sidenav.component.ts","../../../packages/context/src/lib/sidenav/sidenav.module.ts","../../../packages/context/src/lib/context.module.ts","../../../packages/context/src/public_api.ts","../../../packages/context/src/igo2-context.ts"],"sourcesContent":["export class ExportError extends Error {}\r\n\r\nexport class ExportInvalidFileError extends ExportError {\r\n constructor() {\r\n super('Invalid context');\r\n Object.setPrototypeOf(this, ExportInvalidFileError.prototype);\r\n }\r\n}\r\n\r\nexport class ExportNothingToExportError extends ExportError {\r\n constructor() {\r\n super('Nothing to export');\r\n Object.setPrototypeOf(this, ExportNothingToExportError.prototype);\r\n }\r\n}\r\n","import { MessageService, LanguageService } from '@igo2/core';\r\nimport { ExportNothingToExportError } from './context-export.errors';\r\n\r\nexport function handleFileExportError(\r\n error: Error,\r\n messageService: MessageService,\r\n languageService: LanguageService\r\n ) {\r\n if (error instanceof ExportNothingToExportError) {\r\n this.handleNothingToExportError(messageService, languageService);\r\n return;\r\n }\r\n const translate = languageService.translate;\r\n const title = translate.instant('igo.context.contextImportExport.export.failed.title');\r\n const message = translate.instant('igo.context.contextImportExport.export.failed.text');\r\n messageService.error(message, title);\r\n}\r\n\r\nexport function handleFileExportSuccess(\r\n messageService: MessageService,\r\n languageService: LanguageService\r\n ) {\r\n const translate = languageService.translate;\r\n const title = translate.instant('igo.context.contextImportExport.export.success.title');\r\n const message = translate.instant('igo.context.contextImportExport.export.success.text');\r\n messageService.success(message, title);\r\n}\r\n\r\nexport function handleNothingToExportError(\r\n messageService: MessageService,\r\n languageService: LanguageService\r\n ) {\r\n const translate = languageService.translate;\r\n const title = translate.instant('igo.context.contextImportExport.export.nothing.title');\r\n const message = translate.instant('igo.context.contextImportExport.export.nothing.text');\r\n messageService.error(message, title);\r\n}\r\n","import * as olStyle from 'ol/style';\r\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\r\n\r\nimport {\r\n FeatureDataSource,\r\n FeatureDataSourceOptions,\r\n IgoMap,\r\n VectorLayer,\r\n QueryableDataSourceOptions,\r\n StyleService,\r\n StyleListService,\r\n StyleByAttribute,\r\n ClusterParam,\r\n ClusterDataSourceOptions,\r\n ClusterDataSource\r\n} from '@igo2/geo';\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\r\nimport { ContextService } from '../../context-manager/shared/context.service';\r\nimport OlFeature from 'ol/Feature';\r\n\r\nexport function handleFileImportSuccess(\r\n file: File,\r\n context: DetailedContext,\r\n messageService: MessageService,\r\n languageService: LanguageService,\r\n contextService: ContextService\r\n) {\r\n if (Object.keys(context).length <= 0) {\r\n handleNothingToImportError(file, messageService, languageService);\r\n return;\r\n }\r\n\r\n const contextTitle = computeLayerTitleFromFile(file);\r\n\r\n addContextToContextList(context, contextTitle, contextService);\r\n\r\n const translate = languageService.translate;\r\n const messageTitle = translate.instant(\r\n 'igo.context.contextImportExport.import.success.title'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.contextImportExport.import.success.text',\r\n {\r\n value: contextTitle\r\n }\r\n );\r\n messageService.success(message, messageTitle);\r\n}\r\n\r\nexport function handleFileImportError(\r\n file: File,\r\n error: Error,\r\n messageService: MessageService,\r\n languageService: LanguageService,\r\n sizeMb?: number\r\n) {\r\n sizeMb = sizeMb ? sizeMb : 30;\r\n const errMapping = {\r\n 'Invalid file': handleInvalidFileImportError,\r\n 'File is too large': handleSizeFileImportError,\r\n 'Failed to read file': handleUnreadbleFileImportError\r\n };\r\n errMapping[error.message](\r\n file,\r\n error,\r\n messageService,\r\n languageService,\r\n sizeMb\r\n );\r\n}\r\n\r\nexport function handleInvalidFileImportError(\r\n file: File,\r\n error: Error,\r\n messageService: MessageService,\r\n languageService: LanguageService\r\n) {\r\n const translate = languageService.translate;\r\n const title = translate.instant(\r\n 'igo.context.contextImportExport.import.invalid.title'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.contextImportExport.import.invalid.text',\r\n {\r\n value: file.name,\r\n mimeType: file.type\r\n }\r\n );\r\n messageService.error(message, title);\r\n}\r\n\r\nexport function handleSizeFileImportError(\r\n file: File,\r\n error: Error,\r\n messageService: MessageService,\r\n languageService: LanguageService,\r\n sizeMb: number\r\n) {\r\n const translate = languageService.translate;\r\n const title = translate.instant(\r\n 'igo.context.contextImportExport.import.tooLarge.title'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.contextImportExport.import.tooLarge.text',\r\n {\r\n value: file.name,\r\n size: sizeMb\r\n }\r\n );\r\n messageService.error(message, title);\r\n}\r\n\r\nexport function handleUnreadbleFileImportError(\r\n file: File,\r\n error: Error,\r\n messageService: MessageService,\r\n languageService: LanguageService\r\n) {\r\n const translate = languageService.translate;\r\n const title = translate.instant(\r\n 'igo.context.contextImportExport.import.unreadable.title'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.contextImportExport.import.unreadable.text',\r\n {\r\n value: file.name\r\n }\r\n );\r\n messageService.error(message, title);\r\n}\r\n\r\nexport function handleNothingToImportError(\r\n file: File,\r\n messageService: MessageService,\r\n languageService: LanguageService\r\n) {\r\n const translate = languageService.translate;\r\n const title = translate.instant(\r\n 'igo.context.contextImportExport.import.empty.title'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.contextImportExport.import.empty.text',\r\n {\r\n value: file.name\r\n }\r\n );\r\n messageService.error(message, title);\r\n}\r\n\r\nexport function addContextToContextList(\r\n context: DetailedContext,\r\n contextTitle: string,\r\n contextService: ContextService\r\n) {\r\n context.title = contextTitle;\r\n context.imported = true;\r\n contextService.contexts$.value.ours.unshift(context);\r\n contextService.contexts$.next(contextService.contexts$.value);\r\n contextService.importedContext.unshift(context);\r\n contextService.loadContext(context.uri);\r\n}\r\n\r\nexport function getFileExtension(file: File): string {\r\n return file.name.split('.').pop().toLowerCase();\r\n}\r\n\r\nexport function computeLayerTitleFromFile(file: File): string {\r\n return file.name.substr(0, file.name.lastIndexOf('.'));\r\n}\r\n\r\nexport function addImportedFeaturesToMap(\r\n olFeatures: OlFeature<OlGeometry>[],\r\n map: IgoMap,\r\n layerTitle: string\r\n): VectorLayer {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n const stroke = new olStyle.Stroke({\r\n color: [r, g, b, 1],\r\n width: 2\r\n });\r\n\r\n const fill = new olStyle.Fill({\r\n color: [r, g, b, 0.4]\r\n });\r\n const sourceOptions: FeatureDataSourceOptions & QueryableDataSourceOptions = {\r\n type: 'vector',\r\n queryable: true\r\n };\r\n const source = new FeatureDataSource(sourceOptions);\r\n source.ol.addFeatures(olFeatures);\r\n const layer = new VectorLayer({\r\n title: layerTitle,\r\n isIgoInternalLayer: true,\r\n source,\r\n style: new olStyle.Style({\r\n stroke,\r\n fill,\r\n image: new olStyle.Circle({\r\n radius: 5,\r\n stroke,\r\n fill\r\n })\r\n })\r\n });\r\n map.addLayer(layer);\r\n\r\n return layer;\r\n}\r\n\r\nexport function addImportedFeaturesStyledToMap(\r\n olFeatures: OlFeature<OlGeometry>[],\r\n map: IgoMap,\r\n layerTitle: string,\r\n styleListService: StyleListService,\r\n styleService: StyleService\r\n): VectorLayer {\r\n let style;\r\n let distance: number;\r\n\r\n if (\r\n styleListService.getStyleList(layerTitle.toString() + '.styleByAttribute')\r\n ) {\r\n const styleByAttribute: StyleByAttribute = styleListService.getStyleList(\r\n layerTitle.toString() + '.styleByAttribute'\r\n );\r\n\r\n style = (feature, resolution) => {\r\n return styleService.createStyleByAttribute(feature, styleByAttribute, resolution);\r\n };\r\n } else if (\r\n styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')\r\n ) {\r\n const clusterParam: ClusterParam = styleListService.getStyleList(\r\n layerTitle.toString() + '.clusterParam'\r\n );\r\n distance = styleListService.getStyleList(\r\n layerTitle.toString() + '.distance'\r\n );\r\n\r\n style = (feature, resolution) => {\r\n const baseStyle = styleService.createStyle(\r\n styleListService.getStyleList(layerTitle.toString() + '.clusterStyle'), feature, resolution\r\n );\r\n return styleService.createClusterStyle(feature, resolution, clusterParam, baseStyle);\r\n };\r\n } else if (styleListService.getStyleList(layerTitle.toString() + '.style')) {\r\n style = (feature, resolution) => styleService.createStyle(\r\n styleListService.getStyleList(layerTitle.toString() + '.style'), feature, resolution\r\n );\r\n } else {\r\n style = (feature, resolution) => styleService.createStyle(\r\n styleListService.getStyleList('default.style'), feature, resolution\r\n );\r\n }\r\n let source;\r\n\r\n if (styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')) {\r\n const sourceOptions: ClusterDataSourceOptions &\r\n QueryableDataSourceOptions = {\r\n distance,\r\n type: 'cluster',\r\n queryable: true\r\n };\r\n source = new ClusterDataSource(sourceOptions);\r\n source.ol.source.addFeatures(olFeatures);\r\n } else {\r\n const sourceOptions: FeatureDataSourceOptions &\r\n QueryableDataSourceOptions = {\r\n type: 'vector',\r\n queryable: true\r\n };\r\n source = new FeatureDataSource(sourceOptions);\r\n source.ol.addFeatures(olFeatures);\r\n }\r\n\r\n const layer = new VectorLayer({\r\n title: layerTitle,\r\n isIgoInternalLayer: true,\r\n source,\r\n style\r\n });\r\n map.addLayer(layer);\r\n\r\n return layer;\r\n}\r\n","export class ImportError extends Error {}\r\n\r\nexport class ImportInvalidFileError extends ImportError {\r\n constructor() {\r\n super('Invalid file');\r\n Object.setPrototypeOf(this, ImportInvalidFileError.prototype);\r\n }\r\n}\r\n\r\nexport class ImportUnreadableFileError extends ImportError {\r\n constructor() {\r\n super('Failed to read file');\r\n Object.setPrototypeOf(this, ImportUnreadableFileError.prototype);\r\n }\r\n}\r\n\r\nexport class ImportNothingToImportError extends ImportError {\r\n constructor() {\r\n super('Nothing to import');\r\n Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\r\n }\r\n}\r\n\r\nexport class ImportSizeError extends ImportError {\r\n constructor() {\r\n super('File is too large');\r\n Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\r\n }\r\n}\r\n\r\nexport class ImportSRSError extends ImportError {\r\n constructor() {\r\n super('Invalid SRS definition');\r\n Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Observer } from 'rxjs';\r\nimport { ConfigService } from '@igo2/core';\r\n\r\nimport {\r\n ImportInvalidFileError,\r\n ImportUnreadableFileError,\r\n ImportSizeError\r\n} from './context-import.errors';\r\nimport { getFileExtension } from './context-import.utils';\r\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContextImportService {\r\n static allowedMimeTypes = ['application/json'];\r\n\r\n static allowedExtensions = 'json';\r\n\r\n private clientSideFileSizeMax: number;\r\n\r\n constructor(private config: ConfigService) {\r\n const configFileSizeMb = this.config.getConfig(\r\n 'importExport.clientSideFileSizeMaxMb'\r\n );\r\n this.clientSideFileSizeMax =\r\n (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);\r\n }\r\n\r\n import(file: File): Observable<DetailedContext> {\r\n return this.importAsync(file);\r\n }\r\n\r\n private getFileImporter(\r\n file: File\r\n ): (\r\n file: File,\r\n observer: Observer<DetailedContext>,\r\n projectionIn: string,\r\n projectionOut: string\r\n ) => void {\r\n const extension = getFileExtension(file);\r\n const mimeType = file.type;\r\n const allowedMimeTypes = [...ContextImportService.allowedMimeTypes];\r\n const allowedExtensions = ContextImportService.allowedExtensions;\r\n\r\n if (\r\n allowedMimeTypes.indexOf(mimeType) < 0 &&\r\n allowedExtensions.indexOf(extension) < 0\r\n ) {\r\n return undefined;\r\n } else if (\r\n mimeType === 'application/json' ||\r\n extension === ContextImportService.allowedExtensions\r\n ) {\r\n return this.importFile;\r\n }\r\n return undefined;\r\n }\r\n\r\n private importAsync(file: File): Observable<DetailedContext> {\r\n const doImport = (observer: Observer<DetailedContext>) => {\r\n if (file.size >= this.clientSideFileSizeMax) {\r\n observer.error(new ImportSizeError());\r\n return;\r\n }\r\n const importer = this.getFileImporter(file);\r\n if (importer === undefined) {\r\n observer.error(new ImportInvalidFileError());\r\n return;\r\n }\r\n\r\n importer.call(this, file, observer);\r\n };\r\n\r\n return new Observable(doImport);\r\n }\r\n\r\n private importFile(file: File, observer: Observer<DetailedContext>) {\r\n const reader = new FileReader();\r\n\r\n reader.onload = (event: any) => {\r\n try {\r\n const context = this.parseContextFromFile(file, event.target.result);\r\n observer.next(context);\r\n } catch (e) {\r\n observer.error(new ImportUnreadableFileError());\r\n }\r\n\r\n observer.complete();\r\n };\r\n\r\n reader.onerror = (evt) => {\r\n observer.error(new ImportUnreadableFileError());\r\n };\r\n\r\n reader.readAsText(file, 'UTF-8');\r\n }\r\n\r\n private parseContextFromFile(file: File, data: string): DetailedContext {\r\n const context: DetailedContext = JSON.parse(data);\r\n return context;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { downloadContent } from '@igo2/utils';\r\n\r\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\r\nimport { ExportNothingToExportError } from './context-export.errors';\r\nimport { Observer, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContextExportService {\r\n\r\n export(res: DetailedContext): Observable<void> {\r\n return this.exportAsync(res);\r\n }\r\n\r\n protected exportAsync(res: DetailedContext): Observable<void> {\r\n const doExport = (observer: Observer<void>) => {\r\n const nothingToExport = this.nothingToExport(res);\r\n if (nothingToExport === true) {\r\n observer.error(new ExportNothingToExportError());\r\n return;\r\n }\r\n const contextJSON = JSON.stringify(res);\r\n downloadContent(contextJSON, 'text/json;charset=utf-8', `${res.uri}.json`);\r\n observer.complete();\r\n };\r\n return new Observable(doExport);\r\n }\r\n\r\n protected nothingToExport(res: DetailedContext): boolean {\r\n if (res.map === undefined) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","export enum TypePermission {\r\n null,\r\n read,\r\n write\r\n}\r\n\r\nexport enum Scope {\r\n public,\r\n protected,\r\n private\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\r\nimport {\r\n map,\r\n tap,\r\n catchError,\r\n debounceTime,\r\n mergeMap,\r\n first,\r\n skip\r\n} from 'rxjs/operators';\r\n\r\nimport olPoint from 'ol/geom/Point';\r\nimport GeoJSON from 'ol/format/GeoJSON';\r\nimport Cluster from 'ol/source/Cluster';\r\nimport olVectorSource from 'ol/source/Vector';\r\n\r\nimport { Tool } from '@igo2/common';\r\nimport { uuid, ObjectUtils } from '@igo2/utils';\r\nimport {\r\n ConfigService,\r\n RouteService,\r\n Message,\r\n MessageService,\r\n LanguageService,\r\n StorageService\r\n} from '@igo2/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport type { IgoMap, Layer } from '@igo2/geo';\r\n\r\nimport { TypePermission } from './context.enum';\r\nimport {\r\n ContextsList,\r\n ContextServiceOptions,\r\n Context,\r\n DetailedContext,\r\n ContextMapView,\r\n ContextPermission,\r\n ContextProfils\r\n} from './context.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContextService {\r\n public context$ = new BehaviorSubject<DetailedContext>(undefined);\r\n public contexts$ = new BehaviorSubject<ContextsList>({ ours: [] });\r\n public defaultContextId$ = new BehaviorSubject<string>(undefined);\r\n public editedContext$ = new BehaviorSubject<DetailedContext>(undefined);\r\n public importedContext: Array<DetailedContext> = [];\r\n public toolsChanged$ = new Subject<DetailedContext>();\r\n private mapViewFromRoute: ContextMapView = {};\r\n private options: ContextServiceOptions;\r\n private baseUrl: string;\r\n\r\n // Until the ContextService is completely refactored, this is needed\r\n // to track the current tools\r\n private tools: Tool[];\r\n private toolbar: string[];\r\n\r\n get defaultContextUri(): string {\r\n return this.storageService.get('favorite.context.uri') as string || this._defaultContextUri || this.options.defaultContextUri;\r\n }\r\n set defaultContextUri(uri: string) {\r\n this._defaultContextUri = uri;\r\n }\r\n private _defaultContextUri: string;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private languageService: LanguageService,\r\n private config: ConfigService,\r\n private messageService: MessageService,\r\n private storageService: StorageService,\r\n @Optional() private route: RouteService\r\n ) {\r\n this.options = Object.assign(\r\n {\r\n basePath: 'contexts',\r\n contextListFile: '_contexts.json',\r\n defaultContextUri: '_default'\r\n },\r\n this.config.getConfig('context')\r\n );\r\n\r\n this.baseUrl = this.options.url;\r\n\r\n this.readParamsFromRoute();\r\n\r\n if (this.authService.hasAuthService) {\r\n this.authService.logged$.subscribe((logged) => {\r\n if (logged) {\r\n this.contexts$.pipe(skip(1), first()).subscribe((c) => {\r\n this.handleContextsChange();\r\n });\r\n this.loadContexts();\r\n }\r\n });\r\n } else {\r\n this.loadContexts();\r\n this.handleContextsChange(false);\r\n }\r\n }\r\n\r\n get(permissions?: string[], hidden?: boolean): Observable<ContextsList> {\r\n let url = this.baseUrl + '/contexts';\r\n if (permissions && this.authService.authenticated) {\r\n url += '?permission=' + permissions.join();\r\n if (hidden) {\r\n url += '&hidden=true';\r\n }\r\n }\r\n return this.http.get<ContextsList>(url);\r\n }\r\n\r\n getById(id: string): Observable<Context> {\r\n const url = this.baseUrl + '/contexts/' + id;\r\n return this.http.get<Context>(url);\r\n }\r\n\r\n getDetails(id: string): Observable<DetailedContext> {\r\n const url = `${this.baseUrl}/contexts/${id}/details`;\r\n return this.http.get<DetailedContext>(url).pipe(\r\n catchError((res) => {\r\n this.handleError(res, id);\r\n throw res;\r\n })\r\n );\r\n }\r\n\r\n getDefault(): Observable<DetailedContext> {\r\n if (this.authService.authenticated) {\r\n const url = this.baseUrl + '/contexts/default';\r\n return this.http.get<DetailedContext>(url).pipe(\r\n tap((context) => {\r\n this.defaultContextId$.next(context.id);\r\n })\r\n );\r\n } else {\r\n const uri = this.storageService.get('favorite.context.uri') as string;\r\n this.defaultContextId$.next(uri);\r\n return this.getContextByUri(uri);\r\n }\r\n\r\n }\r\n\r\n getProfilByUser(): Observable<ContextProfils[]> {\r\n if (this.baseUrl) {\r\n const url = this.baseUrl + '/profils?';\r\n return this.http.get<ContextProfils[]>(url);\r\n }\r\n return of([]);\r\n }\r\n\r\n setDefault(id: string): Observable<any> {\r\n if (this.authService.authenticated) {\r\n const url = this.baseUrl + '/contexts/default';\r\n return this.http.post(url, { defaultContextId: id });\r\n } else {\r\n this.storageService.set('favorite.context.uri', id);\r\n return of(undefined);\r\n }\r\n }\r\n\r\n hideContext(id: string) {\r\n const url = this.baseUrl + '/contexts/' + id + '/hide';\r\n return this.http.post(url, {});\r\n }\r\n\r\n showContext(id: string) {\r\n const url = this.baseUrl + '/contexts/' + id + '/show';\r\n return this.http.post(url, {});\r\n }\r\n\r\n delete(id: string, imported = false): Observable<void> {\r\n const contexts: ContextsList = { ours: [] };\r\n Object.keys(this.contexts$.value).forEach(\r\n (key) =>\r\n (contexts[key] = this.contexts$.value[key].filter((c) => c.id !== id))\r\n );\r\n\r\n if (imported) {\r\n this.importedContext = this.importedContext.filter((c) => c.id !== id);\r\n return of(this.contexts$.next(contexts));\r\n }\r\n\r\n const url = this.baseUrl + '/contexts/' + id;\r\n return this.http.delete<void>(url).pipe(\r\n tap((res) => {\r\n this.contexts$.next(contexts);\r\n })\r\n );\r\n }\r\n\r\n create(context: DetailedContext): Observable<Context> {\r\n const url = this.baseUrl + '/contexts';\r\n return this.http.post<Context>(url, context).pipe(\r\n map((contextCreated) => {\r\n if (this.authService.authenticated) {\r\n contextCreated.permission = TypePermission[TypePermission.write];\r\n } else {\r\n contextCreated.permission = TypePermission[TypePermission.read];\r\n }\r\n this.contexts$.value.ours.unshift(contextCreated);\r\n this.contexts$.next(this.contexts$.value);\r\n return contextCreated;\r\n })\r\n );\r\n }\r\n\r\n clone(id: string, properties = {}): Observable<Context> {\r\n const url = this.baseUrl + '/contexts/' + id + '/clone';\r\n return this.http.post<Context>(url, properties).pipe(\r\n map((contextCloned) => {\r\n contextCloned.permission = TypePermission[TypePermission.write];\r\n this.contexts$.value.ours.unshift(contextCloned);\r\n this.contexts$.next(this.contexts$.value);\r\n return contextCloned;\r\n })\r\n );\r\n }\r\n\r\n update(id: string, context: Context): Observable<Context> {\r\n const url = this.baseUrl + '/contexts/' + id;\r\n return this.http.patch<Context>(url, context);\r\n }\r\n\r\n // =================================================================\r\n\r\n addToolAssociation(contextId: string, toolId: string): Observable<void> {\r\n const url = `${this.baseUrl}/contexts/${contextId}/tools`;\r\n const association = {\r\n toolId\r\n };\r\n return this.http.post<void>(url, association);\r\n }\r\n\r\n deleteToolAssociation(contextId: string, toolId: string): Observable<any> {\r\n const url = `${this.baseUrl}/contexts/${contextId}/tools/${toolId}`;\r\n return this.http.delete(url);\r\n }\r\n\r\n getPermissions(id: string): Observable<ContextPermission[]> {\r\n const url = this.baseUrl + '/contexts/' + id + '/permissions';\r\n return this.http.get<ContextPermission[]>(url);\r\n }\r\n\r\n addPermissionAssociation(\r\n contextId: string,\r\n profil: string,\r\n type: TypePermission\r\n ): Observable<ContextPermission[]> {\r\n const url = `${this.baseUrl}/contexts/${contextId}/permissions`;\r\n const association = {\r\n profil,\r\n typePermission: type\r\n };\r\n\r\n return this.http.post<ContextPermission[]>(url, association).pipe(\r\n catchError((res) => {\r\n this.handleError(res, undefined, true);\r\n throw [res]; // TODO Not sure about this.\r\n })\r\n );\r\n }\r\n\r\n deletePermissionAssociation(\r\n contextId: string,\r\n permissionId: string\r\n ): Observable<void> {\r\n const url = `${this.baseUrl}/contexts/${contextId}/permissions/${permissionId}`;\r\n return this.http.delete<void>(url);\r\n }\r\n\r\n // ======================================================================\r\n\r\n getLocalContexts(): Observable<ContextsList> {\r\n const url = this.getPath(this.options.contextListFile);\r\n return this.http.get<ContextsList>(url).pipe(\r\n map((res: any) => {\r\n return { ours: res };\r\n })\r\n );\r\n }\r\n\r\n getLocalContext(uri: string): Observable<DetailedContext> {\r\n const url = this.getPath(`${uri}.json`);\r\n return this.http.get<DetailedContext>(url).pipe(\r\n mergeMap((res) => {\r\n if (!res.base) {\r\n return of(res);\r\n }\r\n const urlBase = this.getPath(`${res.base}.json`);\r\n return this.http.get<DetailedContext>(urlBase).pipe(\r\n map((resBase: DetailedContext) => {\r\n const resMerge = res;\r\n resMerge.map = ObjectUtils.mergeDeep(resBase.map, res.map);\r\n resMerge.layers = (resBase.layers || [])\r\n .concat(res.layers || [])\r\n .reverse()\r\n .filter(\r\n (l, index, self) =>\r\n !l.id || self.findIndex((l2) => l2.id === l.id) === index\r\n )\r\n .reverse();\r\n resMerge.toolbar = res.toolbar || resBase.toolbar;\r\n resMerge.message = res.message || resBase.message;\r\n resMerge.messages = res.messages || resBase.messages;\r\n resMerge.tools = (res.tools || [])\r\n .concat(resBase.tools || [])\r\n .filter(\r\n (t, index, self) =>\r\n self.findIndex((t2) => t2.name === t.name) === index\r\n );\r\n return resMerge;\r\n }),\r\n catchError((err) => {\r\n this.handleError(err, uri);\r\n throw err;\r\n })\r\n );\r\n }),\r\n catchError((err2) => {\r\n this.handleError(err2, uri);\r\n throw err2;\r\n })\r\n );\r\n }\r\n\r\n loadContexts(permissions?: string[], hidden?: boolean) {\r\n let request;\r\n if (this.baseUrl) {\r\n request = this.get(permissions, hidden);\r\n } else {\r\n request = this.getLocalContexts();\r\n }\r\n request.subscribe((contexts) => {\r\n contexts.ours = this.importedContext.concat(contexts.ours);\r\n this.contexts$.next(contexts);\r\n });\r\n }\r\n\r\n loadDefaultContext() {\r\n const loadFct = (direct = false) => {\r\n if (!direct && this.baseUrl && this.authService.authenticated) {\r\n this.getDefault().subscribe(\r\n (_context: DetailedContext) => {\r\n this.defaultContextUri = _context.uri;\r\n this.addContextToList(_context);\r\n this.setContext(_context);\r\n },\r\n () => {\r\n this.defaultContextId$.next(undefined);\r\n this.loadContext(this.defaultContextUri);\r\n }\r\n );\r\n } else {\r\n this.loadContext(this.defaultContextUri);\r\n }\r\n };\r\n\r\n if (this.route && this.route.options.contextKey) {\r\n this.route.queryParams.pipe(debounceTime(100)).subscribe((params) => {\r\n const contextParam = params[this.route.options.contextKey as string];\r\n let direct = false;\r\n if (contextParam) {\r\n this.defaultContextUri = contextParam;\r\n direct = true;\r\n }\r\n loadFct(direct);\r\n });\r\n } else {\r\n loadFct();\r\n }\r\n }\r\n\r\n loadContext(uri: string) {\r\n const context = this.context$.value;\r\n\r\n if (context && context.uri === uri) {\r\n return;\r\n }\r\n\r\n this.getContextByUri(uri)\r\n .pipe(first())\r\n .subscribe(\r\n (_context: DetailedContext) => {\r\n this.addContextToList(_context);\r\n this.setContext(_context);\r\n },\r\n (err) => {\r\n if (uri !== this.options.defaultContextUri) {\r\n this.loadContext(this.options.defaultContextUri);\r\n }\r\n }\r\n );\r\n }\r\n\r\n setContext(context: DetailedContext) {\r\n this.handleContextMessage(context);\r\n const currentContext = this.context$.value;\r\n if (currentContext && context && context.id === currentContext.id) {\r\n if (context.map.view.keepCurrentView === undefined) {\r\n context.map.view.keepCurrentView = true;\r\n }\r\n this.context$.next(context);\r\n return;\r\n }\r\n\r\n if (!context.map) {\r\n context.map = { view: {} };\r\n }\r\n\r\n Object.assign(context.map.view, this.mapViewFromRoute);\r\n\r\n this.context$.next(context);\r\n }\r\n\r\n loadEditedContext(uri: string) {\r\n this.getContextByUri(uri).subscribe((_context: DetailedContext) => {\r\n this.setEditedContext(_context);\r\n });\r\n }\r\n\r\n setEditedContext(context: DetailedContext) {\r\n this.editedContext$.next(context);\r\n }\r\n\r\n getContextFromMap(igoMap: IgoMap, empty?: boolean): DetailedContext {\r\n const view = igoMap.ol.getView();\r\n const proj = view.getProjection().getCode();\r\n const center: any = new olPoint(view.getCenter()).transform(\r\n proj,\r\n 'EPSG:4326'\r\n );\r\n\r\n const context = {\r\n uri: uuid(),\r\n title: '',\r\n scope: 'private',\r\n map: {\r\n view: {\r\n center: center.getCoordinates(),\r\n zoom: view.getZoom(),\r\n projection: proj,\r\n maxZoomOnExtent: igoMap.viewController.maxZoomOnExtent\r\n }\r\n },\r\n layers: [],\r\n tools: []\r\n };\r\n\r\n let layers = [];\r\n if (empty === true) {\r\n layers = igoMap.layers$\r\n .getValue()\r\n .filter(\r\n (lay) =>\r\n lay.baseLayer === true ||\r\n lay.options.id === 'searchPointerSummaryId'\r\n )\r\n .sort((a, b) => a.zIndex - b.zIndex);\r\n } else {\r\n layers = igoMap.layers$.getValue().filter(lay => !lay.id.includes('WfsWorkspaceTableDest')).sort((a, b) => a.zIndex - b.zIndex);\r\n }\r\n\r\n let i = 0;\r\n for (const l of layers) {\r\n const layer: any = l;\r\n const opts = {\r\n id: layer.options.id ? String(layer.options.id) : undefined,\r\n layerOptions: {\r\n title: layer.options.title,\r\n zIndex: ++i,\r\n visible: layer.visible\r\n },\r\n sourceOptions: {\r\n type: layer.dataSource.options.type,\r\n params: layer.dataSource.options.params,\r\n url: layer.dataSource.options.url,\r\n queryable: layer.queryable\r\n }\r\n };\r\n if (opts.sourceOptions.type) {\r\n context.layers.push(opts);\r\n }\r\n }\r\n\r\n context.tools = this.tools.map((tool) => {\r\n return { id: String(tool.id), global: tool.global };\r\n });\r\n\r\n return context;\r\n }\r\n\r\n getContextFromLayers(\r\n igoMap: IgoMap,\r\n layers: Layer[],\r\n name: string\r\n ): DetailedContext {\r\n const currentContext = this.context$.getValue();\r\n const view = igoMap.ol.getView();\r\n const proj = view.getProjection().getCode();\r\n const center: any = new olPoint(view.getCenter()).transform(\r\n proj,\r\n 'EPSG:4326'\r\n );\r\n\r\n const context = {\r\n uri: name,\r\n title: name,\r\n map: {\r\n view: {\r\n center: center.getCoordinates(),\r\n zoom: view.getZoom(),\r\n projection: proj\r\n }\r\n },\r\n layers: [],\r\n toolbar: [],\r\n tools: [],\r\n extraFeatures: []\r\n };\r\n\r\n const currentLayers = igoMap.layers$.getValue();\r\n context.layers = currentLayers\r\n .filter((l) => l.baseLayer)\r\n .map((l) => {\r\n return {\r\n baseLayer: true,\r\n sourceOptions: l.options.sourceOptions,\r\n title: l.options.title,\r\n visible: l.visible\r\n };\r\n });\r\n\r\n layers.forEach((layer) => {\r\n const layerFound = currentContext.layers.find(\r\n (contextLayer) =>\r\n layer.id === contextLayer.source.id && !contextLayer.baseLayer\r\n );\r\n\r\n if (layerFound) {\r\n let layerStyle = layerFound[`style`];\r\n if (layerFound[`styleByAttribute`]) {\r\n layerStyle = undefined;\r\n } else if (layerFound[`clusterBaseStyle`]) {\r\n layerStyle = undefined;\r\n delete layerFound.sourceOptions[`source`];\r\n delete layerFound.sourceOptions[`format`];\r\n }\r\n const opts = {\r\n baseLayer: layerFound.baseLayer,\r\n title: layer.options.title,\r\n zIndex: layer.zIndex,\r\n styleByAttribute: layerFound[`styleByAttribute`],\r\n clusterBaseStyle: layerFound[`clusterBaseStyle`],\r\n style: layerStyle,\r\n clusterParam: layerFound[`clusterParam`],\r\n visible: layer.visible,\r\n opacity: layer.opacity,\r\n sourceOptions: layerFound.sourceOptions\r\n };\r\n context.layers.push(opts);\r\n } else {\r\n if (!(layer.ol.getSource() instanceof olVectorSource)) {\r\n const catalogLayer = layer.options;\r\n catalogLayer.zIndex = layer.zIndex;\r\n delete catalogLayer.source;\r\n context.layers.push(catalogLayer);\r\n } else {\r\n let features;\r\n const writer = new GeoJSON();\r\n if (layer.ol.getSource() instanceof Cluster) {\r\n const clusterSource = layer.ol.getSource() as Cluster;\r\n features = writer.writeFeatures(\r\n clusterSource.getFeatures(),\r\n {\r\n dataProjection: 'EPSG:4326',\r\n featureProjection: 'EPSG:3857'\r\n }\r\n );\r\n } else {\r\n const source = layer.ol.getSource() as any;\r\n features = writer.writeFeatures(\r\n source.getFeatures(),\r\n {\r\n dataProjection: 'EPSG:4326',\r\n featureProjection: 'EPSG:3857'\r\n }\r\n );\r\n }\r\n features = JSON.parse(features);\r\n features.name = layer.options.title;\r\n context.extraFeatures.push(features);\r\n }\r\n }\r\n });\r\n\r\n context.toolbar = this.toolbar;\r\n context.tools = this.tools;\r\n\r\n return context;\r\n }\r\n\r\n setTools(tools: Tool[]) {\r\n this.tools = tools;\r\n }\r\n\r\n setToolbar(toolbar: string[]) {\r\n this.toolbar = toolbar;\r\n }\r\n\r\n private handleContextMessage(context: DetailedContext) {\r\n if (this.context$.value && context.uri && this.context$.value.uri !== context.uri) {\r\n this.messageService.removeAllAreNotError();\r\n }\r\n\r\n context.messages = context.messages ? context.messages : [];\r\n context.messages.push(context.message);\r\n context.messages.map(message => {\r\n if (message) {\r\n message.title = message.title\r\n ? this.languageService.translate.instant(message.title)\r\n : undefined;\r\n message.text = message.text\r\n ? this.languageService.translate.instant(message.text)\r\n : undefined;\r\n this.messageService.message(message as Message);\r\n }\r\n });\r\n }\r\n\r\n private getContextByUri(uri: string): Observable<DetailedContext> {\r\n if (this.baseUrl) {\r\n let contextToLoad;\r\n for (const key of Object.keys(this.contexts$.value)) {\r\n contextToLoad = this.contexts$.value[key].find((c) => {\r\n return c.uri === uri;\r\n });\r\n if (contextToLoad) {\r\n break;\r\n }\r\n }\r\n\r\n if (contextToLoad && contextToLoad.imported) {\r\n return of(contextToLoad);\r\n }\r\n\r\n // TODO : use always id or uri\r\n const id = contextToLoad ? contextToLoad.id : uri;\r\n return this.getDetails(id);\r\n }\r\n\r\n const importedContext = this.contexts$.value.ours.find((currentContext) => {\r\n return currentContext.uri === uri && currentContext.imported === true;\r\n });\r\n\r\n if (importedContext) {\r\n return of(importedContext);\r\n } else {\r\n return this.getLocalContext(uri);\r\n }\r\n }\r\n\r\n getContextLayers(igoMap: IgoMap) {\r\n const layers: Layer[] = [];\r\n const mapLayers = igoMap.layers$.getValue();\r\n mapLayers.forEach((layer) => {\r\n if (!layer.baseLayer && layer.options.id !== 'searchPointerSummaryId') {\r\n layers.push(layer);\r\n }\r\n });\r\n return layers;\r\n }\r\n\r\n private readParamsFromRoute() {\r\n if (!this.route) {\r\n return;\r\n }\r\n\r\n this.route.queryParams.subscribe((params) => {\r\n const centerKey = this.route.options.centerKey;\r\n if (centerKey && params[centerKey as string]) {\r\n const centerParams = params[centerKey as string];\r\n this.mapViewFromRoute.center = centerParams.split(',').map(Number);\r\n }\r\n\r\n const projectionKey = this.route.options.projectionKey;\r\n if (projectionKey && params[projectionKey as string]) {\r\n const projectionParam = params[projectionKey as string];\r\n this.mapViewFromRoute.projection = projectionParam;\r\n }\r\n\r\n const zoomKey = this.route.options.zoomKey;\r\n if (zoomKey && params[zoomKey as string]) {\r\n const zoomParam = params[zoomKey as string];\r\n this.mapViewFromRoute.zoom = Number(zoomParam);\r\n }\r\n });\r\n }\r\n\r\n private getPath(file: string) {\r\n const basePath = this.options.basePath.replace(/\\/$/, '');\r\n\r\n return `${basePath}/${file}`;\r\n }\r\n\r\n private handleError(\r\n error: HttpErrorResponse,\r\n uri: string,\r\n permissionError?: boolean\r\n ) {\r\n const context = this.contexts$.value.ours.find((obj) => obj.uri === uri);\r\n const titleContext = context ? context.title : uri;\r\n error.error.title = this.languageService.translate.instant(\r\n 'igo.context.contextManager.invalid.title'\r\n );\r\n\r\n error.error.message = this.languageService.translate.instant(\r\n 'igo.context.contextManager.invalid.text',\r\n { value: titleContext }\r\n );\r\n\r\n error.error.toDisplay = true;\r\n\r\n if (permissionError) {\r\n error.error.title = this.languageService.translate.instant(\r\n 'igo.context.contextManager.errors.addPermissionTitle'\r\n );\r\n error.error.message = this.languageService.translate.instant(\r\n 'igo.context.contextManager.errors.addPermission'\r\n );\r\n }\r\n this.messageService.error(error.error.message, error.error.title);\r\n }\r\n\r\n private handleContextsChange(\r\n keepCurrentContext = true\r\n ) {\r\n const context = this.context$.value;\r\n const editedContext = this.editedContext$.value;\r\n if (!context || context.uri === this.options.defaultContextUri) {\r\n keepCurrentContext = false;\r\n }\r\n if (!keepCurrentContext || !this.findContext(context)) {\r\n this.defaultContextUri = undefined;\r\n this.loadDefaultContext();\r\n } else {\r\n this.getContextByUri(context.uri)\r\n .pipe(first())\r\n .subscribe(\r\n (newContext: DetailedContext) => {\r\n this.toolsChanged$.next(newContext);\r\n }\r\n );\r\n\r\n if (this.baseUrl && this.authService.authenticated) {\r\n this.getDefault().subscribe();\r\n }\r\n }\r\n const editedFound = this.findContext(editedContext);\r\n if (!editedFound || editedFound.permission !== 'write') {\r\n this.setEditedContext(undefined);\r\n }\r\n }\r\n\r\n private addContextToList(context: Context) {\r\n const contextFound = this.findContext(context);\r\n if (!contextFound) {\r\n const contextSimplifie = {\r\n id: context.id,\r\n uri: context.uri,\r\n title: context.title,\r\n scope: context.scope,\r\n permission: TypePermission[TypePermission.read]\r\n };\r\n\r\n if (this.contexts$.value && this.contexts$.value.public) {\r\n this.contexts$.value.public.push(contextSimplifie);\r\n this.contexts$.next(this.contexts$.value);\r\n }\r\n }\r\n }\r\n\r\n private findContext(context: Context) {\r\n if (!context) {\r\n return false;\r\n }\r\n\r\n const contexts = this.contexts$.value;\r\n let found;\r\n for (const key of Object.keys(contexts)) {\r\n const value = contexts[key];\r\n found = value.find(\r\n (c) =>\r\n (context.id && c.id === context.id) ||\r\n (context.uri && c.uri === context.uri)\r\n );\r\n if (found) {\r\n break;\r\n }\r\n }\r\n\r\n return found;\r\n }\r\n}\r\n","<div class=\"import-export-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n [value]=\"activeImportExport\"\r\n (change)=\"onImportExportChange($event)\">\r\n <mat-button-toggle [value]=\"'import'\">\r\n {{'igo.geo.importExportForm.importTabTitle' | translate}}\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"'export'\">\r\n {{'igo.geo.importExportForm.exportTabTitle' | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<div *ngIf=\"activeImportExport === 'import'\">\r\n <form class=\"igo-form\">\r\n <div class=\"igo-form-button-group\">\r\n <button mat-raised-button type=\"button\" (click)=\"fileInput.click()\" [disabled]=\"loading$ | async\">\r\n {{'igo.geo.importExportForm.importButton' | translate}}\r\n </button>\r\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [style.display]=\"'none'\"\r\n (click)=\"fileInput.value = null\"\r\n (change)=\"importFiles($event.target.files)\">\r\n </div>\r\n </form>\r\n <section class=\"mat-typography\">\r\n <h4>{{'igo.geo.importExportForm.importClarifications' | translate}}</h4>\r\n <ul>\r\n <li>{{'igo.geo.importExportForm.importSizeMax' | translate: {size: fileSizeMb} }}</li>\r\n </ul>\r\n </section>\r\n</div>\r\n\r\n\r\n<form class=\"igo-form\" *ngIf=\"activeImportExport === 'export'\" [formGroup]=\"form\">\r\n <div class=\"igo-input-container\">\r\n <mat-form-field class=\"example-full-width\">\r\n <mat-label>{{'igo.context.contextImportExport.export.exportContextName' | translate}}</mat-label>\r\n <input formControlName=\"name\" matInput [value]=\"\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-label>{{'igo.context.contextImportExport.export.exportPlaceHolder' | translate}}</mat-label>\r\n <mat-select formControlName=\"layers\" multiple>\r\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\r\n {{'igo.context.contextImportExport.export.exportSelectAll' | translate}}\r\n </mat-option>\r\n <mat-divider></mat-divider>\r\n <mat-option *ngFor=\"let layer of userControlledLayerList\" [value]=\"layer\">{{layer.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-form-button-group\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n [disabled]=\"!form.valid || (loading$ | async)\"\r\n (click)=\"handleExportFormSubmit(form.value)\">\r\n {{'igo.geo.importExportForm.exportButton' | translate}}\r\n </button>\r\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\r\n </div>\r\n</form>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { MessageService, LanguageService, ConfigService } from '@igo2/core';\r\nimport { Layer, VectorLayer } from '@igo2/geo';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { handleFileExportError } from '../shared/context-export.utils';\r\nimport {\r\n handleFileImportSuccess,\r\n handleFileImportError\r\n} from '../shared/context-import.utils';\r\nimport { handleFileExportSuccess } from '../shared/context-export.utils';\r\nimport { ContextService } from '../../context-manager/shared/context.service';\r\nimport { ContextImportService } from '../shared/context-import.service';\r\nimport { ContextExportService } from '../shared/context-export.service';\r\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\r\n\r\n@Component({\r\n selector: 'igo-context-import-export',\r\n templateUrl: './context-import-export.component.html',\r\n styleUrls: ['./context-import-export.component.scss']\r\n})\r\nexport class ContextImportExportComponent implements OnInit {\r\n public form: FormGroup;\r\n public layers: VectorLayer[];\r\n public inputProj: string = 'EPSG:4326';\r\n public loading$ = new BehaviorSubject(false);\r\n public forceNaming = false;\r\n public layerList: Layer[];\r\n public userControlledLayerList: Layer[];\r\n public res: DetailedContext;\r\n private clientSideFileSizeMax: number;\r\n public fileSizeMb: number;\r\n public activeImportExport: string = 'import';\r\n\r\n @Input() map: IgoMap;\r\n\r\n constructor(\r\n private contextImportService: ContextImportService,\r\n private contextExportService: ContextExportService,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private formBuilder: FormBuilder,\r\n private config: ConfigService,\r\n private contextService: ContextService\r\n ) {\r\n this.buildForm();\r\n }\r\n\r\n ngOnInit() {\r\n const configFileSizeMb = this.config.getConfig(\r\n 'importExport.clientSideFileSizeMaxMb'\r\n );\r\n this.clientSideFileSizeMax =\r\n (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);\r\n this.fileSizeMb = this.clientSideFileSizeMax / Math.pow(1024, 2);\r\n this.layerList = this.contextService.getContextLayers(this.map);\r\n this.userControlledLayerList = this.layerList.filter(layer => layer.showInLayerList);\r\n }\r\n\r\n importFiles(files: File[]) {\r\n this.loading$.next(true);\r\n for (const file of files) {\r\n this.contextImportService.import(file).pipe(take(1)).subscribe(\r\n (context: DetailedContext) => this.onFileImportSuccess(file, context),\r\n (error: Error) => this.onFileImportError(file, error),\r\n () => {\r\n this.loading$.next(false);\r\n }\r\n );\r\n }\r\n }\r\n\r\n handleExportFormSubmit(contextOptions) {\r\n this.loading$.next(true);\r\n this.res = this.contextService.getContextFromLayers(\r\n this.map,\r\n contextOptions.layers,\r\n contextOptions.name\r\n );\r\n this.res.imported = true;\r\n this.contextExportService.export(this.res).pipe(take(1)).subscribe(\r\n () => {},\r\n (error: Error) => this.onFileExportError(error),\r\n () => {\r\n this.onFileExportSuccess();\r\n this.loading$.next(false);\r\n }\r\n );\r\n }\r\n\r\n private buildForm() {\r\n this.form = this.formBuilder.group({\r\n layers: ['', [Validators.required]],\r\n name: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n private onFileImportSuccess(file: File, context: DetailedContext) {\r\n handleFileImportSuccess(\r\n file,\r\n context,\r\n this.messageService,\r\n this.languageService,\r\n this.contextService\r\n );\r\n }\r\n\r\n private onFileImportError(file: File, error: Error) {\r\n this.loading$.next(false);\r\n handleFileImportError(\r\n file,\r\n error,\r\n this.messageService,\r\n this.languageService,\r\n this.fileSizeMb\r\n );\r\n }\r\n\r\n private onFileExportError(error: Error) {\r\n this.loading$.next(false);\r\n handleFileExportError(error, this.messageService, this.languageService);\r\n }\r\n\r\n private onFileExportSuccess() {\r\n handleFileExportSuccess(this.messageService, this.languageService);\r\n }\r\n\r\n selectAll(e) {\r\n if (e._selected) {\r\n this.form.controls.layers.setValue(this.userControlledLayerList);\r\n e._selected = true;\r\n }\r\n if (e._selected === false) {\r\n this.form.controls.layers.setValue([]);\r\n }\r\n }\r\n\r\n onImportExportChange(event) {\r\n this.activeImportExport = event.value;\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { ContextImportExportComponent } from './context-import-export/context-import-export.component';\r\nimport { IgoSpinnerModule } from '@igo2/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatDividerModule,\r\n MatTabsModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatCheckboxModule,\r\n IgoLanguageModule,\r\n IgoSpinnerModule,\r\n MatTooltipModule,\r\n ],\r\n exports: [\r\n ContextImportExportComponent\r\n ],\r\n declarations: [\r\n ContextImportExportComponent\r\n ]\r\n})\r\nexport class IgoContextImportExportModule {\r\n static forRoot(): ModuleWithProviders<IgoContextImportExportModule> {\r\n return {\r\n ngModule: IgoContextImportExportModule\r\n };\r\n }\r\n}\r\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\n\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { MapViewOptions, MapBrowserComponent, MapControlsOptions, MapScaleLineOptions } from '@igo2/geo';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { ContextService } from './context.service';\r\nimport { DetailedContext, ContextMapView } from './context.interface';\r\nimport { MediaService } from '@igo2/core';\r\n\r\n@Directive({\r\n selector: '[igoMapContext]'\r\n})\r\nexport class MapContextDirective implements OnInit, OnDestroy {\r\n private component: MapBrowserComponent;\r\n private context$$: Subscription;\r\n\r\n get map(): IgoMap {\r\n return this.component.map;\r\n }\r\n\r\n constructor(\r\n component: MapBrowserComponent,\r\n private contextService: ContextService,\r\n private mediaService: MediaService\r\n ) {\r\n this.component = component;\r\n }\r\n\r\n ngOnInit() {\r\n this.context$$ = this.contextService.context$\r\n .pipe(filter(context => context !== undefined))\r\n .subscribe(context => this.handleContextChange(context));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.context$$.unsubscribe();\r\n }\r\n\r\n private handleContextChange(context: DetailedContext) {\r\n if (context.map === undefined) {\r\n return;\r\n }\r\n\r\n // This creates a new ol.Map when the context changes. Doing that\r\n // allows the print tool to work properly even when the map's canvas\r\n // has been tainted (CORS) with the layers of another context. This could\r\n // have some side effects such as unbinding all listeners on the first map.\r\n // A better solution would be to create a new map (preview) before\r\n // printing and avoid the tainted canvas issue. This will come later so\r\n // this snippet of code is kept here in case it takes too long becomes\r\n // an issue\r\n\r\n // const target = this.component.map.ol.getTarget();\r\n // this.component.map.ol.setTarget(undefined);\r\n // this.component.map.init();\r\n // this.component.map.ol.setTarget(target);\r\n\r\n const viewContext: ContextMapView = context.map.view;\r\n if (!this.component.view || viewContext.keepCurrentView !== true) {\r\n this.component.view = viewContext as MapViewOptions;\r\n }\r\n if (this.component.map.geolocationController) {\r\n this.component.map.geolocationController.updateGeolocationOptions(viewContext);\r\n }\r\n\r\n const controlsContext: MapControlsOptions = context.map.controls;\r\n if (!this.component.controls && controlsContext) {\r\n if (this.mediaService.isMobile()) {\r\n if (typeof(controlsContext.scaleLine) !== 'boolean') {\r\n const scaleLineOption = controlsContext.scaleLine as MapScaleLineOptions;\r\n if (!scaleLineOption.minWidth) {\r\n scaleLineOption.minWidth = Math.min(64, scaleLineOption.minWidth);\r\n controlsContext.scaleLine = scaleLineOption;\r\n }\r\n }\r\n }\r\n this.component.controls = controlsContext;\r\n }\r\n }\r\n}\r\n","import { Directive, OnInit, OnDestroy, Optional, Input } from '@angular/core';\r\n\r\nimport { Subscription, merge } from 'rxjs';\r\nimport { buffer, debounceTime, filter } from 'rxjs/operators';\r\n\r\nimport { RouteService, ConfigService } from '@igo2/core';\r\nimport {\r\n MapBrowserComponent,\r\n Layer,\r\n LayerService,\r\n LayerOptions,\r\n StyleListService,\r\n StyleService\r\n} from '@igo2/geo';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { ContextService } from './context.service';\r\nimport { DetailedContext } from './context.interface';\r\nimport {\r\n addImportedFeaturesToMap,\r\n addImportedFeaturesStyledToMap\r\n} from '../../context-import-export/shared/context-import.utils';\r\nimport GeoJSON from 'ol/format/GeoJSON';\r\n\r\n@Directive({\r\n selector: '[igoLayerContext]'\r\n})\r\nexport class LayerContextDirective implements OnInit, OnDestroy {\r\n private context$$: Subscription;\r\n private queryParams: any;\r\n\r\n private contextLayers: Layer[] = [];\r\n\r\n @Input() removeLayersOnContextChange: boolean = true;\r\n\r\n get map(): IgoMap {\r\n return this.component.map;\r\n }\r\n\r\n constructor(\r\n private component: MapBrowserComponent,\r\n private contextService: ContextService,\r\n private layerService: LayerService,\r\n private configService: ConfigService,\r\n private styleListService: StyleListService,\r\n private styleService: StyleService,\r\n @Optional() private route: RouteService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.context$$ = this.contextService.context$\r\n .pipe(filter((context) => context !== undefined))\r\n .subscribe((context) => this.handleContextChange(context));\r\n\r\n if (\r\n this.route &&\r\n this.route.options.visibleOnLayersKey &&\r\n this.route.options.visibleOffLayersKey &&\r\n this.route.options.contextKey\r\n ) {\r\n const queryParams$$ = this.route.queryParams.subscribe((params) => {\r\n if (Object.keys(params).length > 0) {\r\n this.queryParams = params;\r\n queryParams$$.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.context$$.unsubscribe();\r\n }\r\n\r\n private handleContextChange(context: DetailedContext) {\r\n if (context.layers === undefined) {\r\n return;\r\n }\r\n if (this.removeLayersOnContextChange === true) {\r\n this.map.removeAllLayers();\r\n } else {\r\n this.map.removeLayers(this.contextLayers);\r\n }\r\n this.contextLayers = [];\r\n\r\n const layersAndIndex$ = merge(\r\n ...context.layers.map((layerOptions: LayerOptions, index: number) => {\r\n return this.layerService.createAsyncLayer(layerOptions, context.uri);\r\n })\r\n );\r\n\r\n layersAndIndex$\r\n .pipe(buffer(layersAndIndex$.pipe(debounceTime(500))))\r\n .subscribe((layers: Layer[]) => {\r\n layers = layers\r\n .filter((layer: Layer) => layer !== undefined)\r\n .map((layer) => {\r\n layer.visible = this.computeLayerVisibilityFromUrl(layer);\r\n layer.zIndex = layer.zIndex;\r\n\r\n return layer;\r\n });\r\n\r\n this.contextLayers.concat(layers);\r\n this.map.addLayers(layers);\r\n\r\n if (context.extraFeatures) {\r\n context.extraFeatures.forEach((featureCollection) => {\r\n const format = new GeoJSON();\r\n const title = featureCollection.name;\r\n featureCollection = JSON.stringify(featureCollection);\r\n featureCollection = format.readFeatures(featureCollection, {\r\n dataProjection: 'EPSG:4326',\r\n featureProjection: 'EPSG:3857'\r\n });\r\n if (!this.configService.getConfig('importWithStyle')) {\r\n addImportedFeaturesToMap(featureCollection, this.map, title);\r\n } else {\r\n addImportedFeaturesStyledToMap(\r\n featureCollection,\r\n this.map,\r\n title,\r\n this.styleListService,\r\n this.styleService\r\n );\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private computeLayerVisibilityFromUrl(layer: Layer): boolean {\r\n const params = this.queryParams;\r\n const currentContext = this.contextService.context$.value.uri;\r\n const currentLayerid: string = layer.id;\r\n\r\n let visible = layer.visible;\r\n if (!params || !currentLayerid) {\r\n return visible;\r\n }\r\n\r\n const contextParams = params[this.route.options.contextKey as string];\r\n if (contextParams === currentContext || !contextParams) {\r\n let visibleOnLayersParams = '';\r\n let visibleOffLayersParams = '';\r\n let visiblelayers: string[] = [];\r\n let invisiblelayers: string[] = [];\r\n\r\n if (\r\n this.route.options.visibleOnLayersKey &&\r\n params[this.route.options.visibleOnLayersKey as string]\r\n ) {\r\n visibleOnLayersParams =\r\n params[this.route.options.visibleOnLayersKey as string];\r\n }\r\n if (\r\n this.route.options.visibleOffLayersKey &&\r\n params[this.route.options.visibleOffLayersKey as string]\r\n ) {\r\n visibleOffLayersParams =\r\n params[this.route.options.visibleOffLayersKey as string];\r\n }\r\n\r\n /* This order is important because to control whichever\r\n the order of * param. First whe open and close everything.*/\r\n if (visibleOnLayersParams === '*') {\r\n visible = true;\r\n }\r\n if (visibleOffLayersParams === '*') {\r\n visible = false;\r\n }\r\n\r\n // After, managing named layer by id (context.json OR id from datasource)\r\n visiblelayers = visibleOnLayersParams.split(',');\r\n invisiblelayers = visibleOffLayersParams.split(',');\r\n if (visiblelayers.indexOf(currentLayerid) > -1 || visiblelayers.indexOf(currentLayerid.toString()) > -1) {\r\n visible = true;\r\n }\r\n if (invisiblelayers.indexOf(currentLayerid) > -1 || invisiblelayers.indexOf(currentLayerid.toString()) > -1) {\r\n visible = false;\r\n }\r\n }\r\n\r\n return visible;\r\n }\r\n}\r\n","export enum ContextListControlsEnum {\r\n always = 'always',\r\n never = 'never',\r\n default = 'default'\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'igo-bookmark-dialog',\r\n templateUrl: './bookmark-dialog.component.html'\r\n})\r\nexport class BookmarkDialogComponent {\r\n public title: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<BookmarkDialogComponent>) {}\r\n}\r\n","<h1 mat-dialog-title class=\"mat-typography\">{{ 'igo.context.bookmarkButton.dialog.title' | translate }}</h1>\r\n<div mat-dialog-content class=\"mat-typography\">\r\n <mat-form-field>\r\n <input matInput required autocomplete=\"off\"\r\n maxlength=\"128\"\r\n [placeholder]=\"'igo.context.bookmarkButton.dialog.placeholder' | translate\"\r\n [(ngModel)]=\"title\">\r\n </mat-form-field>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button color=\"primary\"\r\n [disabled]=\"!title\"\r\n (click)=\"dialogRef.close(title)\">\r\n {{'igo.common.confirmDialog.confirmBtn' | translate}}\r\n </button>\r\n <button mat-button\r\n (click)=\"dialogRef.close(false)\">\r\n {{'igo.common.confirmDialog.cancelBtn' | translate}}\r\n </button>\r\n</div>\r\n","<mat-list-item\r\n class=\"mat-list-item\"\r\n [ngClass]=\"{'mat-list-item-light': hidden}\">\r\n <button mat-list-avatar\r\n *ngIf=\"auth.authenticated\"\r\n mat-icon-button\r\n igoStopPropagation\r\n [matTooltip]=\"auth.authenticated ? ('igo.context.contextManager.favorite' | translate) : ''\"\r\n matTooltipShowDelay=\"500\"\r\n [color]=\"default ? 'primary' : 'default'\"\r\n (click)=\"favoriteClick(context)\">\r\n <mat-icon *ngIf=\"!context.iconImage\" svgIcon=\"{{context.icon ? context.icon : context.scope === 'public' ? 'earth' : 'star'}}\"></mat-icon>\r\n <img *ngIf=\"context.iconImage\" [src]=\"context.iconImage\">\r\n </button>\r\n <button mat-list-avatar\r\n *ngIf=\"!auth.authenticated && showFavorite\"\r\n mat-icon-button\r\n igoStopPropagation\r\n [matTooltip]=\"'igo.context.contextManager.favorite' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n [color]=\"default ? 'primary' : 'default'\"\r\n (click)=\"favoriteClick(context)\">\r\n <mat-icon svgIcon=\"star\"></mat-icon>\r\n </button>\r\n <h4 matLine>{{context.title}}</h4>\r\n\r\n <div *ngIf=\"auth.authenticated\"\r\n igoStopPropagation\r\n class=\"igo-actions-container\">\r\n\r\n <button *ngIf=\"collapsed && selected && (context.permission === typePermission[typePermission.write] || context.imported)\"\r\n class=\"save-button\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.contextManager.save' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n [color]=\"color\"\r\n (click)=\"save.emit(context)\">\r\n <mat-icon svgIcon=\"content-save\"></mat-icon>\r\n </button>\r\n\r\n <div #actions class=\"igo-actions-expand-container\">\r\n\r\n <button *ngIf=\"canShare && !context.imported\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.contextManager.managePermissions' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n [color]=\"color\"\r\n (click)=\"managePermissions.emit(context)\">\r\n <mat-icon svgIcon=\"account-arrow-right\"></mat-icon>\r\n </button>\r\n\r\n <!--button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.contextManager.manageTools' | translate\"\r\n [color]=\"color\"\r\n (click)=\"manageTools.emit(context)\">\r\n <mat-icon svgIcon=\"widgets\"></mat-icon>\r\n </button-->\r\n\r\n <button *ngIf=\"!context.imported\"\r\n class=\"clone-button\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n [color]=\"color\"\r\n (click)=\"clone.emit(context)\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"context.permission === typePermission[typePermission.write] && !context.imported\"\r\n class=\"edit-button\"\r\n mat-icon-button\r\n [color]=\"color\"\r\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n (click)=\"edit.emit(context)\">\r\n <mat-icon svgIcon=\"pencil\"></mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"!context.hidden && !context.imported\"\r\n class=\"hide-button\"\r\n mat-icon-button\r\n [color]=\"color\"\r\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n (click)=\"hide.emit(context)\">\r\n <mat-icon svgIcon=\"eye\"></mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"context.hidden && !context.imported\"\r\n class=\"hide-button\"\r\n mat-icon-button\r\n [color]=\"color\"\r\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n (click)=\"show.emit(context)\">\r\n <mat-icon svgIcon=\"eye-off\"></mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"context.permission === typePermission[typePermission.write] || context.imported\"\r\n class=\"delete-button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n [matTooltip]=\"'igo.context.contextManager.delete' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n (click)=\"delete.emit(context)\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <button\r\n class=\"actions-button\"\r\n mat-icon-button\r\n igoCollapse\r\n [color]=\"color\"\r\n [target]=\"actions\"\r\n [collapsed]=collapsed\r\n (click)=\"collapsed = !collapsed\">\r\n <mat-icon svgIcon=\"dots-horizontal\"></mat-icon>\r\n </button>\r\n\r\n </div>\r\n\r\n</mat-list-item>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\nimport { StorageService } from '@igo2/core';\r\nimport { AuthService } from '@igo2/auth';\r\nimport { TypePermission } from '../shared/context.enum';\r\nimport { DetailedContext } from '../shared/context.interface';\r\n\r\n@Component({\r\n selector: 'igo-context-item',\r\n templateUrl: './context-item.component.html',\r\n styleUrls: ['./context-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContextItemComponent {\r\n public typePermission = TypePermission;\r\n public color = 'primary';\r\n public collapsed = true;\r\n\r\n @Input() showFavorite: boolean = true;\r\n @Input() context: DetailedContext;\r\n @Input() default: boolean;\r\n @Input() selected: boolean;\r\n\r\n @Output() edit = new EventEmitter<DetailedContext>();\r\n @Output() delete = new EventEmitter<DetailedContext>();\r\n @Output() save = new EventEmitter<DetailedContext>();\r\n @Output() clone = new EventEmitter<DetailedContext>();\r\n @Output() hide = new EventEmitter<DetailedContext>();\r\n @Output() show = new EventEmitter<DetailedContext>();\r\n @Output() favorite = new EventEmitter<DetailedContext>();\r\n @Output() managePermissions = new EventEmitter<DetailedContext>();\r\n @Output() manageTools = new EventEmitter<DetailedContext>();\r\n\r\n get hidden(): boolean {\r\n return this.context.hidden;\r\n }\r\n\r\n get canShare(): boolean {\r\n return this.storageService.get('canShare') === true;\r\n }\r\n\r\n constructor(\r\n public auth: AuthService,\r\n private storageService: StorageService\r\n ) {}\r\n\r\n favoriteClick(context: DetailedContext) {\r\n this.favorite.emit(context);\r\n }\r\n}\r\n","<igo-list [navigation]=\"true\">\r\n <mat-form-field *ngIf=\"showFilter()\" [ngClass]=\"auth.authenticated && configService.getConfig('context') ? 'context-filter-min-width' : 'context-filter-max-width'\">\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'igo.context.contextManager.filterPlaceHolder' | translate\"\r\n [(ngModel)]=\"term\">\r\n <button\r\n mat-button\r\n mat-icon-button\r\n matSuffix\r\n class=\"clear-button\"\r\n *ngIf=\"term.length\"\r\n aria-label=\"Clear\"\r\n color=\"warn\"\r\n (click)=\"clearFilter()\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <button\r\n *ngIf=\"!sortedAlpha\"\r\n class=\"sort-alpha\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.contextManager.sortAlphabetically' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n (click)=\"toggleSort(true)\">\r\n <mat-icon color=\"primary\" svgIcon=\"sort-alphabetical-variant\"></mat-icon>\r\n </button>\r\n <button\r\n *ngIf=\"sortedAlpha\"\r\n class=\"sort-alpha\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.contextManager.sortContextOrder' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n (click)=\"toggleSort(false)\">\r\n <mat-icon color=\"warn\" svgIcon=\"sort-variant-remove\"></mat-icon>\r\n </button>\r\n\r\n <igo-actionbar *ngIf=\"auth.authenticated && configService.getConfig('context')\"\r\n class=\"add-context-button\"\r\n [iconColor]=\"color\"\r\n [store]=\"actionStore\"\r\n [withIcon]=\"true\"\r\n icon=\"plus\"\r\n [withTitle]=\"actionbarMode === 'overlay'\"\r\n [horizontal]=\"false\"\r\n [mode]=\"actionbarMode\">\r\n </igo-actionbar>\r\n\r\n <button *ngIf=\"auth.authenticated && configService.getConfig('context')\"\r\n class=\"users-filter\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n [matMenuTriggerFor]=\"accountMenu\">\r\n <mat-icon color=\"primary\" svgIcon=\"filter-menu\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu #accountMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let user of users\">\r\n <span class=\"profilsMenu\">\r\n <mat-checkbox\r\n class=\"mat-menu-item\"\r\n [checked]=\"getPermission(user).checked\"\r\n [indeterminate]=\"getPermission(user).indeterminate\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"userSelection(user)\">\r\n </mat-checkbox>\r\n <button *ngIf=\"user.childs\"\r\n [matMenuTriggerFor]=\"subAccountMenu\"\r\n mat-menu-item>\r\n {{user.title}}\r\n </button>\r\n <button\r\n mat-menu-item\r\n *ngIf=\"!user.childs\">\r\n {{user.title}}\r\n </button>\r\n </span>\r\n\r\n <mat-menu #subAccountMenu=\"matMenu\">\r\n <mat-checkbox *ngFor=\"let child of user.childs\"\r\n class=\"mat-menu-item\"\r\n [checked]=\"getPermission(child).checked\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"userSelection(child, user)\">\r\n {{child.title}}\r\n </mat-checkbox>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <span class=\"profilsMenu\">\r\n <mat-checkbox\r\n class=\"mat-menu-item\"\r\n [checked]=\"showHidden\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"showHiddenContexts.emit()\">\r\n </mat-checkbox>\r\n <button mat-menu-item>\r\n {{ 'igo.context.contextManager.showHidden' | translate }}\r\n </button>\r\n </span>\r\n </mat-menu>\r\n\r\n <ng-template ngFor let-groupContexts [ngForOf]=\"contexts$ | async | keyvalue\">\r\n\r\n <igo-collapsible *ngIf=\"groupContexts.value.length && auth.authenticated\" [title]=\"titleMapping[groupContexts.key] | translate\"\r\n [collapsed]=\"collapsed[titleMapping[groupContexts.key]]\" (toggle)=\"collapsed[titleMapping[groupContexts.key]] = $event\">\r\n\r\n <ng-template ngFor let-context [ngForOf]=\"groupContexts.value\">\r\n <igo-context-item\r\n igoListItem\r\n color=\"accent\"\r\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\r\n [context]=\"context\"\r\n [default]=\"context.id && this.defaultContextId && this.defaultContextId === context.id\"\r\n (edit)=\"edit.emit(context)\"\r\n (delete)=\"delete.emit(context)\"\r\n (clone)=\"clone.emit(context)\"\r\n (save)=\"save.emit(context)\"\r\n (hide)=\"hideContext(context)\"\r\n (show)=\"showContext(context)\"\r\n (favorite)=\"favorite.emit(context)\"\r\n (manageTools)=\"manageTools.emit(context)\"\r\n (managePermissions)=\"managePermissions.emit(context)\"\r\n (select)=\"select.emit(context)\"\r\n (unselect)=\"unselect.emit(context)\">\r\n </igo-context-item>\r\n </ng-template>\r\n\r\n </igo-collapsible>\r\n\r\n <ng-template *ngIf=\"groupContexts.value.length && !auth.authenticated\" ngFor let-context [ngForOf]=\"groupContexts.value\">\r\n <igo-context-item\r\n igoListItem\r\n color=\"accent\"\r\n [showFavorite]=\"configService.getConfig('favoriteContext4NonAuthenticated')\"\r\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\r\n [context]=\"context\"\r\n [default]=\"configService.getConfig('context') ? defaultContextId === context.id : defaultContextId === context.uri\"\r\n (favorite)=\"favorite.emit(context)\"\r\n (select)=\"select.emit(context)\"\r\n (unselect)=\"unselect.emit(context)\">\r\n </igo-context-item>\r\n </ng-template>\r\n\r\n </ng-template>\r\n</igo-list>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnInit,\r\n ChangeDetectionStrategy,\r\n OnDestroy\r\n} from '@angular/core';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { ConfigService, LanguageService, StorageService } from '@igo2/core';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport {\r\n DetailedContext,\r\n ContextsList,\r\n ContextUserPermission,\r\n ContextProfils\r\n} from '../shared/context.interface';\r\nimport { ContextListControlsEnum } from './context-list.enum';\r\nimport {\r\n Subscription,\r\n BehaviorSubject,\r\n ReplaySubject,\r\n EMPTY,\r\n timer\r\n} from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BookmarkDialogComponent } from '../../context-map-button/bookmark-button/bookmark-dialog.component';\r\nimport { debounce } from 'rxjs/operators';\r\nimport { ActionStore, ActionbarMode } from '@igo2/common';\r\nimport { ContextService } from '../shared/context.service';\r\n\r\n@Component({\r\n selector: 'igo-context-list',\r\n templateUrl: './context-list.component.html',\r\n styleUrls: ['./context-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContextListComponent implements OnInit, OnDestroy {\r\n private contextsInitial: ContextsList = { ours: [] };\r\n contexts$: BehaviorSubject<ContextsList> = new BehaviorSubject(\r\n this.contextsInitial\r\n );\r\n\r\n change$ = new ReplaySubject<void>(1);\r\n\r\n private change$$: Subscription;\r\n\r\n @Input()\r\n get contexts(): ContextsList {\r\n return this._contexts;\r\n }\r\n set contexts(value: ContextsList) {\r\n this._contexts = value;\r\n this.cdRef.detectChanges();\r\n this.next();\r\n }\r\n private _contexts: ContextsList = { ours: [] };\r\n\r\n @Input()\r\n get selectedContext(): DetailedContext {\r\n return this._selectedContext;\r\n }\r\n set selectedContext(value: DetailedContext) {\r\n this._selectedContext = value;\r\n this.cdRef.detectChanges();\r\n }\r\n private _selectedContext: DetailedContext;\r\n\r\n @Input()\r\n get map(): IgoMap {\r\n return this._map;\r\n }\r\n set map(value: IgoMap) {\r\n this._map = value;\r\n }\r\n private _map: IgoMap;\r\n\r\n @Input()\r\n get defaultContextId(): string {\r\n return this.configService.getConfig('context') ? this._defaultContextId :\r\n this.storageService.get('favorite.context.uri') as string || this._defaultContextId;\r\n }\r\n set defaultContextId(value: string) {\r\n this._defaultContextId = value;\r\n }\r\n private _defaultContextId: string;\r\n\r\n public collapsed: { contextScope }[] = [];\r\n\r\n @Output() select = new EventEmitter<DetailedContext>();\r\n @Output() unselect = new EventEmitter<DetailedContext>();\r\n @Output() edit = new EventEmitter<DetailedContext>();\r\n @Output() delete = new EventEmitter<DetailedContext>();\r\n @Output() save = new EventEmitter<DetailedContext>();\r\n @Output() clone = new EventEmitter<DetailedContext>();\r\n @Output() create = new EventEmitter<{ title: string; empty: boolean }>();\r\n @Output() hide = new EventEmitter<DetailedContext>();\r\n @Output() show = new EventEmitter<DetailedContext>();\r\n @Output() showHiddenContexts = new EventEmitter<boolean>();\r\n @Output() favorite = new EventEmitter<DetailedContext>();\r\n @Output() managePermissions = new EventEmitter<DetailedContext>();\r\n @Output() manageTools = new EventEmitter<DetailedContext>();\r\n @Output() filterPermissionsChanged = new EventEmitter<\r\n ContextUserPermission[]\r\n >();\r\n\r\n public titleMapping = {\r\n ours: 'igo.context.contextManager.ourContexts',\r\n shared: 'igo.context.contextManager.sharedContexts',\r\n public: 'igo.context.contextManager.publicContexts'\r\n };\r\n\r\n public users: ContextProfils[];\r\n public permissions: ContextUserPermission[] = [];\r\n\r\n public actionStore = new ActionStore([]);\r\n public actionbarMode = ActionbarMode.Overlay;\r\n\r\n public color = 'primary';\r\n\r\n public showHidden = false;\r\n\r\n /**\r\n * Context filter term\r\n */\r\n @Input()\r\n set term(value: string) {\r\n this._term = value;\r\n this.next();\r\n }\r\n get term(): string {\r\n return this._term;\r\n }\r\n public _term: string = '';\r\n\r\n get sortedAlpha(): boolean {\r\n return this._sortedAlpha;\r\n }\r\n set sortedAlpha(value: boolean) {\r\n this._sortedAlpha = value;\r\n this.next();\r\n }\r\n private _sortedAlpha: boolean = undefined;\r\n\r\n public showContextFilter = ContextListControlsEnum.always;\r\n\r\n public thresholdToFilter = 5;\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private contextService: ContextService,\r\n public configService: ConfigService,\r\n public auth: AuthService,\r\n private dialog: MatDialog,\r\n private languageService: LanguageService,\r\n private storageService: StorageService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.change$$ = this.change$\r\n .pipe(\r\n debounce(() => {\r\n return this.contexts.ours.length === 0 ? EMPTY : timer(50);\r\n })\r\n )\r\n .subscribe(() => {\r\n this.contexts$.next(this.filterContextsList(this.contexts));\r\n });\r\n\r\n this.actionStore.load([\r\n {\r\n id: 'emptyContext',\r\n title: this.languageService.translate.instant(\r\n 'igo.context.contextManager.emptyContext'\r\n ),\r\n icon: 'map-outline',\r\n tooltip: this.languageService.translate.instant(\r\n 'igo.context.contextManager.emptyContextTooltip'\r\n ),\r\n handler: () => {\r\n this.createContext(true);\r\n }\r\n },\r\n {\r\n id: 'contextFromMap',\r\n title: this.languageService.translate.instant(\r\n 'igo.context.contextManager.contextMap'\r\n ),\r\n icon: 'map-check',\r\n tooltip: this.languageService.translate.instant(\r\n 'igo.context.contextManager.contextMapTooltip'\r\n ),\r\n handler: () => {\r\n this.createContext(false);\r\n }\r\n }\r\n ]);\r\n }\r\n\r\n private next() {\r\n this.change$.next();\r\n }\r\n\r\n private filterContextsList(contexts: ContextsList) {\r\n if (this.term === '') {\r\n if (this.sortedAlpha) {\r\n contexts = this.sortContextsList(contexts);\r\n }\r\n return contexts;\r\n } else {\r\n const ours = contexts.ours.filter((context) => {\r\n const filterNormalized = this.term\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const contextTitleNormalized = context.title\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n return contextTitleNormalized.includes(filterNormalized);\r\n });\r\n\r\n let updateContexts: ContextsList = {\r\n ours\r\n };\r\n\r\n if (this.contexts.public) {\r\n const publics = contexts.public.filter((context) => {\r\n const filterNormalized = this.term\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const contextTitleNormalized = context.title\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n return contextTitleNormalized.includes(filterNormalized);\r\n });\r\n updateContexts.public = publics;\r\n }\r\n\r\n if (this.contexts.shared) {\r\n const shared = contexts.shared.filter((context) => {\r\n const filterNormalized = this.term\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const contextTitleNormalized = context.title\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n return contextTitleNormalized.includes(filterNormalized);\r\n });\r\n updateContexts.shared = shared;\r\n }\r\n\r\n if (this.sortedAlpha) {\r\n updateContexts = this.sortContextsList(updateContexts);\r\n }\r\n return updateContexts;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.change$$.unsubscribe();\r\n }\r\n\r\n public showFilter() {\r\n switch (this.showContextFilter) {\r\n case ContextListControlsEnum.always:\r\n return true;\r\n case ContextListControlsEnum.never:\r\n return false;\r\n default:\r\n let totalLength = this.contexts.ours.length;\r\n this.contexts.public\r\n ? (totalLength += this.contexts.public.length)\r\n : (totalLength += 0);\r\n this.contexts.shared\r\n ? (totalLength += this.contexts.shared.length)\r\n : (totalLength += 0);\r\n if (totalLength >= this.thresholdToFilter) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n sortContextsList(contexts: ContextsList) {\r\n if (contexts) {\r\n const contextsList = JSON.parse(JSON.stringify(contexts));\r\n contextsList.ours.sort((a, b) => {\r\n if (this.normalize(a.title) < this.normalize(b.title)) {\r\n return -1;\r\n }\r\n if (this.normalize(a.title) > this.normalize(b.title)) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n if (contextsList.shared) {\r\n contextsList.shared.sort((a, b) => {\r\n if (this.normalize(a.title) < this.normalize(b.title)) {\r\n return -1;\r\n }\r\n if (this.normalize(a.title) > this.normalize(b.title)) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n } else if (contextsList.public) {\r\n contextsList.public.sort((a, b) => {\r\n if (this.normalize(a.title) < this.normalize(b.title)) {\r\n return -1;\r\n }\r\n if (this.normalize(a.title) > this.normalize(b.title)) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n return contextsList;\r\n }\r\n }\r\n\r\n normalize(str: string) {\r\n return str\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .toLowerCase();\r\n }\r\n\r\n toggleSort(sortAlpha: boolean) {\r\n this.sortedAlpha = sortAlpha;\r\n }\r\n\r\n clearFilter() {\r\n this.term = '';\r\n }\r\n\r\n createContext(empty?: boolean) {\r\n this.dialog\r\n .open(BookmarkDialogComponent, { disableClose: false })\r\n .afterClosed()\r\n .pipe(take(1))\r\n .subscribe((title: string) => {\r\n if (title) {\r\n this.create.emit({ title, empty });\r\n }\r\n });\r\n }\r\n\r\n getPermission(user?): ContextUserPermission {\r\n if (user) {\r\n const permission = this.permissions.find((p) => p.name === user.name);\r\n return permission;\r\n }\r\n }\r\n\r\n userSelection(user, parent?) {\r\n const permission = this.getPermission(user);\r\n if (permission) {\r\n permission.checked = !permission.checked;\r\n this.storageService.set(\r\n 'contexts.permissions.' + permission.name,\r\n permission.checked\r\n );\r\n permission.indeterminate = false;\r\n }\r\n\r\n if (parent) {\r\n let indeterminate = false;\r\n\r\n for (const c of parent.childs) {\r\n const cPermission = this.getPermission(c);\r\n if (cPermission.checked !== permission.checked) {\r\n indeterminate = true;\r\n break;\r\n }\r\n }\r\n const parentPermission = this.getPermission(parent);\r\n if (parentPermission) {\r\n parentPermission.checked = permission.checked;\r\n this.storageService.set(\r\n 'contexts.permissions.' + parentPermission.name,\r\n permission.checked\r\n );\r\n parentPermission.indeterminate = indeterminate;\r\n }\r\n }\r\n\r\n if (user.childs) {\r\n for (const c of user.childs) {\r\n const childrenPermission = this.getPermission(c);\r\n if (\r\n childrenPermission &&\r\n childrenPermission.checked !== permission.checked\r\n ) {\r\n childrenPermission.checked = permission.checked;\r\n this.storageService.set(\r\n 'contexts.permissions.' + childrenPermission.name,\r\n permission.checked\r\n );\r\n }\r\n }\r\n }\r\n\r\n this.filterPermissionsChanged.emit(this.permissions);\r\n }\r\n\r\n hideContext(context: DetailedContext) {\r\n context.hidden = true;\r\n if (!this.showHidden) {\r\n const contexts: ContextsList = { ours: [], shared: [], public: [] };\r\n contexts.ours = this.contexts.ours.filter((c) => c.id !== context.id);\r\n contexts.shared = this.contexts.shared.filter((c) => c.id !== context.id);\r\n contexts.public = this.contexts.public.filter((c) => c.id !== context.id);\r\n this.contexts = contexts;\r\n }\r\n this.hide.emit(context);\r\n }\r\n\r\n showContext(context: DetailedContext) {\r\n context.hidden = false;\r\n this.show.emit(context);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Self,\r\n OnInit,\r\n OnDestroy,\r\n HostListener,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { MessageService, LanguageService, StorageService } from '@igo2/core';\r\nimport { AuthService } from '@igo2/auth';\r\nimport { ConfirmDialogService } from '@igo2/common';\r\nimport { MapService } from '@igo2/geo';\r\n\r\nimport {\r\n Context,\r\n DetailedContext,\r\n ContextsList,\r\n ContextUserPermission\r\n} from '../shared/context.interface';\r\nimport { ContextService } from '../shared/context.service';\r\nimport { ContextListComponent } from './context-list.component';\r\n\r\n@Directive({\r\n selector: '[igoContextListBinding]'\r\n})\r\nexport class ContextListBindingDirective implements OnInit, OnDestroy {\r\n private component: ContextListComponent;\r\n private contexts$$: Subscription;\r\n private selectedContext$$: Subscription;\r\n private defaultContextId$$: Subscription;\r\n private previousMessageId;\r\n\r\n @HostListener('select', ['$event'])\r\n onSelect(context: Context) {\r\n this.contextService.loadContext(context.uri);\r\n }\r\n\r\n @HostListener('edit', ['$event'])\r\n onEdit(context: Context) {\r\n this.contextService.loadEditedContext(context.uri);\r\n }\r\n\r\n @HostListener('save', ['$event'])\r\n onSave(context: Context) {\r\n const map = this.mapService.getMap();\r\n const contextFromMap = this.contextService.getContextFromMap(map);\r\n\r\n const msgSuccess = () => {\r\n const translate = this.languageService.translate;\r\n const message = translate.instant(\r\n 'igo.context.contextManager.dialog.saveMsg',\r\n {\r\n value: context.title\r\n }\r\n );\r\n const title = translate.instant(\r\n 'igo.context.contextManager.dialog.saveTitle'\r\n );\r\n this.messageService.success(message, title);\r\n };\r\n\r\n if (context.imported) {\r\n contextFromMap.title = context.title;\r\n this.contextService.delete(context.id, true);\r\n this.contextService.create(contextFromMap).subscribe((contextCreated) => {\r\n this.contextService.loadContext(contextCreated.uri);\r\n msgSuccess();\r\n });\r\n return;\r\n }\r\n\r\n const changes: any = {\r\n layers: contextFromMap.layers,\r\n map: {\r\n view: contextFromMap.map.view\r\n }\r\n };\r\n\r\n this.contextService.update(context.id, changes).subscribe(() => {\r\n msgSuccess();\r\n });\r\n }\r\n\r\n @HostListener('favorite', ['$event'])\r\n onFavorite(context: Context) {\r\n if (!context.id) {\r\n context.id = context.uri;\r\n }\r\n this.contextService.setDefault(context.id).subscribe(() => {\r\n if (this.previousMessageId) {\r\n this.messageService.remove(this.previousMessageId);\r\n }\r\n this.contextService.defaultContextId$.next(context.id);\r\n const translate = this.languageService.translate;\r\n const message = translate.instant(\r\n 'igo.context.contextManager.dialog.favoriteMsg',\r\n {\r\n value: context.title\r\n }\r\n );\r\n const title = translate.instant(\r\n 'igo.context.contextManager.dialog.favoriteTitle'\r\n );\r\n const messageObj = this.messageService.success(message, title);\r\n this.previousMessageId = messageObj.toastId;\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n @HostListener('manageTools', ['$event'])\r\n onManageTools(context: Context) {\r\n this.contextService.loadEditedContext(context.uri);\r\n }\r\n\r\n @HostListener('managePermissions', ['$event'])\r\n onManagePermissions(context: Context) {\r\n this.contextService.loadEditedContext(context.uri);\r\n }\r\n\r\n @HostListener('delete', ['$event'])\r\n onDelete(context: Context) {\r\n const translate = this.languageService.translate;\r\n this.confirmDialogService\r\n .open(\r\n translate.instant('igo.context.contextManager.dialog.confirmDelete')\r\n )\r\n .subscribe((confirm) => {\r\n if (confirm) {\r\n this.contextService\r\n .delete(context.id, context.imported)\r\n .subscribe(() => {\r\n const message = translate.instant(\r\n 'igo.context.contextManager.dialog.deleteMsg',\r\n {\r\n value: context.title\r\n }\r\n );\r\n const title = translate.instant(\r\n 'igo.context.contextManager.dialog.deleteTitle'\r\n );\r\n this.messageService.info(message, title);\r\n });\r\n }\r\n });\r\n }\r\n\r\n @HostListener('clone', ['$event'])\r\n onClone(context: DetailedContext) {\r\n const properties = {\r\n title: context.title + '-copy',\r\n uri: context.uri + '-copy'\r\n };\r\n this.contextService.clone(context.id, properties).subscribe(() => {\r\n const translate = this.languageService.translate;\r\n const message = translate.instant(\r\n 'igo.context.contextManager.dialog.cloneMsg',\r\n {\r\n value: context.title\r\n }\r\n );\r\n const title = translate.instant(\r\n 'igo.context.contextManager.dialog.cloneTitle'\r\n );\r\n this.messageService.success(message, title);\r\n });\r\n }\r\n\r\n @HostListener('create', ['$event'])\r\n onCreate(opts: { title: string; empty: boolean }) {\r\n const { title, empty } = opts;\r\n const context = this.contextService.getContextFromMap(\r\n this.component.map,\r\n empty\r\n );\r\n context.title = title;\r\n this.contextService.create(context).subscribe(() => {\r\n const translate = this.languageService.translate;\r\n const titleD = translate.instant(\r\n 'igo.context.bookmarkButton.dialog.createTitle'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.bookmarkButton.dialog.createMsg',\r\n {\r\n value: context.title\r\n }\r\n );\r\n this.messageService.success(message, titleD);\r\n this.contextService.loadContext(context.uri);\r\n });\r\n }\r\n\r\n @HostListener('filterPermissionsChanged')\r\n loadContexts() {\r\n const permissions = ['none'];\r\n for (const p of this.component.permissions) {\r\n if (p.checked === true || p.indeterminate === true) {\r\n permissions.push(p.name);\r\n }\r\n }\r\n this.component.showHidden\r\n ? this.contextService.loadContexts(permissions, true)\r\n : this.contextService.loadContexts(permissions, false);\r\n }\r\n\r\n @HostListener('showHiddenContexts')\r\n showHiddenContexts() {\r\n this.component.showHidden = !this.component.showHidden;\r\n this.storageService.set('contexts.showHidden', this.component.showHidden);\r\n this.loadContexts();\r\n }\r\n\r\n @HostListener('show', ['$event'])\r\n onShowContext(context: DetailedContext) {\r\n this.contextService.showContext(context.id).subscribe();\r\n }\r\n\r\n @HostListener('hide', ['$event'])\r\n onHideContext(context: DetailedContext) {\r\n this.contextService.hideContext(context.id).subscribe();\r\n }\r\n\r\n constructor(\r\n @Self() component: ContextListComponent,\r\n private contextService: ContextService,\r\n private mapService: MapService,\r\n private languageService: LanguageService,\r\n private confirmDialogService: ConfirmDialogService,\r\n private messageService: MessageService,\r\n private auth: AuthService,\r\n private storageService: StorageService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n this.component = component;\r\n }\r\n\r\n ngOnInit() {\r\n // Override input contexts\r\n this.component.contexts = { ours: [] };\r\n this.component.showHidden = this.storageService.get(\r\n 'contexts.showHidden'\r\n ) as boolean;\r\n\r\n this.contexts$$ = this.contextService.contexts$.subscribe((contexts) =>\r\n this.handleContextsChange(contexts)\r\n );\r\n\r\n this.defaultContextId$$ = this.contextService.defaultContextId$.subscribe(\r\n (id) => {\r\n this.component.defaultContextId = id;\r\n }\r\n );\r\n const storedContextUri = this.storageService.get('favorite.context.uri') as string;\r\n if (storedContextUri && !this.auth.authenticated) {\r\n this.contextService.defaultContextId$.next(storedContextUri);\r\n }\r\n\r\n // See feature-list.component for an explanation about the debounce time\r\n this.selectedContext$$ = this.contextService.context$\r\n .pipe(debounceTime(100))\r\n .subscribe((context) => (this.component.selectedContext = context));\r\n\r\n this.auth.authenticate$.subscribe((authenticate) => {\r\n if (authenticate) {\r\n this.contextService.getProfilByUser().subscribe((profils) => {\r\n this.component.users = profils;\r\n this.component.permissions = [];\r\n const profilsAcc = this.component.users.reduce((acc, cur) => {\r\n acc = acc.concat(cur);\r\n acc = cur.childs ? acc.concat(cur.childs) : acc;\r\n return acc;\r\n }, []);\r\n\r\n for (const user of profilsAcc) {\r\n const permission: ContextUserPermission = {\r\n name: user.name,\r\n checked: this.storageService.get(\r\n 'contexts.permissions.' + user.name\r\n ) as boolean\r\n };\r\n if (permission.checked === null) {\r\n permission.checked = true;\r\n }\r\n this.component.permissions.push(permission);\r\n }\r\n\r\n const permissions = ['none'];\r\n for (const p of this.component.permissions) {\r\n if (p.checked === true || p.indeterminate === true) {\r\n permissions.push(p.name);\r\n }\r\n }\r\n\r\n this.component.showHidden\r\n ? this.contextService.loadContexts(permissions, true)\r\n : this.contextService.loadContexts(permissions, false);\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.contexts$$.unsubscribe();\r\n this.selectedContext$$.unsubscribe();\r\n this.defaultContextId$$.unsubscribe();\r\n }\r\n\r\n private handleContextsChange(contexts: ContextsList) {\r\n this.component.contexts = contexts;\r\n }\r\n}\r\n","<form class=\"igo-form\" [formGroup]=\"form\"\r\n (ngSubmit)=\"handleFormSubmit(form.value)\">\r\n\r\n <mat-form-field class=\"full-width\">\r\n <input matInput required\r\n maxlength=\"128\"\r\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\r\n formControlName=\"title\">\r\n <mat-error>\r\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-form-field id=\"uriInput\" class=\"full-width\">\r\n <span *ngIf=\"prefix\" class=\"prefix\">{{prefix}}-</span>\r\n <span class=\"fieldWrapper\">\r\n <input matInput\r\n maxlength=\"64\"\r\n floatLabel = \"always\"\r\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\r\n formControlName=\"uri\">\r\n </span>\r\n </mat-form-field>\r\n\r\n <button\r\n id=\"copyButton\"\r\n type=\"button\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\r\n color=\"primary\"\r\n (click)=\"copyTextToClipboard()\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n </button>\r\n\r\n <div class=\"igo-form-button-group\">\r\n <button\r\n mat-raised-button\r\n type=\"submit\"\r\n [disabled]=\"!form.valid || disabled\">\r\n {{ 'igo.context.contextManager.form.edit' | translate }}\r\n </button>\r\n </div>\r\n\r\n</form>\r\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { ObjectUtils, Clipboard } from '@igo2/utils';\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\nimport { Context } from '../shared/context.interface';\r\n\r\n@Component({\r\n selector: 'igo-context-form',\r\n templateUrl: './context-form.component.html',\r\n styleUrls: ['./context-form.component.scss']\r\n})\r\nexport class ContextFormComponent implements OnInit {\r\n public form: FormGroup;\r\n public prefix: string;\r\n\r\n @Input()\r\n get btnSubmitText(): string {\r\n return this._btnSubmitText;\r\n }\r\n set btnSubmitText(value: string) {\r\n this._btnSubmitText = value;\r\n }\r\n private _btnSubmitText: string;\r\n\r\n @Input()\r\n get context(): Context {\r\n return this._context;\r\n }\r\n set context(value: Context) {\r\n this._context = value;\r\n this.buildForm();\r\n }\r\n private _context: Context;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n }\r\n private _disabled = false;\r\n\r\n // TODO: replace any by ContextOptions or Context\r\n @Output() submitForm: EventEmitter<any> = new EventEmitter();\r\n @Output() clone: EventEmitter<any> = new EventEmitter();\r\n @Output() delete: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private languageService: LanguageService,\r\n private messageService: MessageService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.buildForm();\r\n }\r\n\r\n public handleFormSubmit(value) {\r\n let inputs = Object.assign({}, value);\r\n inputs = ObjectUtils.removeNull(inputs);\r\n inputs.uri = inputs.uri.replace(' ', '');\r\n if (inputs.uri) {\r\n inputs.uri = this.prefix + '-' + inputs.uri;\r\n } else {\r\n inputs.uri = this.prefix;\r\n }\r\n this.submitForm.emit(inputs);\r\n }\r\n\r\n public copyTextToClipboard() {\r\n const text = this.prefix + '-' + this.form.value.uri.replace(' ', '');\r\n const successful = Clipboard.copy(text);\r\n if (successful) {\r\n const translate = this.languageService.translate;\r\n const title = translate.instant(\r\n 'igo.context.contextManager.dialog.copyTitle'\r\n );\r\n const msg = translate.instant(\r\n 'igo.context.contextManager.dialog.copyMsg'\r\n );\r\n this.messageService.success(msg, title);\r\n }\r\n }\r\n\r\n private buildForm(): void {\r\n const context: any = this.context || {};\r\n\r\n const uriSplit = context.uri.split('-');\r\n this.prefix = uriSplit.shift();\r\n const uri = uriSplit.join('-');\r\n\r\n this.form = this.formBuilder.group({\r\n title: [context.title],\r\n uri: [uri || ' ']\r\n });\r\n }\r\n}\r\n","<igo-context-form *ngIf=\"context\"\r\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\r\n [context]=\"context\"\r\n (submitForm)=\"submitForm.emit($event)\">\r\n</igo-context-form>\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\n\r\nimport { Context } from '../shared/context.interface';\r\n\r\n@Component({\r\n selector: 'igo-context-edit',\r\n templateUrl: './context-edit.component.html'\r\n})\r\nexport class ContextEditComponent {\r\n @Input()\r\n get context(): Context {\r\n return this._context;\r\n }\r\n set context(value: Context) {\r\n this._context = value;\r\n this.refresh();\r\n }\r\n private _context: Context;\r\n\r\n @Output() submitForm: EventEmitter<Context> = new EventEmitter();\r\n\r\n constructor(private cd: ChangeDetectorRef) {}\r\n\r\n refresh() {\r\n this.cd.detectChanges();\r\n }\r\n}\r\n","import {\r\n Output,\r\n EventEmitter,\r\n Directive,\r\n Self,\r\n OnInit,\r\n OnDestroy,\r\n HostListener\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\n\r\nimport { Context, DetailedContext } from '../shared/context.interface';\r\nimport { ContextService } from '../shared/context.service';\r\nimport { ContextEditComponent } from './context-edit.component';\r\n\r\n@Directive({\r\n selector: '[igoContextEditBinding]'\r\n})\r\nexport class ContextEditBindingDirective implements OnInit, OnDestroy {\r\n private component: ContextEditComponent;\r\n private editedContext$$: Subscription;\r\n\r\n @Output() submitSuccessed: EventEmitter<Context> = new EventEmitter();\r\n\r\n @HostListener('submitForm', ['$event'])\r\n onEdit(context: Context) {\r\n const id = this.component.context.id;\r\n this.contextService.update(id, context).subscribe(() => {\r\n const translate = this.languageService.translate;\r\n const message = translate.instant('igo.context.contextManager.dialog.saveMsg', {\r\n value: context.title || this.component.context.title\r\n });\r\n const title = translate.instant('igo.context.contextManager.dialog.saveTitle');\r\n this.messageService.success(message, title);\r\n this.contextService.setEditedContext(undefined);\r\n this.submitSuccessed.emit(context);\r\n });\r\n }\r\n\r\n constructor(\r\n @Self() component: ContextEditComponent,\r\n private contextService: ContextService,\r\n private messageService: MessageService,\r\n private languageService: LanguageService\r\n ) {\r\n this.component = component;\r\n }\r\n\r\n ngOnInit() {\r\n this.editedContext$$ = this.contextService.editedContext$.subscribe(\r\n context => this.handleEditedContextChange(context)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.editedContext$$.unsubscribe();\r\n }\r\n\r\n private handleEditedContextChange(context: DetailedContext) {\r\n this.component.context = context;\r\n }\r\n}\r\n","<div *ngIf=\"context\">\r\n\r\n <div *ngIf=\"!canWrite\" class=\"scopeForm\">\r\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\r\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\r\n </div>\r\n\r\n <div *ngIf=\"canWrite\" class=\"scopeForm\">\r\n <mat-radio-group [(ngModel)]=\"context.scope\"\r\n (change)=\"scopeChanged.emit(context)\">\r\n <mat-radio-button value=\"private\">\r\n {{ 'igo.context.permission.scope.private' | translate }}\r\n </mat-radio-button>\r\n <mat-radio-button value=\"protected\">\r\n {{ 'igo.context.permission.scope.shared' | translate }}\r\n </mat-radio-button>\r\n <mat-radio-button *ngIf=\"authService.isAdmin\" value=\"public\">\r\n {{ 'igo.context.permission.scope.public' | translate }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <form *ngIf=\"context.scope !== 'private' && canWrite\" [formGroup]=\"form\"\r\n (ngSubmit)=\"handleFormSubmit(form.value)\">\r\n\r\n <mat-form-field class=\"full-width\">\r\n <input matInput required\r\n [placeholder]=\"'igo.context.permission.user' | translate\"\r\n [formControl]=\"formControl\"\r\n [matAutocomplete]=\"auto\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onProfilSelected($event.option.value)\"\r\n [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let profil of this.profils\" [value]=\"profil\">\r\n {{profil.title}}<br>\r\n <small class=\"mat-typography\">{{profil.name}}</small>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error>\r\n {{ 'igo.context.permission.profilRequired' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n\r\n <mat-radio-group formControlName=\"typePermission\">\r\n <mat-radio-button value=\"read\">\r\n {{ 'igo.context.permission.read' | translate }}\r\n </mat-radio-button>\r\n <mat-radio-button value=\"write\">\r\n {{ 'igo.context.permission.write' | translate }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n\r\n\r\n <div class=\"igo-form-button-group\">\r\n <button\r\n mat-raised-button\r\n type=\"submit\"\r\n [disabled]=\"!form.valid\">\r\n {{ 'igo.context.permission.addBtn' | translate }}\r\n </button>\r\n </div>\r\n\r\n </form>\r\n\r\n <igo-list *ngIf=\"permissions && context.scope !== 'private'\">\r\n <ng-template ngFor let-groupPermissions [ngForOf]=\"permissions | keyvalue\">\r\n <igo-collapsible\r\n *ngIf=\"groupPermissions.value.length\"\r\n [title]=\"'igo.context.permission.' + groupPermissions.key | translate\">\r\n\r\n <ng-template ngFor let-permission [ngForOf]=\"groupPermissions.value\">\r\n <mat-list-item>\r\n <mat-icon mat-list-avatar svgIcon=\"account-outline\"></mat-icon>\r\n <h4 mat-line>{{permission.profilTitle}} <small class=\"mat-typography\">{{permission.profil}}</small></h4>\r\n\r\n <div igoStopPropagation\r\n class=\"igo-actions-container\">\r\n\r\n <button *ngIf=\"canWrite || permission.profil === authService.decodeToken().user.sourceId\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.permission.delete' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n color=\"warn\"\r\n (click)=\"removePermission.emit(permission)\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n </mat-list-item>\r\n </ng-template>\r\n </igo-collapsible>\r\n </ng-template>\r\n </igo-list>\r\n\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormControl } from '@angular/forms';\r\n\r\nimport {\r\n Context,\r\n ContextPermission,\r\n ContextPermissionsList,\r\n ContextProfils\r\n} from '../shared/context.interface';\r\nimport { TypePermission } from '../shared/context.enum';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { AuthService } from '@igo2/auth';\r\nimport { ConfigService } from '@igo2/core';\r\n\r\n@Component({\r\n selector: 'igo-context-permissions',\r\n templateUrl: './context-permissions.component.html',\r\n styleUrls: ['./context-permissions.component.scss']\r\n})\r\nexport class ContextPermissionsComponent implements OnInit {\r\n public form: FormGroup;\r\n\r\n @Input()\r\n get context(): Context {\r\n return this._context;\r\n }\r\n set context(value: Context) {\r\n this._context = value;\r\n this.cd.detectChanges();\r\n }\r\n private _context: Context;\r\n\r\n @Input()\r\n get permissions(): ContextPermissionsList {\r\n return this._permissions;\r\n }\r\n set permissions(value: ContextPermissionsList) {\r\n this._permissions = value;\r\n this.cd.detectChanges();\r\n }\r\n private _permissions: ContextPermissionsList;\r\n\r\n get profils(): ContextProfils[] {\r\n return this._profils;\r\n }\r\n set profils(value: ContextProfils[]) {\r\n this._profils = value;\r\n this.cd.detectChanges();\r\n }\r\n private _profils: ContextProfils[] = [];\r\n\r\n get canWrite(): boolean {\r\n return this.context.permission === TypePermission[TypePermission.write];\r\n }\r\n\r\n private baseUrlProfils;\r\n\r\n public formControl = new FormControl();\r\n formValueChanges$$: Subscription;\r\n\r\n @Output() addPermission: EventEmitter<ContextPermission> = new EventEmitter();\r\n @Output() removePermission: EventEmitter<ContextPermission> = new EventEmitter();\r\n @Output() scopeChanged: EventEmitter<Context> = new EventEmitter();\r\n\r\n constructor(private formBuilder: FormBuilder,\r\n private cd: ChangeDetectorRef,\r\n private http: HttpClient,\r\n public authService: AuthService,\r\n private config: ConfigService) {}\r\n\r\n ngOnInit(): void {\r\n this.buildForm();\r\n\r\n this.baseUrlProfils = this.config.getConfig('context.url') + '/profils-users?';\r\n\r\n this.formValueChanges$$ = this.formControl.valueChanges.subscribe((value) => {\r\n if (value.length) {\r\n this.http.get(this.baseUrlProfils + 'q=' + value).subscribe(profils => {\r\n this.profils = profils as ContextProfils[];\r\n });\r\n this.profils.filter((profil) => {\r\n const filterNormalized = value.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n const profilTitleNormalized = profil.title.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n const profilNameNormalized = profil.name.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n const profilNormalized = profilNameNormalized + profilTitleNormalized;\r\n return profilNormalized.includes(filterNormalized);\r\n });\r\n } else {\r\n this.profils = [];\r\n }\r\n });\r\n }\r\n\r\n displayFn(profil?: ContextProfils): string | undefined {\r\n return profil ? profil.title : undefined;\r\n }\r\n\r\n public handleFormSubmit(value) {\r\n this.addPermission.emit(value);\r\n }\r\n\r\n private buildForm(): void {\r\n this.form = this.formBuilder.group({\r\n profil: [],\r\n typePermission: ['read']\r\n });\r\n }\r\n\r\n onProfilSelected(value) {\r\n this.form.setValue({\r\n profil: value.name,\r\n typePermission: this.form.value.typePermission\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Self,\r\n OnInit,\r\n OnDestroy,\r\n HostListener,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\n\r\nimport {\r\n Context,\r\n ContextPermission,\r\n DetailedContext\r\n} from '../shared/context.interface';\r\nimport { ContextService } from '../shared/context.service';\r\nimport { ContextPermissionsComponent } from './context-permissions.component';\r\n\r\n@Directive({\r\n selector: '[igoContextPermissionsBinding]'\r\n})\r\nexport class ContextPermissionsBindingDirective implements OnInit, OnDestroy {\r\n private component: ContextPermissionsComponent;\r\n private editedContext$$: Subscription;\r\n\r\n @HostListener('addPermission', ['$event'])\r\n onAddPermission(permission: ContextPermission) {\r\n const translate = this.languageService.translate;\r\n if (!permission.profil) {\r\n const message = translate.instant(\r\n 'igo.context.contextManager.errors.addPermissionEmpty'\r\n );\r\n const title = translate.instant(\r\n 'igo.context.contextManager.errors.addPermissionTitle'\r\n );\r\n this.messageService.error(message, title);\r\n return;\r\n }\r\n const contextId = this.component.context.id;\r\n this.contextService\r\n .addPermissionAssociation(\r\n contextId,\r\n permission.profil,\r\n permission.typePermission\r\n )\r\n .subscribe(profils => {\r\n for (const p of profils) {\r\n this.component.permissions[permission.typePermission].push(p);\r\n }\r\n const profil = permission.profil;\r\n const message = translate.instant(\r\n 'igo.context.permission.dialog.addMsg',\r\n {\r\n value: profil\r\n }\r\n );\r\n const title = translate.instant(\r\n 'igo.context.permission.dialog.addTitle'\r\n );\r\n this.messageService.success(message, title);\r\n this.cd.detectChanges();\r\n });\r\n }\r\n\r\n @HostListener('removePermission', ['$event'])\r\n onRemovePermission(permission: ContextPermission) {\r\n const contextId = this.component.context.id;\r\n this.contextService\r\n .deletePermissionAssociation(contextId, permission.id)\r\n .subscribe(() => {\r\n const index = this.component.permissions[\r\n permission.typePermission\r\n ].findIndex(p => {\r\n return p.id === permission.id;\r\n });\r\n this.component.permissions[permission.typePermission].splice(index, 1);\r\n\r\n const profil = permission.profil;\r\n const translate = this.languageService.translate;\r\n const message = translate.instant(\r\n 'igo.context.permission.dialog.deleteMsg',\r\n {\r\n value: profil\r\n }\r\n );\r\n const title = translate.instant(\r\n 'igo.context.permission.dialog.deleteTitle'\r\n );\r\n this.messageService.success(message, title);\r\n this.cd.detectChanges();\r\n });\r\n }\r\n\r\n @HostListener('scopeChanged', ['$event'])\r\n onScopeChanged(context: Context) {\r\n const scope = context.scope;\r\n this.contextService.update(context.id, { scope }).subscribe(() => {\r\n const translate = this.languageService.translate;\r\n const message = translate.instant(\r\n 'igo.context.permission.dialog.scopeChangedMsg',\r\n {\r\n value: translate.instant('igo.context.permission.scope.' + scope)\r\n }\r\n );\r\n const title = translate.instant(\r\n 'igo.context.permission.dialog.scopeChangedTitle'\r\n );\r\n this.messageService.success(message, title);\r\n });\r\n }\r\n\r\n constructor(\r\n @Self() component: ContextPermissionsComponent,\r\n private contextService: ContextService,\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n this.component = component;\r\n }\r\n\r\n ngOnInit() {\r\n this.editedContext$$ = this.contextService.editedContext$.subscribe(\r\n context => this.handleEditedContextChange(context)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.editedContext$$.unsubscribe();\r\n this.contextService.editedContext$.next(undefined);\r\n }\r\n\r\n private handleEditedContextChange(context: DetailedContext) {\r\n this.component.context = context;\r\n\r\n if (context) {\r\n this.contextService\r\n .getPermissions(context.id)\r\n .subscribe(permissionsArray => {\r\n permissionsArray = permissionsArray || [];\r\n const permissions = {\r\n read: permissionsArray.filter(p => {\r\n return p.typePermission.toString() === 'read';\r\n }),\r\n write: permissionsArray.filter(p => {\r\n return p.typePermission.toString() === 'write';\r\n })\r\n };\r\n return (this.component.permissions = permissions);\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { ContextService } from '../../context-manager/shared/context.service';\r\nimport { BookmarkDialogComponent } from './bookmark-dialog.component';\r\n\r\n@Component({\r\n selector: 'igo-bookmark-button',\r\n templateUrl: './bookmark-button.component.html',\r\n styleUrls: ['./bookmark-button.component.scss']\r\n})\r\nexport class BookmarkButtonComponent {\r\n @Input()\r\n get map(): IgoMap {\r\n return this._map;\r\n }\r\n set map(value: IgoMap) {\r\n this._map = value;\r\n }\r\n private _map: IgoMap;\r\n\r\n @Input()\r\n get color(): string {\r\n return this._color;\r\n }\r\n set color(value: string) {\r\n this._color = value;\r\n }\r\n private _color: string;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private contextService: ContextService,\r\n private languageService: LanguageService,\r\n private messageService: MessageService\r\n ) {}\r\n\r\n createContext() {\r\n this.dialog\r\n .open(BookmarkDialogComponent, { disableClose: false })\r\n .afterClosed()\r\n .pipe(take(1))\r\n .subscribe(title => {\r\n if (title) {\r\n const context = this.contextService.getContextFromMap(this.map);\r\n context.title = title;\r\n this.contextService.create(context).subscribe(() => {\r\n const translate = this.languageService.translate;\r\n const titleD = translate.instant(\r\n 'igo.context.bookmarkButton.dialog.createTitle'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.bookmarkButton.dialog.createMsg',\r\n {\r\n value: context.title\r\n }\r\n );\r\n this.messageService.success(message, titleD);\r\n this.contextService.loadContext(context.uri);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"igo-bookmark-button-container\">\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.bookmarkButton.create' | translate\"\r\n matTooltipPosition=\"above\"\r\n [color]=\"color\"\r\n (click)=\"createContext()\">\r\n <mat-icon svgIcon=\"star\"></mat-icon>\r\n </button>\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'igo-poi-dialog',\r\n templateUrl: './poi-dialog.component.html'\r\n})\r\nexport class PoiDialogComponent {\r\n public title: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<PoiDialogComponent>) {}\r\n}\r\n","<h1 mat-dialog-title class=\"mat-typography\">{{ 'igo.context.poiButton.dialog.title' | translate }}</h1>\r\n<div mat-dialog-content>\r\n <mat-form-field>\r\n <input matInput required autocomplete=\"off\"\r\n [placeholder]=\"'igo.context.poiButton.dialog.placeholder' | translate\"\r\n [(ngModel)]=\"title\">\r\n </mat-form-field>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button color=\"primary\"\r\n [disabled]=\"!title\"\r\n (click)=\"dialogRef.close(title)\">\r\n {{'igo.common.confirmDialog.confirmBtn' | translate}}\r\n </button>\r\n <button mat-button\r\n (click)=\"dialogRef.close(false)\">\r\n {{'igo.common.confirmDialog.cancelBtn' | translate}}\r\n </button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, EMPTY } from 'rxjs';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { Poi } from './poi.interface';\r\n\r\n@Injectable()\r\nexport class PoiService {\r\n private baseUrl: string;\r\n\r\n constructor(private http: HttpClient, private config: ConfigService) {\r\n this.baseUrl = this.config.getConfig('context.url');\r\n }\r\n\r\n get(): Observable<Poi[]> {\r\n if (!this.baseUrl) {\r\n return EMPTY;\r\n }\r\n\r\n const url = this.baseUrl + '/pois';\r\n return this.http.get<Poi[]>(url);\r\n }\r\n\r\n delete(id: string): Observable<void> {\r\n const url = this.baseUrl + '/pois/' + id;\r\n return this.http.delete<void>(url);\r\n }\r\n\r\n create(context: Poi): Observable<Poi> {\r\n const url = this.baseUrl + '/pois';\r\n return this.http.post<Poi>(url, context);\r\n }\r\n}\r\n","<mat-select [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\r\n floatPlaceholder=\"never\">\r\n\r\n <mat-option (click)=\"createPoi()\">\r\n <div class=\"titlePoi\">{{ 'igo.context.poiButton.create' | translate }}</div>\r\n <button igoStopPropagation class=\"addPoi buttonPoi\"\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"createPoi()\">\r\n <mat-icon svgIcon=\"plus-circle\"></mat-icon>\r\n </button>\r\n </mat-option>\r\n <mat-option *ngFor=\"let poi of pois\" [value]=\"poi.id\" (click)=\"zoomOnPoi(poi.id)\">\r\n <div class=\"titlePoi\">{{ poi.title }}</div>\r\n <button igoStopPropagation class=\"deletePoi buttonPoi\"\r\n mat-icon-button\r\n color=\"warn\"\r\n (click)=\"deletePoi(poi)\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n </mat-option>\r\n</mat-select>\r\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport * as olproj from 'ol/proj';\r\nimport * as oleasing from 'ol/easing';\r\nimport olPoint from 'ol/geom/Point';\r\n\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\nimport { ConfirmDialogService } from '@igo2/common';\r\nimport { AuthService } from '@igo2/auth';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { PoiService } from './shared/poi.service';\r\nimport { Poi } from './shared/poi.interface';\r\nimport { PoiDialogComponent } from './poi-dialog.component';\r\n\r\n@Component({\r\n selector: 'igo-poi-button',\r\n templateUrl: './poi-button.component.html',\r\n styleUrls: ['./poi-button.component.scss']\r\n})\r\nexport class PoiButtonComponent implements OnInit, OnDestroy {\r\n @Input()\r\n get map(): IgoMap {\r\n return this._map;\r\n }\r\n set map(value: IgoMap) {\r\n this._map = value;\r\n }\r\n private _map: IgoMap;\r\n\r\n @Input()\r\n get color(): string {\r\n return this._color;\r\n }\r\n set color(value: string) {\r\n this._color = value;\r\n }\r\n private _color: string;\r\n\r\n public pois: Poi[];\r\n private authenticate$$: Subscription;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private authService: AuthService,\r\n private poiService: PoiService,\r\n private messageService: MessageService,\r\n private languageService: LanguageService,\r\n private confirmDialogService: ConfirmDialogService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.authenticate$$ = this.authService.authenticate$.subscribe(auth => {\r\n if (auth) {\r\n this.getPois();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.authenticate$$.unsubscribe();\r\n }\r\n\r\n deletePoi(poi: Poi) {\r\n if (poi && poi.id) {\r\n const translate = this.languageService.translate;\r\n this.confirmDialogService\r\n .open(translate.instant('igo.context.poiButton.dialog.confirmDelete'))\r\n .subscribe(confirm => {\r\n if (confirm) {\r\n this.poiService.delete(poi.id).subscribe(\r\n () => {\r\n const title = translate.instant(\r\n 'igo.context.poiButton.dialog.deleteTitle'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.poiButton.dialog.deleteMsg',\r\n {\r\n value: poi.title\r\n }\r\n );\r\n this.messageService.info(message, title);\r\n this.pois = this.pois.filter(p => p.id !== poi.id);\r\n },\r\n err => {\r\n err.error.title = 'DELETE Pois';\r\n this.messageService.showError(err);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getPois() {\r\n this.poiService.get().pipe(take(1)).subscribe(\r\n rep => {\r\n this.pois = rep;\r\n },\r\n err => {\r\n err.error.title = 'GET Pois';\r\n this.messageService.showError(err);\r\n }\r\n );\r\n }\r\n\r\n createPoi() {\r\n const view = this.map.ol.getView();\r\n const proj = view.getProjection().getCode();\r\n const center: any = new olPoint(view.getCenter()).transform(\r\n proj,\r\n 'EPSG:4326'\r\n );\r\n\r\n const poi: Poi = {\r\n title: '',\r\n x: center.getCoordinates()[0],\r\n y: center.getCoordinates()[1],\r\n zoom: view.getZoom()\r\n };\r\n\r\n this.dialog\r\n .open(PoiDialogComponent, { disableClose: false })\r\n .afterClosed()\r\n .subscribe(title => {\r\n if (title) {\r\n poi.title = title;\r\n this.poiService.create(poi).subscribe(\r\n newPoi => {\r\n const translate = this.languageService.translate;\r\n const titleD = translate.instant(\r\n 'igo.context.poiButton.dialog.createTitle'\r\n );\r\n const message = translate.instant(\r\n 'igo.context.poiButton.dialog.createMsg',\r\n {\r\n value: poi.title\r\n }\r\n );\r\n this.messageService.success(message, titleD);\r\n poi.id = newPoi.id;\r\n this.pois.push(poi);\r\n },\r\n err => {\r\n err.error.title = 'POST Pois';\r\n this.messageService.showError(err);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n zoomOnPoi(id) {\r\n const poi = this.pois.find(p => p.id === id);\r\n\r\n const center = olproj.fromLonLat(\r\n [Number(poi.x), Number(poi.y)],\r\n this.map.projection\r\n );\r\n\r\n this.map.ol.getView().animate({\r\n center,\r\n zoom: poi.zoom,\r\n duration: 500,\r\n easing: oleasing.easeOut\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\nimport { StorageService } from '@igo2/core';\r\nimport { AuthService } from '@igo2/auth';\r\n\r\n@Component({\r\n selector: 'igo-user-dialog',\r\n templateUrl: './user-dialog.component.html'\r\n})\r\nexport class UserDialogComponent {\r\n public user;\r\n public exp;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<UserDialogComponent>,\r\n private auth: AuthService,\r\n private storageService: StorageService\r\n ) {\r\n const decodeToken = this.auth.decodeToken();\r\n this.user = decodeToken.user;\r\n this.exp = new Date(decodeToken.exp * 1000).toLocaleString();\r\n }\r\n\r\n clearPreferences() {\r\n this.storageService.clear();\r\n }\r\n}\r\n","<h1 mat-dialog-title class=\"mat-typography\">{{'igo.context.userButton.infoTitle' | translate}}</h1>\r\n<div mat-dialog-content class=\"mat-typography\">\r\n <p>{{'igo.context.userButton.dialog.user' | translate}}: {{user.sourceId}}</p>\r\n <p>{{'igo.context.userButton.dialog.email' | translate}}: {{user.email}}</p>\r\n <p>{{'igo.context.userButton.dialog.expiration' | translate}}: {{exp}}</p>\r\n <button mat-stroked-button color=\"primary\" (click)=\"clearPreferences()\">\r\n {{'igo.context.userButton.dialog.clearPreferences' | translate}}\r\n </button>\r\n <br>\r\n</div>\r\n<div mat-dialog-actions style=\"justify-content: center\">\r\n <button mat-raised-button color=\"primary\"\r\n (click)=\"dialogRef.close(false)\">\r\n OK\r\n </button>\r\n</div>\r\n","import {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n AnimationTriggerMetadata\r\n} from '@angular/animations';\r\n\r\nexport function userButtonSlideInOut(): AnimationTriggerMetadata {\r\n return trigger('userButtonState', [\r\n state(\r\n 'collapse',\r\n style({\r\n width: '0',\r\n overflow: 'hidden',\r\n display: 'none'\r\n })\r\n ),\r\n state(\r\n 'expand',\r\n style({\r\n overflow: 'hidden',\r\n display: 'display'\r\n })\r\n ),\r\n transition('collapse => expand', animate('200ms')),\r\n transition('expand => collapse', animate('200ms'))\r\n ]);\r\n}\r\n","<div *ngIf=\"visible\" class=\"igo-user-button-container\">\r\n <div class=\"igo-user-button-more-container\" [@userButtonState]=\"expand ? 'expand' : 'collapse'\">\r\n\r\n <igo-poi-button *ngIf=\"hasApi\" [color]=\"color\" [map]=\"map\"></igo-poi-button>\r\n\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.userButton.infoTitle' | translate\"\r\n matTooltipPosition=\"above\"\r\n [color]=\"color\"\r\n (click)=\"infoUser()\">\r\n <mat-icon svgIcon=\"information-outline\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.context.userButton.logout' | translate\"\r\n matTooltipPosition=\"above\"\r\n [color]=\"color\"\r\n (click)=\"logout()\">\r\n <mat-icon svgIcon=\"power\"></mat-icon>\r\n </button>\r\n\r\n </div>\r\n\r\n <button\r\n mat-icon-button\r\n [color]=\"auth.authenticated ? color : 'warn'\"\r\n (click)=\"accountClick()\">\r\n <mat-icon svgIcon=\"account-box\"></mat-icon>\r\n </button>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport { AuthService } from '@igo2/auth';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { UserDialogComponent } from './user-dialog.component';\r\nimport { userButtonSlideInOut } from './user-button.animation';\r\n\r\n@Component({\r\n selector: 'igo-user-button',\r\n templateUrl: './user-button.component.html',\r\n styleUrls: ['./user-button.component.scss'],\r\n animations: [userButtonSlideInOut()]\r\n})\r\nexport class UserButtonComponent {\r\n @Input()\r\n get map(): IgoMap {\r\n return this._map;\r\n }\r\n set map(value: IgoMap) {\r\n this._map = value;\r\n }\r\n private _map: IgoMap;\r\n\r\n @Input()\r\n get color(): string {\r\n return this._color;\r\n }\r\n set color(value: string) {\r\n this._color = value;\r\n }\r\n private _color: string;\r\n\r\n public expand = false;\r\n public visible = false;\r\n public hasApi = false;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private config: ConfigService,\r\n public auth: AuthService\r\n ) {\r\n this.visible = this.config.getConfig('auth') ? true : false;\r\n this.hasApi = this.config.getConfig('context.url') !== undefined;\r\n }\r\n\r\n accountClick() {\r\n if (this.auth.authenticated) {\r\n this.expand = !this.expand;\r\n } else {\r\n this.auth.logout();\r\n }\r\n }\r\n\r\n logout() {\r\n this.expand = false;\r\n this.auth.logout();\r\n }\r\n\r\n infoUser() {\r\n this.dialog.open(UserDialogComponent, { disableClose: false });\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { IgoConfirmDialogModule, IgoStopPropagationModule } from '@igo2/common';\r\nimport { IgoAuthModule } from '@igo2/auth';\r\n\r\nimport { BookmarkButtonComponent } from './bookmark-button/bookmark-button.component';\r\nimport { BookmarkDialogComponent } from './bookmark-button/bookmark-dialog.component';\r\nimport { PoiButtonComponent } from './poi-button/poi-button.component';\r\nimport { PoiDialogComponent } from './poi-button/poi-dialog.component';\r\nimport { PoiService } from './poi-button/shared/poi.service';\r\nimport { UserDialogComponent } from './user-button/user-dialog.component';\r\nimport { UserButtonComponent } from './user-button/user-button.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IgoLanguageModule,\r\n IgoConfirmDialogModule,\r\n IgoStopPropagationModule,\r\n IgoAuthModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatInputModule\r\n ],\r\n exports: [BookmarkButtonComponent, PoiButtonComponent, UserButtonComponent, BookmarkDialogComponent],\r\n declarations: [\r\n BookmarkButtonComponent,\r\n BookmarkDialogComponent,\r\n PoiButtonComponent,\r\n PoiDialogComponent,\r\n UserButtonComponent,\r\n UserDialogComponent\r\n ],\r\n providers: [PoiService]\r\n})\r\nexport class IgoContextMapButtonModule {\r\n static forRoot(): ModuleWithProviders<IgoContextMapButtonModule> {\r\n return {\r\n ngModule: IgoContextMapButtonModule\r\n };\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoAuthModule } from '@igo2/auth';\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport {\r\n IgoListModule,\r\n IgoKeyValueModule,\r\n IgoCollapsibleModule,\r\n IgoStopPropagationModule,\r\n IgoActionbarModule\r\n} from '@igo2/common';\r\n\r\nimport { MapContextDirective } from './shared/map-context.directive';\r\nimport { LayerContextDirective } from './shared/layer-context.directive';\r\nimport { ContextListComponent } from './context-list/context-list.component';\r\nimport { ContextListBindingDirective } from './context-list/context-list-binding.directive';\r\nimport { ContextItemComponent } from './context-item/context-item.component';\r\nimport { ContextFormComponent } from './context-form/context-form.component';\r\nimport { ContextEditComponent } from './context-edit/context-edit.component';\r\nimport { ContextEditBindingDirective } from './context-edit/context-edit-binding.directive';\r\nimport { ContextPermissionsComponent } from './context-permissions/context-permissions.component';\r\nimport { ContextPermissionsBindingDirective } from './context-permissions/context-permissions-binding.directive';\r\nimport { IgoContextMapButtonModule } from '../context-map-button/context-map-button.module';\r\nimport { IgoContextImportExportModule } from '../context-import-export/context-import-export.module';\r\n\r\nconst CONTEXT_DIRECTIVES = [\r\n MapContextDirective,\r\n LayerContextDirective\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatCheckboxModule,\r\n MatRadioModule,\r\n MatDialogModule,\r\n MatMenuModule,\r\n MatOptionModule,\r\n MatAutocompleteModule,\r\n IgoAuthModule,\r\n IgoListModule,\r\n IgoKeyValueModule,\r\n IgoCollapsibleModule,\r\n IgoStopPropagationModule,\r\n IgoLanguageModule,\r\n IgoContextImportExportModule,\r\n IgoContextMapButtonModule,\r\n IgoActionbarModule\r\n ],\r\n exports: [\r\n ContextListComponent,\r\n ContextListBindingDirective,\r\n ContextItemComponent,\r\n ContextFormComponent,\r\n ContextEditComponent,\r\n ContextEditBindingDirective,\r\n ContextPermissionsComponent,\r\n ContextPermissionsBindingDirective,\r\n\r\n ...CONTEXT_DIRECTIVES\r\n ],\r\n declarations: [\r\n ContextListComponent,\r\n ContextListBindingDirective,\r\n ContextItemComponent,\r\n ContextFormComponent,\r\n ContextEditComponent,\r\n ContextEditBindingDirective,\r\n ContextPermissionsComponent,\r\n ContextPermissionsBindingDirective,\r\n\r\n ...CONTEXT_DIRECTIVES\r\n ]\r\n})\r\nexport class IgoContextManagerModule {\r\n static forRoot(): ModuleWithProviders<IgoContextManagerModule> {\r\n return {\r\n ngModule: IgoContextManagerModule\r\n };\r\n }\r\n}\r\n","import { Injectable, Optional } from '@angular/core';\r\n\r\nimport { RouteService, MessageService } from '@igo2/core';\r\nimport { Layer, WMSDataSourceOptions } from '@igo2/geo';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\r\nimport { ContextService } from '../../context-manager/shared/context.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ShareMapService {\r\n\r\n constructor(\r\n private contextService: ContextService,\r\n private messageService: MessageService,\r\n @Optional() private route: RouteService\r\n ) {}\r\n\r\n getUrlWithApi(formValues) {\r\n return `${location.origin + location.pathname}?context=${formValues.uri}`;\r\n }\r\n\r\n createContextShared(map: IgoMap, formValues) {\r\n const context = this.contextService.getContextFromMap(map);\r\n context.scope = 'public';\r\n context.title = formValues.title;\r\n context.uri = formValues.uri;\r\n return this.contextService.create(context);\r\n }\r\n\r\n updateContextShared(map: IgoMap, formValues, id: string) {\r\n const context = this.contextService.getContextFromMap(map);\r\n return this.contextService.update(id, {\r\n title: formValues.title,\r\n map: context.map\r\n } as DetailedContext);\r\n }\r\n\r\n getUrlWithoutApi(map: IgoMap, publicShareOption) {\r\n if (\r\n !this.route ||\r\n !this.route.options.visibleOnLayersKey ||\r\n !this.route.options.visibleOffLayersKey ||\r\n !map.viewController.getZoom()\r\n ) {\r\n return;\r\n }\r\n const llc = publicShareOption.layerlistControls.querystring;\r\n\r\n let visibleKey = this.route.options.visibleOnLayersKey;\r\n let invisibleKey = this.route.options.visibleOffLayersKey;\r\n const layers = map.layers;\r\n\r\n const visibleLayers = layers.filter(lay => lay.visible && !lay.isIgoInternalLayer);\r\n const invisibleLayers = layers.filter(lay => !lay.visible && !lay.isIgoInternalLayer);\r\n\r\n if (visibleLayers.length === 0) {\r\n visibleKey = '';\r\n }\r\n if (invisibleLayers.length === 0) {\r\n invisibleKey = '';\r\n }\r\n\r\n let layersUrl = '';\r\n let layersToLoop = [];\r\n if (visibleLayers.length > invisibleLayers.length) {\r\n layersUrl = `${visibleKey}=*&${invisibleKey}=`;\r\n layersToLoop = invisibleLayers;\r\n } else {\r\n layersUrl = `${invisibleKey}=*&${visibleKey}=`;\r\n layersToLoop = visibleLayers;\r\n }\r\n\r\n for (const layer of layersToLoop) {\r\n if (layer.id) {\r\n layersUrl += layer.id + ',';\r\n }\r\n }\r\n const contextLayersID = [];\r\n const contextLayers = this.contextService.context$.value.layers;\r\n for (const contextLayer of contextLayers) {\r\n if ( typeof contextLayer.id !== 'undefined' || typeof contextLayer.source !== 'undefined' ) {\r\n contextLayersID.push(contextLayer.id || contextLayer.source.id);\r\n }\r\n }\r\n\r\n const addedLayersQueryParamsWms = this.makeLayersByService(layers, contextLayersID, 'wms');\r\n const addedLayersQueryParamsWmts = this.makeLayersByService(layers, contextLayersID, 'wmts');\r\n const addedLayersQueryParamsArcgisRest = this.makeLayersByService(layers, contextLayersID, 'arcgisrest');\r\n const addedLayersQueryParamsImageArcgisRest = this.makeLayersByService(layers, contextLayersID, 'imagearcgisrest');\r\n const addedLayersQueryParamsTileArcgisRest = this.makeLayersByService(layers, contextLayersID, 'tilearcgisrest');\r\n\r\n layersUrl = layersUrl.substr(0, layersUrl.length - 1);\r\n\r\n const zoomKey = this.route.options.zoomKey;\r\n const centerKey = this.route.options.centerKey;\r\n const contextKey = this.route.options.contextKey;\r\n\r\n const zoom = `${zoomKey}=${map.viewController.getZoom()}`;\r\n const arrayCenter = map.viewController.getCenter('EPSG:4326') || [];\r\n const long = arrayCenter[0].toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\r\n const lat = arrayCenter[1].toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\r\n const center = `${centerKey}=${long},${lat}`.replace(/.00000/g, '');\r\n let context = '';\r\n if (this.contextService.context$.value) {\r\n context = `${contextKey}=${this.contextService.context$.value.uri}`;\r\n }\r\n\r\n let url = `${location.origin}${location.pathname}?${context}&${zoom}&${center}&${layersUrl}&${llc}&${addedLayersQueryParamsWms}&${llc}&${addedLayersQueryParamsWmts}&${addedLayersQueryParamsArcgisRest}&${addedLayersQueryParamsImageArcgisRest}&${addedLayersQueryParamsTileArcgisRest}`;\r\n\r\n for (let i = 0; i < 5; i++) {\r\n url = url.replace(/&&/g, '&');\r\n url = url.endsWith('&') ? url.slice(0, -1) : url;\r\n }\r\n url = url.endsWith('&') ? url.slice(0, -1) : url;\r\n url = url.replace('?&wm', '&wm');\r\n url = url.replace('?&', '?');\r\n\r\n return url;\r\n }\r\n\r\n private makeLayersByService(layers: Layer[], contextLayersID: any[], typeService: string): string {\r\n\r\n const addedLayersByService = [];\r\n for (const layer of layers.filter(l => l.dataSource.options?.type === typeService)) {\r\n if (contextLayersID.indexOf(layer.id) === -1) {\r\n let linkUrl = encodeURIComponent((layer.dataSource.options as any).url);\r\n let addedLayer = '';\r\n let layerVersion: string;\r\n switch (layer.dataSource.options.type.toLowerCase()) {\r\n case 'wms':\r\n const datasourceOptions = layer.dataSource.options as WMSDataSourceOptions;\r\n addedLayer = encodeURIComponent(datasourceOptions.params.LAYERS);\r\n layerVersion = datasourceOptions.params.VERSION === '1.3.0' ? layerVersion : datasourceOptions.params.VERSION;\r\n break;\r\n case 'wmts':\r\n case 'arcgisrest':\r\n case 'imagearcgisrest':\r\n case 'tilearcgisrest':\r\n addedLayer = encodeURIComponent((layer.dataSource.options as any).layer);\r\n break;\r\n }\r\n const addedLayerPosition = `${addedLayer}:igoz${layer.zIndex}`;\r\n\r\n let version = '';\r\n if (layerVersion) {\r\n const operator = (layer.dataSource.options as any).url.indexOf('?') === -1 ? '?' : '&';\r\n version = encodeURIComponent(`${operator}VERSION=${layerVersion}`);\r\n }\r\n linkUrl = `${linkUrl}${version}`;\r\n\r\n if (\r\n !addedLayersByService.find(definedUrl => definedUrl.url === linkUrl)\r\n ) {\r\n addedLayersByService.push({\r\n url: linkUrl,\r\n layers: [addedLayerPosition]\r\n });\r\n } else {\r\n addedLayersByService.forEach(service => {\r\n if (service.url === linkUrl) {\r\n service.layers.push(addedLayerPosition);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n let addedLayersQueryParams = '';\r\n if (addedLayersByService.length >= 1) {\r\n let linkUrlKey;\r\n let layersKey;\r\n /*\r\n const linkUrlKey = (typeService === 'wms') ? this.route.options.wmsUrlKey :\r\n (typeService === 'wmts') ? this.route.options.wmtsUrlKey : '' ;\r\n const layersKey = (typeService === 'wms') ? this.route.options.wmsLayersKey :\r\n (typeService === 'wmts') ? this.route.options.wmtsLayersKey : '' ;\r\n*/\r\n switch (typeService.toLowerCase()) {\r\n case 'wms':\r\n linkUrlKey = this.route.options.wmsUrlKey;\r\n layersKey = this.route.options.wmsLayersKey;\r\n break;\r\n case 'wmts':\r\n linkUrlKey = this.route.options.wmtsUrlKey;\r\n layersKey = this.route.options.wmtsLayersKey;\r\n break;\r\n case 'arcgisrest':\r\n linkUrlKey = this.route.options.arcgisUrlKey;\r\n layersKey = this.route.options.arcgisLayersKey;\r\n break;\r\n case 'imagearcgisrest':\r\n linkUrlKey = this.route.options.iarcgisUrlKey;\r\n layersKey = this.route.options.iarcgisLayersKey;\r\n break;\r\n case 'tilearcgisrest':\r\n linkUrlKey = this.route.options.tarcgisUrlKey;\r\n layersKey = this.route.options.tarcgisLayersKey;\r\n break;\r\n default:\r\n linkUrlKey = '';\r\n layersKey = '';\r\n }\r\n\r\n let linkUrlQueryParams = '';\r\n let layersQueryParams = '';\r\n addedLayersByService.forEach(service => {\r\n linkUrlQueryParams += `${service.url},`;\r\n layersQueryParams += `(${service.layers.join(',')}),`;\r\n });\r\n linkUrlQueryParams = linkUrlQueryParams.endsWith(',')\r\n ? linkUrlQueryParams.slice(0, -1)\r\n : linkUrlQueryParams;\r\n layersQueryParams = layersQueryParams.endsWith(',')\r\n ? layersQueryParams.slice(0, -1)\r\n : layersQueryParams;\r\n addedLayersQueryParams = `${linkUrlKey}=${linkUrlQueryParams}&${layersKey}=${layersQueryParams}`;\r\n }\r\n\r\n return addedLayersQueryParams;\r\n }\r\n}\r\n","<form class=\"igo-form\" [formGroup]=\"form\"\r\n (ngSubmit)=\"createUrl(form.value)\">\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input matInput required\r\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\r\n formControlName=\"title\">\r\n <mat-error>\r\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div id=\"uriInput\" class=\"igo-input-container\">\r\n <mat-form-field>\r\n <span *ngIf=\"userId\" class=\"prefix\">{{userId}}-</span>\r\n <span class=\"fieldWrapper\">\r\n <input matInput required\r\n [readonly]=\"!userId\"\r\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\r\n formControlName=\"uri\">\r\n </span>\r\n <mat-error>\r\n {{ 'igo.context.contextManager.form.uriRequired' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-form-button-group\">\r\n <button *ngIf=\"!url\"\r\n mat-raised-button\r\n type=\"submit\"\r\n [disabled]=\"!form.valid\">\r\n {{ 'igo.context.shareMap.button' | translate }}\r\n </button>\r\n <button *ngIf=\"url\"\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"updateContextShared(form.value)\">\r\n {{ 'igo.context.shareMap.refreshBtn' | translate }}\r\n </button>\r\n </div>\r\n</form>\r\n\r\n<div *ngIf=\"url\" class=\"igo-input-container linkToShare\">\r\n <mat-form-field>\r\n <textarea #textArea matInput readonly rows=\"3\"\r\n class=\"textAreaWithButton\"\r\n [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\r\n [value]=\"url\"></textarea>\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.context.shareMap.copy' | translate\"\r\n color=\"primary\"\r\n (click)=\"copyTextToClipboard(textArea)\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n </button>\r\n </mat-form-field>\r\n<div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { uuid, Clipboard } from '@igo2/utils';\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\nimport { AuthService } from '@igo2/auth';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { ShareMapService } from '../shared/share-map.service';\r\n\r\n@Component({\r\n selector: 'igo-share-map-api',\r\n templateUrl: './share-map-api.component.html',\r\n styleUrls: ['./share-map-api.component.scss']\r\n})\r\nexport class ShareMapApiComponent implements OnInit {\r\n public form: FormGroup;\r\n\r\n @Input() map: IgoMap;\r\n\r\n public url: string;\r\n public userId: string;\r\n public idContextShared: string;\r\n\r\n constructor(\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private auth: AuthService,\r\n private shareMapService: ShareMapService,\r\n private formBuilder: FormBuilder\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.auth.authenticate$.subscribe(auth => {\r\n const decodeToken = this.auth.decodeToken();\r\n this.userId = decodeToken.user ? decodeToken.user.id : undefined;\r\n this.buildForm();\r\n });\r\n }\r\n\r\n createUrl(values: any = {}) {\r\n const inputs = Object.assign({}, values);\r\n inputs.uri = this.userId ? `${this.userId}-${values.uri}` : values.uri;\r\n this.url = this.shareMapService.getUrlWithApi(inputs);\r\n this.shareMapService.createContextShared(this.map, inputs).subscribe(\r\n rep => {\r\n this.idContextShared = rep.id;\r\n const title = this.languageService.translate.instant(\r\n 'igo.context.contextManager.dialog.saveTitle'\r\n );\r\n const msg = this.languageService.translate.instant('igo.context.contextManager.dialog.saveMsg', {\r\n value: inputs.title\r\n });\r\n this.messageService.success(msg, title);\r\n },\r\n err => {\r\n err.error.title = this.languageService.translate.instant(\r\n 'igo.context.shareMap.errorTitle'\r\n );\r\n this.messageService.showError(err);\r\n }\r\n );\r\n }\r\n\r\n updateContextShared(values: any = {}) {\r\n const inputs = Object.assign({}, values);\r\n inputs.uri = this.userId ? `${this.userId}-${values.uri}` : values.uri;\r\n this.shareMapService.updateContextShared(this.map, inputs, this.idContextShared).subscribe(\r\n rep => {\r\n const title = this.languageService.translate.instant(\r\n 'igo.context.contextManager.dialog.saveTitle'\r\n );\r\n const msg = this.languageService.translate.instant('igo.context.contextManager.dialog.saveMsg', {\r\n value: inputs.title\r\n });\r\n this.messageService.success(msg, title);\r\n },\r\n err => {\r\n err.error.title = this.languageService.translate.instant(\r\n 'igo.context.shareMap.errorTitle'\r\n );\r\n this.messageService.showError(err);\r\n }\r\n );\r\n }\r\n\r\n copyTextToClipboard(textArea) {\r\n const successful = Clipboard.copy(textArea);\r\n if (successful) {\r\n const translate = this.languageService.translate;\r\n const title = translate.instant(\r\n 'igo.context.shareMap.dialog.copyTitle'\r\n );\r\n const msg = translate.instant('igo.context.shareMap.dialog.copyMsg');\r\n this.messageService.success(msg, title);\r\n }\r\n }\r\n\r\n buildForm(): void {\r\n this.url = undefined;\r\n const id = uuid();\r\n let title = 'Partage ';\r\n title += this.userId ? `(${this.userId}-${id})` : `(${id})`;\r\n this.form = this.formBuilder.group({\r\n title: [title],\r\n uri: [id]\r\n });\r\n }\r\n}\r\n","<div class=\"igo-input-container linkToShare\">\r\n <mat-form-field>\r\n <textarea #textArea matInput readonly rows=\"3\"\r\n [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\r\n [value]=\"url\"></textarea>\r\n </mat-form-field>\r\n\r\n <div class=\"igo-form-button-group\">\r\n <button\r\n mat-raised-button\r\n (click)=\"copyTextToClipboard(textArea)\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n {{ 'igo.context.shareMap.copy' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <br/>\r\n <section class=\"mat-typography\">\r\n <h4 *ngIf=\"('igo.context.shareMap.included' | translate)!==''\">{{'igo.context.shareMap.included' | translate}}</h4>\r\n <ul>\r\n <li *ngIf=\"('igo.context.shareMap.context' | translate)!==''\">{{'igo.context.shareMap.context' | translate}}</li>\r\n <li *ngIf=\"('igo.context.shareMap.center' | translate)!==''\">{{'igo.context.shareMap.center' | translate}}</li>\r\n <li *ngIf=\"('igo.context.shareMap.zoom' | translate)!==''\">{{'igo.context.shareMap.zoom' | translate}}</li>\r\n <li *ngIf=\"('igo.context.shareMap.addedLayers' | translate)!==''\">{{'igo.context.shareMap.addedLayers' | translate}}</li>\r\n <li *ngIf=\"('igo.context.shareMap.visibleInvisible' | translate)!==''\">{{'igo.context.shareMap.visibleInvisible' | translate}}</li>\r\n </ul>\r\n\r\n <h4 *ngIf=\"('igo.context.shareMap.excluded' | translate)!==''\">{{'igo.context.shareMap.excluded' | translate}}</h4>\r\n <ul>\r\n <li *ngIf=\"('igo.context.shareMap.order' | translate)!==''\">{{'igo.context.shareMap.order' | translate}}</li>\r\n <li *ngIf=\"('igo.context.shareMap.opacity' | translate)!==''\">{{'igo.context.shareMap.opacity' | translate}}</li>\r\n <li *ngIf=\"('igo.context.shareMap.filterOgc' | translate)!==''\">{{'igo.context.shareMap.filterOgc' | translate}}</li>\r\n <li *ngIf=\"('igo.context.shareMap.filterTime' | translate)!==''\">{{'igo.context.shareMap.filterTime' | translate}}</li>\r\n </ul>\r\n </section>\r\n </div>\r\n</div>\r\n","import { AfterViewInit, Component, Input, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\n\r\nimport { Clipboard } from '@igo2/utils';\r\nimport { MessageService, LanguageService } from '@igo2/core';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport { ShareMapService } from '../shared/share-map.service';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'igo-share-map-url',\r\n templateUrl: './share-map-url.component.html',\r\n styleUrls: ['./share-map-url.component.scss']\r\n})\r\nexport class ShareMapUrlComponent implements AfterViewInit, OnInit, OnDestroy {\r\n private mapState$$: Subscription;\r\n\r\n @Input() map: IgoMap;\r\n\r\n public url: string;\r\n public publicShareOption = {\r\n layerlistControls: { querystring: '' }\r\n };\r\n\r\n constructor(\r\n private languageService: LanguageService,\r\n private messageService: MessageService,\r\n private shareMapService: ShareMapService,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.resetUrl();\r\n this.mapState$$ = combineLatest([\r\n this.map.viewController.state$,\r\n this.map.status$]).subscribe(c => {\r\n this.resetUrl();\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.resetUrl();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.mapState$$.unsubscribe();\r\n }\r\n\r\n resetUrl(values: any = {}) {\r\n this.url = this.shareMapService.getUrlWithoutApi(this.map, this.publicShareOption);\r\n }\r\n\r\n copyTextToClipboard(textArea) {\r\n const successful = Clipboard.copy(textArea);\r\n if (successful) {\r\n const translate = this.languageService.translate;\r\n const title = translate.instant(\r\n 'igo.context.shareMap.dialog.copyTitle'\r\n );\r\n const msg = translate.instant('igo.context.shareMap.dialog.copyMsg');\r\n this.messageService.success(msg, title);\r\n }\r\n }\r\n}\r\n","<mat-tab-group *ngIf=\"hasApi\" >\r\n <mat-tab [label]=\"'igo.context.shareMap.shareWithApi' | translate\">\r\n <igo-share-map-api [map]=\"map\"></igo-share-map-api>\r\n </mat-tab>\r\n <mat-tab [label]=\"'igo.context.shareMap.shareWithUrl' | translate\">\r\n <igo-share-map-url [map]=\"map\"></igo-share-map-url>\r\n </mat-tab>\r\n</mat-tab-group>\r\n\r\n<igo-share-map-url *ngIf=\"!hasApi\" [map]=\"map\"></igo-share-map-url>\r\n","import { Component, Input } from '@angular/core';\r\n\r\nimport { ConfigService } from '@igo2/core';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\n@Component({\r\n selector: 'igo-share-map',\r\n templateUrl: './share-map.component.html',\r\n styleUrls: ['./share-map.component.scss']\r\n})\r\nexport class ShareMapComponent {\r\n\r\n @Input() map: IgoMap;\r\n\r\n public hasApi = false;\r\n\r\n constructor(\r\n private config: ConfigService\r\n ) {\r\n this.hasApi = this.config.getConfig('context.url') ? true : false;\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\n\r\nimport { ShareMapComponent } from './share-map/share-map.component';\r\nimport { ShareMapUrlComponent } from './share-map/share-map-url.component';\r\nimport { ShareMapApiComponent } from './share-map/share-map-api.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n MatTabsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n IgoLanguageModule\r\n ],\r\n exports: [ShareMapComponent, ShareMapUrlComponent, ShareMapApiComponent],\r\n declarations: [ShareMapComponent, ShareMapUrlComponent, ShareMapApiComponent]\r\n})\r\nexport class IgoShareMapModule {\r\n static forRoot(): ModuleWithProviders<IgoShareMapModule> {\r\n return {\r\n ngModule: IgoShareMapModule\r\n };\r\n }\r\n}\r\n","<mat-sidenav\r\n #sidenav\r\n igoSidenavShim\r\n mode=\"side\"\r\n [opened]=\"opened\">\r\n\r\n <div class=\"igo-sidenav-content\">\r\n\r\n <igo-flexible\r\n #topPanel\r\n initial=\"50%\" initialMobile=\"100%\"\r\n expanded=\"calc(100% - 58px)\"\r\n [state]=\"topPanelState\">\r\n\r\n <div class=\"igo-content\">\r\n <igo-panel [title]=\"tool ? (tool.title | translate) : title\">\r\n <button\r\n mat-icon-button\r\n panelLeftButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.context.sidenav.goBack' | translate\"\r\n *ngIf=\"tool\">\r\n <mat-icon svgIcon=\"arrow-back\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n mat-icon-button\r\n panelRightButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\r\n *ngIf=\"tool\">\r\n <mat-icon svgIcon=\"menu\"></mat-icon>\r\n </button>\r\n\r\n </igo-panel>\r\n </div>\r\n\r\n <div igoFlexibleFill class=\"igo-content\">\r\n <igo-panel\r\n [title]=\"featureTitle\"\r\n *ngIf=\"feature && media !== 'mobile'\">\r\n\r\n <button\r\n mat-icon-button\r\n panelLeftButton\r\n class=\"igo-icon-button\"\r\n (click)=\"toggleTopPanel()\">\r\n <mat-icon [svgIcon]=\"['collapsed', 'initial'].indexOf(topPanel.state) >= 0 ? 'arrow_downward' : 'arrow_upward'\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n mat-icon-button\r\n panelRightButton\r\n class=\"igo-icon-button\"\r\n (click)=\"zoomToFeatureExtent()\"\r\n *ngIf=\"feature.geometry\">\r\n <mat-icon svgIcon=\"zoom-in\"></mat-icon>\r\n </button>\r\n\r\n <igo-feature-details\r\n [feature]=\"feature\"\r\n *ngIf=\"['collapsed', 'initial'].indexOf(topPanel.state) >= 0\">\r\n </igo-feature-details>\r\n </igo-panel>\r\n </div>\r\n\r\n </igo-flexible>\r\n\r\n </div>\r\n</mat-sidenav>\r\n","import { Component, Input } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\nimport type { Media } from '@igo2/core';\r\nimport { FlexibleState, Tool, getEntityTitle } from '@igo2/common';\r\nimport { Feature, FeatureMotion, moveToOlFeatures } from '@igo2/geo';\r\nimport type { IgoMap } from '@igo2/geo';\r\n\r\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\r\n\r\n@Component({\r\n selector: 'igo-sidenav',\r\n templateUrl: './sidenav.component.html',\r\n styleUrls: ['./sidenav.component.scss']\r\n})\r\nexport class SidenavComponent {\r\n private format = new olFormatGeoJSON();\r\n @Input()\r\n get map(): IgoMap {\r\n return this._map;\r\n }\r\n set map(value: IgoMap) {\r\n this._map = value;\r\n }\r\n private _map: IgoMap;\r\n @Input()\r\n get opened(): boolean {\r\n return this._opened;\r\n }\r\n set opened(value: boolean) {\r\n this._opened = value;\r\n }\r\n private _opened: boolean;\r\n\r\n @Input()\r\n get feature(): Feature {\r\n return this._feature;\r\n }\r\n set feature(value: Feature) {\r\n this._feature = value;\r\n }\r\n private _feature: Feature;\r\n\r\n @Input()\r\n get tool(): Tool {\r\n return this._tool;\r\n }\r\n set tool(value: Tool) {\r\n this._tool = value;\r\n }\r\n private _tool: Tool;\r\n\r\n @Input()\r\n get media(): Media {\r\n return this._media;\r\n }\r\n set media(value: Media) {\r\n this._media = value;\r\n }\r\n private _media: Media;\r\n\r\n @Input()\r\n get title(): string {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n if (value) {\r\n this._title = value;\r\n }\r\n }\r\n private _title: string = this.titleService.getTitle();\r\n\r\n public topPanelState: FlexibleState = 'initial';\r\n\r\n get featureTitle(): string {\r\n return this.feature ? getEntityTitle(this.feature) : undefined;\r\n }\r\n\r\n constructor(public titleService: Title) {}\r\n\r\n zoomToFeatureExtent() {\r\n if (this.feature.geometry) {\r\n const olFeature = this.format.readFeature(this.feature, {\r\n dataProjection: this.feature.projection,\r\n featureProjection: this.map.projection\r\n });\r\n moveToOlFeatures(this.map, [olFeature], FeatureMotion.Zoom);\r\n }\r\n }\r\n\r\n toggleTopPanel() {\r\n if (this.topPanelState === 'initial') {\r\n this.topPanelState = 'expanded';\r\n } else {\r\n this.topPanelState = 'initial';\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { IgoLanguageModule } from '@igo2/core';\r\nimport { IgoPanelModule, IgoFlexibleModule } from '@igo2/common';\r\nimport { IgoFeatureModule } from '@igo2/geo';\r\n\r\nimport { IgoContextManagerModule } from '../context-manager/context-manager.module';\r\nimport { SidenavComponent } from './sidenav.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n IgoLanguageModule,\r\n IgoPanelModule,\r\n IgoFlexibleModule,\r\n IgoFeatureModule,\r\n IgoContextManagerModule\r\n ],\r\n exports: [SidenavComponent],\r\n declarations: [SidenavComponent]\r\n})\r\nexport class IgoSidenavModule {\r\n static forRoot(): ModuleWithProviders<IgoSidenavModule> {\r\n return {\r\n ngModule: IgoSidenavModule\r\n };\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\nimport { IgoContextImportExportModule } from './context-import-export/context-import-export.module';\r\nimport { IgoContextManagerModule } from './context-manager/context-manager.module';\r\nimport { IgoContextMapButtonModule } from './context-map-button/context-map-button.module';\r\nimport { IgoShareMapModule } from './share-map/share-map.module';\r\nimport { IgoSidenavModule } from './sidenav/sidenav.module';\r\n\r\n@NgModule({\r\n imports: [MatInputModule, MatFormFieldModule, MatMenuModule],\r\n declarations: [],\r\n exports: [\r\n IgoContextImportExportModule,\r\n IgoContextManagerModule,\r\n IgoContextMapButtonModule,\r\n IgoShareMapModule,\r\n IgoSidenavModule\r\n ]\r\n})\r\nexport class IgoContextModule {\r\n static forRoot(): ModuleWithProviders<IgoContextModule> {\r\n return {\r\n ngModule: IgoContextModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of context\r\n */\r\n\r\nexport * from './lib/context.module';\r\nexport * from './lib/context-import-export/context-import-export.module';\r\nexport * from './lib/context-manager/context-manager.module';\r\nexport * from './lib/context-map-button/context-map-button.module';\r\nexport * from './lib/share-map/share-map.module';\r\nexport * from './lib/sidenav/sidenav.module';\r\n\r\nexport * from './lib/context-import-export';\r\nexport * from './lib/context-manager';\r\nexport * from './lib/context-map-button';\r\nexport * from './lib/share-map';\r\nexport * from './lib/sidenav';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["olFormatGeoJSON"],"mappings":"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"}
1
+ {"version":3,"file":"igo2-context.js","sources":["../../../packages/context/src/lib/context-import-export/shared/context-export.errors.ts","../../../packages/context/src/lib/context-import-export/shared/context-export.utils.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.utils.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.errors.ts","../../../packages/context/src/lib/context-import-export/shared/context-import.service.ts","../../../packages/context/src/lib/context-import-export/shared/context-export.service.ts","../../../packages/context/src/lib/context-manager/shared/context.enum.ts","../../../packages/context/src/lib/context-manager/shared/context.service.ts","../../../packages/context/src/lib/context-import-export/context-import-export/context-import-export.component.html","../../../packages/context/src/lib/context-import-export/context-import-export/context-import-export.component.ts","../../../packages/context/src/lib/context-import-export/context-import-export.module.ts","../../../packages/context/src/lib/context-manager/shared/map-context.directive.ts","../../../packages/context/src/lib/context-manager/shared/layer-context.directive.ts","../../../packages/context/src/lib/context-manager/context-list/context-list.enum.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-dialog.component.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-dialog.component.html","../../../packages/context/src/lib/context-manager/context-item/context-item.component.html","../../../packages/context/src/lib/context-manager/context-item/context-item.component.ts","../../../packages/context/src/lib/context-manager/context-list/context-list.component.html","../../../packages/context/src/lib/context-manager/context-list/context-list.component.ts","../../../packages/context/src/lib/context-manager/context-list/context-list-binding.directive.ts","../../../packages/context/src/lib/context-manager/context-form/context-form.component.html","../../../packages/context/src/lib/context-manager/context-form/context-form.component.ts","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.html","../../../packages/context/src/lib/context-manager/context-edit/context-edit.component.ts","../../../packages/context/src/lib/context-manager/context-edit/context-edit-binding.directive.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions.component.html","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions.component.ts","../../../packages/context/src/lib/context-manager/context-permissions/context-permissions-binding.directive.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-button.component.ts","../../../packages/context/src/lib/context-map-button/bookmark-button/bookmark-button.component.html","../../../packages/context/src/lib/context-map-button/poi-button/poi-dialog.component.ts","../../../packages/context/src/lib/context-map-button/poi-button/poi-dialog.component.html","../../../packages/context/src/lib/context-map-button/poi-button/shared/poi.service.ts","../../../packages/context/src/lib/context-map-button/poi-button/poi-button.component.html","../../../packages/context/src/lib/context-map-button/poi-button/poi-button.component.ts","../../../packages/context/src/lib/context-map-button/user-button/user-dialog.component.ts","../../../packages/context/src/lib/context-map-button/user-button/user-dialog.component.html","../../../packages/context/src/lib/context-map-button/user-button/user-button.animation.ts","../../../packages/context/src/lib/context-map-button/user-button/user-button.component.html","../../../packages/context/src/lib/context-map-button/user-button/user-button.component.ts","../../../packages/context/src/lib/context-map-button/context-map-button.module.ts","../../../packages/context/src/lib/context-manager/context-manager.module.ts","../../../packages/context/src/lib/share-map/shared/share-map.service.ts","../../../packages/context/src/lib/share-map/share-map/share-map-api.component.html","../../../packages/context/src/lib/share-map/share-map/share-map-api.component.ts","../../../packages/context/src/lib/share-map/share-map/share-map-url.component.html","../../../packages/context/src/lib/share-map/share-map/share-map-url.component.ts","../../../packages/context/src/lib/share-map/share-map/share-map.component.html","../../../packages/context/src/lib/share-map/share-map/share-map.component.ts","../../../packages/context/src/lib/share-map/share-map.module.ts","../../../packages/context/src/lib/sidenav/sidenav.component.html","../../../packages/context/src/lib/sidenav/sidenav.component.ts","../../../packages/context/src/lib/sidenav/sidenav.module.ts","../../../packages/context/src/lib/context.module.ts","../../../packages/context/src/public_api.ts","../../../packages/context/src/igo2-context.ts"],"sourcesContent":["export class ExportError extends Error {}\n\nexport class ExportInvalidFileError extends ExportError {\n constructor() {\n super('Invalid context');\n Object.setPrototypeOf(this, ExportInvalidFileError.prototype);\n }\n}\n\nexport class ExportNothingToExportError extends ExportError {\n constructor() {\n super('Nothing to export');\n Object.setPrototypeOf(this, ExportNothingToExportError.prototype);\n }\n}\n","import { MessageService, LanguageService } from '@igo2/core';\nimport { ExportNothingToExportError } from './context-export.errors';\n\nexport function handleFileExportError(\n error: Error,\n messageService: MessageService,\n languageService: LanguageService\n ) {\n if (error instanceof ExportNothingToExportError) {\n this.handleNothingToExportError(messageService, languageService);\n return;\n }\n const translate = languageService.translate;\n const title = translate.instant('igo.context.contextImportExport.export.failed.title');\n const message = translate.instant('igo.context.contextImportExport.export.failed.text');\n messageService.error(message, title);\n}\n\nexport function handleFileExportSuccess(\n messageService: MessageService,\n languageService: LanguageService\n ) {\n const translate = languageService.translate;\n const title = translate.instant('igo.context.contextImportExport.export.success.title');\n const message = translate.instant('igo.context.contextImportExport.export.success.text');\n messageService.success(message, title);\n}\n\nexport function handleNothingToExportError(\n messageService: MessageService,\n languageService: LanguageService\n ) {\n const translate = languageService.translate;\n const title = translate.instant('igo.context.contextImportExport.export.nothing.title');\n const message = translate.instant('igo.context.contextImportExport.export.nothing.text');\n messageService.error(message, title);\n}\n","import * as olStyle from 'ol/style';\nimport type { default as OlGeometry } from 'ol/geom/Geometry';\n\nimport {\n FeatureDataSource,\n FeatureDataSourceOptions,\n IgoMap,\n VectorLayer,\n QueryableDataSourceOptions,\n StyleService,\n StyleListService,\n StyleByAttribute,\n ClusterParam,\n ClusterDataSourceOptions,\n ClusterDataSource\n} from '@igo2/geo';\nimport { MessageService, LanguageService } from '@igo2/core';\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { ContextService } from '../../context-manager/shared/context.service';\nimport OlFeature from 'ol/Feature';\n\nexport function handleFileImportSuccess(\n file: File,\n context: DetailedContext,\n messageService: MessageService,\n languageService: LanguageService,\n contextService: ContextService\n) {\n if (Object.keys(context).length <= 0) {\n handleNothingToImportError(file, messageService, languageService);\n return;\n }\n\n const contextTitle = computeLayerTitleFromFile(file);\n\n addContextToContextList(context, contextTitle, contextService);\n\n const translate = languageService.translate;\n const messageTitle = translate.instant(\n 'igo.context.contextImportExport.import.success.title'\n );\n const message = translate.instant(\n 'igo.context.contextImportExport.import.success.text',\n {\n value: contextTitle\n }\n );\n messageService.success(message, messageTitle);\n}\n\nexport function handleFileImportError(\n file: File,\n error: Error,\n messageService: MessageService,\n languageService: LanguageService,\n sizeMb?: number\n) {\n sizeMb = sizeMb ? sizeMb : 30;\n const errMapping = {\n 'Invalid file': handleInvalidFileImportError,\n 'File is too large': handleSizeFileImportError,\n 'Failed to read file': handleUnreadbleFileImportError\n };\n errMapping[error.message](\n file,\n error,\n messageService,\n languageService,\n sizeMb\n );\n}\n\nexport function handleInvalidFileImportError(\n file: File,\n error: Error,\n messageService: MessageService,\n languageService: LanguageService\n) {\n const translate = languageService.translate;\n const title = translate.instant(\n 'igo.context.contextImportExport.import.invalid.title'\n );\n const message = translate.instant(\n 'igo.context.contextImportExport.import.invalid.text',\n {\n value: file.name,\n mimeType: file.type\n }\n );\n messageService.error(message, title);\n}\n\nexport function handleSizeFileImportError(\n file: File,\n error: Error,\n messageService: MessageService,\n languageService: LanguageService,\n sizeMb: number\n) {\n const translate = languageService.translate;\n const title = translate.instant(\n 'igo.context.contextImportExport.import.tooLarge.title'\n );\n const message = translate.instant(\n 'igo.context.contextImportExport.import.tooLarge.text',\n {\n value: file.name,\n size: sizeMb\n }\n );\n messageService.error(message, title);\n}\n\nexport function handleUnreadbleFileImportError(\n file: File,\n error: Error,\n messageService: MessageService,\n languageService: LanguageService\n) {\n const translate = languageService.translate;\n const title = translate.instant(\n 'igo.context.contextImportExport.import.unreadable.title'\n );\n const message = translate.instant(\n 'igo.context.contextImportExport.import.unreadable.text',\n {\n value: file.name\n }\n );\n messageService.error(message, title);\n}\n\nexport function handleNothingToImportError(\n file: File,\n messageService: MessageService,\n languageService: LanguageService\n) {\n const translate = languageService.translate;\n const title = translate.instant(\n 'igo.context.contextImportExport.import.empty.title'\n );\n const message = translate.instant(\n 'igo.context.contextImportExport.import.empty.text',\n {\n value: file.name\n }\n );\n messageService.error(message, title);\n}\n\nexport function addContextToContextList(\n context: DetailedContext,\n contextTitle: string,\n contextService: ContextService\n) {\n context.title = contextTitle;\n context.imported = true;\n contextService.contexts$.value.ours.unshift(context);\n contextService.contexts$.next(contextService.contexts$.value);\n contextService.importedContext.unshift(context);\n contextService.loadContext(context.uri);\n}\n\nexport function getFileExtension(file: File): string {\n return file.name.split('.').pop().toLowerCase();\n}\n\nexport function computeLayerTitleFromFile(file: File): string {\n return file.name.substr(0, file.name.lastIndexOf('.'));\n}\n\nexport function addImportedFeaturesToMap(\n olFeatures: OlFeature<OlGeometry>[],\n map: IgoMap,\n layerTitle: string\n): VectorLayer {\n const r = Math.floor(Math.random() * 255);\n const g = Math.floor(Math.random() * 255);\n const b = Math.floor(Math.random() * 255);\n const stroke = new olStyle.Stroke({\n color: [r, g, b, 1],\n width: 2\n });\n\n const fill = new olStyle.Fill({\n color: [r, g, b, 0.4]\n });\n const sourceOptions: FeatureDataSourceOptions & QueryableDataSourceOptions = {\n type: 'vector',\n queryable: true\n };\n const source = new FeatureDataSource(sourceOptions);\n source.ol.addFeatures(olFeatures);\n const layer = new VectorLayer({\n title: layerTitle,\n isIgoInternalLayer: true,\n source,\n style: new olStyle.Style({\n stroke,\n fill,\n image: new olStyle.Circle({\n radius: 5,\n stroke,\n fill\n })\n })\n });\n map.addLayer(layer);\n\n return layer;\n}\n\nexport function addImportedFeaturesStyledToMap(\n olFeatures: OlFeature<OlGeometry>[],\n map: IgoMap,\n layerTitle: string,\n styleListService: StyleListService,\n styleService: StyleService\n): VectorLayer {\n let style;\n let distance: number;\n\n if (\n styleListService.getStyleList(layerTitle.toString() + '.styleByAttribute')\n ) {\n const styleByAttribute: StyleByAttribute = styleListService.getStyleList(\n layerTitle.toString() + '.styleByAttribute'\n );\n\n style = (feature, resolution) => {\n return styleService.createStyleByAttribute(feature, styleByAttribute, resolution);\n };\n } else if (\n styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')\n ) {\n const clusterParam: ClusterParam = styleListService.getStyleList(\n layerTitle.toString() + '.clusterParam'\n );\n distance = styleListService.getStyleList(\n layerTitle.toString() + '.distance'\n );\n\n style = (feature, resolution) => {\n const baseStyle = styleService.createStyle(\n styleListService.getStyleList(layerTitle.toString() + '.clusterStyle'), feature, resolution\n );\n return styleService.createClusterStyle(feature, resolution, clusterParam, baseStyle);\n };\n } else if (styleListService.getStyleList(layerTitle.toString() + '.style')) {\n style = (feature, resolution) => styleService.createStyle(\n styleListService.getStyleList(layerTitle.toString() + '.style'), feature, resolution\n );\n } else {\n style = (feature, resolution) => styleService.createStyle(\n styleListService.getStyleList('default.style'), feature, resolution\n );\n }\n let source;\n\n if (styleListService.getStyleList(layerTitle.toString() + '.clusterStyle')) {\n const sourceOptions: ClusterDataSourceOptions &\n QueryableDataSourceOptions = {\n distance,\n type: 'cluster',\n queryable: true\n };\n source = new ClusterDataSource(sourceOptions);\n source.ol.source.addFeatures(olFeatures);\n } else {\n const sourceOptions: FeatureDataSourceOptions &\n QueryableDataSourceOptions = {\n type: 'vector',\n queryable: true\n };\n source = new FeatureDataSource(sourceOptions);\n source.ol.addFeatures(olFeatures);\n }\n\n const layer = new VectorLayer({\n title: layerTitle,\n isIgoInternalLayer: true,\n source,\n style\n });\n map.addLayer(layer);\n\n return layer;\n}\n","export class ImportError extends Error {}\n\nexport class ImportInvalidFileError extends ImportError {\n constructor() {\n super('Invalid file');\n Object.setPrototypeOf(this, ImportInvalidFileError.prototype);\n }\n}\n\nexport class ImportUnreadableFileError extends ImportError {\n constructor() {\n super('Failed to read file');\n Object.setPrototypeOf(this, ImportUnreadableFileError.prototype);\n }\n}\n\nexport class ImportNothingToImportError extends ImportError {\n constructor() {\n super('Nothing to import');\n Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\n }\n}\n\nexport class ImportSizeError extends ImportError {\n constructor() {\n super('File is too large');\n Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\n }\n}\n\nexport class ImportSRSError extends ImportError {\n constructor() {\n super('Invalid SRS definition');\n Object.setPrototypeOf(this, ImportNothingToImportError.prototype);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { ConfigService } from '@igo2/core';\n\nimport {\n ImportInvalidFileError,\n ImportUnreadableFileError,\n ImportSizeError\n} from './context-import.errors';\nimport { getFileExtension } from './context-import.utils';\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextImportService {\n static allowedMimeTypes = ['application/json'];\n\n static allowedExtensions = 'json';\n\n private clientSideFileSizeMax: number;\n\n constructor(private config: ConfigService) {\n const configFileSizeMb = this.config.getConfig(\n 'importExport.clientSideFileSizeMaxMb'\n );\n this.clientSideFileSizeMax =\n (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);\n }\n\n import(file: File): Observable<DetailedContext> {\n return this.importAsync(file);\n }\n\n private getFileImporter(\n file: File\n ): (\n file: File,\n observer: Observer<DetailedContext>,\n projectionIn: string,\n projectionOut: string\n ) => void {\n const extension = getFileExtension(file);\n const mimeType = file.type;\n const allowedMimeTypes = [...ContextImportService.allowedMimeTypes];\n const allowedExtensions = ContextImportService.allowedExtensions;\n\n if (\n allowedMimeTypes.indexOf(mimeType) < 0 &&\n allowedExtensions.indexOf(extension) < 0\n ) {\n return undefined;\n } else if (\n mimeType === 'application/json' ||\n extension === ContextImportService.allowedExtensions\n ) {\n return this.importFile;\n }\n return undefined;\n }\n\n private importAsync(file: File): Observable<DetailedContext> {\n const doImport = (observer: Observer<DetailedContext>) => {\n if (file.size >= this.clientSideFileSizeMax) {\n observer.error(new ImportSizeError());\n return;\n }\n const importer = this.getFileImporter(file);\n if (importer === undefined) {\n observer.error(new ImportInvalidFileError());\n return;\n }\n\n importer.call(this, file, observer);\n };\n\n return new Observable(doImport);\n }\n\n private importFile(file: File, observer: Observer<DetailedContext>) {\n const reader = new FileReader();\n\n reader.onload = (event: any) => {\n try {\n const context = this.parseContextFromFile(file, event.target.result);\n observer.next(context);\n } catch (e) {\n observer.error(new ImportUnreadableFileError());\n }\n\n observer.complete();\n };\n\n reader.onerror = (evt) => {\n observer.error(new ImportUnreadableFileError());\n };\n\n reader.readAsText(file, 'UTF-8');\n }\n\n private parseContextFromFile(file: File, data: string): DetailedContext {\n const context: DetailedContext = JSON.parse(data);\n return context;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { downloadContent } from '@igo2/utils';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { ExportNothingToExportError } from './context-export.errors';\nimport { Observer, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextExportService {\n\n export(res: DetailedContext): Observable<void> {\n return this.exportAsync(res);\n }\n\n protected exportAsync(res: DetailedContext): Observable<void> {\n const doExport = (observer: Observer<void>) => {\n const nothingToExport = this.nothingToExport(res);\n if (nothingToExport === true) {\n observer.error(new ExportNothingToExportError());\n return;\n }\n const contextJSON = JSON.stringify(res);\n downloadContent(contextJSON, 'text/json;charset=utf-8', `${res.uri}.json`);\n observer.complete();\n };\n return new Observable(doExport);\n }\n\n protected nothingToExport(res: DetailedContext): boolean {\n if (res.map === undefined) {\n return true;\n }\n return false;\n }\n}\n","export enum TypePermission {\n null,\n read,\n write\n}\n\nexport enum Scope {\n public,\n protected,\n private\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport {\n map,\n tap,\n catchError,\n debounceTime,\n mergeMap,\n first,\n skip\n} from 'rxjs/operators';\n\nimport olPoint from 'ol/geom/Point';\nimport GeoJSON from 'ol/format/GeoJSON';\nimport Cluster from 'ol/source/Cluster';\nimport olVectorSource from 'ol/source/Vector';\n\nimport { Tool } from '@igo2/common';\nimport { uuid, ObjectUtils } from '@igo2/utils';\nimport {\n ConfigService,\n RouteService,\n Message,\n MessageService,\n LanguageService,\n StorageService\n} from '@igo2/core';\n\nimport { AuthService } from '@igo2/auth';\nimport type { IgoMap, Layer } from '@igo2/geo';\n\nimport { TypePermission } from './context.enum';\nimport {\n ContextsList,\n ContextServiceOptions,\n Context,\n DetailedContext,\n ContextMapView,\n ContextPermission,\n ContextProfils\n} from './context.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextService {\n public context$ = new BehaviorSubject<DetailedContext>(undefined);\n public contexts$ = new BehaviorSubject<ContextsList>({ ours: [] });\n public defaultContextId$ = new BehaviorSubject<string>(undefined);\n public editedContext$ = new BehaviorSubject<DetailedContext>(undefined);\n public importedContext: Array<DetailedContext> = [];\n public toolsChanged$ = new Subject<DetailedContext>();\n private mapViewFromRoute: ContextMapView = {};\n private options: ContextServiceOptions;\n private baseUrl: string;\n\n // Until the ContextService is completely refactored, this is needed\n // to track the current tools\n private tools: Tool[];\n private toolbar: string[];\n\n get defaultContextUri(): string {\n return this.storageService.get('favorite.context.uri') as string || this._defaultContextUri || this.options.defaultContextUri;\n }\n set defaultContextUri(uri: string) {\n this._defaultContextUri = uri;\n }\n private _defaultContextUri: string;\n\n constructor(\n private http: HttpClient,\n private authService: AuthService,\n private languageService: LanguageService,\n private config: ConfigService,\n private messageService: MessageService,\n private storageService: StorageService,\n @Optional() private route: RouteService\n ) {\n this.options = Object.assign(\n {\n basePath: 'contexts',\n contextListFile: '_contexts.json',\n defaultContextUri: '_default'\n },\n this.config.getConfig('context')\n );\n\n this.baseUrl = this.options.url;\n\n this.readParamsFromRoute();\n\n if (this.authService.hasAuthService) {\n this.authService.logged$.subscribe((logged) => {\n if (logged) {\n this.contexts$.pipe(skip(1), first()).subscribe((c) => {\n this.handleContextsChange();\n });\n this.loadContexts();\n }\n });\n } else {\n this.loadContexts();\n this.handleContextsChange(false);\n }\n }\n\n get(permissions?: string[], hidden?: boolean): Observable<ContextsList> {\n let url = this.baseUrl + '/contexts';\n if (permissions && this.authService.authenticated) {\n url += '?permission=' + permissions.join();\n if (hidden) {\n url += '&hidden=true';\n }\n }\n return this.http.get<ContextsList>(url);\n }\n\n getById(id: string): Observable<Context> {\n const url = this.baseUrl + '/contexts/' + id;\n return this.http.get<Context>(url);\n }\n\n getDetails(id: string): Observable<DetailedContext> {\n const url = `${this.baseUrl}/contexts/${id}/details`;\n return this.http.get<DetailedContext>(url).pipe(\n catchError((res) => {\n this.handleError(res, id);\n throw res;\n })\n );\n }\n\n getDefault(): Observable<DetailedContext> {\n if (this.authService.authenticated) {\n const url = this.baseUrl + '/contexts/default';\n return this.http.get<DetailedContext>(url).pipe(\n tap((context) => {\n this.defaultContextId$.next(context.id);\n })\n );\n } else {\n const uri = this.storageService.get('favorite.context.uri') as string;\n this.defaultContextId$.next(uri);\n return this.getContextByUri(uri);\n }\n\n }\n\n getProfilByUser(): Observable<ContextProfils[]> {\n if (this.baseUrl) {\n const url = this.baseUrl + '/profils?';\n return this.http.get<ContextProfils[]>(url);\n }\n return of([]);\n }\n\n setDefault(id: string): Observable<any> {\n if (this.authService.authenticated) {\n const url = this.baseUrl + '/contexts/default';\n return this.http.post(url, { defaultContextId: id });\n } else {\n this.storageService.set('favorite.context.uri', id);\n return of(undefined);\n }\n }\n\n hideContext(id: string) {\n const url = this.baseUrl + '/contexts/' + id + '/hide';\n return this.http.post(url, {});\n }\n\n showContext(id: string) {\n const url = this.baseUrl + '/contexts/' + id + '/show';\n return this.http.post(url, {});\n }\n\n delete(id: string, imported = false): Observable<void> {\n const contexts: ContextsList = { ours: [] };\n Object.keys(this.contexts$.value).forEach(\n (key) =>\n (contexts[key] = this.contexts$.value[key].filter((c) => c.id !== id))\n );\n\n if (imported) {\n this.importedContext = this.importedContext.filter((c) => c.id !== id);\n return of(this.contexts$.next(contexts));\n }\n\n const url = this.baseUrl + '/contexts/' + id;\n return this.http.delete<void>(url).pipe(\n tap((res) => {\n this.contexts$.next(contexts);\n })\n );\n }\n\n create(context: DetailedContext): Observable<Context> {\n const url = this.baseUrl + '/contexts';\n return this.http.post<Context>(url, context).pipe(\n map((contextCreated) => {\n if (this.authService.authenticated) {\n contextCreated.permission = TypePermission[TypePermission.write];\n } else {\n contextCreated.permission = TypePermission[TypePermission.read];\n }\n this.contexts$.value.ours.unshift(contextCreated);\n this.contexts$.next(this.contexts$.value);\n return contextCreated;\n })\n );\n }\n\n clone(id: string, properties = {}): Observable<Context> {\n const url = this.baseUrl + '/contexts/' + id + '/clone';\n return this.http.post<Context>(url, properties).pipe(\n map((contextCloned) => {\n contextCloned.permission = TypePermission[TypePermission.write];\n this.contexts$.value.ours.unshift(contextCloned);\n this.contexts$.next(this.contexts$.value);\n return contextCloned;\n })\n );\n }\n\n update(id: string, context: Context): Observable<Context> {\n const url = this.baseUrl + '/contexts/' + id;\n return this.http.patch<Context>(url, context);\n }\n\n // =================================================================\n\n addToolAssociation(contextId: string, toolId: string): Observable<void> {\n const url = `${this.baseUrl}/contexts/${contextId}/tools`;\n const association = {\n toolId\n };\n return this.http.post<void>(url, association);\n }\n\n deleteToolAssociation(contextId: string, toolId: string): Observable<any> {\n const url = `${this.baseUrl}/contexts/${contextId}/tools/${toolId}`;\n return this.http.delete(url);\n }\n\n getPermissions(id: string): Observable<ContextPermission[]> {\n const url = this.baseUrl + '/contexts/' + id + '/permissions';\n return this.http.get<ContextPermission[]>(url);\n }\n\n addPermissionAssociation(\n contextId: string,\n profil: string,\n type: TypePermission\n ): Observable<ContextPermission[]> {\n const url = `${this.baseUrl}/contexts/${contextId}/permissions`;\n const association = {\n profil,\n typePermission: type\n };\n\n return this.http.post<ContextPermission[]>(url, association).pipe(\n catchError((res) => {\n this.handleError(res, undefined, true);\n throw [res]; // TODO Not sure about this.\n })\n );\n }\n\n deletePermissionAssociation(\n contextId: string,\n permissionId: string\n ): Observable<void> {\n const url = `${this.baseUrl}/contexts/${contextId}/permissions/${permissionId}`;\n return this.http.delete<void>(url);\n }\n\n // ======================================================================\n\n getLocalContexts(): Observable<ContextsList> {\n const url = this.getPath(this.options.contextListFile);\n return this.http.get<ContextsList>(url).pipe(\n map((res: any) => {\n return { ours: res };\n })\n );\n }\n\n getLocalContext(uri: string): Observable<DetailedContext> {\n const url = this.getPath(`${uri}.json`);\n return this.http.get<DetailedContext>(url).pipe(\n mergeMap((res) => {\n if (!res.base) {\n return of(res);\n }\n const urlBase = this.getPath(`${res.base}.json`);\n return this.http.get<DetailedContext>(urlBase).pipe(\n map((resBase: DetailedContext) => {\n const resMerge = res;\n resMerge.map = ObjectUtils.mergeDeep(resBase.map, res.map);\n resMerge.layers = (resBase.layers || [])\n .concat(res.layers || [])\n .reverse()\n .filter(\n (l, index, self) =>\n !l.id || self.findIndex((l2) => l2.id === l.id) === index\n )\n .reverse();\n resMerge.toolbar = res.toolbar || resBase.toolbar;\n resMerge.message = res.message || resBase.message;\n resMerge.messages = res.messages || resBase.messages;\n resMerge.tools = (res.tools || [])\n .concat(resBase.tools || [])\n .filter(\n (t, index, self) =>\n self.findIndex((t2) => t2.name === t.name) === index\n );\n return resMerge;\n }),\n catchError((err) => {\n this.handleError(err, uri);\n throw err;\n })\n );\n }),\n catchError((err2) => {\n this.handleError(err2, uri);\n throw err2;\n })\n );\n }\n\n loadContexts(permissions?: string[], hidden?: boolean) {\n let request;\n if (this.baseUrl) {\n request = this.get(permissions, hidden);\n } else {\n request = this.getLocalContexts();\n }\n request.subscribe((contexts) => {\n contexts.ours = this.importedContext.concat(contexts.ours);\n this.contexts$.next(contexts);\n });\n }\n\n loadDefaultContext() {\n const loadFct = (direct = false) => {\n if (!direct && this.baseUrl && this.authService.authenticated) {\n this.getDefault().subscribe(\n (_context: DetailedContext) => {\n this.defaultContextUri = _context.uri;\n this.addContextToList(_context);\n this.setContext(_context);\n },\n () => {\n this.defaultContextId$.next(undefined);\n this.loadContext(this.defaultContextUri);\n }\n );\n } else {\n this.loadContext(this.defaultContextUri);\n }\n };\n\n if (this.route && this.route.options.contextKey) {\n this.route.queryParams.pipe(debounceTime(100)).subscribe((params) => {\n const contextParam = params[this.route.options.contextKey as string];\n let direct = false;\n if (contextParam) {\n this.defaultContextUri = contextParam;\n direct = true;\n }\n loadFct(direct);\n });\n } else {\n loadFct();\n }\n }\n\n loadContext(uri: string) {\n const context = this.context$.value;\n\n if (context && context.uri === uri) {\n return;\n }\n\n this.getContextByUri(uri)\n .pipe(first())\n .subscribe(\n (_context: DetailedContext) => {\n this.addContextToList(_context);\n this.setContext(_context);\n },\n (err) => {\n if (uri !== this.options.defaultContextUri) {\n this.loadContext(this.options.defaultContextUri);\n }\n }\n );\n }\n\n setContext(context: DetailedContext) {\n this.handleContextMessage(context);\n const currentContext = this.context$.value;\n if (currentContext && context && context.id === currentContext.id) {\n if (context.map.view.keepCurrentView === undefined) {\n context.map.view.keepCurrentView = true;\n }\n this.context$.next(context);\n return;\n }\n\n if (!context.map) {\n context.map = { view: {} };\n }\n\n Object.assign(context.map.view, this.mapViewFromRoute);\n\n this.context$.next(context);\n }\n\n loadEditedContext(uri: string) {\n this.getContextByUri(uri).subscribe((_context: DetailedContext) => {\n this.setEditedContext(_context);\n });\n }\n\n setEditedContext(context: DetailedContext) {\n this.editedContext$.next(context);\n }\n\n getContextFromMap(igoMap: IgoMap, empty?: boolean): DetailedContext {\n const view = igoMap.ol.getView();\n const proj = view.getProjection().getCode();\n const center: any = new olPoint(view.getCenter()).transform(\n proj,\n 'EPSG:4326'\n );\n\n const context = {\n uri: uuid(),\n title: '',\n scope: 'private',\n map: {\n view: {\n center: center.getCoordinates(),\n zoom: view.getZoom(),\n projection: proj,\n maxZoomOnExtent: igoMap.viewController.maxZoomOnExtent\n }\n },\n layers: [],\n tools: []\n };\n\n let layers = [];\n if (empty === true) {\n layers = igoMap.layers$\n .getValue()\n .filter(\n (lay) =>\n lay.baseLayer === true ||\n lay.options.id === 'searchPointerSummaryId'\n )\n .sort((a, b) => a.zIndex - b.zIndex);\n } else {\n layers = igoMap.layers$.getValue().filter(lay => !lay.id.includes('WfsWorkspaceTableDest')).sort((a, b) => a.zIndex - b.zIndex);\n }\n\n let i = 0;\n for (const l of layers) {\n const layer: any = l;\n const opts = {\n id: layer.options.id ? String(layer.options.id) : undefined,\n layerOptions: {\n title: layer.options.title,\n zIndex: ++i,\n visible: layer.visible\n },\n sourceOptions: {\n type: layer.dataSource.options.type,\n params: layer.dataSource.options.params,\n url: layer.dataSource.options.url,\n queryable: layer.queryable\n }\n };\n if (opts.sourceOptions.type) {\n context.layers.push(opts);\n }\n }\n\n context.tools = this.tools.map((tool) => {\n return { id: String(tool.id), global: tool.global };\n });\n\n return context;\n }\n\n getContextFromLayers(\n igoMap: IgoMap,\n layers: Layer[],\n name: string\n ): DetailedContext {\n const currentContext = this.context$.getValue();\n const view = igoMap.ol.getView();\n const proj = view.getProjection().getCode();\n const center: any = new olPoint(view.getCenter()).transform(\n proj,\n 'EPSG:4326'\n );\n\n const context = {\n uri: name,\n title: name,\n map: {\n view: {\n center: center.getCoordinates(),\n zoom: view.getZoom(),\n projection: proj\n }\n },\n layers: [],\n toolbar: [],\n tools: [],\n extraFeatures: []\n };\n\n const currentLayers = igoMap.layers$.getValue();\n context.layers = currentLayers\n .filter((l) => l.baseLayer)\n .map((l) => {\n return {\n baseLayer: true,\n sourceOptions: l.options.sourceOptions,\n title: l.options.title,\n visible: l.visible\n };\n });\n\n layers.forEach((layer) => {\n const layerFound = currentContext.layers.find(\n (contextLayer) =>\n layer.id === contextLayer.source.id && !contextLayer.baseLayer\n );\n\n if (layerFound) {\n let layerStyle = layerFound[`style`];\n if (layerFound[`styleByAttribute`]) {\n layerStyle = undefined;\n } else if (layerFound[`clusterBaseStyle`]) {\n layerStyle = undefined;\n delete layerFound.sourceOptions[`source`];\n delete layerFound.sourceOptions[`format`];\n }\n const opts = {\n baseLayer: layerFound.baseLayer,\n title: layer.options.title,\n zIndex: layer.zIndex,\n styleByAttribute: layerFound[`styleByAttribute`],\n clusterBaseStyle: layerFound[`clusterBaseStyle`],\n style: layerStyle,\n clusterParam: layerFound[`clusterParam`],\n visible: layer.visible,\n opacity: layer.opacity,\n sourceOptions: layerFound.sourceOptions\n };\n context.layers.push(opts);\n } else {\n if (!(layer.ol.getSource() instanceof olVectorSource)) {\n const catalogLayer = layer.options;\n catalogLayer.zIndex = layer.zIndex;\n delete catalogLayer.source;\n context.layers.push(catalogLayer);\n } else {\n let features;\n const writer = new GeoJSON();\n if (layer.ol.getSource() instanceof Cluster) {\n const clusterSource = layer.ol.getSource() as Cluster;\n features = writer.writeFeatures(\n clusterSource.getFeatures(),\n {\n dataProjection: 'EPSG:4326',\n featureProjection: 'EPSG:3857'\n }\n );\n } else {\n const source = layer.ol.getSource() as any;\n features = writer.writeFeatures(\n source.getFeatures(),\n {\n dataProjection: 'EPSG:4326',\n featureProjection: 'EPSG:3857'\n }\n );\n }\n features = JSON.parse(features);\n features.name = layer.options.title;\n context.extraFeatures.push(features);\n }\n }\n });\n\n context.toolbar = this.toolbar;\n context.tools = this.tools;\n\n return context;\n }\n\n setTools(tools: Tool[]) {\n this.tools = tools;\n }\n\n setToolbar(toolbar: string[]) {\n this.toolbar = toolbar;\n }\n\n private handleContextMessage(context: DetailedContext) {\n if (this.context$.value && context.uri && this.context$.value.uri !== context.uri) {\n this.messageService.removeAllAreNotError();\n }\n\n context.messages = context.messages ? context.messages : [];\n context.messages.push(context.message);\n context.messages.map(message => {\n if (message) {\n message.title = message.title\n ? this.languageService.translate.instant(message.title)\n : undefined;\n message.text = message.text\n ? this.languageService.translate.instant(message.text)\n : undefined;\n this.messageService.message(message as Message);\n }\n });\n }\n\n private getContextByUri(uri: string): Observable<DetailedContext> {\n if (this.baseUrl) {\n let contextToLoad;\n for (const key of Object.keys(this.contexts$.value)) {\n contextToLoad = this.contexts$.value[key].find((c) => {\n return c.uri === uri;\n });\n if (contextToLoad) {\n break;\n }\n }\n\n if (contextToLoad && contextToLoad.imported) {\n return of(contextToLoad);\n }\n\n // TODO : use always id or uri\n const id = contextToLoad ? contextToLoad.id : uri;\n return this.getDetails(id);\n }\n\n const importedContext = this.contexts$.value.ours.find((currentContext) => {\n return currentContext.uri === uri && currentContext.imported === true;\n });\n\n if (importedContext) {\n return of(importedContext);\n } else {\n return this.getLocalContext(uri);\n }\n }\n\n getContextLayers(igoMap: IgoMap) {\n const layers: Layer[] = [];\n const mapLayers = igoMap.layers$.getValue();\n mapLayers.forEach((layer) => {\n if (!layer.baseLayer && layer.options.id !== 'searchPointerSummaryId') {\n layers.push(layer);\n }\n });\n return layers;\n }\n\n private readParamsFromRoute() {\n if (!this.route) {\n return;\n }\n\n this.route.queryParams.subscribe((params) => {\n const centerKey = this.route.options.centerKey;\n if (centerKey && params[centerKey as string]) {\n const centerParams = params[centerKey as string];\n this.mapViewFromRoute.center = centerParams.split(',').map(Number);\n }\n\n const projectionKey = this.route.options.projectionKey;\n if (projectionKey && params[projectionKey as string]) {\n const projectionParam = params[projectionKey as string];\n this.mapViewFromRoute.projection = projectionParam;\n }\n\n const zoomKey = this.route.options.zoomKey;\n if (zoomKey && params[zoomKey as string]) {\n const zoomParam = params[zoomKey as string];\n this.mapViewFromRoute.zoom = Number(zoomParam);\n }\n });\n }\n\n private getPath(file: string) {\n const basePath = this.options.basePath.replace(/\\/$/, '');\n\n return `${basePath}/${file}`;\n }\n\n private handleError(\n error: HttpErrorResponse,\n uri: string,\n permissionError?: boolean\n ) {\n const context = this.contexts$.value.ours.find((obj) => obj.uri === uri);\n const titleContext = context ? context.title : uri;\n error.error.title = this.languageService.translate.instant(\n 'igo.context.contextManager.invalid.title'\n );\n\n error.error.message = this.languageService.translate.instant(\n 'igo.context.contextManager.invalid.text',\n { value: titleContext }\n );\n\n error.error.toDisplay = true;\n\n if (permissionError) {\n error.error.title = this.languageService.translate.instant(\n 'igo.context.contextManager.errors.addPermissionTitle'\n );\n error.error.message = this.languageService.translate.instant(\n 'igo.context.contextManager.errors.addPermission'\n );\n }\n this.messageService.error(error.error.message, error.error.title);\n }\n\n private handleContextsChange(\n keepCurrentContext = true\n ) {\n const context = this.context$.value;\n const editedContext = this.editedContext$.value;\n if (!context || context.uri === this.options.defaultContextUri) {\n keepCurrentContext = false;\n }\n if (!keepCurrentContext || !this.findContext(context)) {\n this.defaultContextUri = undefined;\n this.loadDefaultContext();\n } else {\n this.getContextByUri(context.uri)\n .pipe(first())\n .subscribe(\n (newContext: DetailedContext) => {\n this.toolsChanged$.next(newContext);\n }\n );\n\n if (this.baseUrl && this.authService.authenticated) {\n this.getDefault().subscribe();\n }\n }\n const editedFound = this.findContext(editedContext);\n if (!editedFound || editedFound.permission !== 'write') {\n this.setEditedContext(undefined);\n }\n }\n\n private addContextToList(context: Context) {\n const contextFound = this.findContext(context);\n if (!contextFound) {\n const contextSimplifie = {\n id: context.id,\n uri: context.uri,\n title: context.title,\n scope: context.scope,\n permission: TypePermission[TypePermission.read]\n };\n\n if (this.contexts$.value && this.contexts$.value.public) {\n this.contexts$.value.public.push(contextSimplifie);\n this.contexts$.next(this.contexts$.value);\n }\n }\n }\n\n private findContext(context: Context) {\n if (!context) {\n return false;\n }\n\n const contexts = this.contexts$.value;\n let found;\n for (const key of Object.keys(contexts)) {\n const value = contexts[key];\n found = value.find(\n (c) =>\n (context.id && c.id === context.id) ||\n (context.uri && c.uri === context.uri)\n );\n if (found) {\n break;\n }\n }\n\n return found;\n }\n}\n","<div class=\"import-export-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeImportExport\"\n (change)=\"onImportExportChange($event)\">\n <mat-button-toggle [value]=\"'import'\">\n {{'igo.geo.importExportForm.importTabTitle' | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{'igo.geo.importExportForm.exportTabTitle' | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<div *ngIf=\"activeImportExport === 'import'\">\n <form class=\"igo-form\">\n <div class=\"igo-form-button-group\">\n <button mat-raised-button type=\"button\" (click)=\"fileInput.click()\" [disabled]=\"loading$ | async\">\n {{'igo.geo.importExportForm.importButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n <input\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = null\"\n (change)=\"importFiles($event.target.files)\">\n </div>\n </form>\n <section class=\"mat-typography\">\n <h4>{{'igo.geo.importExportForm.importClarifications' | translate}}</h4>\n <ul>\n <li>{{'igo.geo.importExportForm.importSizeMax' | translate: {size: fileSizeMb} }}</li>\n </ul>\n </section>\n</div>\n\n\n<form class=\"igo-form\" *ngIf=\"activeImportExport === 'export'\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>{{'igo.context.contextImportExport.export.exportContextName' | translate}}</mat-label>\n <input formControlName=\"name\" matInput [value]=\"\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.context.contextImportExport.export.exportPlaceHolder' | translate}}</mat-label>\n <mat-select formControlName=\"layers\" multiple>\n <mat-option [value]=\"1\" (click)=\"selectAll(e)\" #e>\n {{'igo.context.contextImportExport.export.exportSelectAll' | translate}}\n </mat-option>\n <mat-divider></mat-divider>\n <mat-option *ngFor=\"let layer of userControlledLayerList\" [value]=\"layer\">{{layer.title}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\">\n {{'igo.geo.importExportForm.exportButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n </div>\n</form>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { MessageService, LanguageService, ConfigService } from '@igo2/core';\nimport { Layer, VectorLayer } from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { handleFileExportError } from '../shared/context-export.utils';\nimport {\n handleFileImportSuccess,\n handleFileImportError\n} from '../shared/context-import.utils';\nimport { handleFileExportSuccess } from '../shared/context-export.utils';\nimport { ContextService } from '../../context-manager/shared/context.service';\nimport { ContextImportService } from '../shared/context-import.service';\nimport { ContextExportService } from '../shared/context-export.service';\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\n\n@Component({\n selector: 'igo-context-import-export',\n templateUrl: './context-import-export.component.html',\n styleUrls: ['./context-import-export.component.scss']\n})\nexport class ContextImportExportComponent implements OnInit {\n public form: FormGroup;\n public layers: VectorLayer[];\n public inputProj: string = 'EPSG:4326';\n public loading$ = new BehaviorSubject(false);\n public forceNaming = false;\n public layerList: Layer[];\n public userControlledLayerList: Layer[];\n public res: DetailedContext;\n private clientSideFileSizeMax: number;\n public fileSizeMb: number;\n public activeImportExport: string = 'import';\n\n @Input() map: IgoMap;\n\n constructor(\n private contextImportService: ContextImportService,\n private contextExportService: ContextExportService,\n private languageService: LanguageService,\n private messageService: MessageService,\n private formBuilder: FormBuilder,\n private config: ConfigService,\n private contextService: ContextService\n ) {\n this.buildForm();\n }\n\n ngOnInit() {\n const configFileSizeMb = this.config.getConfig(\n 'importExport.clientSideFileSizeMaxMb'\n );\n this.clientSideFileSizeMax =\n (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);\n this.fileSizeMb = this.clientSideFileSizeMax / Math.pow(1024, 2);\n this.layerList = this.contextService.getContextLayers(this.map);\n this.userControlledLayerList = this.layerList.filter(layer => layer.showInLayerList);\n }\n\n importFiles(files: File[]) {\n this.loading$.next(true);\n for (const file of files) {\n this.contextImportService.import(file).pipe(take(1)).subscribe(\n (context: DetailedContext) => this.onFileImportSuccess(file, context),\n (error: Error) => this.onFileImportError(file, error),\n () => {\n this.loading$.next(false);\n }\n );\n }\n }\n\n handleExportFormSubmit(contextOptions) {\n this.loading$.next(true);\n this.res = this.contextService.getContextFromLayers(\n this.map,\n contextOptions.layers,\n contextOptions.name\n );\n this.res.imported = true;\n this.contextExportService.export(this.res).pipe(take(1)).subscribe(\n () => {},\n (error: Error) => this.onFileExportError(error),\n () => {\n this.onFileExportSuccess();\n this.loading$.next(false);\n }\n );\n }\n\n private buildForm() {\n this.form = this.formBuilder.group({\n layers: ['', [Validators.required]],\n name: ['', [Validators.required]]\n });\n }\n\n private onFileImportSuccess(file: File, context: DetailedContext) {\n handleFileImportSuccess(\n file,\n context,\n this.messageService,\n this.languageService,\n this.contextService\n );\n }\n\n private onFileImportError(file: File, error: Error) {\n this.loading$.next(false);\n handleFileImportError(\n file,\n error,\n this.messageService,\n this.languageService,\n this.fileSizeMb\n );\n }\n\n private onFileExportError(error: Error) {\n this.loading$.next(false);\n handleFileExportError(error, this.messageService, this.languageService);\n }\n\n private onFileExportSuccess() {\n handleFileExportSuccess(this.messageService, this.languageService);\n }\n\n selectAll(e) {\n if (e._selected) {\n this.form.controls.layers.setValue(this.userControlledLayerList);\n e._selected = true;\n }\n if (e._selected === false) {\n this.form.controls.layers.setValue([]);\n }\n }\n\n onImportExportChange(event) {\n this.activeImportExport = event.value;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoLanguageModule } from '@igo2/core';\nimport { ContextImportExportComponent } from './context-import-export/context-import-export.component';\nimport { IgoSpinnerModule } from '@igo2/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n CommonModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatDividerModule,\n MatTabsModule,\n MatSelectModule,\n MatOptionModule,\n MatFormFieldModule,\n MatInputModule,\n MatCheckboxModule,\n IgoLanguageModule,\n IgoSpinnerModule,\n MatTooltipModule,\n ],\n exports: [\n ContextImportExportComponent\n ],\n declarations: [\n ContextImportExportComponent\n ]\n})\nexport class IgoContextImportExportModule {\n static forRoot(): ModuleWithProviders<IgoContextImportExportModule> {\n return {\n ngModule: IgoContextImportExportModule\n };\n }\n}\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { MapViewOptions, MapBrowserComponent, MapControlsOptions, MapScaleLineOptions } from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { ContextService } from './context.service';\nimport { DetailedContext, ContextMapView } from './context.interface';\nimport { MediaService } from '@igo2/core';\n\n@Directive({\n selector: '[igoMapContext]'\n})\nexport class MapContextDirective implements OnInit, OnDestroy {\n private component: MapBrowserComponent;\n private context$$: Subscription;\n\n get map(): IgoMap {\n return this.component.map;\n }\n\n constructor(\n component: MapBrowserComponent,\n private contextService: ContextService,\n private mediaService: MediaService\n ) {\n this.component = component;\n }\n\n ngOnInit() {\n this.context$$ = this.contextService.context$\n .pipe(filter(context => context !== undefined))\n .subscribe(context => this.handleContextChange(context));\n }\n\n ngOnDestroy() {\n this.context$$.unsubscribe();\n }\n\n private handleContextChange(context: DetailedContext) {\n if (context.map === undefined) {\n return;\n }\n\n // This creates a new ol.Map when the context changes. Doing that\n // allows the print tool to work properly even when the map's canvas\n // has been tainted (CORS) with the layers of another context. This could\n // have some side effects such as unbinding all listeners on the first map.\n // A better solution would be to create a new map (preview) before\n // printing and avoid the tainted canvas issue. This will come later so\n // this snippet of code is kept here in case it takes too long becomes\n // an issue\n\n // const target = this.component.map.ol.getTarget();\n // this.component.map.ol.setTarget(undefined);\n // this.component.map.init();\n // this.component.map.ol.setTarget(target);\n\n const viewContext: ContextMapView = context.map.view;\n if (!this.component.view || viewContext.keepCurrentView !== true) {\n this.component.view = viewContext as MapViewOptions;\n }\n if (this.component.map.geolocationController) {\n this.component.map.geolocationController.updateGeolocationOptions(viewContext);\n }\n\n const controlsContext: MapControlsOptions = context.map.controls;\n if (!this.component.controls && controlsContext) {\n if (this.mediaService.isMobile()) {\n if (typeof(controlsContext.scaleLine) !== 'boolean') {\n const scaleLineOption = controlsContext.scaleLine as MapScaleLineOptions;\n if (!scaleLineOption.minWidth) {\n scaleLineOption.minWidth = Math.min(64, scaleLineOption.minWidth);\n controlsContext.scaleLine = scaleLineOption;\n }\n }\n }\n this.component.controls = controlsContext;\n }\n }\n}\n","import { Directive, OnInit, OnDestroy, Optional, Input } from '@angular/core';\n\nimport { Subscription, merge } from 'rxjs';\nimport { buffer, debounceTime, filter } from 'rxjs/operators';\n\nimport { RouteService, ConfigService } from '@igo2/core';\nimport {\n MapBrowserComponent,\n Layer,\n LayerService,\n LayerOptions,\n StyleListService,\n StyleService\n} from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { ContextService } from './context.service';\nimport { DetailedContext } from './context.interface';\nimport {\n addImportedFeaturesToMap,\n addImportedFeaturesStyledToMap\n} from '../../context-import-export/shared/context-import.utils';\nimport GeoJSON from 'ol/format/GeoJSON';\n\n@Directive({\n selector: '[igoLayerContext]'\n})\nexport class LayerContextDirective implements OnInit, OnDestroy {\n private context$$: Subscription;\n private queryParams: any;\n\n private contextLayers: Layer[] = [];\n\n @Input() removeLayersOnContextChange: boolean = true;\n\n get map(): IgoMap {\n return this.component.map;\n }\n\n constructor(\n private component: MapBrowserComponent,\n private contextService: ContextService,\n private layerService: LayerService,\n private configService: ConfigService,\n private styleListService: StyleListService,\n private styleService: StyleService,\n @Optional() private route: RouteService\n ) {}\n\n ngOnInit() {\n this.context$$ = this.contextService.context$\n .pipe(filter((context) => context !== undefined))\n .subscribe((context) => this.handleContextChange(context));\n\n if (\n this.route &&\n this.route.options.visibleOnLayersKey &&\n this.route.options.visibleOffLayersKey &&\n this.route.options.contextKey\n ) {\n const queryParams$$ = this.route.queryParams.subscribe((params) => {\n if (Object.keys(params).length > 0) {\n this.queryParams = params;\n queryParams$$.unsubscribe();\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.context$$.unsubscribe();\n }\n\n private handleContextChange(context: DetailedContext) {\n if (context.layers === undefined) {\n return;\n }\n if (this.removeLayersOnContextChange === true) {\n this.map.removeAllLayers();\n } else {\n this.map.removeLayers(this.contextLayers);\n }\n this.contextLayers = [];\n\n const layersAndIndex$ = merge(\n ...context.layers.map((layerOptions: LayerOptions, index: number) => {\n return this.layerService.createAsyncLayer(layerOptions, context.uri);\n })\n );\n\n layersAndIndex$\n .pipe(buffer(layersAndIndex$.pipe(debounceTime(500))))\n .subscribe((layers: Layer[]) => {\n layers = layers\n .filter((layer: Layer) => layer !== undefined)\n .map((layer) => {\n layer.visible = this.computeLayerVisibilityFromUrl(layer);\n layer.zIndex = layer.zIndex;\n\n return layer;\n });\n\n this.contextLayers.concat(layers);\n this.map.addLayers(layers);\n\n if (context.extraFeatures) {\n context.extraFeatures.forEach((featureCollection) => {\n const format = new GeoJSON();\n const title = featureCollection.name;\n featureCollection = JSON.stringify(featureCollection);\n featureCollection = format.readFeatures(featureCollection, {\n dataProjection: 'EPSG:4326',\n featureProjection: 'EPSG:3857'\n });\n if (!this.configService.getConfig('importWithStyle')) {\n addImportedFeaturesToMap(featureCollection, this.map, title);\n } else {\n addImportedFeaturesStyledToMap(\n featureCollection,\n this.map,\n title,\n this.styleListService,\n this.styleService\n );\n }\n });\n }\n });\n }\n\n private computeLayerVisibilityFromUrl(layer: Layer): boolean {\n const params = this.queryParams;\n const currentContext = this.contextService.context$.value.uri;\n const currentLayerid: string = layer.id;\n\n let visible = layer.visible;\n if (!params || !currentLayerid) {\n return visible;\n }\n\n const contextParams = params[this.route.options.contextKey as string];\n if (contextParams === currentContext || !contextParams) {\n let visibleOnLayersParams = '';\n let visibleOffLayersParams = '';\n let visiblelayers: string[] = [];\n let invisiblelayers: string[] = [];\n\n if (\n this.route.options.visibleOnLayersKey &&\n params[this.route.options.visibleOnLayersKey as string]\n ) {\n visibleOnLayersParams =\n params[this.route.options.visibleOnLayersKey as string];\n }\n if (\n this.route.options.visibleOffLayersKey &&\n params[this.route.options.visibleOffLayersKey as string]\n ) {\n visibleOffLayersParams =\n params[this.route.options.visibleOffLayersKey as string];\n }\n\n /* This order is important because to control whichever\n the order of * param. First whe open and close everything.*/\n if (visibleOnLayersParams === '*') {\n visible = true;\n }\n if (visibleOffLayersParams === '*') {\n visible = false;\n }\n\n // After, managing named layer by id (context.json OR id from datasource)\n visiblelayers = visibleOnLayersParams.split(',');\n invisiblelayers = visibleOffLayersParams.split(',');\n if (visiblelayers.indexOf(currentLayerid) > -1 || visiblelayers.indexOf(currentLayerid.toString()) > -1) {\n visible = true;\n }\n if (invisiblelayers.indexOf(currentLayerid) > -1 || invisiblelayers.indexOf(currentLayerid.toString()) > -1) {\n visible = false;\n }\n }\n\n return visible;\n }\n}\n","export enum ContextListControlsEnum {\n always = 'always',\n never = 'never',\n default = 'default'\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'igo-bookmark-dialog',\n templateUrl: './bookmark-dialog.component.html'\n})\nexport class BookmarkDialogComponent {\n public title: string;\n\n constructor(public dialogRef: MatDialogRef<BookmarkDialogComponent>) {}\n}\n","<h1 mat-dialog-title class=\"mat-typography\">{{ 'igo.context.bookmarkButton.dialog.title' | translate }}</h1>\n<div mat-dialog-content class=\"mat-typography\">\n <mat-form-field>\n <input matInput required autocomplete=\"off\"\n maxlength=\"128\"\n [placeholder]=\"'igo.context.bookmarkButton.dialog.placeholder' | translate\"\n [(ngModel)]=\"title\">\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button mat-button color=\"primary\"\n [disabled]=\"!title\"\n (click)=\"dialogRef.close(title)\">\n {{'igo.common.confirmDialog.confirmBtn' | translate}}\n </button>\n <button mat-button\n (click)=\"dialogRef.close(false)\">\n {{'igo.common.confirmDialog.cancelBtn' | translate}}\n </button>\n</div>\n","<mat-list-item\n class=\"mat-list-item\"\n [ngClass]=\"{'mat-list-item-light': hidden}\">\n <button mat-list-avatar\n *ngIf=\"auth.authenticated\"\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"auth.authenticated ? ('igo.context.contextManager.favorite' | translate) : ''\"\n matTooltipShowDelay=\"500\"\n [color]=\"default ? 'primary' : 'default'\"\n (click)=\"favoriteClick(context)\">\n <mat-icon *ngIf=\"!context.iconImage\" svgIcon=\"{{context.icon ? context.icon : context.scope === 'public' ? 'earth' : 'star'}}\"></mat-icon>\n <img *ngIf=\"context.iconImage\" [src]=\"context.iconImage\">\n </button>\n <button mat-list-avatar\n *ngIf=\"!auth.authenticated && showFavorite\"\n mat-icon-button\n igoStopPropagation\n [matTooltip]=\"'igo.context.contextManager.favorite' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"default ? 'primary' : 'default'\"\n (click)=\"favoriteClick(context)\">\n <mat-icon svgIcon=\"star\"></mat-icon>\n </button>\n <h4 matLine>{{context.title}}</h4>\n\n <div *ngIf=\"auth.authenticated\"\n igoStopPropagation\n class=\"igo-actions-container\">\n\n <button *ngIf=\"collapsed && selected && (context.permission === typePermission[typePermission.write] || context.imported)\"\n class=\"save-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.save' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"save.emit(context)\">\n <mat-icon svgIcon=\"content-save\"></mat-icon>\n </button>\n\n <div #actions class=\"igo-actions-expand-container\">\n\n <button *ngIf=\"canShare && !context.imported\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.managePermissions' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"managePermissions.emit(context)\">\n <mat-icon svgIcon=\"account-arrow-right\"></mat-icon>\n </button>\n\n <!--button\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.manageTools' | translate\"\n [color]=\"color\"\n (click)=\"manageTools.emit(context)\">\n <mat-icon svgIcon=\"widgets\"></mat-icon>\n </button-->\n\n <button *ngIf=\"!context.imported\"\n class=\"clone-button\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.clone' | translate\"\n matTooltipShowDelay=\"500\"\n [color]=\"color\"\n (click)=\"clone.emit(context)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n\n <button *ngIf=\"context.permission === typePermission[typePermission.write] && !context.imported\"\n class=\"edit-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.edit' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"edit.emit(context)\">\n <mat-icon svgIcon=\"pencil\"></mat-icon>\n </button>\n\n <button *ngIf=\"!context.hidden && !context.imported\"\n class=\"hide-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.hide' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"hide.emit(context)\">\n <mat-icon svgIcon=\"eye\"></mat-icon>\n </button>\n\n <button *ngIf=\"context.hidden && !context.imported\"\n class=\"hide-button\"\n mat-icon-button\n [color]=\"color\"\n [matTooltip]=\"'igo.context.contextManager.show' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"show.emit(context)\">\n <mat-icon svgIcon=\"eye-off\"></mat-icon>\n </button>\n\n <button *ngIf=\"context.permission === typePermission[typePermission.write] || context.imported\"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.context.contextManager.delete' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"delete.emit(context)\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n </div>\n\n <button\n class=\"actions-button\"\n mat-icon-button\n igoCollapse\n [color]=\"color\"\n [target]=\"actions\"\n [collapsed]=collapsed\n (click)=\"collapsed = !collapsed\">\n <mat-icon svgIcon=\"dots-horizontal\"></mat-icon>\n </button>\n\n </div>\n\n</mat-list-item>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy\n} from '@angular/core';\n\nimport { StorageService } from '@igo2/core';\nimport { AuthService } from '@igo2/auth';\nimport { TypePermission } from '../shared/context.enum';\nimport { DetailedContext } from '../shared/context.interface';\n\n@Component({\n selector: 'igo-context-item',\n templateUrl: './context-item.component.html',\n styleUrls: ['./context-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContextItemComponent {\n public typePermission = TypePermission;\n public color = 'primary';\n public collapsed = true;\n\n @Input() showFavorite: boolean = true;\n @Input() context: DetailedContext;\n @Input() default: boolean;\n @Input() selected: boolean;\n\n @Output() edit = new EventEmitter<DetailedContext>();\n @Output() delete = new EventEmitter<DetailedContext>();\n @Output() save = new EventEmitter<DetailedContext>();\n @Output() clone = new EventEmitter<DetailedContext>();\n @Output() hide = new EventEmitter<DetailedContext>();\n @Output() show = new EventEmitter<DetailedContext>();\n @Output() favorite = new EventEmitter<DetailedContext>();\n @Output() managePermissions = new EventEmitter<DetailedContext>();\n @Output() manageTools = new EventEmitter<DetailedContext>();\n\n get hidden(): boolean {\n return this.context.hidden;\n }\n\n get canShare(): boolean {\n return this.storageService.get('canShare') === true;\n }\n\n constructor(\n public auth: AuthService,\n private storageService: StorageService\n ) {}\n\n favoriteClick(context: DetailedContext) {\n this.favorite.emit(context);\n }\n}\n","<igo-list [navigation]=\"true\">\n <mat-form-field *ngIf=\"showFilter()\" [ngClass]=\"auth.authenticated && configService.getConfig('context') ? 'context-filter-min-width' : 'context-filter-max-width'\">\n <input\n matInput\n type=\"text\"\n [placeholder]=\"'igo.context.contextManager.filterPlaceHolder' | translate\"\n [(ngModel)]=\"term\">\n <button\n mat-button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n *ngIf=\"term.length\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n\n <button\n *ngIf=\"!sortedAlpha\"\n class=\"sort-alpha\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.sortAlphabetically' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort(true)\">\n <mat-icon color=\"primary\" svgIcon=\"sort-alphabetical-variant\"></mat-icon>\n </button>\n <button\n *ngIf=\"sortedAlpha\"\n class=\"sort-alpha\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.sortContextOrder' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort(false)\">\n <mat-icon color=\"warn\" svgIcon=\"sort-variant-remove\"></mat-icon>\n </button>\n\n <igo-actionbar *ngIf=\"auth.authenticated && configService.getConfig('context')\"\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"plus\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\">\n </igo-actionbar>\n\n <button *ngIf=\"auth.authenticated && configService.getConfig('context')\"\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\">\n <mat-icon color=\"primary\" svgIcon=\"filter-menu\"></mat-icon>\n </button>\n\n <mat-menu #accountMenu=\"matMenu\">\n <ng-container *ngFor=\"let user of users\">\n <span class=\"profilsMenu\">\n <mat-checkbox\n class=\"mat-menu-item\"\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"userSelection(user)\">\n </mat-checkbox>\n <button *ngIf=\"user.childs\"\n [matMenuTriggerFor]=\"subAccountMenu\"\n mat-menu-item>\n {{user.title}}\n </button>\n <button\n mat-menu-item\n *ngIf=\"!user.childs\">\n {{user.title}}\n </button>\n </span>\n\n <mat-menu #subAccountMenu=\"matMenu\">\n <mat-checkbox *ngFor=\"let child of user.childs\"\n class=\"mat-menu-item\"\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"userSelection(child, user)\">\n {{child.title}}\n </mat-checkbox>\n </mat-menu>\n </ng-container>\n\n <span class=\"profilsMenu\">\n <mat-checkbox\n class=\"mat-menu-item\"\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"showHiddenContexts.emit()\">\n </mat-checkbox>\n <button mat-menu-item>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </button>\n </span>\n </mat-menu>\n\n <ng-template ngFor let-groupContexts [ngForOf]=\"contexts$ | async | keyvalue\">\n\n <igo-collapsible *ngIf=\"groupContexts.value.length && auth.authenticated\" [title]=\"titleMapping[groupContexts.key] | translate\"\n [collapsed]=\"collapsed[titleMapping[groupContexts.key]]\" (toggle)=\"collapsed[titleMapping[groupContexts.key]] = $event\">\n\n <ng-template ngFor let-context [ngForOf]=\"groupContexts.value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"context.id && this.defaultContextId && this.defaultContextId === context.id\"\n (edit)=\"edit.emit(context)\"\n (delete)=\"delete.emit(context)\"\n (clone)=\"clone.emit(context)\"\n (save)=\"save.emit(context)\"\n (hide)=\"hideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"favorite.emit(context)\"\n (manageTools)=\"manageTools.emit(context)\"\n (managePermissions)=\"managePermissions.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\">\n </igo-context-item>\n </ng-template>\n\n </igo-collapsible>\n\n <ng-template *ngIf=\"groupContexts.value.length && !auth.authenticated\" ngFor let-context [ngForOf]=\"groupContexts.value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"configService.getConfig('favoriteContext4NonAuthenticated')\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"configService.getConfig('context') ? defaultContextId === context.id : defaultContextId === context.uri\"\n (favorite)=\"favorite.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\">\n </igo-context-item>\n </ng-template>\n\n </ng-template>\n</igo-list>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnInit,\n ChangeDetectionStrategy,\n OnDestroy\n} from '@angular/core';\n\nimport { AuthService } from '@igo2/auth';\nimport { ConfigService, LanguageService, StorageService } from '@igo2/core';\nimport type { IgoMap } from '@igo2/geo';\n\nimport {\n DetailedContext,\n ContextsList,\n ContextUserPermission,\n ContextProfils\n} from '../shared/context.interface';\nimport { ContextListControlsEnum } from './context-list.enum';\nimport {\n Subscription,\n BehaviorSubject,\n ReplaySubject,\n EMPTY,\n timer\n} from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { BookmarkDialogComponent } from '../../context-map-button/bookmark-button/bookmark-dialog.component';\nimport { debounce } from 'rxjs/operators';\nimport { ActionStore, ActionbarMode } from '@igo2/common';\nimport { ContextService } from '../shared/context.service';\n\n@Component({\n selector: 'igo-context-list',\n templateUrl: './context-list.component.html',\n styleUrls: ['./context-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContextListComponent implements OnInit, OnDestroy {\n private contextsInitial: ContextsList = { ours: [] };\n contexts$: BehaviorSubject<ContextsList> = new BehaviorSubject(\n this.contextsInitial\n );\n\n change$ = new ReplaySubject<void>(1);\n\n private change$$: Subscription;\n\n @Input()\n get contexts(): ContextsList {\n return this._contexts;\n }\n set contexts(value: ContextsList) {\n this._contexts = value;\n this.cdRef.detectChanges();\n this.next();\n }\n private _contexts: ContextsList = { ours: [] };\n\n @Input()\n get selectedContext(): DetailedContext {\n return this._selectedContext;\n }\n set selectedContext(value: DetailedContext) {\n this._selectedContext = value;\n this.cdRef.detectChanges();\n }\n private _selectedContext: DetailedContext;\n\n @Input()\n get map(): IgoMap {\n return this._map;\n }\n set map(value: IgoMap) {\n this._map = value;\n }\n private _map: IgoMap;\n\n @Input()\n get defaultContextId(): string {\n return this.configService.getConfig('context') ? this._defaultContextId :\n this.storageService.get('favorite.context.uri') as string || this._defaultContextId;\n }\n set defaultContextId(value: string) {\n this._defaultContextId = value;\n }\n private _defaultContextId: string;\n\n public collapsed: { contextScope }[] = [];\n\n @Output() select = new EventEmitter<DetailedContext>();\n @Output() unselect = new EventEmitter<DetailedContext>();\n @Output() edit = new EventEmitter<DetailedContext>();\n @Output() delete = new EventEmitter<DetailedContext>();\n @Output() save = new EventEmitter<DetailedContext>();\n @Output() clone = new EventEmitter<DetailedContext>();\n @Output() create = new EventEmitter<{ title: string; empty: boolean }>();\n @Output() hide = new EventEmitter<DetailedContext>();\n @Output() show = new EventEmitter<DetailedContext>();\n @Output() showHiddenContexts = new EventEmitter<boolean>();\n @Output() favorite = new EventEmitter<DetailedContext>();\n @Output() managePermissions = new EventEmitter<DetailedContext>();\n @Output() manageTools = new EventEmitter<DetailedContext>();\n @Output() filterPermissionsChanged = new EventEmitter<\n ContextUserPermission[]\n >();\n\n public titleMapping = {\n ours: 'igo.context.contextManager.ourContexts',\n shared: 'igo.context.contextManager.sharedContexts',\n public: 'igo.context.contextManager.publicContexts'\n };\n\n public users: ContextProfils[];\n public permissions: ContextUserPermission[] = [];\n\n public actionStore = new ActionStore([]);\n public actionbarMode = ActionbarMode.Overlay;\n\n public color = 'primary';\n\n public showHidden = false;\n\n /**\n * Context filter term\n */\n @Input()\n set term(value: string) {\n this._term = value;\n this.next();\n }\n get term(): string {\n return this._term;\n }\n public _term: string = '';\n\n get sortedAlpha(): boolean {\n return this._sortedAlpha;\n }\n set sortedAlpha(value: boolean) {\n this._sortedAlpha = value;\n this.next();\n }\n private _sortedAlpha: boolean = undefined;\n\n public showContextFilter = ContextListControlsEnum.always;\n\n public thresholdToFilter = 5;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private contextService: ContextService,\n public configService: ConfigService,\n public auth: AuthService,\n private dialog: MatDialog,\n private languageService: LanguageService,\n private storageService: StorageService\n ) {}\n\n ngOnInit() {\n this.change$$ = this.change$\n .pipe(\n debounce(() => {\n return this.contexts.ours.length === 0 ? EMPTY : timer(50);\n })\n )\n .subscribe(() => {\n this.contexts$.next(this.filterContextsList(this.contexts));\n });\n\n this.actionStore.load([\n {\n id: 'emptyContext',\n title: this.languageService.translate.instant(\n 'igo.context.contextManager.emptyContext'\n ),\n icon: 'map-outline',\n tooltip: this.languageService.translate.instant(\n 'igo.context.contextManager.emptyContextTooltip'\n ),\n handler: () => {\n this.createContext(true);\n }\n },\n {\n id: 'contextFromMap',\n title: this.languageService.translate.instant(\n 'igo.context.contextManager.contextMap'\n ),\n icon: 'map-check',\n tooltip: this.languageService.translate.instant(\n 'igo.context.contextManager.contextMapTooltip'\n ),\n handler: () => {\n this.createContext(false);\n }\n }\n ]);\n }\n\n private next() {\n this.change$.next();\n }\n\n private filterContextsList(contexts: ContextsList) {\n if (this.term === '') {\n if (this.sortedAlpha) {\n contexts = this.sortContextsList(contexts);\n }\n return contexts;\n } else {\n const ours = contexts.ours.filter((context) => {\n const filterNormalized = this.term\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n const contextTitleNormalized = context.title\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n return contextTitleNormalized.includes(filterNormalized);\n });\n\n let updateContexts: ContextsList = {\n ours\n };\n\n if (this.contexts.public) {\n const publics = contexts.public.filter((context) => {\n const filterNormalized = this.term\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n const contextTitleNormalized = context.title\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n return contextTitleNormalized.includes(filterNormalized);\n });\n updateContexts.public = publics;\n }\n\n if (this.contexts.shared) {\n const shared = contexts.shared.filter((context) => {\n const filterNormalized = this.term\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n const contextTitleNormalized = context.title\n .toLowerCase()\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n return contextTitleNormalized.includes(filterNormalized);\n });\n updateContexts.shared = shared;\n }\n\n if (this.sortedAlpha) {\n updateContexts = this.sortContextsList(updateContexts);\n }\n return updateContexts;\n }\n }\n\n ngOnDestroy() {\n this.change$$.unsubscribe();\n }\n\n public showFilter() {\n switch (this.showContextFilter) {\n case ContextListControlsEnum.always:\n return true;\n case ContextListControlsEnum.never:\n return false;\n default:\n let totalLength = this.contexts.ours.length;\n this.contexts.public\n ? (totalLength += this.contexts.public.length)\n : (totalLength += 0);\n this.contexts.shared\n ? (totalLength += this.contexts.shared.length)\n : (totalLength += 0);\n if (totalLength >= this.thresholdToFilter) {\n return true;\n }\n return false;\n }\n }\n\n sortContextsList(contexts: ContextsList) {\n if (contexts) {\n const contextsList = JSON.parse(JSON.stringify(contexts));\n contextsList.ours.sort((a, b) => {\n if (this.normalize(a.title) < this.normalize(b.title)) {\n return -1;\n }\n if (this.normalize(a.title) > this.normalize(b.title)) {\n return 1;\n }\n return 0;\n });\n\n if (contextsList.shared) {\n contextsList.shared.sort((a, b) => {\n if (this.normalize(a.title) < this.normalize(b.title)) {\n return -1;\n }\n if (this.normalize(a.title) > this.normalize(b.title)) {\n return 1;\n }\n return 0;\n });\n } else if (contextsList.public) {\n contextsList.public.sort((a, b) => {\n if (this.normalize(a.title) < this.normalize(b.title)) {\n return -1;\n }\n if (this.normalize(a.title) > this.normalize(b.title)) {\n return 1;\n }\n return 0;\n });\n }\n return contextsList;\n }\n }\n\n normalize(str: string) {\n return str\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase();\n }\n\n toggleSort(sortAlpha: boolean) {\n this.sortedAlpha = sortAlpha;\n }\n\n clearFilter() {\n this.term = '';\n }\n\n createContext(empty?: boolean) {\n this.dialog\n .open(BookmarkDialogComponent, { disableClose: false })\n .afterClosed()\n .pipe(take(1))\n .subscribe((title: string) => {\n if (title) {\n this.create.emit({ title, empty });\n }\n });\n }\n\n getPermission(user?): ContextUserPermission {\n if (user) {\n const permission = this.permissions.find((p) => p.name === user.name);\n return permission;\n }\n }\n\n userSelection(user, parent?) {\n const permission = this.getPermission(user);\n if (permission) {\n permission.checked = !permission.checked;\n this.storageService.set(\n 'contexts.permissions.' + permission.name,\n permission.checked\n );\n permission.indeterminate = false;\n }\n\n if (parent) {\n let indeterminate = false;\n\n for (const c of parent.childs) {\n const cPermission = this.getPermission(c);\n if (cPermission.checked !== permission.checked) {\n indeterminate = true;\n break;\n }\n }\n const parentPermission = this.getPermission(parent);\n if (parentPermission) {\n parentPermission.checked = permission.checked;\n this.storageService.set(\n 'contexts.permissions.' + parentPermission.name,\n permission.checked\n );\n parentPermission.indeterminate = indeterminate;\n }\n }\n\n if (user.childs) {\n for (const c of user.childs) {\n const childrenPermission = this.getPermission(c);\n if (\n childrenPermission &&\n childrenPermission.checked !== permission.checked\n ) {\n childrenPermission.checked = permission.checked;\n this.storageService.set(\n 'contexts.permissions.' + childrenPermission.name,\n permission.checked\n );\n }\n }\n }\n\n this.filterPermissionsChanged.emit(this.permissions);\n }\n\n hideContext(context: DetailedContext) {\n context.hidden = true;\n if (!this.showHidden) {\n const contexts: ContextsList = { ours: [], shared: [], public: [] };\n contexts.ours = this.contexts.ours.filter((c) => c.id !== context.id);\n contexts.shared = this.contexts.shared.filter((c) => c.id !== context.id);\n contexts.public = this.contexts.public.filter((c) => c.id !== context.id);\n this.contexts = contexts;\n }\n this.hide.emit(context);\n }\n\n showContext(context: DetailedContext) {\n context.hidden = false;\n this.show.emit(context);\n }\n}\n","import {\n Directive,\n Self,\n OnInit,\n OnDestroy,\n HostListener,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { MessageService, LanguageService, StorageService } from '@igo2/core';\nimport { AuthService } from '@igo2/auth';\nimport { ConfirmDialogService } from '@igo2/common';\nimport { MapService } from '@igo2/geo';\n\nimport {\n Context,\n DetailedContext,\n ContextsList,\n ContextUserPermission\n} from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\nimport { ContextListComponent } from './context-list.component';\n\n@Directive({\n selector: '[igoContextListBinding]'\n})\nexport class ContextListBindingDirective implements OnInit, OnDestroy {\n private component: ContextListComponent;\n private contexts$$: Subscription;\n private selectedContext$$: Subscription;\n private defaultContextId$$: Subscription;\n private previousMessageId;\n\n @HostListener('select', ['$event'])\n onSelect(context: Context) {\n this.contextService.loadContext(context.uri);\n }\n\n @HostListener('edit', ['$event'])\n onEdit(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n }\n\n @HostListener('save', ['$event'])\n onSave(context: Context) {\n const map = this.mapService.getMap();\n const contextFromMap = this.contextService.getContextFromMap(map);\n\n const msgSuccess = () => {\n const translate = this.languageService.translate;\n const message = translate.instant(\n 'igo.context.contextManager.dialog.saveMsg',\n {\n value: context.title\n }\n );\n const title = translate.instant(\n 'igo.context.contextManager.dialog.saveTitle'\n );\n this.messageService.success(message, title);\n };\n\n if (context.imported) {\n contextFromMap.title = context.title;\n this.contextService.delete(context.id, true);\n this.contextService.create(contextFromMap).subscribe((contextCreated) => {\n this.contextService.loadContext(contextCreated.uri);\n msgSuccess();\n });\n return;\n }\n\n const changes: any = {\n layers: contextFromMap.layers,\n map: {\n view: contextFromMap.map.view\n }\n };\n\n this.contextService.update(context.id, changes).subscribe(() => {\n msgSuccess();\n });\n }\n\n @HostListener('favorite', ['$event'])\n onFavorite(context: Context) {\n if (!context.id) {\n context.id = context.uri;\n }\n this.contextService.setDefault(context.id).subscribe(() => {\n if (this.previousMessageId) {\n this.messageService.remove(this.previousMessageId);\n }\n this.contextService.defaultContextId$.next(context.id);\n const translate = this.languageService.translate;\n const message = translate.instant(\n 'igo.context.contextManager.dialog.favoriteMsg',\n {\n value: context.title\n }\n );\n const title = translate.instant(\n 'igo.context.contextManager.dialog.favoriteTitle'\n );\n const messageObj = this.messageService.success(message, title);\n this.previousMessageId = messageObj.toastId;\n this.cdRef.detectChanges();\n });\n }\n\n @HostListener('manageTools', ['$event'])\n onManageTools(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n }\n\n @HostListener('managePermissions', ['$event'])\n onManagePermissions(context: Context) {\n this.contextService.loadEditedContext(context.uri);\n }\n\n @HostListener('delete', ['$event'])\n onDelete(context: Context) {\n const translate = this.languageService.translate;\n this.confirmDialogService\n .open(\n translate.instant('igo.context.contextManager.dialog.confirmDelete')\n )\n .subscribe((confirm) => {\n if (confirm) {\n this.contextService\n .delete(context.id, context.imported)\n .subscribe(() => {\n const message = translate.instant(\n 'igo.context.contextManager.dialog.deleteMsg',\n {\n value: context.title\n }\n );\n const title = translate.instant(\n 'igo.context.contextManager.dialog.deleteTitle'\n );\n this.messageService.info(message, title);\n });\n }\n });\n }\n\n @HostListener('clone', ['$event'])\n onClone(context: DetailedContext) {\n const properties = {\n title: context.title + '-copy',\n uri: context.uri + '-copy'\n };\n this.contextService.clone(context.id, properties).subscribe(() => {\n const translate = this.languageService.translate;\n const message = translate.instant(\n 'igo.context.contextManager.dialog.cloneMsg',\n {\n value: context.title\n }\n );\n const title = translate.instant(\n 'igo.context.contextManager.dialog.cloneTitle'\n );\n this.messageService.success(message, title);\n });\n }\n\n @HostListener('create', ['$event'])\n onCreate(opts: { title: string; empty: boolean }) {\n const { title, empty } = opts;\n const context = this.contextService.getContextFromMap(\n this.component.map,\n empty\n );\n context.title = title;\n this.contextService.create(context).subscribe(() => {\n const translate = this.languageService.translate;\n const titleD = translate.instant(\n 'igo.context.bookmarkButton.dialog.createTitle'\n );\n const message = translate.instant(\n 'igo.context.bookmarkButton.dialog.createMsg',\n {\n value: context.title\n }\n );\n this.messageService.success(message, titleD);\n this.contextService.loadContext(context.uri);\n });\n }\n\n @HostListener('filterPermissionsChanged')\n loadContexts() {\n const permissions = ['none'];\n for (const p of this.component.permissions) {\n if (p.checked === true || p.indeterminate === true) {\n permissions.push(p.name);\n }\n }\n this.component.showHidden\n ? this.contextService.loadContexts(permissions, true)\n : this.contextService.loadContexts(permissions, false);\n }\n\n @HostListener('showHiddenContexts')\n showHiddenContexts() {\n this.component.showHidden = !this.component.showHidden;\n this.storageService.set('contexts.showHidden', this.component.showHidden);\n this.loadContexts();\n }\n\n @HostListener('show', ['$event'])\n onShowContext(context: DetailedContext) {\n this.contextService.showContext(context.id).subscribe();\n }\n\n @HostListener('hide', ['$event'])\n onHideContext(context: DetailedContext) {\n this.contextService.hideContext(context.id).subscribe();\n }\n\n constructor(\n @Self() component: ContextListComponent,\n private contextService: ContextService,\n private mapService: MapService,\n private languageService: LanguageService,\n private confirmDialogService: ConfirmDialogService,\n private messageService: MessageService,\n private auth: AuthService,\n private storageService: StorageService,\n private cdRef: ChangeDetectorRef\n ) {\n this.component = component;\n }\n\n ngOnInit() {\n // Override input contexts\n this.component.contexts = { ours: [] };\n this.component.showHidden = this.storageService.get(\n 'contexts.showHidden'\n ) as boolean;\n\n this.contexts$$ = this.contextService.contexts$.subscribe((contexts) =>\n this.handleContextsChange(contexts)\n );\n\n this.defaultContextId$$ = this.contextService.defaultContextId$.subscribe(\n (id) => {\n this.component.defaultContextId = id;\n }\n );\n const storedContextUri = this.storageService.get('favorite.context.uri') as string;\n if (storedContextUri && !this.auth.authenticated) {\n this.contextService.defaultContextId$.next(storedContextUri);\n }\n\n // See feature-list.component for an explanation about the debounce time\n this.selectedContext$$ = this.contextService.context$\n .pipe(debounceTime(100))\n .subscribe((context) => (this.component.selectedContext = context));\n\n this.auth.authenticate$.subscribe((authenticate) => {\n if (authenticate) {\n this.contextService.getProfilByUser().subscribe((profils) => {\n this.component.users = profils;\n this.component.permissions = [];\n const profilsAcc = this.component.users.reduce((acc, cur) => {\n acc = acc.concat(cur);\n acc = cur.childs ? acc.concat(cur.childs) : acc;\n return acc;\n }, []);\n\n for (const user of profilsAcc) {\n const permission: ContextUserPermission = {\n name: user.name,\n checked: this.storageService.get(\n 'contexts.permissions.' + user.name\n ) as boolean\n };\n if (permission.checked === null) {\n permission.checked = true;\n }\n this.component.permissions.push(permission);\n }\n\n const permissions = ['none'];\n for (const p of this.component.permissions) {\n if (p.checked === true || p.indeterminate === true) {\n permissions.push(p.name);\n }\n }\n\n this.component.showHidden\n ? this.contextService.loadContexts(permissions, true)\n : this.contextService.loadContexts(permissions, false);\n });\n }\n });\n }\n\n ngOnDestroy() {\n this.contexts$$.unsubscribe();\n this.selectedContext$$.unsubscribe();\n this.defaultContextId$$.unsubscribe();\n }\n\n private handleContextsChange(contexts: ContextsList) {\n this.component.contexts = contexts;\n }\n}\n","<form class=\"igo-form\" [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\">\n\n <mat-form-field class=\"full-width\">\n <input matInput required\n maxlength=\"128\"\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n formControlName=\"title\">\n <mat-error>\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field id=\"uriInput\" class=\"full-width\">\n <span *ngIf=\"prefix\" class=\"prefix\">{{prefix}}-</span>\n <span class=\"fieldWrapper\">\n <input matInput\n maxlength=\"64\"\n floatLabel = \"always\"\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n formControlName=\"uri\">\n </span>\n </mat-form-field>\n\n <button\n id=\"copyButton\"\n type=\"button\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.contextManager.form.copy' | translate\"\n color=\"primary\"\n (click)=\"copyTextToClipboard()\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"submit\"\n [disabled]=\"!form.valid || disabled\">\n {{ 'igo.context.contextManager.form.edit' | translate }}\n </button>\n </div>\n\n</form>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\nimport { ObjectUtils, Clipboard } from '@igo2/utils';\nimport { MessageService, LanguageService } from '@igo2/core';\nimport { Context } from '../shared/context.interface';\n\n@Component({\n selector: 'igo-context-form',\n templateUrl: './context-form.component.html',\n styleUrls: ['./context-form.component.scss']\n})\nexport class ContextFormComponent implements OnInit {\n public form: FormGroup;\n public prefix: string;\n\n @Input()\n get btnSubmitText(): string {\n return this._btnSubmitText;\n }\n set btnSubmitText(value: string) {\n this._btnSubmitText = value;\n }\n private _btnSubmitText: string;\n\n @Input()\n get context(): Context {\n return this._context;\n }\n set context(value: Context) {\n this._context = value;\n this.buildForm();\n }\n private _context: Context;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled = false;\n\n // TODO: replace any by ContextOptions or Context\n @Output() submitForm: EventEmitter<any> = new EventEmitter();\n @Output() clone: EventEmitter<any> = new EventEmitter();\n @Output() delete: EventEmitter<any> = new EventEmitter();\n\n constructor(\n private formBuilder: FormBuilder,\n private languageService: LanguageService,\n private messageService: MessageService\n ) {}\n\n ngOnInit(): void {\n this.buildForm();\n }\n\n public handleFormSubmit(value) {\n let inputs = Object.assign({}, value);\n inputs = ObjectUtils.removeNull(inputs);\n inputs.uri = inputs.uri.replace(' ', '');\n if (inputs.uri) {\n inputs.uri = this.prefix + '-' + inputs.uri;\n } else {\n inputs.uri = this.prefix;\n }\n this.submitForm.emit(inputs);\n }\n\n public copyTextToClipboard() {\n const text = this.prefix + '-' + this.form.value.uri.replace(' ', '');\n const successful = Clipboard.copy(text);\n if (successful) {\n const translate = this.languageService.translate;\n const title = translate.instant(\n 'igo.context.contextManager.dialog.copyTitle'\n );\n const msg = translate.instant(\n 'igo.context.contextManager.dialog.copyMsg'\n );\n this.messageService.success(msg, title);\n }\n }\n\n private buildForm(): void {\n const context: any = this.context || {};\n\n const uriSplit = context.uri.split('-');\n this.prefix = uriSplit.shift();\n const uri = uriSplit.join('-');\n\n this.form = this.formBuilder.group({\n title: [context.title],\n uri: [uri || ' ']\n });\n }\n}\n","<igo-context-form *ngIf=\"context\"\n [btnSubmitText]=\"'igo.context.contextManager.save' | translate\"\n [context]=\"context\"\n (submitForm)=\"submitForm.emit($event)\">\n</igo-context-form>\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\n\nimport { Context } from '../shared/context.interface';\n\n@Component({\n selector: 'igo-context-edit',\n templateUrl: './context-edit.component.html'\n})\nexport class ContextEditComponent {\n @Input()\n get context(): Context {\n return this._context;\n }\n set context(value: Context) {\n this._context = value;\n this.refresh();\n }\n private _context: Context;\n\n @Output() submitForm: EventEmitter<Context> = new EventEmitter();\n\n constructor(private cd: ChangeDetectorRef) {}\n\n refresh() {\n this.cd.detectChanges();\n }\n}\n","import {\n Output,\n EventEmitter,\n Directive,\n Self,\n OnInit,\n OnDestroy,\n HostListener\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { MessageService, LanguageService } from '@igo2/core';\n\nimport { Context, DetailedContext } from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\nimport { ContextEditComponent } from './context-edit.component';\n\n@Directive({\n selector: '[igoContextEditBinding]'\n})\nexport class ContextEditBindingDirective implements OnInit, OnDestroy {\n private component: ContextEditComponent;\n private editedContext$$: Subscription;\n\n @Output() submitSuccessed: EventEmitter<Context> = new EventEmitter();\n\n @HostListener('submitForm', ['$event'])\n onEdit(context: Context) {\n const id = this.component.context.id;\n this.contextService.update(id, context).subscribe(() => {\n const translate = this.languageService.translate;\n const message = translate.instant('igo.context.contextManager.dialog.saveMsg', {\n value: context.title || this.component.context.title\n });\n const title = translate.instant('igo.context.contextManager.dialog.saveTitle');\n this.messageService.success(message, title);\n this.contextService.setEditedContext(undefined);\n this.submitSuccessed.emit(context);\n });\n }\n\n constructor(\n @Self() component: ContextEditComponent,\n private contextService: ContextService,\n private messageService: MessageService,\n private languageService: LanguageService\n ) {\n this.component = component;\n }\n\n ngOnInit() {\n this.editedContext$$ = this.contextService.editedContext$.subscribe(\n context => this.handleEditedContextChange(context)\n );\n }\n\n ngOnDestroy() {\n this.editedContext$$.unsubscribe();\n }\n\n private handleEditedContextChange(context: DetailedContext) {\n this.component.context = context;\n }\n}\n","<div *ngIf=\"context\">\n\n <div *ngIf=\"!canWrite\" class=\"scopeForm\">\n <h4>{{ 'igo.context.permission.readOnlyTitle' | translate }}</h4>\n <p>{{ 'igo.context.permission.readOnlyMsg' | translate }}</p>\n </div>\n\n <div *ngIf=\"canWrite\" class=\"scopeForm\">\n <mat-radio-group [(ngModel)]=\"context.scope\"\n (change)=\"scopeChanged.emit(context)\">\n <mat-radio-button value=\"private\">\n {{ 'igo.context.permission.scope.private' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"protected\">\n {{ 'igo.context.permission.scope.shared' | translate }}\n </mat-radio-button>\n <mat-radio-button *ngIf=\"authService.isAdmin\" value=\"public\">\n {{ 'igo.context.permission.scope.public' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <form *ngIf=\"context.scope !== 'private' && canWrite\" [formGroup]=\"form\"\n (ngSubmit)=\"handleFormSubmit(form.value)\">\n\n <mat-form-field class=\"full-width\">\n <input matInput required\n [placeholder]=\"'igo.context.permission.user' | translate\"\n [formControl]=\"formControl\"\n [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onProfilSelected($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let profil of this.profils\" [value]=\"profil\">\n {{profil.title}}<br>\n <small class=\"mat-typography\">{{profil.name}}</small>\n </mat-option>\n </mat-autocomplete>\n <mat-error>\n {{ 'igo.context.permission.profilRequired' | translate }}\n </mat-error>\n </mat-form-field>\n\n\n <mat-radio-group formControlName=\"typePermission\">\n <mat-radio-button value=\"read\">\n {{ 'igo.context.permission.read' | translate }}\n </mat-radio-button>\n <mat-radio-button value=\"write\">\n {{ 'igo.context.permission.write' | translate }}\n </mat-radio-button>\n </mat-radio-group>\n\n\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"submit\"\n [disabled]=\"!form.valid\">\n {{ 'igo.context.permission.addBtn' | translate }}\n </button>\n </div>\n\n </form>\n\n <igo-list *ngIf=\"permissions && context.scope !== 'private'\">\n <ng-template ngFor let-groupPermissions [ngForOf]=\"permissions | keyvalue\">\n <igo-collapsible\n *ngIf=\"groupPermissions.value.length\"\n [title]=\"'igo.context.permission.' + groupPermissions.key | translate\">\n\n <ng-template ngFor let-permission [ngForOf]=\"groupPermissions.value\">\n <mat-list-item>\n <mat-icon mat-list-avatar svgIcon=\"account-outline\"></mat-icon>\n <h4 mat-line>{{permission.profilTitle}} <small class=\"mat-typography\">{{permission.profil}}</small></h4>\n\n <div igoStopPropagation\n class=\"igo-actions-container\">\n\n <button *ngIf=\"canWrite || permission.profil === authService.decodeToken().user.sourceId\"\n mat-icon-button\n [matTooltip]=\"'igo.context.permission.delete' | translate\"\n matTooltipShowDelay=\"500\"\n color=\"warn\"\n (click)=\"removePermission.emit(permission)\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n </div>\n\n </mat-list-item>\n </ng-template>\n </igo-collapsible>\n </ng-template>\n </igo-list>\n\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { FormBuilder, FormGroup, FormControl } from '@angular/forms';\n\nimport {\n Context,\n ContextPermission,\n ContextPermissionsList,\n ContextProfils\n} from '../shared/context.interface';\nimport { TypePermission } from '../shared/context.enum';\n\nimport { HttpClient } from '@angular/common/http';\nimport { Subscription } from 'rxjs';\n\nimport { AuthService } from '@igo2/auth';\nimport { ConfigService } from '@igo2/core';\n\n@Component({\n selector: 'igo-context-permissions',\n templateUrl: './context-permissions.component.html',\n styleUrls: ['./context-permissions.component.scss']\n})\nexport class ContextPermissionsComponent implements OnInit {\n public form: FormGroup;\n\n @Input()\n get context(): Context {\n return this._context;\n }\n set context(value: Context) {\n this._context = value;\n this.cd.detectChanges();\n }\n private _context: Context;\n\n @Input()\n get permissions(): ContextPermissionsList {\n return this._permissions;\n }\n set permissions(value: ContextPermissionsList) {\n this._permissions = value;\n this.cd.detectChanges();\n }\n private _permissions: ContextPermissionsList;\n\n get profils(): ContextProfils[] {\n return this._profils;\n }\n set profils(value: ContextProfils[]) {\n this._profils = value;\n this.cd.detectChanges();\n }\n private _profils: ContextProfils[] = [];\n\n get canWrite(): boolean {\n return this.context.permission === TypePermission[TypePermission.write];\n }\n\n private baseUrlProfils;\n\n public formControl = new FormControl();\n formValueChanges$$: Subscription;\n\n @Output() addPermission: EventEmitter<ContextPermission> = new EventEmitter();\n @Output() removePermission: EventEmitter<ContextPermission> = new EventEmitter();\n @Output() scopeChanged: EventEmitter<Context> = new EventEmitter();\n\n constructor(private formBuilder: FormBuilder,\n private cd: ChangeDetectorRef,\n private http: HttpClient,\n public authService: AuthService,\n private config: ConfigService) {}\n\n ngOnInit(): void {\n this.buildForm();\n\n this.baseUrlProfils = this.config.getConfig('context.url') + '/profils-users?';\n\n this.formValueChanges$$ = this.formControl.valueChanges.subscribe((value) => {\n if (value.length) {\n this.http.get(this.baseUrlProfils + 'q=' + value).subscribe(profils => {\n this.profils = profils as ContextProfils[];\n });\n this.profils.filter((profil) => {\n const filterNormalized = value.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n const profilTitleNormalized = profil.title.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n const profilNameNormalized = profil.name.toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n const profilNormalized = profilNameNormalized + profilTitleNormalized;\n return profilNormalized.includes(filterNormalized);\n });\n } else {\n this.profils = [];\n }\n });\n }\n\n displayFn(profil?: ContextProfils): string | undefined {\n return profil ? profil.title : undefined;\n }\n\n public handleFormSubmit(value) {\n this.addPermission.emit(value);\n }\n\n private buildForm(): void {\n this.form = this.formBuilder.group({\n profil: [],\n typePermission: ['read']\n });\n }\n\n onProfilSelected(value) {\n this.form.setValue({\n profil: value.name,\n typePermission: this.form.value.typePermission\n });\n }\n}\n","import {\n Directive,\n Self,\n OnInit,\n OnDestroy,\n HostListener,\n ChangeDetectorRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { MessageService, LanguageService } from '@igo2/core';\n\nimport {\n Context,\n ContextPermission,\n DetailedContext\n} from '../shared/context.interface';\nimport { ContextService } from '../shared/context.service';\nimport { ContextPermissionsComponent } from './context-permissions.component';\n\n@Directive({\n selector: '[igoContextPermissionsBinding]'\n})\nexport class ContextPermissionsBindingDirective implements OnInit, OnDestroy {\n private component: ContextPermissionsComponent;\n private editedContext$$: Subscription;\n\n @HostListener('addPermission', ['$event'])\n onAddPermission(permission: ContextPermission) {\n const translate = this.languageService.translate;\n if (!permission.profil) {\n const message = translate.instant(\n 'igo.context.contextManager.errors.addPermissionEmpty'\n );\n const title = translate.instant(\n 'igo.context.contextManager.errors.addPermissionTitle'\n );\n this.messageService.error(message, title);\n return;\n }\n const contextId = this.component.context.id;\n this.contextService\n .addPermissionAssociation(\n contextId,\n permission.profil,\n permission.typePermission\n )\n .subscribe(profils => {\n for (const p of profils) {\n this.component.permissions[permission.typePermission].push(p);\n }\n const profil = permission.profil;\n const message = translate.instant(\n 'igo.context.permission.dialog.addMsg',\n {\n value: profil\n }\n );\n const title = translate.instant(\n 'igo.context.permission.dialog.addTitle'\n );\n this.messageService.success(message, title);\n this.cd.detectChanges();\n });\n }\n\n @HostListener('removePermission', ['$event'])\n onRemovePermission(permission: ContextPermission) {\n const contextId = this.component.context.id;\n this.contextService\n .deletePermissionAssociation(contextId, permission.id)\n .subscribe(() => {\n const index = this.component.permissions[\n permission.typePermission\n ].findIndex(p => {\n return p.id === permission.id;\n });\n this.component.permissions[permission.typePermission].splice(index, 1);\n\n const profil = permission.profil;\n const translate = this.languageService.translate;\n const message = translate.instant(\n 'igo.context.permission.dialog.deleteMsg',\n {\n value: profil\n }\n );\n const title = translate.instant(\n 'igo.context.permission.dialog.deleteTitle'\n );\n this.messageService.success(message, title);\n this.cd.detectChanges();\n });\n }\n\n @HostListener('scopeChanged', ['$event'])\n onScopeChanged(context: Context) {\n const scope = context.scope;\n this.contextService.update(context.id, { scope }).subscribe(() => {\n const translate = this.languageService.translate;\n const message = translate.instant(\n 'igo.context.permission.dialog.scopeChangedMsg',\n {\n value: translate.instant('igo.context.permission.scope.' + scope)\n }\n );\n const title = translate.instant(\n 'igo.context.permission.dialog.scopeChangedTitle'\n );\n this.messageService.success(message, title);\n });\n }\n\n constructor(\n @Self() component: ContextPermissionsComponent,\n private contextService: ContextService,\n private languageService: LanguageService,\n private messageService: MessageService,\n private cd: ChangeDetectorRef\n ) {\n this.component = component;\n }\n\n ngOnInit() {\n this.editedContext$$ = this.contextService.editedContext$.subscribe(\n context => this.handleEditedContextChange(context)\n );\n }\n\n ngOnDestroy() {\n this.editedContext$$.unsubscribe();\n this.contextService.editedContext$.next(undefined);\n }\n\n private handleEditedContextChange(context: DetailedContext) {\n this.component.context = context;\n\n if (context) {\n this.contextService\n .getPermissions(context.id)\n .subscribe(permissionsArray => {\n permissionsArray = permissionsArray || [];\n const permissions = {\n read: permissionsArray.filter(p => {\n return p.typePermission.toString() === 'read';\n }),\n write: permissionsArray.filter(p => {\n return p.typePermission.toString() === 'write';\n })\n };\n return (this.component.permissions = permissions);\n });\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { take } from 'rxjs/operators';\n\nimport { MessageService, LanguageService } from '@igo2/core';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { ContextService } from '../../context-manager/shared/context.service';\nimport { BookmarkDialogComponent } from './bookmark-dialog.component';\n\n@Component({\n selector: 'igo-bookmark-button',\n templateUrl: './bookmark-button.component.html',\n styleUrls: ['./bookmark-button.component.scss']\n})\nexport class BookmarkButtonComponent {\n @Input()\n get map(): IgoMap {\n return this._map;\n }\n set map(value: IgoMap) {\n this._map = value;\n }\n private _map: IgoMap;\n\n @Input()\n get color(): string {\n return this._color;\n }\n set color(value: string) {\n this._color = value;\n }\n private _color: string;\n\n constructor(\n private dialog: MatDialog,\n private contextService: ContextService,\n private languageService: LanguageService,\n private messageService: MessageService\n ) {}\n\n createContext() {\n this.dialog\n .open(BookmarkDialogComponent, { disableClose: false })\n .afterClosed()\n .pipe(take(1))\n .subscribe(title => {\n if (title) {\n const context = this.contextService.getContextFromMap(this.map);\n context.title = title;\n this.contextService.create(context).subscribe(() => {\n const translate = this.languageService.translate;\n const titleD = translate.instant(\n 'igo.context.bookmarkButton.dialog.createTitle'\n );\n const message = translate.instant(\n 'igo.context.bookmarkButton.dialog.createMsg',\n {\n value: context.title\n }\n );\n this.messageService.success(message, titleD);\n this.contextService.loadContext(context.uri);\n });\n }\n });\n }\n}\n","<div class=\"igo-bookmark-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.bookmarkButton.create' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color\"\n (click)=\"createContext()\">\n <mat-icon svgIcon=\"star\"></mat-icon>\n </button>\n</div>\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'igo-poi-dialog',\n templateUrl: './poi-dialog.component.html'\n})\nexport class PoiDialogComponent {\n public title: string;\n\n constructor(public dialogRef: MatDialogRef<PoiDialogComponent>) {}\n}\n","<h1 mat-dialog-title class=\"mat-typography\">{{ 'igo.context.poiButton.dialog.title' | translate }}</h1>\n<div mat-dialog-content>\n <mat-form-field>\n <input matInput required autocomplete=\"off\"\n [placeholder]=\"'igo.context.poiButton.dialog.placeholder' | translate\"\n [(ngModel)]=\"title\">\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button mat-button color=\"primary\"\n [disabled]=\"!title\"\n (click)=\"dialogRef.close(title)\">\n {{'igo.common.confirmDialog.confirmBtn' | translate}}\n </button>\n <button mat-button\n (click)=\"dialogRef.close(false)\">\n {{'igo.common.confirmDialog.cancelBtn' | translate}}\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, EMPTY } from 'rxjs';\n\nimport { ConfigService } from '@igo2/core';\nimport { Poi } from './poi.interface';\n\n@Injectable()\nexport class PoiService {\n private baseUrl: string;\n\n constructor(private http: HttpClient, private config: ConfigService) {\n this.baseUrl = this.config.getConfig('context.url');\n }\n\n get(): Observable<Poi[]> {\n if (!this.baseUrl) {\n return EMPTY;\n }\n\n const url = this.baseUrl + '/pois';\n return this.http.get<Poi[]>(url);\n }\n\n delete(id: string): Observable<void> {\n const url = this.baseUrl + '/pois/' + id;\n return this.http.delete<void>(url);\n }\n\n create(context: Poi): Observable<Poi> {\n const url = this.baseUrl + '/pois';\n return this.http.post<Poi>(url, context);\n }\n}\n","<mat-select [placeholder]=\"'igo.context.poiButton.placeholder' | translate\"\n floatPlaceholder=\"never\">\n\n <mat-option (click)=\"createPoi()\">\n <div class=\"titlePoi\">{{ 'igo.context.poiButton.create' | translate }}</div>\n <button igoStopPropagation class=\"addPoi buttonPoi\"\n mat-icon-button\n color=\"primary\"\n (click)=\"createPoi()\">\n <mat-icon svgIcon=\"plus-circle\"></mat-icon>\n </button>\n </mat-option>\n <mat-option *ngFor=\"let poi of pois\" [value]=\"poi.id\" (click)=\"zoomOnPoi(poi.id)\">\n <div class=\"titlePoi\">{{ poi.title }}</div>\n <button igoStopPropagation class=\"deletePoi buttonPoi\"\n mat-icon-button\n color=\"warn\"\n (click)=\"deletePoi(poi)\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n </mat-option>\n</mat-select>\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport * as olproj from 'ol/proj';\nimport * as oleasing from 'ol/easing';\nimport olPoint from 'ol/geom/Point';\n\nimport { MessageService, LanguageService } from '@igo2/core';\nimport { ConfirmDialogService } from '@igo2/common';\nimport { AuthService } from '@igo2/auth';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { PoiService } from './shared/poi.service';\nimport { Poi } from './shared/poi.interface';\nimport { PoiDialogComponent } from './poi-dialog.component';\n\n@Component({\n selector: 'igo-poi-button',\n templateUrl: './poi-button.component.html',\n styleUrls: ['./poi-button.component.scss']\n})\nexport class PoiButtonComponent implements OnInit, OnDestroy {\n @Input()\n get map(): IgoMap {\n return this._map;\n }\n set map(value: IgoMap) {\n this._map = value;\n }\n private _map: IgoMap;\n\n @Input()\n get color(): string {\n return this._color;\n }\n set color(value: string) {\n this._color = value;\n }\n private _color: string;\n\n public pois: Poi[];\n private authenticate$$: Subscription;\n\n constructor(\n private dialog: MatDialog,\n private authService: AuthService,\n private poiService: PoiService,\n private messageService: MessageService,\n private languageService: LanguageService,\n private confirmDialogService: ConfirmDialogService\n ) {}\n\n ngOnInit() {\n this.authenticate$$ = this.authService.authenticate$.subscribe(auth => {\n if (auth) {\n this.getPois();\n }\n });\n }\n\n ngOnDestroy() {\n this.authenticate$$.unsubscribe();\n }\n\n deletePoi(poi: Poi) {\n if (poi && poi.id) {\n const translate = this.languageService.translate;\n this.confirmDialogService\n .open(translate.instant('igo.context.poiButton.dialog.confirmDelete'))\n .subscribe(confirm => {\n if (confirm) {\n this.poiService.delete(poi.id).subscribe(\n () => {\n const title = translate.instant(\n 'igo.context.poiButton.dialog.deleteTitle'\n );\n const message = translate.instant(\n 'igo.context.poiButton.dialog.deleteMsg',\n {\n value: poi.title\n }\n );\n this.messageService.info(message, title);\n this.pois = this.pois.filter(p => p.id !== poi.id);\n },\n err => {\n err.error.title = 'DELETE Pois';\n this.messageService.showError(err);\n }\n );\n }\n });\n }\n }\n\n private getPois() {\n this.poiService.get().pipe(take(1)).subscribe(\n rep => {\n this.pois = rep;\n },\n err => {\n err.error.title = 'GET Pois';\n this.messageService.showError(err);\n }\n );\n }\n\n createPoi() {\n const view = this.map.ol.getView();\n const proj = view.getProjection().getCode();\n const center: any = new olPoint(view.getCenter()).transform(\n proj,\n 'EPSG:4326'\n );\n\n const poi: Poi = {\n title: '',\n x: center.getCoordinates()[0],\n y: center.getCoordinates()[1],\n zoom: view.getZoom()\n };\n\n this.dialog\n .open(PoiDialogComponent, { disableClose: false })\n .afterClosed()\n .subscribe(title => {\n if (title) {\n poi.title = title;\n this.poiService.create(poi).subscribe(\n newPoi => {\n const translate = this.languageService.translate;\n const titleD = translate.instant(\n 'igo.context.poiButton.dialog.createTitle'\n );\n const message = translate.instant(\n 'igo.context.poiButton.dialog.createMsg',\n {\n value: poi.title\n }\n );\n this.messageService.success(message, titleD);\n poi.id = newPoi.id;\n this.pois.push(poi);\n },\n err => {\n err.error.title = 'POST Pois';\n this.messageService.showError(err);\n }\n );\n }\n });\n }\n\n zoomOnPoi(id) {\n const poi = this.pois.find(p => p.id === id);\n\n const center = olproj.fromLonLat(\n [Number(poi.x), Number(poi.y)],\n this.map.projection\n );\n\n this.map.ol.getView().animate({\n center,\n zoom: poi.zoom,\n duration: 500,\n easing: oleasing.easeOut\n });\n }\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { StorageService } from '@igo2/core';\nimport { AuthService } from '@igo2/auth';\n\n@Component({\n selector: 'igo-user-dialog',\n templateUrl: './user-dialog.component.html'\n})\nexport class UserDialogComponent {\n public user;\n public exp;\n\n constructor(\n public dialogRef: MatDialogRef<UserDialogComponent>,\n private auth: AuthService,\n private storageService: StorageService\n ) {\n const decodeToken = this.auth.decodeToken();\n this.user = decodeToken.user;\n this.exp = new Date(decodeToken.exp * 1000).toLocaleString();\n }\n\n clearPreferences() {\n this.storageService.clear();\n }\n}\n","<h1 mat-dialog-title class=\"mat-typography\">{{'igo.context.userButton.infoTitle' | translate}}</h1>\n<div mat-dialog-content class=\"mat-typography\">\n <p>{{'igo.context.userButton.dialog.user' | translate}}: {{user.sourceId}}</p>\n <p>{{'igo.context.userButton.dialog.email' | translate}}: {{user.email}}</p>\n <p>{{'igo.context.userButton.dialog.expiration' | translate}}: {{exp}}</p>\n <button mat-stroked-button color=\"primary\" (click)=\"clearPreferences()\">\n {{'igo.context.userButton.dialog.clearPreferences' | translate}}\n </button>\n <br>\n</div>\n<div mat-dialog-actions style=\"justify-content: center\">\n <button mat-raised-button color=\"primary\"\n (click)=\"dialogRef.close(false)\">\n OK\n </button>\n</div>\n","import {\n trigger,\n state,\n style,\n transition,\n animate,\n AnimationTriggerMetadata\n} from '@angular/animations';\n\nexport function userButtonSlideInOut(): AnimationTriggerMetadata {\n return trigger('userButtonState', [\n state(\n 'collapse',\n style({\n width: '0',\n overflow: 'hidden',\n display: 'none'\n })\n ),\n state(\n 'expand',\n style({\n overflow: 'hidden',\n display: 'display'\n })\n ),\n transition('collapse => expand', animate('200ms')),\n transition('expand => collapse', animate('200ms'))\n ]);\n}\n","<div *ngIf=\"visible\" class=\"igo-user-button-container\">\n <div class=\"igo-user-button-more-container\" [@userButtonState]=\"expand ? 'expand' : 'collapse'\">\n\n <igo-poi-button *ngIf=\"hasApi\" [color]=\"color\" [map]=\"map\"></igo-poi-button>\n\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.infoTitle' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color\"\n (click)=\"infoUser()\">\n <mat-icon svgIcon=\"information-outline\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n [matTooltip]=\"'igo.context.userButton.logout' | translate\"\n matTooltipPosition=\"above\"\n [color]=\"color\"\n (click)=\"logout()\">\n <mat-icon svgIcon=\"power\"></mat-icon>\n </button>\n\n </div>\n\n <button\n mat-icon-button\n [color]=\"auth.authenticated ? color : 'warn'\"\n (click)=\"accountClick()\">\n <mat-icon svgIcon=\"account-box\"></mat-icon>\n </button>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { ConfigService } from '@igo2/core';\nimport { AuthService } from '@igo2/auth';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { UserDialogComponent } from './user-dialog.component';\nimport { userButtonSlideInOut } from './user-button.animation';\n\n@Component({\n selector: 'igo-user-button',\n templateUrl: './user-button.component.html',\n styleUrls: ['./user-button.component.scss'],\n animations: [userButtonSlideInOut()]\n})\nexport class UserButtonComponent {\n @Input()\n get map(): IgoMap {\n return this._map;\n }\n set map(value: IgoMap) {\n this._map = value;\n }\n private _map: IgoMap;\n\n @Input()\n get color(): string {\n return this._color;\n }\n set color(value: string) {\n this._color = value;\n }\n private _color: string;\n\n public expand = false;\n public visible = false;\n public hasApi = false;\n\n constructor(\n private dialog: MatDialog,\n private config: ConfigService,\n public auth: AuthService\n ) {\n this.visible = this.config.getConfig('auth') ? true : false;\n this.hasApi = this.config.getConfig('context.url') !== undefined;\n }\n\n accountClick() {\n if (this.auth.authenticated) {\n this.expand = !this.expand;\n } else {\n this.auth.logout();\n }\n }\n\n logout() {\n this.expand = false;\n this.auth.logout();\n }\n\n infoUser() {\n this.dialog.open(UserDialogComponent, { disableClose: false });\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoLanguageModule } from '@igo2/core';\nimport { IgoConfirmDialogModule, IgoStopPropagationModule } from '@igo2/common';\nimport { IgoAuthModule } from '@igo2/auth';\n\nimport { BookmarkButtonComponent } from './bookmark-button/bookmark-button.component';\nimport { BookmarkDialogComponent } from './bookmark-button/bookmark-dialog.component';\nimport { PoiButtonComponent } from './poi-button/poi-button.component';\nimport { PoiDialogComponent } from './poi-button/poi-dialog.component';\nimport { PoiService } from './poi-button/shared/poi.service';\nimport { UserDialogComponent } from './user-button/user-dialog.component';\nimport { UserButtonComponent } from './user-button/user-button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n IgoLanguageModule,\n IgoConfirmDialogModule,\n IgoStopPropagationModule,\n IgoAuthModule,\n FormsModule,\n MatIconModule,\n MatButtonModule,\n MatSelectModule,\n MatOptionModule,\n MatTooltipModule,\n MatFormFieldModule,\n MatDialogModule,\n MatInputModule\n ],\n exports: [BookmarkButtonComponent, PoiButtonComponent, UserButtonComponent, BookmarkDialogComponent],\n declarations: [\n BookmarkButtonComponent,\n BookmarkDialogComponent,\n PoiButtonComponent,\n PoiDialogComponent,\n UserButtonComponent,\n UserDialogComponent\n ],\n providers: [PoiService]\n})\nexport class IgoContextMapButtonModule {\n static forRoot(): ModuleWithProviders<IgoContextMapButtonModule> {\n return {\n ngModule: IgoContextMapButtonModule\n };\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoAuthModule } from '@igo2/auth';\nimport { IgoLanguageModule } from '@igo2/core';\nimport {\n IgoListModule,\n IgoKeyValueModule,\n IgoCollapsibleModule,\n IgoStopPropagationModule,\n IgoActionbarModule\n} from '@igo2/common';\n\nimport { MapContextDirective } from './shared/map-context.directive';\nimport { LayerContextDirective } from './shared/layer-context.directive';\nimport { ContextListComponent } from './context-list/context-list.component';\nimport { ContextListBindingDirective } from './context-list/context-list-binding.directive';\nimport { ContextItemComponent } from './context-item/context-item.component';\nimport { ContextFormComponent } from './context-form/context-form.component';\nimport { ContextEditComponent } from './context-edit/context-edit.component';\nimport { ContextEditBindingDirective } from './context-edit/context-edit-binding.directive';\nimport { ContextPermissionsComponent } from './context-permissions/context-permissions.component';\nimport { ContextPermissionsBindingDirective } from './context-permissions/context-permissions-binding.directive';\nimport { IgoContextMapButtonModule } from '../context-map-button/context-map-button.module';\nimport { IgoContextImportExportModule } from '../context-import-export/context-import-export.module';\n\nconst CONTEXT_DIRECTIVES = [\n MapContextDirective,\n LayerContextDirective\n];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatCheckboxModule,\n MatRadioModule,\n MatDialogModule,\n MatMenuModule,\n MatOptionModule,\n MatAutocompleteModule,\n IgoAuthModule,\n IgoListModule,\n IgoKeyValueModule,\n IgoCollapsibleModule,\n IgoStopPropagationModule,\n IgoLanguageModule,\n IgoContextImportExportModule,\n IgoContextMapButtonModule,\n IgoActionbarModule\n ],\n exports: [\n ContextListComponent,\n ContextListBindingDirective,\n ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextEditBindingDirective,\n ContextPermissionsComponent,\n ContextPermissionsBindingDirective,\n\n ...CONTEXT_DIRECTIVES\n ],\n declarations: [\n ContextListComponent,\n ContextListBindingDirective,\n ContextItemComponent,\n ContextFormComponent,\n ContextEditComponent,\n ContextEditBindingDirective,\n ContextPermissionsComponent,\n ContextPermissionsBindingDirective,\n\n ...CONTEXT_DIRECTIVES\n ]\n})\nexport class IgoContextManagerModule {\n static forRoot(): ModuleWithProviders<IgoContextManagerModule> {\n return {\n ngModule: IgoContextManagerModule\n };\n }\n}\n","import { Injectable, Optional } from '@angular/core';\n\nimport { RouteService, MessageService } from '@igo2/core';\nimport { Layer, WMSDataSourceOptions } from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { DetailedContext } from '../../context-manager/shared/context.interface';\nimport { ContextService } from '../../context-manager/shared/context.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ShareMapService {\n\n constructor(\n private contextService: ContextService,\n private messageService: MessageService,\n @Optional() private route: RouteService\n ) {}\n\n getUrlWithApi(formValues) {\n return `${location.origin + location.pathname}?context=${formValues.uri}`;\n }\n\n createContextShared(map: IgoMap, formValues) {\n const context = this.contextService.getContextFromMap(map);\n context.scope = 'public';\n context.title = formValues.title;\n context.uri = formValues.uri;\n return this.contextService.create(context);\n }\n\n updateContextShared(map: IgoMap, formValues, id: string) {\n const context = this.contextService.getContextFromMap(map);\n return this.contextService.update(id, {\n title: formValues.title,\n map: context.map\n } as DetailedContext);\n }\n\n getUrlWithoutApi(map: IgoMap, publicShareOption) {\n if (\n !this.route ||\n !this.route.options.visibleOnLayersKey ||\n !this.route.options.visibleOffLayersKey ||\n !map.viewController.getZoom()\n ) {\n return;\n }\n const llc = publicShareOption.layerlistControls.querystring;\n\n let visibleKey = this.route.options.visibleOnLayersKey;\n let invisibleKey = this.route.options.visibleOffLayersKey;\n const layers = map.layers;\n\n const visibleLayers = layers.filter(lay => lay.visible && !lay.isIgoInternalLayer);\n const invisibleLayers = layers.filter(lay => !lay.visible && !lay.isIgoInternalLayer);\n\n if (visibleLayers.length === 0) {\n visibleKey = '';\n }\n if (invisibleLayers.length === 0) {\n invisibleKey = '';\n }\n\n let layersUrl = '';\n let layersToLoop = [];\n if (visibleLayers.length > invisibleLayers.length) {\n layersUrl = `${visibleKey}=*&${invisibleKey}=`;\n layersToLoop = invisibleLayers;\n } else {\n layersUrl = `${invisibleKey}=*&${visibleKey}=`;\n layersToLoop = visibleLayers;\n }\n\n for (const layer of layersToLoop) {\n if (layer.id) {\n layersUrl += layer.id + ',';\n }\n }\n const contextLayersID = [];\n const contextLayers = this.contextService.context$.value.layers;\n for (const contextLayer of contextLayers) {\n if ( typeof contextLayer.id !== 'undefined' || typeof contextLayer.source !== 'undefined' ) {\n contextLayersID.push(contextLayer.id || contextLayer.source.id);\n }\n }\n\n const addedLayersQueryParamsWms = this.makeLayersByService(layers, contextLayersID, 'wms');\n const addedLayersQueryParamsWmts = this.makeLayersByService(layers, contextLayersID, 'wmts');\n const addedLayersQueryParamsArcgisRest = this.makeLayersByService(layers, contextLayersID, 'arcgisrest');\n const addedLayersQueryParamsImageArcgisRest = this.makeLayersByService(layers, contextLayersID, 'imagearcgisrest');\n const addedLayersQueryParamsTileArcgisRest = this.makeLayersByService(layers, contextLayersID, 'tilearcgisrest');\n\n layersUrl = layersUrl.substr(0, layersUrl.length - 1);\n\n const zoomKey = this.route.options.zoomKey;\n const centerKey = this.route.options.centerKey;\n const contextKey = this.route.options.contextKey;\n\n const zoom = `${zoomKey}=${map.viewController.getZoom()}`;\n const arrayCenter = map.viewController.getCenter('EPSG:4326') || [];\n const long = arrayCenter[0].toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\n const lat = arrayCenter[1].toFixed(5).replace(/\\.([^0]+)0+$/, '.$1');\n const center = `${centerKey}=${long},${lat}`.replace(/.00000/g, '');\n let context = '';\n if (this.contextService.context$.value) {\n context = `${contextKey}=${this.contextService.context$.value.uri}`;\n }\n\n let url = `${location.origin}${location.pathname}?${context}&${zoom}&${center}&${layersUrl}&${llc}&${addedLayersQueryParamsWms}&${llc}&${addedLayersQueryParamsWmts}&${addedLayersQueryParamsArcgisRest}&${addedLayersQueryParamsImageArcgisRest}&${addedLayersQueryParamsTileArcgisRest}`;\n\n for (let i = 0; i < 5; i++) {\n url = url.replace(/&&/g, '&');\n url = url.endsWith('&') ? url.slice(0, -1) : url;\n }\n url = url.endsWith('&') ? url.slice(0, -1) : url;\n url = url.replace('?&wm', '&wm');\n url = url.replace('?&', '?');\n\n return url;\n }\n\n private makeLayersByService(layers: Layer[], contextLayersID: any[], typeService: string): string {\n\n const addedLayersByService = [];\n for (const layer of layers.filter(l => l.dataSource.options?.type === typeService)) {\n if (contextLayersID.indexOf(layer.id) === -1) {\n let linkUrl = encodeURIComponent((layer.dataSource.options as any).url);\n let addedLayer = '';\n let layerVersion: string;\n switch (layer.dataSource.options.type.toLowerCase()) {\n case 'wms':\n const datasourceOptions = layer.dataSource.options as WMSDataSourceOptions;\n addedLayer = encodeURIComponent(datasourceOptions.params.LAYERS);\n layerVersion = datasourceOptions.params.VERSION === '1.3.0' ? layerVersion : datasourceOptions.params.VERSION;\n break;\n case 'wmts':\n case 'arcgisrest':\n case 'imagearcgisrest':\n case 'tilearcgisrest':\n addedLayer = encodeURIComponent((layer.dataSource.options as any).layer);\n break;\n }\n const addedLayerPosition = `${addedLayer}:igoz${layer.zIndex}`;\n\n let version = '';\n if (layerVersion) {\n const operator = (layer.dataSource.options as any).url.indexOf('?') === -1 ? '?' : '&';\n version = encodeURIComponent(`${operator}VERSION=${layerVersion}`);\n }\n linkUrl = `${linkUrl}${version}`;\n\n if (\n !addedLayersByService.find(definedUrl => definedUrl.url === linkUrl)\n ) {\n addedLayersByService.push({\n url: linkUrl,\n layers: [addedLayerPosition]\n });\n } else {\n addedLayersByService.forEach(service => {\n if (service.url === linkUrl) {\n service.layers.push(addedLayerPosition);\n }\n });\n }\n }\n }\n\n let addedLayersQueryParams = '';\n if (addedLayersByService.length >= 1) {\n let linkUrlKey;\n let layersKey;\n /*\n const linkUrlKey = (typeService === 'wms') ? this.route.options.wmsUrlKey :\n (typeService === 'wmts') ? this.route.options.wmtsUrlKey : '' ;\n const layersKey = (typeService === 'wms') ? this.route.options.wmsLayersKey :\n (typeService === 'wmts') ? this.route.options.wmtsLayersKey : '' ;\n*/\n switch (typeService.toLowerCase()) {\n case 'wms':\n linkUrlKey = this.route.options.wmsUrlKey;\n layersKey = this.route.options.wmsLayersKey;\n break;\n case 'wmts':\n linkUrlKey = this.route.options.wmtsUrlKey;\n layersKey = this.route.options.wmtsLayersKey;\n break;\n case 'arcgisrest':\n linkUrlKey = this.route.options.arcgisUrlKey;\n layersKey = this.route.options.arcgisLayersKey;\n break;\n case 'imagearcgisrest':\n linkUrlKey = this.route.options.iarcgisUrlKey;\n layersKey = this.route.options.iarcgisLayersKey;\n break;\n case 'tilearcgisrest':\n linkUrlKey = this.route.options.tarcgisUrlKey;\n layersKey = this.route.options.tarcgisLayersKey;\n break;\n default:\n linkUrlKey = '';\n layersKey = '';\n }\n\n let linkUrlQueryParams = '';\n let layersQueryParams = '';\n addedLayersByService.forEach(service => {\n linkUrlQueryParams += `${service.url},`;\n layersQueryParams += `(${service.layers.join(',')}),`;\n });\n linkUrlQueryParams = linkUrlQueryParams.endsWith(',')\n ? linkUrlQueryParams.slice(0, -1)\n : linkUrlQueryParams;\n layersQueryParams = layersQueryParams.endsWith(',')\n ? layersQueryParams.slice(0, -1)\n : layersQueryParams;\n addedLayersQueryParams = `${linkUrlKey}=${linkUrlQueryParams}&${layersKey}=${layersQueryParams}`;\n }\n\n return addedLayersQueryParams;\n }\n}\n","<form class=\"igo-form\" [formGroup]=\"form\"\n (ngSubmit)=\"createUrl(form.value)\">\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input matInput required\n [placeholder]=\"'igo.context.contextManager.form.title' | translate\"\n formControlName=\"title\">\n <mat-error>\n {{ 'igo.context.contextManager.form.titleRequired' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n\n <div id=\"uriInput\" class=\"igo-input-container\">\n <mat-form-field>\n <span *ngIf=\"userId\" class=\"prefix\">{{userId}}-</span>\n <span class=\"fieldWrapper\">\n <input matInput required\n [readonly]=\"!userId\"\n [placeholder]=\"'igo.context.contextManager.form.uri' | translate\"\n formControlName=\"uri\">\n </span>\n <mat-error>\n {{ 'igo.context.contextManager.form.uriRequired' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group\">\n <button *ngIf=\"!url\"\n mat-raised-button\n type=\"submit\"\n [disabled]=\"!form.valid\">\n {{ 'igo.context.shareMap.button' | translate }}\n </button>\n <button *ngIf=\"url\"\n mat-raised-button\n type=\"button\"\n (click)=\"updateContextShared(form.value)\">\n {{ 'igo.context.shareMap.refreshBtn' | translate }}\n </button>\n </div>\n</form>\n\n<div *ngIf=\"url\" class=\"igo-input-container linkToShare\">\n <mat-form-field>\n <textarea #textArea matInput readonly rows=\"3\"\n class=\"textAreaWithButton\"\n [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\n [value]=\"url\"></textarea>\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.shareMap.copy' | translate\"\n color=\"primary\"\n (click)=\"copyTextToClipboard(textArea)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </mat-form-field>\n<div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\n\nimport { uuid, Clipboard } from '@igo2/utils';\nimport { MessageService, LanguageService } from '@igo2/core';\nimport { AuthService } from '@igo2/auth';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { ShareMapService } from '../shared/share-map.service';\n\n@Component({\n selector: 'igo-share-map-api',\n templateUrl: './share-map-api.component.html',\n styleUrls: ['./share-map-api.component.scss']\n})\nexport class ShareMapApiComponent implements OnInit {\n public form: FormGroup;\n\n @Input() map: IgoMap;\n\n public url: string;\n public userId: string;\n public idContextShared: string;\n\n constructor(\n private languageService: LanguageService,\n private messageService: MessageService,\n private auth: AuthService,\n private shareMapService: ShareMapService,\n private formBuilder: FormBuilder\n ) {}\n\n ngOnInit(): void {\n this.auth.authenticate$.subscribe(auth => {\n const decodeToken = this.auth.decodeToken();\n this.userId = decodeToken.user ? decodeToken.user.id : undefined;\n this.buildForm();\n });\n }\n\n createUrl(values: any = {}) {\n const inputs = Object.assign({}, values);\n inputs.uri = this.userId ? `${this.userId}-${values.uri}` : values.uri;\n this.url = this.shareMapService.getUrlWithApi(inputs);\n this.shareMapService.createContextShared(this.map, inputs).subscribe(\n rep => {\n this.idContextShared = rep.id;\n const title = this.languageService.translate.instant(\n 'igo.context.contextManager.dialog.saveTitle'\n );\n const msg = this.languageService.translate.instant('igo.context.contextManager.dialog.saveMsg', {\n value: inputs.title\n });\n this.messageService.success(msg, title);\n },\n err => {\n err.error.title = this.languageService.translate.instant(\n 'igo.context.shareMap.errorTitle'\n );\n this.messageService.showError(err);\n }\n );\n }\n\n updateContextShared(values: any = {}) {\n const inputs = Object.assign({}, values);\n inputs.uri = this.userId ? `${this.userId}-${values.uri}` : values.uri;\n this.shareMapService.updateContextShared(this.map, inputs, this.idContextShared).subscribe(\n rep => {\n const title = this.languageService.translate.instant(\n 'igo.context.contextManager.dialog.saveTitle'\n );\n const msg = this.languageService.translate.instant('igo.context.contextManager.dialog.saveMsg', {\n value: inputs.title\n });\n this.messageService.success(msg, title);\n },\n err => {\n err.error.title = this.languageService.translate.instant(\n 'igo.context.shareMap.errorTitle'\n );\n this.messageService.showError(err);\n }\n );\n }\n\n copyTextToClipboard(textArea) {\n const successful = Clipboard.copy(textArea);\n if (successful) {\n const translate = this.languageService.translate;\n const title = translate.instant(\n 'igo.context.shareMap.dialog.copyTitle'\n );\n const msg = translate.instant('igo.context.shareMap.dialog.copyMsg');\n this.messageService.success(msg, title);\n }\n }\n\n buildForm(): void {\n this.url = undefined;\n const id = uuid();\n let title = 'Partage ';\n title += this.userId ? `(${this.userId}-${id})` : `(${id})`;\n this.form = this.formBuilder.group({\n title: [title],\n uri: [id]\n });\n }\n}\n","<div class=\"igo-input-container linkToShare\">\n <mat-form-field>\n <textarea #textArea matInput readonly rows=\"3\"\n [placeholder]=\"'igo.context.shareMap.placeholderLink' | translate\"\n [value]=\"url\"></textarea>\n </mat-form-field>\n\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n (click)=\"copyTextToClipboard(textArea)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n {{ 'igo.context.shareMap.copy' | translate }}\n </button>\n </div>\n <div>\n <br/>\n <section class=\"mat-typography\">\n <h4 *ngIf=\"('igo.context.shareMap.included' | translate)!==''\">{{'igo.context.shareMap.included' | translate}}</h4>\n <ul>\n <li *ngIf=\"('igo.context.shareMap.context' | translate)!==''\">{{'igo.context.shareMap.context' | translate}}</li>\n <li *ngIf=\"('igo.context.shareMap.center' | translate)!==''\">{{'igo.context.shareMap.center' | translate}}</li>\n <li *ngIf=\"('igo.context.shareMap.zoom' | translate)!==''\">{{'igo.context.shareMap.zoom' | translate}}</li>\n <li *ngIf=\"('igo.context.shareMap.addedLayers' | translate)!==''\">{{'igo.context.shareMap.addedLayers' | translate}}</li>\n <li *ngIf=\"('igo.context.shareMap.visibleInvisible' | translate)!==''\">{{'igo.context.shareMap.visibleInvisible' | translate}}</li>\n </ul>\n\n <h4 *ngIf=\"('igo.context.shareMap.excluded' | translate)!==''\">{{'igo.context.shareMap.excluded' | translate}}</h4>\n <ul>\n <li *ngIf=\"('igo.context.shareMap.order' | translate)!==''\">{{'igo.context.shareMap.order' | translate}}</li>\n <li *ngIf=\"('igo.context.shareMap.opacity' | translate)!==''\">{{'igo.context.shareMap.opacity' | translate}}</li>\n <li *ngIf=\"('igo.context.shareMap.filterOgc' | translate)!==''\">{{'igo.context.shareMap.filterOgc' | translate}}</li>\n <li *ngIf=\"('igo.context.shareMap.filterTime' | translate)!==''\">{{'igo.context.shareMap.filterTime' | translate}}</li>\n </ul>\n </section>\n </div>\n</div>\n","import { AfterViewInit, Component, Input, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';\n\nimport { Clipboard } from '@igo2/utils';\nimport { MessageService, LanguageService } from '@igo2/core';\nimport type { IgoMap } from '@igo2/geo';\n\nimport { ShareMapService } from '../shared/share-map.service';\nimport { combineLatest, Subscription } from 'rxjs';\n\n@Component({\n selector: 'igo-share-map-url',\n templateUrl: './share-map-url.component.html',\n styleUrls: ['./share-map-url.component.scss']\n})\nexport class ShareMapUrlComponent implements AfterViewInit, OnInit, OnDestroy {\n private mapState$$: Subscription;\n\n @Input() map: IgoMap;\n\n public url: string;\n public publicShareOption = {\n layerlistControls: { querystring: '' }\n };\n\n constructor(\n private languageService: LanguageService,\n private messageService: MessageService,\n private shareMapService: ShareMapService,\n private cdRef: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.resetUrl();\n this.mapState$$ = combineLatest([\n this.map.viewController.state$,\n this.map.status$]).subscribe(c => {\n this.resetUrl();\n this.cdRef.detectChanges();\n });\n }\n\n ngAfterViewInit(): void {\n this.resetUrl();\n }\n\n ngOnDestroy(): void {\n this.mapState$$.unsubscribe();\n }\n\n resetUrl(values: any = {}) {\n this.url = this.shareMapService.getUrlWithoutApi(this.map, this.publicShareOption);\n }\n\n copyTextToClipboard(textArea) {\n const successful = Clipboard.copy(textArea);\n if (successful) {\n const translate = this.languageService.translate;\n const title = translate.instant(\n 'igo.context.shareMap.dialog.copyTitle'\n );\n const msg = translate.instant('igo.context.shareMap.dialog.copyMsg');\n this.messageService.success(msg, title);\n }\n }\n}\n","<mat-tab-group *ngIf=\"hasApi\" >\n <mat-tab [label]=\"'igo.context.shareMap.shareWithApi' | translate\">\n <igo-share-map-api [map]=\"map\"></igo-share-map-api>\n </mat-tab>\n <mat-tab [label]=\"'igo.context.shareMap.shareWithUrl' | translate\">\n <igo-share-map-url [map]=\"map\"></igo-share-map-url>\n </mat-tab>\n</mat-tab-group>\n\n<igo-share-map-url *ngIf=\"!hasApi\" [map]=\"map\"></igo-share-map-url>\n","import { Component, Input } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core';\nimport type { IgoMap } from '@igo2/geo';\n\n@Component({\n selector: 'igo-share-map',\n templateUrl: './share-map.component.html',\n styleUrls: ['./share-map.component.scss']\n})\nexport class ShareMapComponent {\n\n @Input() map: IgoMap;\n\n public hasApi = false;\n\n constructor(\n private config: ConfigService\n ) {\n this.hasApi = this.config.getConfig('context.url') ? true : false;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { IgoLanguageModule } from '@igo2/core';\n\nimport { ShareMapComponent } from './share-map/share-map.component';\nimport { ShareMapUrlComponent } from './share-map/share-map-url.component';\nimport { ShareMapApiComponent } from './share-map/share-map-api.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatIconModule,\n MatTooltipModule,\n MatTabsModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n IgoLanguageModule\n ],\n exports: [ShareMapComponent, ShareMapUrlComponent, ShareMapApiComponent],\n declarations: [ShareMapComponent, ShareMapUrlComponent, ShareMapApiComponent]\n})\nexport class IgoShareMapModule {\n static forRoot(): ModuleWithProviders<IgoShareMapModule> {\n return {\n ngModule: IgoShareMapModule\n };\n }\n}\n","<mat-sidenav\n #sidenav\n igoSidenavShim\n mode=\"side\"\n [opened]=\"opened\">\n\n <div class=\"igo-sidenav-content\">\n\n <igo-flexible\n #topPanel\n initial=\"50%\" initialMobile=\"100%\"\n expanded=\"calc(100% - 58px)\"\n [state]=\"topPanelState\">\n\n <div class=\"igo-content\">\n <igo-panel [title]=\"tool ? (tool.title | translate) : title\">\n <button\n mat-icon-button\n panelLeftButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.goBack' | translate\"\n *ngIf=\"tool\">\n <mat-icon svgIcon=\"arrow-back\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n panelRightButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.context.sidenav.mainMenu' | translate\"\n *ngIf=\"tool\">\n <mat-icon svgIcon=\"menu\"></mat-icon>\n </button>\n\n </igo-panel>\n </div>\n\n <div igoFlexibleFill class=\"igo-content\">\n <igo-panel\n [title]=\"featureTitle\"\n *ngIf=\"feature && media !== 'mobile'\">\n\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\">\n <mat-icon [svgIcon]=\"['collapsed', 'initial'].indexOf(topPanel.state) >= 0 ? 'arrow_downward' : 'arrow_upward'\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n (click)=\"zoomToFeatureExtent()\"\n *ngIf=\"feature.geometry\">\n <mat-icon svgIcon=\"zoom-in\"></mat-icon>\n </button>\n\n <igo-feature-details\n [feature]=\"feature\"\n *ngIf=\"['collapsed', 'initial'].indexOf(topPanel.state) >= 0\">\n </igo-feature-details>\n </igo-panel>\n </div>\n\n </igo-flexible>\n\n </div>\n</mat-sidenav>\n","import { Component, Input } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nimport type { Media } from '@igo2/core';\nimport { FlexibleState, Tool, getEntityTitle } from '@igo2/common';\nimport { Feature, FeatureMotion, moveToOlFeatures } from '@igo2/geo';\nimport type { IgoMap } from '@igo2/geo';\n\nimport olFormatGeoJSON from 'ol/format/GeoJSON';\n\n@Component({\n selector: 'igo-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: ['./sidenav.component.scss']\n})\nexport class SidenavComponent {\n private format = new olFormatGeoJSON();\n @Input()\n get map(): IgoMap {\n return this._map;\n }\n set map(value: IgoMap) {\n this._map = value;\n }\n private _map: IgoMap;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n this._opened = value;\n }\n private _opened: boolean;\n\n @Input()\n get feature(): Feature {\n return this._feature;\n }\n set feature(value: Feature) {\n this._feature = value;\n }\n private _feature: Feature;\n\n @Input()\n get tool(): Tool {\n return this._tool;\n }\n set tool(value: Tool) {\n this._tool = value;\n }\n private _tool: Tool;\n\n @Input()\n get media(): Media {\n return this._media;\n }\n set media(value: Media) {\n this._media = value;\n }\n private _media: Media;\n\n @Input()\n get title(): string {\n return this._title;\n }\n set title(value: string) {\n if (value) {\n this._title = value;\n }\n }\n private _title: string = this.titleService.getTitle();\n\n public topPanelState: FlexibleState = 'initial';\n\n get featureTitle(): string {\n return this.feature ? getEntityTitle(this.feature) : undefined;\n }\n\n constructor(public titleService: Title) {}\n\n zoomToFeatureExtent() {\n if (this.feature.geometry) {\n const olFeature = this.format.readFeature(this.feature, {\n dataProjection: this.feature.projection,\n featureProjection: this.map.projection\n });\n moveToOlFeatures(this.map, [olFeature], FeatureMotion.Zoom);\n }\n }\n\n toggleTopPanel() {\n if (this.topPanelState === 'initial') {\n this.topPanelState = 'expanded';\n } else {\n this.topPanelState = 'initial';\n }\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IgoLanguageModule } from '@igo2/core';\nimport { IgoPanelModule, IgoFlexibleModule } from '@igo2/common';\nimport { IgoFeatureModule } from '@igo2/geo';\n\nimport { IgoContextManagerModule } from '../context-manager/context-manager.module';\nimport { SidenavComponent } from './sidenav.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatSidenavModule,\n MatTooltipModule,\n IgoLanguageModule,\n IgoPanelModule,\n IgoFlexibleModule,\n IgoFeatureModule,\n IgoContextManagerModule\n ],\n exports: [SidenavComponent],\n declarations: [SidenavComponent]\n})\nexport class IgoSidenavModule {\n static forRoot(): ModuleWithProviders<IgoSidenavModule> {\n return {\n ngModule: IgoSidenavModule\n };\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { IgoContextImportExportModule } from './context-import-export/context-import-export.module';\nimport { IgoContextManagerModule } from './context-manager/context-manager.module';\nimport { IgoContextMapButtonModule } from './context-map-button/context-map-button.module';\nimport { IgoShareMapModule } from './share-map/share-map.module';\nimport { IgoSidenavModule } from './sidenav/sidenav.module';\n\n@NgModule({\n imports: [MatInputModule, MatFormFieldModule, MatMenuModule],\n declarations: [],\n exports: [\n IgoContextImportExportModule,\n IgoContextManagerModule,\n IgoContextMapButtonModule,\n IgoShareMapModule,\n IgoSidenavModule\n ]\n})\nexport class IgoContextModule {\n static forRoot(): ModuleWithProviders<IgoContextModule> {\n return {\n ngModule: IgoContextModule,\n providers: []\n };\n }\n}\n","/*\n * Public API Surface of context\n */\n\nexport * from './lib/context.module';\nexport * from './lib/context-import-export/context-import-export.module';\nexport * from './lib/context-manager/context-manager.module';\nexport * from './lib/context-map-button/context-map-button.module';\nexport * from './lib/share-map/share-map.module';\nexport * from './lib/sidenav/sidenav.module';\n\nexport * from './lib/context-import-export';\nexport * from './lib/context-manager';\nexport * from './lib/context-map-button';\nexport * from './lib/share-map';\nexport * from './lib/sidenav';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["olFormatGeoJSON"],"mappings":"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"}