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"
import Iframe from "../core/Iframe"
import Text from "../Text"
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: {
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
76
77
}
}
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) => {
return { src: images.directus_files_id.imageFile }
})
}
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
case "map":
if (!mapdid) return <div>Map</div>
return (
<div className="h-full min-h-[500px] w-full">
<Map {...restProps} mapid={parseInt(mapdid)} />
</div>
)
case "data":
case "stats":
return <Stats {...restProps} />
case "hero":
let heroaction = actions?.length
? actions[0]
: { title: "", to: "" }
return (
<Hero
services={services!}
{...restProps}
action={heroaction!}
let textAction = actions?.length ? actions[0] : undefined
case "image":
let img = images?.length ? images[0] : undefined
case "mapgl":
return <div>Carte Maplibre</div>
case "geoportal":
}
return <div></div>
}
export default Component