Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,15 @@
border: none;"
/>
</div>
<SimpleBanner
v-else
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("Erreur lors de l'affichage de l'aperçu.") }}</span>
</SimpleBanner>
<PreviewUnavailable v-else>
{{ t("L'aperçu de ce fichier n'a pas pu être chargé. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import { RiErrorWarningLine } from '@remixicon/vue'
import SimpleBanner from '../SimpleBanner.vue'
import PreviewUnavailable from './PreviewUnavailable.vue'
import type { Resource } from '../../types/resources'
import type { Dataset, DatasetV2 } from '../../types/datasets'
import { useTranslation } from '../../composables/useTranslation'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,42 +17,25 @@
>
{{ t("Chargement de l'aperçu JSON...") }}
</div>
<SimpleBanner
v-else-if="fileTooLarge"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ fileSizeBytes
? t("Fichier JSON trop volumineux pour l'aperçu. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")
: t("L'aperçu n'est pas disponible car la taille du fichier est inconnue. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")
}}</span>
</SimpleBanner>
<SimpleBanner
v-else-if="error === 'network'"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("Ce fichier JSON ne peut pas être prévisualisé, peut-être parce qu'il est hébergé sur un autre site qui ne l'autorise pas. Pour le consulter, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.") }}</span>
</SimpleBanner>
<SimpleBanner
v-else-if="error"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("Erreur lors du chargement de l'aperçu JSON.") }}</span>
</SimpleBanner>
<PreviewUnavailable v-else-if="fileTooLarge">
{{ fileSizeBytes
? t("Le fichier JSON est trop volumineux pour être prévisualisé. Téléchargez-le depuis l'onglet Téléchargements.")
: t("La taille du fichier est inconnue, l'aperçu n'est pas disponible. Téléchargez-le depuis l'onglet Téléchargements.")
}}
</PreviewUnavailable>
<PreviewUnavailable v-else-if="error === 'network'">
{{ t("Ce fichier est hébergé sur un site externe qui ne permet pas la prévisualisation. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
<PreviewUnavailable v-else-if="error">
{{ t("L'aperçu de ce fichier n'a pas pu être chargé. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
</div>
</template>

<script setup lang="ts">
import { computed, defineAsyncComponent, onMounted, ref } from 'vue'
import { RiErrorWarningLine } from '@remixicon/vue'

import { useComponentsConfig } from '../../config'
import SimpleBanner from '../SimpleBanner.vue'
import PreviewUnavailable from './PreviewUnavailable.vue'
import type { Resource } from '../../types/resources'
import { useTranslation } from '../../composables/useTranslation'
import { getResourceFilesize } from '../../functions/datasets'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
<template>
<SimpleBanner
v-if="hasError"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("L'aperçu cartographique de ce fichier n'a pas pu être chargé.") }}</span>
</SimpleBanner>
<PreviewUnavailable v-if="hasError">
{{ t("L'aperçu cartographique de ce fichier n'a pas pu être chargé.") }}
</PreviewUnavailable>
<div
v-else
id="map"
Expand All @@ -16,9 +11,7 @@

<script setup lang = "ts">
import { onMounted, ref, useTemplateRef } from 'vue'
import { RiErrorWarningLine } from '@remixicon/vue'

import SimpleBanner from '../SimpleBanner.vue'
import PreviewUnavailable from './PreviewUnavailable.vue'
import type { Resource } from '../../types/resources'
import { useTranslation } from '../../composables/useTranslation'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,43 +18,27 @@
>
{{ t("Chargement de l'aperçu PDF...") }}
</div>
<SimpleBanner
v-else-if="fileTooLarge"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="flex-none size-6" />
<span>{{ fileSizeBytes
? t("Fichier PDF trop volumineux pour l'aperçu. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")
: t("L'aperçu n'est pas disponible car la taille du fichier est inconnue. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")
}}</span>
</SimpleBanner>
<SimpleBanner
v-else-if="error === 'network'"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="flex-none size-6" />
<span>{{ t("Ce fichier PDF ne peut pas être prévisualisé, peut-être parce qu'il est hébergé sur un autre site qui ne l'autorise pas. Pour le consulter, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.") }}</span>
</SimpleBanner>
<SimpleBanner
v-else-if="error"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="flex-none size-6" />
<span>{{ t("Erreur lors du chargement de l'aperçu PDF. Pour consulter le fichier, téléchargez-le depuis l'onglet Téléchargements.") }}</span>
</SimpleBanner>
<PreviewUnavailable v-else-if="fileTooLarge">
{{ fileSizeBytes
? t("Le fichier PDF est trop volumineux pour être prévisualisé. Téléchargez-le depuis l'onglet Téléchargements.")
: t("La taille du fichier est inconnue, l'aperçu n'est pas disponible. Téléchargez-le depuis l'onglet Téléchargements.")
}}
</PreviewUnavailable>
<PreviewUnavailable v-else-if="error === 'network'">
{{ t("Ce fichier est hébergé sur un site externe qui ne permet pas la prévisualisation. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
<PreviewUnavailable v-else-if="error">
{{ t("L'aperçu de ce fichier n'a pas pu être chargé. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
</div>
</template>

<script setup lang="ts">
import { computed, nextTick, onBeforeUnmount, onMounted, ref } from 'vue'
import { RiErrorWarningLine } from '@remixicon/vue'
import * as pdfjsLib from 'pdfjs-dist'
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.min.mjs?url'
import type { PDFDocumentProxy } from 'pdfjs-dist'
import SimpleBanner from '../SimpleBanner.vue'
import PreviewUnavailable from './PreviewUnavailable.vue'
import { useComponentsConfig } from '../../config'
import type { Resource } from '../../types/resources'
import { useTranslation } from '../../composables/useTranslation'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
<template>
<div>
<SimpleBanner
v-if="hasError"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("L'aperçu cartographique de ce fichier n'a pas pu être chargé.") }}</span>
</SimpleBanner>
<PreviewUnavailable v-if="hasError">
{{ t("L'aperçu cartographique de ce fichier n'a pas pu être chargé.") }}
</PreviewUnavailable>
<div
v-else
class="-mx-4"
Expand Down Expand Up @@ -53,7 +48,7 @@

<script setup lang="ts">
import { computed, onMounted, ref, useTemplateRef } from 'vue'
import { RiErrorWarningLine, RiExternalLinkFill } from '@remixicon/vue'
import { RiExternalLinkFill } from '@remixicon/vue'
import { Protocol, PMTiles } from 'pmtiles'
import maplibregl from 'maplibre-gl'
import DOMPurify from 'dompurify'
Expand All @@ -64,7 +59,7 @@ import type { Resource } from '../../types/resources'
import type { Dataset, DatasetV2 } from '../../types/datasets'
import BrandedButton from '../BrandedButton.vue'
import styleVector from '../../../assets/json/vector.json'
import SimpleBanner from '../SimpleBanner.vue'
import PreviewUnavailable from './PreviewUnavailable.vue'
import { useTranslation } from '../../composables/useTranslation'
import franceSvg from './france.svg?raw'
import { getOwnerName, getOwnerPage } from '../../functions/owned'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
<template>
<div>
<SimpleBanner
v-if="hasError"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("L'aperçu de ce fichier n'a pas pu être chargé.") }}</span>
</SimpleBanner>
<PreviewUnavailable v-if="hasError">
{{ t("L'aperçu de ce fichier n'a pas pu être chargé. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
<PreviewLoader v-else-if="loading" />
<div
v-else
Expand Down Expand Up @@ -105,15 +100,15 @@

<script setup lang="ts">
import { computed, onMounted, ref } from 'vue'
import { RiArrowDownLine, RiArrowUpLine, RiErrorWarningLine, RiExternalLinkFill } from '@remixicon/vue'
import { RiArrowDownLine, RiArrowUpLine, RiExternalLinkFill } from '@remixicon/vue'
import Pagination from '../Pagination.vue'
import { getData, type SortConfig } from '../../functions/tabularApi'
import { useFormatDate } from '../../functions/dates'
import { trackEvent } from '../../functions/matomo'
import type { Resource } from '../../types/resources'
import { useComponentsConfig } from '../../config'
import BrandedButton from '../BrandedButton.vue'
import SimpleBanner from '../SimpleBanner.vue'
import PreviewUnavailable from './PreviewUnavailable.vue'
import { useTranslation } from '../../composables/useTranslation'
import franceSvg from './france.svg?raw'
import PreviewLoader from './PreviewLoader.vue'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<template>
<ContentLoader
:width="1124"
:height="300"
viewBox="0 0 1124 300"
:speed="2"
primary-color="#f3f3f3"
secondary-color="#ecebeb"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<template>
<div class="flex flex-col items-center py-12">
<img
:src="microscopeSrc"
class="h-20 mb-3"
alt=""
>
<p class="fr-text--bold mb-1">
{{ t("Aucun aperçu disponible") }}
</p>
<p class="text-sm text-gray-medium mb-0 text-center max-w-lg">
<slot />
</p>
</div>
</template>

<script setup lang="ts">
import { useTranslation } from '../../composables/useTranslation'
import microscopeSrc from '../../../assets/illustrations/microscope.svg?url'

const { t } = useTranslation()
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,25 @@
>
{{ t("Chargement de l'aperçu XML...") }}
</div>
<SimpleBanner
v-else-if="fileTooLarge"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ fileSizeBytes
? t("Fichier XML trop volumineux pour l'aperçu. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")
: t("L'aperçu n'est pas disponible car la taille du fichier est inconnue. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")
}}</span>
</SimpleBanner>
<SimpleBanner
v-else-if="error === 'network'"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("Ce fichier XML ne peut pas être prévisualisé, peut-être parce qu'il est hébergé sur un autre site qui ne l'autorise pas. Pour le consulter, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.") }}</span>
</SimpleBanner>
<SimpleBanner
v-else-if="error"
type="warning"
class="flex items-center space-x-2"
>
<RiErrorWarningLine class="shrink-0 size-6" />
<span>{{ t("Erreur lors du chargement de l'aperçu XML.") }}</span>
</SimpleBanner>
<PreviewUnavailable v-else-if="fileTooLarge">
{{ fileSizeBytes
? t("Le fichier XML est trop volumineux pour être prévisualisé. Téléchargez-le depuis l'onglet Téléchargements.")
: t("La taille du fichier est inconnue, l'aperçu n'est pas disponible. Téléchargez-le depuis l'onglet Téléchargements.")
}}
</PreviewUnavailable>
<PreviewUnavailable v-else-if="error === 'network'">
{{ t("Ce fichier est hébergé sur un site externe qui ne permet pas la prévisualisation. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
<PreviewUnavailable v-else-if="error">
{{ t("L'aperçu de ce fichier n'a pas pu être chargé. Téléchargez-le depuis l'onglet Téléchargements.") }}
</PreviewUnavailable>
</div>
</template>

<script setup lang="ts">
import { computed, defineAsyncComponent, onMounted, ref } from 'vue'
import { RiErrorWarningLine } from '@remixicon/vue'

import { useComponentsConfig } from '../../config'
import SimpleBanner from '../SimpleBanner.vue'
import PreviewUnavailable from './PreviewUnavailable.vue'
import type { Resource } from '../../types/resources'
import { useTranslation } from '../../composables/useTranslation'
import '../../types/vue3-xml-viewer.d'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,24 +159,35 @@ watch(searchDebounced, () => {
}
})

// Separate useFetch for loadMore, initialized at setup time with immediate: false
// so that it doesn't fetch until execute() is called from the event handler.
const loadMoreType = ref<ResourceType>('main')
const loadMorePage = ref(1)
const loadMoreParams = computed(() => ({
type: loadMoreType.value,
page_size: PAGE_SIZE,
page: loadMorePage.value,
q: searchDebounced.value || undefined,
}))
const { data: loadMoreData, execute: executeLoadMore } = await useFetch<PaginatedArray<Resource>>(url, {
params: loadMoreParams,
immediate: false,
watch: false,
})

const loadMore = async (type: ResourceType) => {
const index = RESOURCE_TYPE.indexOf(type)
if (index === -1) return
const pageRef = pageByType[index]!
const extraRef = extraResourcesByType[index]!
pageRef.value++

const { data } = await useFetch<PaginatedArray<Resource>>(url, {
params: {
type,
page_size: PAGE_SIZE,
page: pageRef.value,
q: searchDebounced.value || undefined,
},
})
loadMoreType.value = type
loadMorePage.value = pageRef.value
await executeLoadMore()

if (data.value) {
extraRef.value = [...extraRef.value, ...data.value.data]
if (loadMoreData.value) {
extraRef.value = [...extraRef.value, ...loadMoreData.value.data]
}
}

Expand Down
Loading
Loading