geonetwork-ui 2.4.0-dev.e1bb65c4 → 2.4.0-dev.e77c0f8c

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 (169) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +2 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -1
  5. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +2 -2
  6. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -5
  7. package/esm2022/libs/common/domain/src/lib/model/record/organization.model.mjs +1 -1
  8. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  9. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  10. package/esm2022/libs/feature/catalog/src/index.mjs +2 -1
  11. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +1 -1
  12. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  13. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +4 -0
  14. package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +4 -6
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -2
  16. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +5 -5
  17. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +42 -23
  18. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +13 -5
  19. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +49 -15
  20. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +6 -3
  21. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +2 -1
  22. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  23. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +9 -2
  24. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +8 -1
  25. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  26. package/esm2022/libs/feature/search/src/lib/state/selectors.mjs +4 -1
  27. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +7 -3
  28. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +5 -5
  29. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +5 -2
  30. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -8
  31. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  32. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  33. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +5 -3
  34. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +4 -4
  35. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +24 -5
  36. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +7 -9
  37. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  38. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +71 -0
  39. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +1 -1
  40. package/esm2022/translations/de.json +58 -33
  41. package/esm2022/translations/en.json +29 -4
  42. package/esm2022/translations/es.json +29 -4
  43. package/esm2022/translations/fr.json +30 -5
  44. package/esm2022/translations/it.json +29 -4
  45. package/esm2022/translations/nl.json +29 -4
  46. package/esm2022/translations/pt.json +29 -4
  47. package/fesm2022/geonetwork-ui.mjs +496 -204
  48. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  49. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  50. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
  51. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  52. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  53. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  54. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -1
  55. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  56. package/libs/common/domain/src/lib/model/record/organization.model.d.ts +1 -0
  57. package/libs/common/domain/src/lib/model/record/organization.model.d.ts.map +1 -1
  58. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
  59. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  60. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  61. package/libs/feature/catalog/src/index.d.ts +1 -0
  62. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  63. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  64. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  65. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +3 -0
  66. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -0
  67. package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
  68. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  69. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +4 -1
  70. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  71. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts +4 -1
  72. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts.map +1 -1
  73. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +4 -1
  74. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  75. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  76. package/libs/feature/router/src/lib/default/constants.d.ts +1 -0
  77. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  78. package/libs/feature/router/src/lib/default/router.config.d.ts +1 -0
  79. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  80. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -0
  81. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  82. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +1 -0
  83. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  84. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  85. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  86. package/libs/feature/search/src/lib/state/selectors.d.ts +1 -0
  87. package/libs/feature/search/src/lib/state/selectors.d.ts.map +1 -1
  88. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  89. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts +2 -2
  90. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +2 -1
  91. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  92. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -2
  93. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  94. package/libs/ui/elements/src/index.d.ts +0 -1
  95. package/libs/ui/elements/src/index.d.ts.map +1 -1
  96. package/libs/ui/elements/src/lib/error/error.component.d.ts +3 -1
  97. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -1
  98. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +5 -1
  99. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  100. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +19 -19
  101. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  102. package/libs/ui/layout/src/index.d.ts +1 -0
  103. package/libs/ui/layout/src/index.d.ts.map +1 -1
  104. package/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.d.ts +2 -2
  105. package/libs/ui/layout/src/lib/max-lines/max-lines.component.d.ts.map +1 -0
  106. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  107. package/package.json +1 -1
  108. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +1 -0
  109. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  110. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -0
  111. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +3 -1
  112. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +1 -1
  113. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +26 -15
  114. package/src/libs/common/domain/src/lib/model/record/organization.model.ts +1 -0
  115. package/src/libs/common/domain/src/lib/platform.service.interface.ts +5 -1
  116. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +28 -0
  117. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +4 -0
  118. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +2 -0
  119. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  120. package/src/libs/feature/catalog/src/index.ts +1 -0
  121. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -1
  122. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.html +1 -1
  123. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +2 -2
  124. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +6 -0
  125. package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
  126. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +8 -6
  127. package/src/libs/feature/editor/src/lib/fields.config.ts +4 -4
  128. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +36 -19
  129. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +6 -2
  130. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +11 -0
  131. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +59 -12
  132. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +6 -2
  133. package/src/libs/feature/router/src/lib/default/constants.ts +1 -0
  134. package/src/libs/feature/router/src/lib/default/router.config.ts +1 -0
  135. package/src/libs/feature/router/src/lib/default/router.service.ts +13 -1
  136. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +9 -1
  137. package/src/libs/feature/search/src/lib/state/search.facade.ts +5 -0
  138. package/src/libs/feature/search/src/lib/state/selectors.ts +7 -0
  139. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +16 -2
  140. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +8 -6
  141. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  142. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +2 -0
  143. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +11 -3
  144. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +3 -7
  145. package/src/libs/ui/elements/src/index.ts +0 -1
  146. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +29 -29
  147. package/src/libs/ui/elements/src/lib/error/error.component.html +30 -6
  148. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -0
  149. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  150. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +22 -1
  151. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -4
  152. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.css +31 -0
  153. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +15 -0
  154. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +38 -0
  155. package/src/libs/ui/layout/src/index.ts +1 -0
  156. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.html +1 -0
  157. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.ts +9 -5
  158. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -1
  159. package/translations/de.json +58 -33
  160. package/translations/en.json +29 -4
  161. package/translations/es.json +29 -4
  162. package/translations/fr.json +30 -5
  163. package/translations/it.json +29 -4
  164. package/translations/nl.json +29 -4
  165. package/translations/pt.json +29 -4
  166. package/translations/sk.json +30 -5
  167. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +0 -69
  168. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +0 -1
  169. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.css +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ui-elements.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/elements/src/lib/ui-elements.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,qBAgEa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
1
+ {"version":3,"file":"ui-elements.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/elements/src/lib/ui-elements.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,qBA+Da,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAG"}
@@ -3,6 +3,7 @@ export * from './lib/carousel/carousel.component';
3
3
  export * from './lib/expandable-panel-button/expandable-panel-button.component';
4
4
  export * from './lib/expandable-panel/expandable-panel.component';
5
5
  export * from './lib/form-field-wrapper/form-field-wrapper.component';
6
+ export * from './lib/max-lines/max-lines.component';
6
7
  export * from './lib/interactive-table/interactive-table-column/interactive-table-column.component';
7
8
  export * from './lib/interactive-table/interactive-table.component';
8
9
  export * from './lib/sticky-header/sticky-header.component';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/layout/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iEAAiE,CAAA;AAC/E,cAAc,mDAAmD,CAAA;AACjE,cAAc,uDAAuD,CAAA;AACrE,cAAc,qFAAqF,CAAA;AACnG,cAAc,qDAAqD,CAAA;AACnE,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uCAAuC,CAAA;AACrD,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/libs/ui/layout/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAA;AACvD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iEAAiE,CAAA;AAC/E,cAAc,mDAAmD,CAAA;AACjE,cAAc,uDAAuD,CAAA;AACrE,cAAc,qCAAqC,CAAA;AACnD,cAAc,qFAAqF,CAAA;AACnG,cAAc,qDAAqD,CAAA;AACnE,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uCAAuC,CAAA;AACrD,cAAc,wBAAwB,CAAA"}
@@ -1,4 +1,4 @@
1
- import { ElementRef, AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class MaxLinesComponent implements AfterViewInit, OnDestroy {
4
4
  private cdr;
@@ -15,6 +15,6 @@ export declare class MaxLinesComponent implements AfterViewInit, OnDestroy {
15
15
  getLineHeight(element: HTMLElement): number;
16
16
  ngOnDestroy(): void;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<MaxLinesComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<MaxLinesComponent, "gn-ui-max-lines", never, { "maxLines": { "alias": "maxLines"; "required": false; }; }, {}, never, ["*"], false, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<MaxLinesComponent, "gn-ui-max-lines", never, { "maxLines": { "alias": "maxLines"; "required": false; }; }, {}, never, ["*"], true, never>;
19
19
  }
20
20
  //# sourceMappingURL=max-lines.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-lines.component.d.ts","sourceRoot":"","sources":["../../../../../../src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAEjB,UAAU,EAEV,SAAS,EAEV,MAAM,eAAe,CAAA;;AAItB,qBAQa,iBAAkB,YAAW,aAAa,EAAE,SAAS;IAUpD,OAAO,CAAC,GAAG;IATd,QAAQ,SAAI;IAErB,UAAU,UAAQ;IAClB,SAAS,SAAK;IACd,gBAAgB,UAAQ;IACxB,QAAQ,EAAE,cAAc,CAAA;IAEA,SAAS,EAAG,UAAU,CAAA;gBAE1B,GAAG,EAAE,iBAAiB;IAE1C,eAAe;IAYf,aAAa;IAKb,kBAAkB;IAyBlB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;IAQ3C,WAAW,IAAI,IAAI;yCA9DR,iBAAiB;2CAAjB,iBAAiB;CAkE7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui-layout.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/layout/src/lib/ui-layout.module.ts"],"names":[],"mappings":";;;;;;;;AAUA,qBAea,cAAc;yCAAd,cAAc;0CAAd,cAAc;0CAAd,cAAc;CAAG"}
1
+ {"version":3,"file":"ui-layout.module.d.ts","sourceRoot":"","sources":["../../../../../src/libs/ui/layout/src/lib/ui-layout.module.ts"],"names":[],"mappings":";;;;;;;;AASA,qBAea,cAAc;yCAAd,cAAc;0CAAd,cAAc;0CAAd,cAAc;CAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geonetwork-ui",
3
- "version": "2.4.0-dev.e1bb65c4",
3
+ "version": "2.4.0-dev.e77c0f8c",
4
4
  "engines": {
5
5
  "node": ">=14.17.0"
6
6
  },
@@ -120,6 +120,7 @@ export const mapKeywords = (thesauri: Thesaurus[], language: string) => {
120
120
  keywords.push({
121
121
  label: selectTranslatedValue<string>(keyword, language),
122
122
  type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
123
+ ...(keyword.link && { key: keyword.link }),
123
124
  ...(thesaurus && { thesaurus }),
124
125
  })
125
126
  }
@@ -5,6 +5,7 @@ type MultilingualField = {
5
5
  [K in `lang${LangCode}`]: string
6
6
  } & {
7
7
  default: string
8
+ link?: string
8
9
  }
9
10
 
10
11
  type BooleanString = 'true' | 'false'
@@ -76,6 +76,7 @@ export class OrganizationsFromGroupsService
76
76
  return {
77
77
  name: group.label[lang3],
78
78
  ...(group.description && { description: group.description }),
79
+ ...(group.email && { email: group.email }),
79
80
  ...(group.logo && {
80
81
  logoUrl: getAsUrl(`${IMAGE_URL}${group.logo}`),
81
82
  }),
@@ -230,10 +230,12 @@ export class OrganizationsFromMetadataService
230
230
  if (!group) return fullOrg
231
231
  return {
232
232
  ...fullOrg,
233
+ email: emails[0],
233
234
  ...(group.description && { description: group.description }),
234
235
  ...(group.logo && { logoUrl: getAsUrl(`${IMAGE_URL}${group.logo}`) }),
235
236
  ...(group.website && { website: getAsUrl(group.website) }),
236
- }
237
+ ...(group.email && { email: group.email }),
238
+ } as Organization
237
239
  })
238
240
  }
239
241
 
@@ -45,7 +45,7 @@ export class Gn4PlatformMapper {
45
45
  const {
46
46
  enabled,
47
47
  emailAddresses,
48
- organisation,
48
+ organization,
49
49
  kind,
50
50
  lastLoginDate,
51
51
  accountNonExpired,
@@ -5,7 +5,6 @@ import {
5
5
  MeApiService,
6
6
  RegistriesApiService,
7
7
  SiteApiService,
8
- ThesaurusInfoApiModel,
9
8
  ToolsApiService,
10
9
  UserfeedbackApiService,
11
10
  UsersApiService,
@@ -25,6 +24,7 @@ import {
25
24
  KeywordApiResponse,
26
25
  ThesaurusApiResponse,
27
26
  } from '../../../../../../../libs/api/metadata-converter/src'
27
+ import { KeywordType } from '../../../../../../../libs/common/domain/src/lib/model/thesaurus'
28
28
 
29
29
  const minApiVersion = '4.2.2'
30
30
 
@@ -146,25 +146,36 @@ export class Gn4PlatformService implements PlatformServiceInterface {
146
146
  )
147
147
  .pipe(
148
148
  map((thesaurus) => {
149
- // FIXME: find a better way to exclude place keywords
150
- // thesaurus[0].filter((thes) => thes.dname !== 'place')
151
149
  return thesaurus[0] as ThesaurusApiResponse[]
152
150
  }),
153
151
  shareReplay(1)
154
152
  )
155
153
 
156
- searchKeywords(query: string): Observable<Keyword[]> {
157
- const keywords$: Observable<KeywordApiResponse[]> =
158
- this.registriesApiService.searchKeywords(
159
- query,
160
- this.langService.iso3,
161
- 10,
162
- 0,
163
- null,
164
- null,
165
- null,
166
- `*${query}*`
167
- ) as Observable<KeywordApiResponse[]>
154
+ searchKeywords(
155
+ query: string,
156
+ keywordTypes: KeywordType[]
157
+ ): Observable<Keyword[]> {
158
+ const keywords$: Observable<KeywordApiResponse[]> = this.allThesaurus$.pipe(
159
+ switchMap((thesaurus) => {
160
+ const selectedThesauri = []
161
+ keywordTypes.map((keywordType) => {
162
+ selectedThesauri.push(
163
+ ...thesaurus.filter((thes) => thes.dname === keywordType)
164
+ )
165
+ })
166
+
167
+ return this.registriesApiService.searchKeywords(
168
+ query,
169
+ this.langService.iso3,
170
+ 10,
171
+ 0,
172
+ null,
173
+ selectedThesauri.map((thes) => thes.key),
174
+ null,
175
+ `*${query}*`
176
+ ) as Observable<KeywordApiResponse[]>
177
+ })
178
+ )
168
179
 
169
180
  return combineLatest([keywords$, this.allThesaurus$]).pipe(
170
181
  map(([keywords, thesaurus]) => {
@@ -1,5 +1,6 @@
1
1
  export interface Organization {
2
2
  name: string
3
+ email?: string
3
4
  description?: string
4
5
  website?: URL
5
6
  logoUrl?: URL
@@ -2,6 +2,7 @@ import type { Observable } from 'rxjs'
2
2
  import type { UserModel } from './model/user/user.model'
3
3
  import type { Organization } from './model/record/organization.model'
4
4
  import { Keyword, UserFeedback } from './model/record'
5
+ import { KeywordType } from './model/thesaurus'
5
6
 
6
7
  export abstract class PlatformServiceInterface {
7
8
  abstract getType(): string
@@ -15,7 +16,10 @@ export abstract class PlatformServiceInterface {
15
16
  ): Observable<UserModel[]>
16
17
  abstract getOrganizations(): Observable<Organization[]>
17
18
  abstract translateKey(key: string): Observable<string>
18
- abstract searchKeywords(query: string): Observable<Keyword[]>
19
+ abstract searchKeywords(
20
+ query: string,
21
+ keywordTypes: KeywordType[]
22
+ ): Observable<Keyword[]>
19
23
  abstract getKeywordsByUri(uri: string): Observable<Keyword[]>
20
24
  abstract getUserFeedbacks(recordUuid: string): Observable<UserFeedback[]>
21
25
  abstract postUserFeedbacks(recordUuid: UserFeedback): Observable<void>
@@ -5,84 +5,112 @@ export const ORGANISATIONS_FIXTURE: Organization[] = deepFreeze([
5
5
  {
6
6
  name: 'I Data Org',
7
7
  description: 'one org for testing',
8
+ email: 'test@gmail.com',
9
+ website: new URL('https://my-geonetwork.org/'),
8
10
  logoUrl: new URL('https://my-geonetwork.org/logo1.png'),
9
11
  recordCount: 12,
10
12
  },
11
13
  {
12
14
  name: 'H Data Org',
13
15
  description: 'another org for testing',
16
+ email: 'test@gmail.com',
17
+ website: new URL('https://my-geonetwork.org/'),
14
18
  logoUrl: new URL('https://my-geonetwork.org/logo2.png'),
15
19
  recordCount: 15,
16
20
  },
17
21
  {
18
22
  name: 'J Data Org',
19
23
  description: 'another org for testing',
24
+ email: 'test@gmail.com',
25
+ website: new URL('https://my-geonetwork.org/'),
20
26
  logoUrl: new URL('https://my-geonetwork.org/logo3.png'),
21
27
  recordCount: 6,
22
28
  },
23
29
  {
24
30
  name: 'G Data Org',
25
31
  description: 'another org for testing',
32
+ email: 'test@gmail.com',
33
+ website: new URL('https://my-geonetwork.org/'),
26
34
  logoUrl: new URL('https://my-geonetwork.org/logo4.png'),
27
35
  recordCount: 8,
28
36
  },
29
37
  {
30
38
  name: 'B Data Org',
31
39
  description: 'another org for testing',
40
+ email: 'test@gmail.com',
41
+ website: new URL('https://my-geonetwork.org/'),
32
42
  logoUrl: new URL('https://my-geonetwork.org/logo5.png'),
33
43
  recordCount: 2,
34
44
  },
35
45
  {
36
46
  name: 'D Data Org',
37
47
  description: 'another org for testing',
48
+ email: 'test@gmail.com',
49
+ website: new URL('https://my-geonetwork.org/'),
38
50
  logoUrl: new URL('https://my-geonetwork.org/logo6.png'),
39
51
  recordCount: 17,
40
52
  },
41
53
  {
42
54
  name: 'F Data Org',
43
55
  description: 'another org for testing',
56
+ email: 'test@gmail.com',
57
+ website: new URL('https://my-geonetwork.org/'),
44
58
  logoUrl: new URL('https://my-geonetwork.org/logo7.png'),
45
59
  recordCount: 14,
46
60
  },
47
61
  {
48
62
  name: 'A Data Org',
49
63
  description: 'another org for testing',
64
+ email: 'test@gmail.com',
65
+ website: new URL('https://my-geonetwork.org/'),
50
66
  logoUrl: new URL('https://my-geonetwork.org/logo8.png'),
51
67
  recordCount: 3,
52
68
  },
53
69
  {
54
70
  name: 'C Data Org',
55
71
  description: 'another org for testing',
72
+ email: 'test@gmail.com',
73
+ website: new URL('https://my-geonetwork.org/'),
56
74
  logoUrl: new URL('https://my-geonetwork.org/logo9.png'),
57
75
  recordCount: 9,
58
76
  },
59
77
  {
60
78
  name: 'E Data Org',
61
79
  description: 'another org for testing',
80
+ email: 'test@gmail.com',
81
+ website: new URL('https://my-geonetwork.org/'),
62
82
  logoUrl: new URL('https://my-geonetwork.org/logo10.png'),
63
83
  recordCount: 1,
64
84
  },
65
85
  {
66
86
  name: 'é Data Org',
67
87
  description: 'another org for testing',
88
+ email: 'test@gmail.com',
89
+ website: new URL('https://my-geonetwork.org/'),
68
90
  logoUrl: new URL('https://my-geonetwork.org/logo10.png'),
69
91
  recordCount: 2,
70
92
  },
71
93
  {
72
94
  name: 'wizard-org',
73
95
  description: 'another org for testing',
96
+ email: 'test@gmail.com',
97
+ website: new URL('https://my-geonetwork.org/'),
74
98
  logoUrl: new URL('https://my-geonetwork.org/logo11.png'),
75
99
  recordCount: 2,
76
100
  },
77
101
  {
78
102
  name: "Université de l'Ingénierie",
79
103
  description: 'another org for testing',
104
+ email: 'test@gmail.com',
105
+ website: new URL('https://my-geonetwork.org/'),
80
106
  logoUrl: new URL('https://my-geonetwork.org/logo12.png'),
81
107
  recordCount: 2,
82
108
  },
83
109
  {
84
110
  name: 'ARS / Agence régionale de santé',
85
111
  description: 'another org for testing',
112
+ email: 'test@gmail.com',
113
+ website: new URL('https://my-geonetwork.org/'),
86
114
  logoUrl: new URL('https://my-geonetwork.org/logo12.png'),
87
115
  recordCount: 2,
88
116
  },
@@ -38,4 +38,8 @@ export interface DatasetMetadataApiModel {
38
38
  * textual description of dataset lineage
39
39
  */
40
40
  creationProcessDescription?: string
41
+ /**
42
+ * Optional, additional options for the dataset
43
+ */
44
+ options: any
41
45
  }
@@ -34,4 +34,6 @@ export interface DatasetUploadStatusApiModel {
34
34
  * detected charset
35
35
  */
36
36
  encoding?: string
37
+ format?: 'CSV' | 'SHAPEFILE'
38
+ options?: any
37
39
  }
@@ -21,7 +21,7 @@ export interface UserApiModel {
21
21
  emailAddresses?: Set<string>
22
22
  addresses?: Set<AddressApiModel>
23
23
  primaryAddress?: AddressApiModel
24
- organisation?: string
24
+ organization?: string
25
25
  kind?: string
26
26
  lastLoginDate?: string
27
27
  authorities?: Array<GrantedAuthorityApiModel>
@@ -1,4 +1,5 @@
1
1
  export * from './lib/feature-catalog.module'
2
+ export * from './lib/organization-url.token'
2
3
  export * from './lib/sources/sources.service'
3
4
  export * from './lib/sources/sources.model'
4
5
  export * from './lib/records/records.service'
@@ -4,7 +4,6 @@ import { UiCatalogModule } from '../../../../../libs/ui/catalog/src'
4
4
  import {
5
5
  GroupsApiService,
6
6
  SearchApiService,
7
- SiteApiService,
8
7
  } from '../../../../../libs/data-access/gn4/src'
9
8
  import { CommonModule } from '@angular/common'
10
9
  import { SourceLabelComponent } from './source-label/source-label.component'
@@ -19,7 +19,7 @@
19
19
  [showContent]="!!organisation.name"
20
20
  >
21
21
  <gn-ui-organisation-preview
22
- [organisation]="organisation"
22
+ [organization]="organisation"
23
23
  [organisationUrl]="getOrganisationUrl(organisation)"
24
24
  (clickedOrganisation)="orgSelect.emit($event)"
25
25
  ></gn-ui-organisation-preview>
@@ -10,10 +10,10 @@ import {
10
10
  import { Organization } from '../../../../../../libs/common/domain/src/lib/model/record'
11
11
  import { BehaviorSubject, combineLatest, Observable } from 'rxjs'
12
12
  import { map, startWith, tap } from 'rxjs/operators'
13
- import { ORGANIZATION_URL_TOKEN } from '../feature-catalog.module'
14
13
  import { OrganizationsServiceInterface } from '../../../../../../libs/common/domain/src/lib/organizations.service.interface'
15
14
  import { SortByField } from '../../../../../../libs/common/domain/src/lib/model/search'
16
15
  import { createFuzzyFilter } from '../../../../../../libs/util/shared/src'
16
+ import { ORGANIZATION_PAGE_URL_TOKEN } from '../organization-url.token'
17
17
 
18
18
  @Component({
19
19
  selector: 'gn-ui-organisations',
@@ -28,7 +28,7 @@ export class OrganisationsComponent {
28
28
  constructor(
29
29
  private organisationsService: OrganizationsServiceInterface,
30
30
  @Optional()
31
- @Inject(ORGANIZATION_URL_TOKEN)
31
+ @Inject(ORGANIZATION_PAGE_URL_TOKEN)
32
32
  private urlTemplate: string
33
33
  ) {}
34
34
 
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from '@angular/core'
2
+
3
+ // expects the replacement key ${name}
4
+ export const ORGANIZATION_PAGE_URL_TOKEN = new InjectionToken<string>(
5
+ 'organization-page-url-token'
6
+ )
@@ -1,18 +1,16 @@
1
1
  import { Injectable } from '@angular/core'
2
- import { Observable, of } from 'rxjs'
3
- import { catchError, shareReplay } from 'rxjs/operators'
2
+ import { Observable, of, switchMap } from 'rxjs'
3
+ import { shareReplay } from 'rxjs/operators'
4
4
  import { RecordsRepositoryInterface } from '../../../../../../libs/common/domain/src/lib/repository/records-repository.interface'
5
5
 
6
6
  @Injectable({
7
7
  providedIn: 'root',
8
8
  })
9
9
  export class RecordsService {
10
- recordsCount$: Observable<number> = this.recordsRepository
11
- .getMatchesCount({})
12
- .pipe(
13
- shareReplay(1),
14
- catchError(() => of(0))
15
- )
10
+ recordsCount$: Observable<number> = of(true).pipe(
11
+ switchMap(() => this.recordsRepository.getMatchesCount({})),
12
+ shareReplay(1)
13
+ )
16
14
 
17
15
  constructor(private recordsRepository: RecordsRepositoryInterface) {}
18
16
  }
@@ -35,13 +35,15 @@ export class FormFieldKeywordsComponent {
35
35
  }
36
36
 
37
37
  autoCompleteAction = (query: string) => {
38
- return this.platformService.searchKeywords(query).pipe(
39
- map((keywords) =>
40
- keywords.map((keyword) => {
41
- return { title: keyword.label, value: keyword }
42
- })
38
+ return this.platformService
39
+ .searchKeywords(query, ['temporal', 'theme', 'other'])
40
+ .pipe(
41
+ map((keywords) =>
42
+ keywords.map((keyword) => {
43
+ return { title: keyword.label, value: keyword }
44
+ })
45
+ )
43
46
  )
44
- )
45
47
  }
46
48
 
47
49
  constructor(private platformService: PlatformServiceInterface) {}
@@ -5,21 +5,21 @@ export const DEFAULT_FIELDS: EditorFieldsConfig = [
5
5
  {
6
6
  model: 'title',
7
7
  formFieldConfig: {
8
- labelKey: 'Metadata title',
8
+ labelKey: marker('editor.record.form.metadata.title'),
9
9
  type: 'text',
10
10
  },
11
11
  },
12
12
  {
13
13
  model: 'abstract',
14
14
  formFieldConfig: {
15
- labelKey: 'Abstract',
15
+ labelKey: marker('editor.record.form.abstract'),
16
16
  type: 'rich',
17
17
  },
18
18
  },
19
19
  {
20
20
  model: 'uniqueIdentifier',
21
21
  formFieldConfig: {
22
- labelKey: 'Unique identifier',
22
+ labelKey: marker('editor.record.form.unique.identifier'),
23
23
  type: 'text',
24
24
  locked: true,
25
25
  },
@@ -27,7 +27,7 @@ export const DEFAULT_FIELDS: EditorFieldsConfig = [
27
27
  {
28
28
  model: 'recordUpdated',
29
29
  formFieldConfig: {
30
- labelKey: 'Record Updated',
30
+ labelKey: marker('editor.record.form.record.updated'),
31
31
  type: 'text',
32
32
  locked: true,
33
33
  },
@@ -3,10 +3,11 @@ import {
3
3
  Component,
4
4
  Inject,
5
5
  InjectionToken,
6
+ Input,
6
7
  Optional,
7
8
  } from '@angular/core'
8
9
  import { Configuration } from '../../../../../../libs/data-access/gn4/src'
9
- import { combineLatest, map } from 'rxjs'
10
+ import { BehaviorSubject, combineLatest, map } from 'rxjs'
10
11
  import { MdViewFacade } from '../state'
11
12
  import { GN_UI_VERSION } from '../gn-ui-version.token'
12
13
 
@@ -21,29 +22,45 @@ export const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken<string>(
21
22
  changeDetection: ChangeDetectionStrategy.OnPush,
22
23
  })
23
24
  export class DataViewPermalinkComponent {
25
+ viewType$ = new BehaviorSubject<string>('map')
26
+ @Input()
27
+ set viewType(value: string) {
28
+ this.viewType$.next(value)
29
+ }
30
+
24
31
  permalinkUrl$ = combineLatest([
32
+ this.viewType$,
25
33
  this.facade.chartConfig$,
26
34
  this.facade.metadata$,
27
35
  ]).pipe(
28
- map(([config, metadata]) => {
29
- if (config) {
30
- const { aggregation, xProperty, yProperty, chartType } = config
31
- const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin)
32
- url.searchParams.set('v', `${this.version}`)
33
- url.searchParams.append('e', `gn-dataset-view-chart`)
34
- url.searchParams.append('a', `api-url=${this.config.basePath}`)
35
- url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`)
36
- url.searchParams.append('a', `primary-color=#0f4395`)
37
- url.searchParams.append('a', `secondary-color=#8bc832`)
38
- url.searchParams.append('a', `main-color=#555`)
39
- url.searchParams.append('a', `background-color=#fdfbff`)
40
- url.searchParams.append('a', `aggregation=${aggregation}`)
41
- url.searchParams.append('a', `x-property=${xProperty}`)
42
- url.searchParams.append('a', `y-property=${yProperty}`)
43
- url.searchParams.append('a', `chart-type=${chartType}`)
44
- return url.toString()
36
+ map(([viewType, config, metadata]) => {
37
+ const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin)
38
+ url.searchParams.set('v', `${this.version}`)
39
+ if (viewType === 'chart') {
40
+ if (config) {
41
+ const { aggregation, xProperty, yProperty, chartType } = config
42
+ url.searchParams.append('e', `gn-dataset-view-chart`)
43
+ url.searchParams.append('a', `aggregation=${aggregation}`)
44
+ url.searchParams.append('a', `x-property=${xProperty}`)
45
+ url.searchParams.append('a', `y-property=${yProperty}`)
46
+ url.searchParams.append('a', `chart-type=${chartType}`)
47
+ } else {
48
+ return ''
49
+ }
50
+ } else if (viewType === 'table') {
51
+ // table
52
+ url.searchParams.append('e', `gn-dataset-view-table`)
53
+ } else {
54
+ // map
55
+ url.searchParams.append('e', `gn-dataset-view-map`)
45
56
  }
46
- return ''
57
+ url.searchParams.append('a', `api-url=${this.config.basePath}`)
58
+ url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`)
59
+ url.searchParams.append('a', `primary-color=#0f4395`)
60
+ url.searchParams.append('a', `secondary-color=#8bc832`)
61
+ url.searchParams.append('a', `main-color=#555`)
62
+ url.searchParams.append('a', `background-color=#fdfbff`)
63
+ return url.toString()
47
64
  })
48
65
  )
49
66
 
@@ -10,7 +10,9 @@
10
10
  <ng-template mat-tab-label>
11
11
  <span class="tab-header-label-gray" translate>share.tab.permalink</span>
12
12
  </ng-template>
13
- <gn-ui-data-view-permalink></gn-ui-data-view-permalink>
13
+ <gn-ui-data-view-permalink
14
+ [viewType]="viewType"
15
+ ></gn-ui-data-view-permalink>
14
16
  </mat-tab>
15
17
  <mat-tab>
16
18
  <ng-template mat-tab-label>
@@ -24,7 +26,9 @@
24
26
  >share.tab.webComponent</span
25
27
  >
26
28
  </ng-template>
27
- <gn-ui-data-view-web-component></gn-ui-data-view-web-component>
29
+ <gn-ui-data-view-web-component
30
+ [viewType]="viewType"
31
+ ></gn-ui-data-view-web-component>
28
32
  </mat-tab>
29
33
  </mat-tab-group>
30
34
  </div>
@@ -2,6 +2,7 @@ import {
2
2
  ChangeDetectionStrategy,
3
3
  Component,
4
4
  Inject,
5
+ Input,
5
6
  Optional,
6
7
  } from '@angular/core'
7
8
  import { WEB_COMPONENT_EMBEDDER_URL } from '../data-view-permalink/data-view-permalink.component'
@@ -13,6 +14,16 @@ import { WEB_COMPONENT_EMBEDDER_URL } from '../data-view-permalink/data-view-per
13
14
  changeDetection: ChangeDetectionStrategy.OnPush,
14
15
  })
15
16
  export class DataViewShareComponent {
17
+ private _viewType: string
18
+
19
+ @Input()
20
+ set viewType(value: string) {
21
+ this._viewType = value
22
+ }
23
+
24
+ get viewType(): string {
25
+ return this._viewType
26
+ }
16
27
  constructor(
17
28
  @Optional()
18
29
  @Inject(WEB_COMPONENT_EMBEDDER_URL)