Newer
Older
import Map from "../core/Map"
import News from "../News"
import Stats from "../Stats"
import Hero from "../Hero"
import Image from "../core/Image"
import Data from "../Data"
import Maps from "../Maps"
import Events from "../Events"
interface IAction {
actions_id: {
name: string
url: string
style: string
}
}
interface IService {
services_id: {
name: string
url: string
description: string
image: {
}
}
}
interface Iimage {
directus_files_id: {
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
}
}
interface IComponent {
type: string
actions: IAction[] | []
mapdid: string
title: string
subtitle: string
content: string
url_dataviz: string
url_map: string
layout: string
length: number
size: string
services: IService[] | []
images: Iimage[] | []
}
const getActions = (actionsProps: IAction[] | []) => {
if (!actionsProps.length) return undefined
return actionsProps.map((action_id) => {
let action = action_id.actions_id
return {
...action,
classname: action.style,
}
})
}
const getServices = (servicesProps: IService[] | []) => {
if (!servicesProps.length) return undefined
return servicesProps.map((services_id) => {
let service = services_id.services_id
return {
...service,
}
})
}
const getImages = (imagesProps: Iimage[] | []) => {
if (!imagesProps.length) return undefined
return imagesProps.map((images) => {
})
}
const Component = (props: IComponent) => {
const {
type,
actions: actionsProps = [],
services: servicesProps = [],
images: imagesProps = [],
mapdid,
...restProps
} = props
const actions = getActions(actionsProps)
const services = getServices(servicesProps)
const images = getImages(imagesProps)
switch (type) {
case "news":
let newsaction = actions?.length ? actions[0] : undefined
return (
<div>
<News {...restProps} action={newsaction} />
</div>
)
case "maps":
return (
<>
<Maps limit={length} {...restProps} />
</>
)
case "map":
if (!mapdid) return <div>Map</div>
return (
<div className="h-full w-full min-h-[500px]">
<Map {...restProps} mapid={parseInt(mapdid)} />
</div>
)
case "data":
return (
<>
<Data {...restProps} />
</>
)
case "stats":
return <Stats {...restProps} />
case "hero":
let heroaction = actions?.length
? actions[0]
: { title: "", to: "" }
return (
<Hero
services={services!}
{...restProps}
action={heroaction!}
/>
)
case "text":
return <div>Texte</div>
case "image":
let img = images?.length ? images[0] : undefined
return (
<>
<Image image={img} />
</>
)
case "mapgl":
return <div>Carte Maplibre</div>
case "geoportal":
return <div>Cartes, Tableaux de bord, Geostories</div>
case "dataviz":
return <div>Data visualisation</div>
case "events":
return (
<>
<Events {...restProps} />
</>
)
}
return <div></div>
}
export default Component