Catalogue.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. <template>
  2. <LayoutContainer>
  3. <div>
  4. <v-row class="background-block">
  5. <v-row class="center-90">
  6. <LayoutUISubTitle> Des webinaires pour tous </LayoutUISubTitle>
  7. </v-row>
  8. <v-row class="center-90">
  9. <v-col cols="12" class="section-title">
  10. <h3>
  11. Simplifiez la gestion et la communication de votre structure
  12. </h3>
  13. <div class="strong-label">
  14. Votre structure culturelle, établissement d’enseignement
  15. artistique ou fédération mérite les outils les plus performants du
  16. marché pour briller en toute simplicité. Découvrez comment nos
  17. outils peuvent transformer votre quotidien :
  18. </div>
  19. </v-col>
  20. </v-row>
  21. <v-row class="center-90 catalog">
  22. <v-col v-for="course in courses" :key="course.key" cols="12" md="4">
  23. <v-card class="mb-4">
  24. <v-card-text>
  25. <div class="title-card-container">
  26. <v-img :src="course.imageUrl" :alt="course.imageAlt" />
  27. <h4>
  28. {{ course.title }}
  29. </h4>
  30. </div>
  31. <p class="details-card">
  32. {{ course.description }}
  33. </p>
  34. <div class="objectives mt-6">
  35. <h6>Objectifs</h6>
  36. <ul>
  37. <li
  38. v-for="(objective, objIndex) in course.objectives"
  39. :key="objIndex"
  40. >
  41. {{ objective }}
  42. </li>
  43. </ul>
  44. </div>
  45. <div class="badge-time">Durée : {{ course.duration }}</div>
  46. <div class="program">
  47. <h6>Programme</h6>
  48. <v-row>
  49. <v-col
  50. v-for="column in course.additionalObjectives"
  51. :key="column.id"
  52. cols="6"
  53. >
  54. <ul>
  55. <li
  56. v-for="(objective, objIndex) in column.objectives"
  57. :key="objIndex"
  58. >
  59. {{ objective }}
  60. </li>
  61. </ul>
  62. </v-col>
  63. </v-row>
  64. </div>
  65. <div class="badge-time">
  66. {{ course.price }}
  67. </div>
  68. <v-chip
  69. class="chip-register"
  70. @click="selectedWebinar = course.key"
  71. >
  72. Inscrivez-vous
  73. </v-chip>
  74. </v-card-text>
  75. </v-card>
  76. </v-col>
  77. </v-row>
  78. </v-row>
  79. </div>
  80. <!-- Modale d'inscription -->
  81. <v-dialog
  82. v-model="modalShowing"
  83. max-width="800"
  84. :retain-focus="false"
  85. :scrollable="true"
  86. class="calendar-modal"
  87. >
  88. <v-card
  89. title="Inscrivez-vous"
  90. class="d-flex flex-column align-center alt-theme"
  91. >
  92. <v-card-text>
  93. <h4 class="title-inscription text-center mt-4">
  94. Vous y êtes presque !
  95. </h4>
  96. <iframe :src="webinaireCalendars[selectedWebinar]" height="700" />
  97. </v-card-text>
  98. <v-card-actions>
  99. <v-btn class="close-button" @click="closeModal()"> Fermer </v-btn>
  100. </v-card-actions>
  101. </v-card>
  102. </v-dialog>
  103. </LayoutContainer>
  104. </template>
  105. <script setup lang="ts">
  106. import type { Ref } from 'vue'
  107. import type { Training } from '~/types/interface'
  108. const courses: Array<Training> = [
  109. {
  110. key: 'artist',
  111. imageUrl: '/images/logos/opentalent/Logo_Opentalent_Artist_Griffe.png',
  112. imageAlt: 'Esperluette du logo Opentalent Artist',
  113. title: 'Webinaire Opentalent Artist',
  114. description:
  115. 'Ce webinaire est destiné aux acteurs culturels tels que les orchestres, les chorales, les compagnies et troupes de danse, théâtre et cirque. Il vous permettra de découvrir les fonctionnalités du logiciels, les avantages et les différentes versions.',
  116. objectives: [
  117. 'Obtenir une présentation du logiciel Opentalent Artist',
  118. 'Présentation des principales fonctionnalités',
  119. "Qu'est ce que l'agenda culturel et l'annuaire ? ",
  120. 'Quelles différences entre la version Standard & Premium ?',
  121. ],
  122. duration: '1H30',
  123. additionalObjectives: [
  124. {
  125. id: 1,
  126. objectives: [
  127. 'Accès et interface',
  128. 'Configuration',
  129. 'Répertoire',
  130. 'Agenda',
  131. ],
  132. },
  133. {
  134. id: 2,
  135. objectives: [
  136. 'Parc matériel',
  137. 'Rapport d’activité',
  138. 'Communication',
  139. 'Site internet',
  140. ],
  141. },
  142. ],
  143. price: 'Gratuit',
  144. downloadLink:
  145. 'https://www.opentalent.fr/fileadmin/stockage/stockage/support/programme/PF-School-2023-02_2-jours.pdf',
  146. },
  147. {
  148. // number: "02",
  149. key: 'school',
  150. title: 'Webinaire Opentalent School',
  151. imageUrl: '/images/logos/opentalent/Logo_Opentalent_School_Griffe.png',
  152. imageAlt: 'Esperluette du logo Opentalent School',
  153. description:
  154. " Rejoignez notre webinaire dédié aux petits comme aux GRANDS établissements d'enseignement artistique et découvrez comment optimiser votre travail grâce à un outil professionnel.",
  155. objectives: [
  156. 'Obtenir une présentation du logiciel Opentalent School',
  157. "Comprendre l'écosystème de l'outil",
  158. "Identifier les avantages qu'offre ce logiciel pour votre structure",
  159. 'Apprendre à gérer votre propre site internet',
  160. ],
  161. duration: '1h',
  162. additionalObjectives: [
  163. {
  164. id: 1,
  165. objectives: [
  166. 'Accès et interface',
  167. 'Configuration',
  168. 'Répertoire',
  169. 'Agenda',
  170. ],
  171. },
  172. {
  173. id: 2,
  174. objectives: [
  175. 'Parc matériel',
  176. 'Facturation',
  177. 'Communication',
  178. 'Site internet',
  179. ],
  180. },
  181. ],
  182. price: 'Gratuit',
  183. downloadLink:
  184. 'https://www.opentalent.fr/fileadmin/stockage/stockage/support/programme/PF-School-2023-02_1-jour.pdf',
  185. },
  186. {
  187. key: 'manager',
  188. title: 'Webinaire Opentalent Manager',
  189. imageUrl: '/images/logos/opentalent/Logo_Opentalent_Manager_Griffe.png',
  190. imageAlt: 'Esperluette du logo Opentalent Manager',
  191. description:
  192. "Ces webinaires sont spécialement conçus pour les utilisateurs du logiciel fédéral de la Confédération Musicale de France. Gagnez en temps administratif, boostez vos performances et optimisez l'utilisation du logiciel.",
  193. objectives: [
  194. "Paramétrer et gérer le suivi l'appel à cotisation (suivi, relance, facture, saisie des règlements)",
  195. 'Transmission des sommes à votre fédération parente',
  196. 'Gérer les membres du CA et les structures adhérentes (entrées, sorties, coordonnées, mots de passe ...)',
  197. 'Communiquer avec son réseau',
  198. ],
  199. duration: '1H30',
  200. additionalObjectives: [
  201. {
  202. id: 1,
  203. objectives: [
  204. 'Mieux connaitre votre logiciel',
  205. 'Optimiser votre temps administratif',
  206. ],
  207. },
  208. {
  209. id: 2,
  210. objectives: [
  211. 'Communiquer avec votre réseau',
  212. 'Promouvoir votre organisation',
  213. ],
  214. },
  215. ],
  216. price: 'Gratuit',
  217. downloadLink:
  218. ' https://www.opentalent.fr/fileadmin/stockage/stockage/support/programme/PF-Typo3-2023-02_1-jour.pdf',
  219. },
  220. ]
  221. const selectedWebinar: Ref<string | null> = ref(null)
  222. const webinaireCalendars: Record<string, string> = {
  223. artist:
  224. 'https://widget.weezevent.com/ticket/E1054691/?code=1227&locale=fr-FR&width_auto=1&color_primary=00AEEF',
  225. school:
  226. 'https://widget.weezevent.com/ticket/E1054694/?code=44289&locale=fr-FR&width_auto=1&color_primary=00AEEF',
  227. manager:
  228. 'https://widget.weezevent.com/ticket/E1054695/?code=76806&locale=fr-FR&width_auto=1&color_primary=00AEEF',
  229. }
  230. const modalShowing = computed(() => selectedWebinar.value)
  231. const closeModal = () => {
  232. selectedWebinar.value = null
  233. }
  234. </script>
  235. <style scoped lang="scss">
  236. .v-card {
  237. border: none !important;
  238. box-shadow: none !important;
  239. background-color: transparent !important;
  240. }
  241. .section-title {
  242. display: flex;
  243. flex-direction: column;
  244. h3 {
  245. font-size: 42px;
  246. line-height: 3.5rem;
  247. margin-bottom: 0.5rem;
  248. margin-top: 2rem;
  249. }
  250. .strong-label {
  251. font-size: 1.5rem;
  252. font-weight: 400 !important;
  253. line-height: 2rem;
  254. margin-bottom: 1rem;
  255. }
  256. }
  257. .background-block {
  258. background: var(--neutral-color-alt-light);
  259. padding: 4rem;
  260. }
  261. .catalog {
  262. .title-card-container {
  263. display: flex;
  264. align-items: center;
  265. border-bottom: 1px solid var(--primary-color);
  266. width: 80%;
  267. margin-left: auto;
  268. margin-right: auto;
  269. .v-img {
  270. position: absolute;
  271. top: 0;
  272. left: 0;
  273. width: 50px;
  274. height: 50px;
  275. margin-right: 4px;
  276. }
  277. h4 {
  278. font-weight: 600;
  279. font-size: 1.2rem;
  280. margin-bottom: 0.8rem;
  281. }
  282. }
  283. .details-card {
  284. font-weight: 300;
  285. font-size: 1rem;
  286. line-height: 1rem;
  287. color: var(--primary-color);
  288. margin-top: 1rem;
  289. margin-bottom: 0.5rem;
  290. @media (min-width: 600px) {
  291. height: 5rem;
  292. }
  293. }
  294. .objectives,
  295. .program {
  296. justify-content: space-between;
  297. align-items: center;
  298. background: var(--secondary-color-light);
  299. margin-top: 1rem;
  300. margin-bottom: 1rem;
  301. border-radius: 1rem;
  302. padding: 1rem 1rem 1rem 1.5rem;
  303. @media (min-width: 600px) {
  304. height: 11rem;
  305. }
  306. h6 {
  307. font-weight: 500;
  308. font-size: 16px;
  309. line-height: 20px;
  310. color: var(--primary-color);
  311. }
  312. ul {
  313. margin-top: 0.5rem;
  314. font-weight: 300;
  315. font-size: 14px;
  316. line-height: 18px;
  317. }
  318. }
  319. .v-chip {
  320. justify-content: center;
  321. align-items: center;
  322. display: flex;
  323. margin-top: 1rem;
  324. margin-bottom: 1rem;
  325. line-height: 18px;
  326. font-weight: 500;
  327. font-size: 14px;
  328. }
  329. .badge-time {
  330. color: var(--primary-color);
  331. background: var(--neutral-color);
  332. width: 100%;
  333. height: 36px;
  334. text-align: center;
  335. font-size: 18px;
  336. font-weight: 500;
  337. border-radius: 12px;
  338. vertical-align: center;
  339. padding-top: 6px;
  340. }
  341. }
  342. .calendar-modal {
  343. h4 {
  344. font-weight: 600;
  345. font-size: 2rem;
  346. line-height: 32px;
  347. margin-bottom: 2rem;
  348. }
  349. .v-card {
  350. border: none !important;
  351. box-shadow: none !important;
  352. background-color: var(--primary-color) !important;
  353. width: 100%;
  354. }
  355. .v-card-text {
  356. width: 90%;
  357. display: flex;
  358. flex-direction: column;
  359. align-items: center;
  360. iframe {
  361. width: 100%;
  362. }
  363. }
  364. .close-button {
  365. background-color: #e34461; /* TODO: pqoi cette couleur ici? */
  366. color: var(--on-primary-color);
  367. font-weight: 500;
  368. font-size: 14px;
  369. line-height: 18px;
  370. margin-top: 1rem;
  371. margin-bottom: 1rem;
  372. display: flex;
  373. justify-content: center;
  374. align-items: center;
  375. }
  376. }
  377. </style>