merge: PC3 mindmap Carte O D3 + scrape AEP (round 1)
This commit is contained in:
@@ -1,11 +1,88 @@
|
||||
---
|
||||
// Placeholder Centre : HAUT mindmap AEP (PC3) ; BAS iframe carte AEP (PC4)
|
||||
// Centre - HAUT : tabs (Carte O mindmap | Chatbot RAG placeholder PC7).
|
||||
// BAS : iframe carte AEP (PC4).
|
||||
import CarteOWrapper from '../vue/CarteOWrapper.vue';
|
||||
import ChatbotPlaceholder from '../vue/ChatbotPlaceholder.vue';
|
||||
---
|
||||
<div class="h-full grid grid-rows-2 gap-2 p-2">
|
||||
<section class="border border-dashed border-neutral-300 rounded flex items-center justify-center">
|
||||
<p class="text-sm text-neutral-400">Mindmap AEP — PC3</p>
|
||||
<!-- HAUT 50% : tabs Carte O / Chatbot -->
|
||||
<section class="border border-neutral-200 rounded flex flex-col overflow-hidden bg-white">
|
||||
<nav role="tablist" aria-label="Vues centrales" class="flex border-b border-neutral-200 px-1 pt-1">
|
||||
<button
|
||||
type="button"
|
||||
role="tab"
|
||||
id="tab-mindmap"
|
||||
aria-controls="panel-mindmap"
|
||||
aria-selected="true"
|
||||
data-tab="mindmap"
|
||||
class="tab-btn px-3 py-2 text-sm border-b-2 border-neutral-900 font-medium text-neutral-900"
|
||||
>
|
||||
Carte O
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
role="tab"
|
||||
id="tab-chatbot"
|
||||
aria-controls="panel-chatbot"
|
||||
aria-selected="false"
|
||||
data-tab="chatbot"
|
||||
class="tab-btn px-3 py-2 text-sm border-b-2 border-transparent text-neutral-500 hover:text-neutral-900"
|
||||
>
|
||||
Chatbot
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
<div class="flex-1 overflow-hidden relative">
|
||||
<div
|
||||
id="panel-mindmap"
|
||||
role="tabpanel"
|
||||
aria-labelledby="tab-mindmap"
|
||||
data-tab-panel="mindmap"
|
||||
class="absolute inset-0"
|
||||
>
|
||||
<CarteOWrapper client:visible />
|
||||
</div>
|
||||
<div
|
||||
id="panel-chatbot"
|
||||
role="tabpanel"
|
||||
aria-labelledby="tab-chatbot"
|
||||
data-tab-panel="chatbot"
|
||||
class="absolute inset-0 hidden"
|
||||
>
|
||||
<ChatbotPlaceholder client:visible />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- BAS 50% : iframe carte AEP (PC4) -->
|
||||
<section class="border border-dashed border-neutral-300 rounded flex items-center justify-center">
|
||||
<p class="text-sm text-neutral-400">Iframe carte AEP — PC4</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Tabs toggle.
|
||||
const tabs = document.querySelectorAll<HTMLButtonElement>('[data-tab]');
|
||||
const panels = document.querySelectorAll<HTMLElement>('[data-tab-panel]');
|
||||
|
||||
tabs.forEach((tab) => {
|
||||
tab.addEventListener('click', () => {
|
||||
const target = tab.dataset.tab;
|
||||
if (!target) return;
|
||||
|
||||
tabs.forEach((t) => {
|
||||
const active = t.dataset.tab === target;
|
||||
t.setAttribute('aria-selected', active ? 'true' : 'false');
|
||||
t.classList.toggle('border-neutral-900', active);
|
||||
t.classList.toggle('border-transparent', !active);
|
||||
t.classList.toggle('font-medium', active);
|
||||
t.classList.toggle('text-neutral-900', active);
|
||||
t.classList.toggle('text-neutral-500', !active);
|
||||
});
|
||||
|
||||
panels.forEach((p) => {
|
||||
p.classList.toggle('hidden', p.dataset.tabPanel !== target);
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user