Migrate grateWizard from React/Next.js to native Nuxt integration
- Port all React components to Vue 3 (GwTabs, GwMN, GwCRA, GwCRS, GwMap, GwRelations, GwPerimeterList) - Port hooks to Vue composables (useCesiumProfiles, useSavedPerimeters) - Copy pure TS services and utils (duniter/, ss58, gratewizard utils) - Add Leaflet + Geoman + MarkerCluster dependencies - Serve grateWizard as popup via /gratewizard?popup (layout: false) and info page on /gratewizard (with Librodrome layout) - Remove public/gratewizard-app/ static Next.js export - Refine UI: compact tabs, buttons, inputs, cards, perimeter list - Use Ğ1 breve everywhere, French locale for all dates and amounts - Rename roles: vendeur→offre / acheteur→reçoit le produit ou service - Rename prix→évaluation in all visible text - Add calculated result column in CRA and CRS relation tables - DU/Ğ1 selector uses toggle switch (same as role toggle) - Auto-scroll to monetary data card on polygon selection Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
40
app/components/gratewizard/GwPerimeterList.vue
Normal file
40
app/components/gratewizard/GwPerimeterList.vue
Normal file
@@ -0,0 +1,40 @@
|
||||
<template>
|
||||
<div v-if="perimeters.length > 0" class="w-full flex flex-col gap-1">
|
||||
<p class="text-xs font-semibold text-white/50 uppercase tracking-wide">Périmètres sauvegardés</p>
|
||||
<div class="flex flex-col gap-0.5 w-full">
|
||||
<div
|
||||
v-for="p in perimeters"
|
||||
:key="p.name"
|
||||
class="gw-perimeter-item"
|
||||
@click="emit('load', p)"
|
||||
>
|
||||
<div class="flex items-center gap-1.5 min-w-0">
|
||||
<span class="text-accent text-xs shrink-0">📍</span>
|
||||
<span class="text-xs font-medium truncate">{{ p.name }}</span>
|
||||
<span class="text-[10px] text-white/30 shrink-0">
|
||||
{{ new Date(p.createdAt).toLocaleDateString('fr-FR', { dateStyle: 'short' }) }}
|
||||
</span>
|
||||
</div>
|
||||
<button
|
||||
class="gw-perimeter-delete"
|
||||
@click.stop="emit('delete', p.name)"
|
||||
>
|
||||
×
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { SavedPerimeter } from '~/composables/useSavedPerimeters';
|
||||
|
||||
defineProps<{
|
||||
perimeters: SavedPerimeter[];
|
||||
}>();
|
||||
|
||||
const emit = defineEmits<{
|
||||
load: [perimeter: SavedPerimeter];
|
||||
delete: [name: string];
|
||||
}>();
|
||||
</script>
|
||||
Reference in New Issue
Block a user