Source AddDataPopulars
Source AddDataPopulars
Cette page est générée automatiquement à partir du dépôt local au moment de la génération de la documentation.
Fichiers inclus
packages/common/src/lib/widgets/add-data/add-data-populars/add-data-populars.declaration.tspackages/common/src/lib/widgets/add-data/add-data-populars/add-data-populars.config.tspackages/common/src/lib/widgets/add-data/add-data-populars/add-data-populars.i18n.tspackages/common/src/lib/widgets/add-data/add-data-populars/AddDataPopulars.sveltepackages/common/src/lib/widgets/add-data/add-data-populars/AddDataPopularsWidget.svelte
packages/common/src/lib/widgets/add-data/add-data-populars/add-data-populars.declaration.ts
import { widgetFactorySvelte, type WidgetProps } from '$lib/api/managers/widget';import { type AddDataPopularsWidgetConfig, addDataPopularsWidgetConfigSchema } from './add-data-populars.config';import type { WidgetDeclaration } from '$lib/api/managers/widget/widget-declaration';
export const declaration = { factory: () => import('./AddDataPopularsWidget.svelte').then((AddDataPopularsWidget) => widgetFactorySvelte(AddDataPopularsWidget), ), schema: () => addDataPopularsWidgetConfigSchema,} satisfies WidgetDeclaration;
export type AddDataPopularsProps = WidgetProps<AddDataPopularsWidgetConfig>;packages/common/src/lib/widgets/add-data/add-data-populars/add-data-populars.config.ts
import { defineWidgetConfig } from '$lib/api/managers/configuration/models/widget/widget-configuration.schema';import { inToolbarSchemaFrom } from '$lib/api/managers/configuration/models/widget/widget-in-toolbar.schema';import { i18nSchemaFrom } from '$lib/api/managers/i18n/i18n.schema';import { z } from 'zod';import { addDataPopularsI18n } from '$lib/widgets/add-data/add-data-populars/add-data-populars.i18n';import { mapServiceConfigurationSchema } from '$lib/api/managers/configuration';
const geoportailServiceConfigSchema = z.object({ id: z.string().optional(), type: z.literal('METADATA'), metadataId: z.string().trim(), label: z.string().optional(),});
export const addDataPopularsConfigSchema = z .object({ popularServices: z.array(z.union([mapServiceConfigurationSchema, geoportailServiceConfigSchema])).default([]), trendingServices: z.array(z.union([mapServiceConfigurationSchema, geoportailServiceConfigSchema])).default([]), }) .prefault({});export type AddDataPopularsConfig = z.infer<typeof addDataPopularsConfigSchema>;export type PopularConfigItem = AddDataPopularsConfig['popularServices'][number];
export const addDataPopularsWidgetConfigSchema = defineWidgetConfig({ i18n: i18nSchemaFrom(addDataPopularsI18n), title: addDataPopularsI18n['add-data-populars-title'], inToolbar: inToolbarSchemaFrom(false), config: addDataPopularsConfigSchema,});
export type AddDataPopularsWidgetConfig = z.infer<typeof addDataPopularsWidgetConfigSchema>;packages/common/src/lib/widgets/add-data/add-data-populars/add-data-populars.i18n.ts
import type { I18nRegistry } from '$lib/api/managers/i18n';
export const addDataPopularsI18n = { 'add-data-populars-title': { fr: 'Données populaires', nl: 'NL - Données populaires', }, 'trending-data': { fr: "Données d'actualité", nl: "NL - Données d'actualité", },} satisfies I18nRegistry;
export type AddDataPopularsI18n = I18nRegistry<keyof typeof addDataPopularsI18n>;packages/common/src/lib/widgets/add-data/add-data-populars/AddDataPopulars.svelte
<script lang="ts"> import { type MapServiceConfiguration } from '$lib/api/managers/configuration'; import type { AddDataPopularsI18n } from '$lib/widgets/add-data/add-data-populars/add-data-populars.i18n'; import type { AddDataPopularsConfig } from '$lib/widgets/add-data/add-data-populars/add-data-populars.config'; import { getMapManager } from '$lib/api/map'; import CardList from '$lib/widgets/add-data/card-list/CardList.svelte'; import { cn } from '$lib/components/shadcn/utils'; import { getI18n } from '$lib/api/managers/i18n'; import { highlightServiceInToc } from '$lib/widgets/toc/toc.utils'; import { getWidgetManager } from '$lib/api/managers/widget'; import { getTopicManager } from '$lib/api/managers/topic';
interface Props { config: AddDataPopularsConfig; i18nRegistry: AddDataPopularsI18n; class?: string; }
let { config, i18nRegistry, class: className }: Props = $props();
const i18n = getI18n(i18nRegistry); const mapManager = getMapManager(); const widgetManager = getWidgetManager(); const topic = getTopicManager();
function onItemClick(service: MapServiceConfiguration, source: 'populars' | 'trending') { if (!mapManager.layerList.findById(service.id)) { const layer = mapManager.addMapService(service); topic.publish({ type: 'AddData-add-mapService-from-populars', layer, source, }); } highlightServiceInToc(service.id, widgetManager, mapManager); }</script>
<div class={cn('gv-max-h-[55vh] gv-overflow-y-auto gv-flex gv-flex-col gv-gap-5 gv-pb-0.5', className)}> <CardList items={config.popularServices} onItemClick={(service) => onItemClick(service, 'populars')} {i18nRegistry} dataTestIdPrefix="popular-" />
{#if config.trendingServices.length} <div class="gv-flex gv-flex-col gv-gap-1"> <span class="gv-font-bold gv-text-lg">{i18n('trending-data')}</span> <CardList items={config.trendingServices} onItemClick={(service) => onItemClick(service, 'trending')} {i18nRegistry} dataTestIdPrefix="trending-" /> </div> {/if}</div>packages/common/src/lib/widgets/add-data/add-data-populars/AddDataPopularsWidget.svelte
<script lang="ts"> import AddDataPopulars from './AddDataPopulars.svelte'; import type { AddDataPopularsProps } from './add-data-populars.declaration';
let { fullConfig }: AddDataPopularsProps = $props();</script>
<AddDataPopulars config={fullConfig.config} i18nRegistry={fullConfig.i18n} />