Catalogue.vue 11 KB

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