geonetwork-ui 2.4.0-dev.78565730 → 2.4.0-dev.8118addf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +5 -5
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +23 -1
- package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +6 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +3 -4
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +5 -11
- package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +5 -2
- package/esm2022/libs/ui/widgets/src/index.mjs +2 -1
- package/esm2022/libs/ui/widgets/src/lib/popover/popover.component.mjs +68 -0
- package/esm2022/translations/de.json +1 -1
- package/esm2022/translations/en.json +1 -1
- package/esm2022/translations/fr.json +1 -1
- package/esm2022/translations/it.json +1 -1
- package/fesm2022/geonetwork-ui.mjs +165 -24
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +8 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -3
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +7 -6
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/widgets/src/index.d.ts +1 -0
- package/libs/ui/widgets/src/index.d.ts.map +1 -1
- package/libs/ui/widgets/src/lib/popover/popover.component.d.ts +19 -0
- package/libs/ui/widgets/src/lib/popover/popover.component.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +37 -12
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +4 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +72 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +70 -1
- package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +8 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -1
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +2 -3
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +14 -20
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -10
- package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -1
- package/src/libs/ui/widgets/src/index.ts +1 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.css +0 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.html +3 -0
- package/src/libs/ui/widgets/src/lib/popover/popover.component.ts +85 -0
- package/tailwind.base.css +2 -1
- package/translations/de.json +1 -1
- package/translations/en.json +1 -1
- package/translations/fr.json +1 -1
- package/translations/it.json +1 -1
- package/translations/sk.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { XmlElement } from '@rgrove/parse-xml'
|
|
2
|
+
import { Geometry } from 'geojson'
|
|
3
|
+
import GML32 from 'ol/format/GML32'
|
|
4
|
+
import GeoJSON from 'ol/format/GeoJSON'
|
|
5
|
+
import { parse } from 'ol/xml'
|
|
6
|
+
import {
|
|
7
|
+
createDocument,
|
|
8
|
+
getRootElement,
|
|
9
|
+
parseXmlString,
|
|
10
|
+
xmlToString,
|
|
11
|
+
} from '../../xml-utils'
|
|
12
|
+
|
|
13
|
+
export function readGeometry(el: XmlElement): Geometry {
|
|
14
|
+
const xmlDoc = createDocument(el)
|
|
15
|
+
xmlDoc.root.attributes['xmlns'] = 'http://www.opengis.net/gml/3.2'
|
|
16
|
+
const gmlString = xmlToString(xmlDoc)
|
|
17
|
+
const doc = parse(gmlString)
|
|
18
|
+
// we need an intermediate node to be able to parse the GML
|
|
19
|
+
const node = document.createElement('pre')
|
|
20
|
+
node.appendChild(doc.documentElement)
|
|
21
|
+
const gml32Format = new GML32()
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
const geometry = gml32Format.readGeometryFromNode(node)
|
|
25
|
+
const geojsonFormat = new GeoJSON()
|
|
26
|
+
return geojsonFormat.writeGeometryObject(geometry)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function writeGeometry(geometryObject: Geometry): XmlElement {
|
|
30
|
+
const geojsonFormat = new GeoJSON()
|
|
31
|
+
const geometry = geojsonFormat.readGeometry(geometryObject)
|
|
32
|
+
const gml32Format = new GML32()
|
|
33
|
+
const node = gml32Format.writeGeometryNode(geometry)
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
const element = node.firstElementChild as HTMLElement
|
|
37
|
+
const gmlString = new XMLSerializer().serializeToString(element)
|
|
38
|
+
return getRootElement(parseXmlString(gmlString))
|
|
39
|
+
}
|
|
@@ -14,7 +14,9 @@ import {
|
|
|
14
14
|
UpdateFrequencyCode,
|
|
15
15
|
UpdateFrequencyCustom,
|
|
16
16
|
} from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
17
|
+
import { ThesaurusModel } from '../../../../../../libs/common/domain/src/lib/model/thesaurus'
|
|
17
18
|
import format from 'date-fns/format'
|
|
19
|
+
import { Geometry } from 'geojson'
|
|
18
20
|
import {
|
|
19
21
|
ChainableFunction,
|
|
20
22
|
fallback,
|
|
@@ -44,8 +46,8 @@ import {
|
|
|
44
46
|
setTextContent,
|
|
45
47
|
} from '../xml-utils'
|
|
46
48
|
import { readKind } from './read-parts'
|
|
49
|
+
import { writeGeometry } from './utils/geometry'
|
|
47
50
|
import { namePartsToFull } from './utils/individual-name'
|
|
48
|
-
import { ThesaurusModel } from '../../../../../../libs/common/domain/src/lib/model/thesaurus'
|
|
49
51
|
|
|
50
52
|
export function writeCharacterString(
|
|
51
53
|
text: string
|
|
@@ -101,6 +103,14 @@ export function writeDate(
|
|
|
101
103
|
)
|
|
102
104
|
}
|
|
103
105
|
|
|
106
|
+
export function writeDecimal(
|
|
107
|
+
decimal: number
|
|
108
|
+
): ChainableFunction<XmlElement, XmlElement> {
|
|
109
|
+
return tap(
|
|
110
|
+
pipe(findChildOrCreate('gco:Decimal'), setTextContent(decimal.toString()))
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
|
|
104
114
|
export function getProgressCode(status: RecordStatus): string {
|
|
105
115
|
switch (status) {
|
|
106
116
|
case 'completed':
|
|
@@ -1184,3 +1194,62 @@ export function writeTemporalExtents(
|
|
|
1184
1194
|
)
|
|
1185
1195
|
)(rootEl)
|
|
1186
1196
|
}
|
|
1197
|
+
|
|
1198
|
+
export function writeSpatialExtents(record: DatasetRecord, rootEl: XmlElement) {
|
|
1199
|
+
const appendBoundingPolygon = (geometry?: Geometry) => {
|
|
1200
|
+
if (!geometry) return null
|
|
1201
|
+
return pipe(
|
|
1202
|
+
createElement('gmd:EX_BoundingPolygon'),
|
|
1203
|
+
appendChildren(
|
|
1204
|
+
pipe(
|
|
1205
|
+
createElement('gmd:polygon'),
|
|
1206
|
+
appendChildren(() => writeGeometry(geometry))
|
|
1207
|
+
)
|
|
1208
|
+
)
|
|
1209
|
+
)
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
const appendGeographicBoundingBox = (
|
|
1213
|
+
bbox?: [number, number, number, number]
|
|
1214
|
+
) => {
|
|
1215
|
+
if (!bbox) return null
|
|
1216
|
+
return pipe(
|
|
1217
|
+
createElement('gmd:EX_GeographicBoundingBox'),
|
|
1218
|
+
appendChildren(
|
|
1219
|
+
pipe(createElement('gmd:westBoundLongitude'), writeDecimal(bbox[0])),
|
|
1220
|
+
pipe(createElement('gmd:eastBoundLongitude'), writeDecimal(bbox[2])),
|
|
1221
|
+
pipe(createElement('gmd:southBoundLatitude'), writeDecimal(bbox[1])),
|
|
1222
|
+
pipe(createElement('gmd:northBoundLatitude'), writeDecimal(bbox[3]))
|
|
1223
|
+
)
|
|
1224
|
+
)
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
const appendGeographicDescription = (description?: string) => {
|
|
1228
|
+
if (!description) return null
|
|
1229
|
+
return pipe(
|
|
1230
|
+
createElement('gmd:EX_GeographicDescription'),
|
|
1231
|
+
createChild('gmd:geographicIdentifier'),
|
|
1232
|
+
createChild('gmd:MD_Identifier'),
|
|
1233
|
+
createChild('gmd:code'),
|
|
1234
|
+
writeCharacterString(description)
|
|
1235
|
+
)
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
pipe(
|
|
1239
|
+
findOrCreateIdentification(),
|
|
1240
|
+
findNestedChildOrCreate('gmd:extent', 'gmd:EX_Extent'),
|
|
1241
|
+
removeChildrenByName('gmd:geographicElement'),
|
|
1242
|
+
appendChildren(
|
|
1243
|
+
...record.spatialExtents.map((extent) =>
|
|
1244
|
+
pipe(
|
|
1245
|
+
createElement('gmd:geographicElement'),
|
|
1246
|
+
appendChildren(
|
|
1247
|
+
appendBoundingPolygon(extent.geometry),
|
|
1248
|
+
appendGeographicBoundingBox(extent.bbox),
|
|
1249
|
+
appendGeographicDescription(extent.description)
|
|
1250
|
+
)
|
|
1251
|
+
)
|
|
1252
|
+
)
|
|
1253
|
+
)
|
|
1254
|
+
)(rootEl)
|
|
1255
|
+
}
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
XmlText,
|
|
7
7
|
} from '@rgrove/parse-xml'
|
|
8
8
|
import { ChainableFunction, fallback } from './function-utils'
|
|
9
|
+
|
|
9
10
|
export { XmlDocument, XmlElement } from '@rgrove/parse-xml'
|
|
10
11
|
|
|
11
12
|
export class XmlParseError extends Error {
|
|
@@ -115,6 +116,10 @@ export function allChildrenElement(element: XmlElement): Array<XmlElement> {
|
|
|
115
116
|
] as Array<XmlElement>
|
|
116
117
|
}
|
|
117
118
|
|
|
119
|
+
export function firstChildElement(element: XmlElement): XmlElement {
|
|
120
|
+
return allChildrenElement(element)[0] ?? null
|
|
121
|
+
}
|
|
122
|
+
|
|
118
123
|
/**
|
|
119
124
|
* Will return all matching elements nested according to the given
|
|
120
125
|
* names (similar to a path), starting form the input element;
|
|
@@ -228,6 +233,7 @@ export function xmlToString(
|
|
|
228
233
|
${padding}<${el.name}${attrs}/>
|
|
229
234
|
${parentPadding}`
|
|
230
235
|
}
|
|
236
|
+
|
|
231
237
|
return `
|
|
232
238
|
${padding}<${el.name}${attrs}>${children}</${el.name}>
|
|
233
239
|
${parentPadding}`
|
|
@@ -307,11 +313,13 @@ function getTreeRoot(element: XmlElement): XmlElement {
|
|
|
307
313
|
|
|
308
314
|
// stays on the parent element
|
|
309
315
|
// if the given elements are part of a subtree, will add the root of subtree
|
|
316
|
+
// will filter out falsy elements
|
|
310
317
|
export function appendChildren(
|
|
311
318
|
...childrenFns: Array<ChainableFunction<void, XmlElement>>
|
|
312
319
|
): ChainableFunction<XmlElement, XmlElement> {
|
|
313
320
|
return (element) => {
|
|
314
321
|
if (!element) return null
|
|
322
|
+
childrenFns = childrenFns.filter((fn) => fn)
|
|
315
323
|
element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot))
|
|
316
324
|
element.children.forEach((el) => (el.parent = element))
|
|
317
325
|
return element
|
|
@@ -220,11 +220,10 @@ export class MapUtilsService {
|
|
|
220
220
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
221
221
|
return null
|
|
222
222
|
}
|
|
223
|
-
//
|
|
223
|
+
// extend all the spatial extents bbox into an including bbox
|
|
224
224
|
const totalExtent = record.spatialExtents.reduce(
|
|
225
225
|
(prev, curr) => {
|
|
226
|
-
|
|
227
|
-
return extend(prev, geom.getExtent())
|
|
226
|
+
return extend(prev, curr.bbox)
|
|
228
227
|
},
|
|
229
228
|
[Infinity, Infinity, -Infinity, -Infinity]
|
|
230
229
|
)
|
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
<div
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
></gn-ui-progress-bar>
|
|
15
|
-
</div>
|
|
16
|
-
<div
|
|
17
|
-
class="absolute z-10 bg-white border border-black border-opacity-35 rounded-lg shadow-lg p-5 whitespace-nowrap"
|
|
18
|
-
[class]="isMenuShown ? 'block' : 'hidden'"
|
|
19
|
-
>
|
|
1
|
+
<div *ngIf="metadataQualityDisplay" class="mb-6 metadata-quality">
|
|
2
|
+
<gn-ui-popover [content]="popoverItems" theme="light-border">
|
|
3
|
+
<div class="min-w-[200px]" [class]="smaller ? 'leading-[8px]' : ''">
|
|
4
|
+
<gn-ui-progress-bar
|
|
5
|
+
tabindex="0"
|
|
6
|
+
[value]="qualityScore"
|
|
7
|
+
type="primary"
|
|
8
|
+
></gn-ui-progress-bar>
|
|
9
|
+
</div>
|
|
10
|
+
</gn-ui-popover>
|
|
11
|
+
</div>
|
|
12
|
+
<ng-template #popoverItems>
|
|
13
|
+
<div class="p-2 py-4">
|
|
20
14
|
<div class="mb-4 font-bold" translate>record.metadata.quality.details</div>
|
|
21
15
|
<gn-ui-metadata-quality-item
|
|
22
16
|
*ngFor="let e of items"
|
|
@@ -24,4 +18,4 @@
|
|
|
24
18
|
[value]="e.value"
|
|
25
19
|
></gn-ui-metadata-quality-item>
|
|
26
20
|
</div>
|
|
27
|
-
</
|
|
21
|
+
</ng-template>
|
|
@@ -21,8 +21,6 @@ export class MetadataQualityComponent implements OnChanges {
|
|
|
21
21
|
|
|
22
22
|
items: MetadataQualityItem[] = []
|
|
23
23
|
|
|
24
|
-
isMenuShown = false
|
|
25
|
-
|
|
26
24
|
get qualityScore() {
|
|
27
25
|
const qualityScore = this.metadata?.extras?.qualityScore
|
|
28
26
|
return typeof qualityScore === 'number'
|
|
@@ -36,14 +34,6 @@ export class MetadataQualityComponent implements OnChanges {
|
|
|
36
34
|
)
|
|
37
35
|
}
|
|
38
36
|
|
|
39
|
-
showMenu() {
|
|
40
|
-
this.isMenuShown = true
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
hideMenu() {
|
|
44
|
-
this.isMenuShown = false
|
|
45
|
-
}
|
|
46
|
-
|
|
47
37
|
private add(name: string, value: boolean) {
|
|
48
38
|
if (this.metadataQualityDisplay?.[name] !== false) {
|
|
49
39
|
this.items.push({ name, value })
|
|
@@ -9,7 +9,7 @@ import { ContentGhostComponent } from './content-ghost/content-ghost.component'
|
|
|
9
9
|
import { DownloadItemComponent } from './download-item/download-item.component'
|
|
10
10
|
import { DownloadsListComponent } from './downloads-list/downloads-list.component'
|
|
11
11
|
import { ApiCardComponent } from './api-card/api-card.component'
|
|
12
|
-
import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
|
|
12
|
+
import { PopoverComponent, UiWidgetsModule } from '../../../../../libs/ui/widgets/src'
|
|
13
13
|
import { MaxLinesComponent, UiLayoutModule } from '../../../../../libs/ui/layout/src'
|
|
14
14
|
import { TranslateModule } from '@ngx-translate/core'
|
|
15
15
|
import { RelatedRecordCardComponent } from './related-record-card/related-record-card.component'
|
|
@@ -45,6 +45,7 @@ import { TimeSincePipe } from './user-feedback-item/time-since.pipe'
|
|
|
45
45
|
UiInputsModule,
|
|
46
46
|
FormsModule,
|
|
47
47
|
NgOptimizedImage,
|
|
48
|
+
PopoverComponent,
|
|
48
49
|
MarkdownParserComponent,
|
|
49
50
|
ThumbnailComponent,
|
|
50
51
|
TimeSincePipe,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './lib/ui-widgets.module'
|
|
2
2
|
export * from './lib/progress-bar/progress-bar.component'
|
|
3
|
+
export * from './lib/popover/popover.component'
|
|
3
4
|
export * from './lib/loading-mask/loading-mask.component'
|
|
4
5
|
export * from './lib/color-scale/color-scale.component'
|
|
5
6
|
export * from './lib/popup-alert/popup-alert.component'
|
|
File without changes
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common'
|
|
2
|
+
import {
|
|
3
|
+
Component,
|
|
4
|
+
AfterViewInit,
|
|
5
|
+
ElementRef,
|
|
6
|
+
Input,
|
|
7
|
+
ViewChild,
|
|
8
|
+
OnDestroy,
|
|
9
|
+
OnChanges,
|
|
10
|
+
SimpleChanges,
|
|
11
|
+
TemplateRef,
|
|
12
|
+
Renderer2,
|
|
13
|
+
ViewContainerRef,
|
|
14
|
+
EmbeddedViewRef,
|
|
15
|
+
} from '@angular/core'
|
|
16
|
+
import tippy, { Instance } from 'tippy.js'
|
|
17
|
+
|
|
18
|
+
@Component({
|
|
19
|
+
selector: 'gn-ui-popover',
|
|
20
|
+
templateUrl: './popover.component.html',
|
|
21
|
+
styleUrls: ['./popover.component.css'],
|
|
22
|
+
standalone: true,
|
|
23
|
+
imports: [CommonModule],
|
|
24
|
+
})
|
|
25
|
+
export class PopoverComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
26
|
+
@ViewChild('popoverContent', { static: false }) popoverContent: ElementRef
|
|
27
|
+
@Input() content: string | TemplateRef<any>
|
|
28
|
+
@Input() theme: 'light' | 'light-border' | 'translucent' | 'material' | ''
|
|
29
|
+
|
|
30
|
+
private tippyInstance: Instance
|
|
31
|
+
private view: EmbeddedViewRef<any>
|
|
32
|
+
|
|
33
|
+
constructor(
|
|
34
|
+
private viewContainerRef: ViewContainerRef,
|
|
35
|
+
private renderer: Renderer2
|
|
36
|
+
) {}
|
|
37
|
+
|
|
38
|
+
private getContent(): string | HTMLElement {
|
|
39
|
+
if (this.content instanceof TemplateRef) {
|
|
40
|
+
if (this.view) {
|
|
41
|
+
this.view.destroy()
|
|
42
|
+
}
|
|
43
|
+
this.view = this.viewContainerRef.createEmbeddedView(this.content)
|
|
44
|
+
this.view.detectChanges()
|
|
45
|
+
const wrapper = this.renderer.createElement('div') // Create a wrapper div
|
|
46
|
+
this.view.rootNodes.forEach((node) => {
|
|
47
|
+
this.renderer.appendChild(wrapper, node) // Append each root node to the wrapper
|
|
48
|
+
})
|
|
49
|
+
return wrapper
|
|
50
|
+
}
|
|
51
|
+
return this.content
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
ngAfterViewInit(): void {
|
|
55
|
+
this.tippyInstance = tippy(this.popoverContent.nativeElement as Element, {
|
|
56
|
+
content: this.getContent(),
|
|
57
|
+
allowHTML: true,
|
|
58
|
+
theme: this.theme,
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
ngOnChanges(changes: SimpleChanges): void {
|
|
63
|
+
if (changes['theme']) {
|
|
64
|
+
this.theme = changes['theme'].currentValue
|
|
65
|
+
if (this.tippyInstance) {
|
|
66
|
+
this.tippyInstance.setProps({ theme: this.theme })
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (changes['content']) {
|
|
70
|
+
this.content = changes['content'].currentValue
|
|
71
|
+
if (this.tippyInstance) {
|
|
72
|
+
this.tippyInstance.setContent(this.getContent())
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
ngOnDestroy(): void {
|
|
78
|
+
if (this.tippyInstance) {
|
|
79
|
+
this.tippyInstance.destroy()
|
|
80
|
+
}
|
|
81
|
+
if (this.view) {
|
|
82
|
+
this.view.destroy()
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
package/tailwind.base.css
CHANGED
|
@@ -115,7 +115,8 @@
|
|
|
115
115
|
--padding: var(--gn-ui-badge-padding, 0.375em 0.75em);
|
|
116
116
|
--text-color: var(--gn-ui-badge-text-color, var(--color-gray-50));
|
|
117
117
|
--background-color: var(--gn-ui-badge-background-color, black);
|
|
118
|
-
|
|
118
|
+
--opacity: var(--gn-ui-badge-opacity, 0.7);
|
|
119
|
+
@apply inline-block opacity-[--opacity] p-[--padding] rounded-[--rounded]
|
|
119
120
|
font-medium text-[length:0.875em] leading-none text-[color:--text-color] bg-[color:--background-color];
|
|
120
121
|
}
|
|
121
122
|
/* makes sure icons will not make the badges grow vertically; also make size proportional */
|
package/translations/de.json
CHANGED
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
"search.filters.resourceType": "Ressourcentyp",
|
|
439
439
|
"search.filters.standard": "Standard",
|
|
440
440
|
"search.filters.title": "Ergebnisse filtern",
|
|
441
|
-
"search.filters.topic": "
|
|
441
|
+
"search.filters.topic": "Themen",
|
|
442
442
|
"search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
|
|
443
443
|
"search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
|
|
444
444
|
"share.tab.permalink": "Teilen",
|
package/translations/en.json
CHANGED
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
"search.filters.resourceType": "Resource type",
|
|
439
439
|
"search.filters.standard": "Standard",
|
|
440
440
|
"search.filters.title": "Filter your results",
|
|
441
|
-
"search.filters.topic": "
|
|
441
|
+
"search.filters.topic": "Topics",
|
|
442
442
|
"search.filters.useSpatialFilter": "Show records in the area of interest first",
|
|
443
443
|
"search.filters.useSpatialFilterHelp": "When this is enabled, records situated in the catalog's area of interest are shown first; records outside of this area will not show up.",
|
|
444
444
|
"share.tab.permalink": "Share",
|
package/translations/fr.json
CHANGED
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
"search.filters.resourceType": "Type de ressource",
|
|
439
439
|
"search.filters.standard": "Standard",
|
|
440
440
|
"search.filters.title": "Affiner votre recherche",
|
|
441
|
-
"search.filters.topic": "
|
|
441
|
+
"search.filters.topic": "Thèmes",
|
|
442
442
|
"search.filters.useSpatialFilter": "Mettre en avant les résultats sur la zone d'intérêt",
|
|
443
443
|
"search.filters.useSpatialFilterHelp": "Si cette option est activée, les fiches portant sur la zone d'intérêt du catalogue seront montrées en premier; les fiches en dehors de cette zone n'apparaîtront pas dans les résultats.",
|
|
444
444
|
"share.tab.permalink": "Partager",
|
package/translations/it.json
CHANGED
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
"search.filters.resourceType": "Tipo di risorsa",
|
|
439
439
|
"search.filters.standard": "Standard",
|
|
440
440
|
"search.filters.title": "Affina la sua ricerca",
|
|
441
|
-
"search.filters.topic": "
|
|
441
|
+
"search.filters.topic": "Argomenti",
|
|
442
442
|
"search.filters.useSpatialFilter": "Evidenzia i risultati nell'area di interesse",
|
|
443
443
|
"search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
|
|
444
444
|
"share.tab.permalink": "Condividere",
|
package/translations/sk.json
CHANGED
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
"search.filters.resourceType": "Typ zdroja",
|
|
439
439
|
"search.filters.standard": "Štandard",
|
|
440
440
|
"search.filters.title": "Filtrovanie výsledkov",
|
|
441
|
-
"search.filters.topic": "
|
|
441
|
+
"search.filters.topic": "Témy",
|
|
442
442
|
"search.filters.useSpatialFilter": "Najskôr zobraziť záznamy v oblasti záujmu",
|
|
443
443
|
"search.filters.useSpatialFilterHelp": "Keď je táto možnosť zapnutá, záznamy nachádzajúce sa v oblasti záujmu katalógu sa zobrazia ako prvé; záznamy mimo tejto oblasti sa nezobrazia.",
|
|
444
444
|
"share.tab.permalink": "Zdieľať",
|