@saooti/octopus-sdk 40.2.19 → 41.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/index.ts +2 -1
  2. package/package.json +4 -3
  3. package/src/App.vue +71 -95
  4. package/src/components/composable/player/usePlayerLive.ts +13 -4
  5. package/src/components/composable/player/usePlayerLogic.ts +6 -6
  6. package/src/components/composable/player/usePlayerVast.ts +7 -7
  7. package/src/components/composable/podcasts/usePodcastView.ts +3 -3
  8. package/src/components/composable/route/useAdvancedParamInit.ts +1 -1
  9. package/src/components/composable/route/useRouteUpdateParams.ts +4 -4
  10. package/src/components/composable/route/useSimplePageParam.ts +15 -8
  11. package/src/components/composable/useInit.ts +2 -2
  12. package/src/components/composable/useMetaTitleWatch.ts +2 -2
  13. package/src/components/display/accessibility/AccessibilityModal.vue +56 -68
  14. package/src/components/display/categories/CategoryChooser.vue +144 -145
  15. package/src/components/display/categories/CategoryFilter.vue +172 -198
  16. package/src/components/display/categories/CategoryList.vue +122 -147
  17. package/src/components/display/comments/CommentInput.vue +100 -122
  18. package/src/components/display/comments/CommentList.vue +169 -191
  19. package/src/components/display/comments/CommentName.vue +35 -45
  20. package/src/components/display/comments/CommentParentInfo.vue +28 -34
  21. package/src/components/display/comments/CommentPlayer.vue +38 -50
  22. package/src/components/display/comments/CommentSection.vue +85 -103
  23. package/src/components/display/comments/item/CommentBasicView.vue +48 -61
  24. package/src/components/display/comments/item/CommentItem.vue +104 -115
  25. package/src/components/display/comments/item/CommentMoreActions.vue +174 -189
  26. package/src/components/display/comments/item/CommentMoreActionsAdmin.vue +1 -3
  27. package/src/components/display/comments/like/LikeButton.vue +36 -41
  28. package/src/components/display/comments/like/LikeSection.vue +128 -136
  29. package/src/components/display/comments/modal/CheckIdentityModal.vue +35 -40
  30. package/src/components/display/comments/modal/EditCommentModal.vue +72 -78
  31. package/src/components/display/comments/modal/RecaptchaModal.vue +58 -63
  32. package/src/components/display/comments/modal/ReportAbuseModal.vue +59 -66
  33. package/src/components/display/edit/EditBox.vue +9 -8
  34. package/src/components/display/edit/EditBoxRadio.vue +1 -5
  35. package/src/components/display/emission/EmissionInlineList.vue +82 -97
  36. package/src/components/display/emission/EmissionItem.vue +57 -69
  37. package/src/components/display/emission/EmissionList.vue +189 -218
  38. package/src/components/display/emission/EmissionPlayerItem.vue +47 -64
  39. package/src/components/display/emission/EmissionPresentationItem.vue +44 -54
  40. package/src/components/display/emission/EmissionPresentationList.vue +51 -61
  41. package/src/components/display/filter/AdvancedSearch.vue +151 -176
  42. package/src/components/display/filter/CategorySearchFilter.vue +43 -46
  43. package/src/components/display/filter/DateFilter.vue +76 -91
  44. package/src/components/display/filter/MonetizableFilter.vue +27 -30
  45. package/src/components/display/filter/ProductorSearch.vue +87 -90
  46. package/src/components/display/filter/RubriqueChoice.vue +58 -63
  47. package/src/components/display/filter/RubriqueFilter.vue +154 -169
  48. package/src/components/display/filter/SearchOrder.vue +35 -35
  49. package/src/components/display/list/ListPaginate.vue +72 -93
  50. package/src/components/display/list/PaginateParams.vue +36 -40
  51. package/src/components/display/list/PaginateSection.vue +113 -124
  52. package/src/components/display/list/SwiperList.vue +97 -109
  53. package/src/components/display/live/CountDown.vue +15 -9
  54. package/src/components/display/live/CountdownOctopus.vue +16 -10
  55. package/src/components/display/live/LiveHorizontalList.vue +95 -103
  56. package/src/components/display/live/LiveItem.vue +64 -73
  57. package/src/components/display/live/LiveList.vue +125 -137
  58. package/src/components/display/live/RadioCurrently.vue +66 -73
  59. package/src/components/display/live/RadioImage.vue +39 -50
  60. package/src/components/display/live/RadioItem.vue +9 -14
  61. package/src/components/display/live/RadioList.vue +39 -53
  62. package/src/components/display/live/RadioPlanning.vue +210 -222
  63. package/src/components/display/organisation/OrganisationChooser.vue +116 -122
  64. package/src/components/display/organisation/OrganisationChooserLight.vue +44 -52
  65. package/src/components/display/participant/ParticipantInlineList.vue +42 -58
  66. package/src/components/display/participant/ParticipantItem.vue +66 -74
  67. package/src/components/display/participant/ParticipantList.vue +116 -141
  68. package/src/components/display/playlist/PlaylistItem.vue +33 -46
  69. package/src/components/display/playlist/PlaylistList.vue +115 -144
  70. package/src/components/display/playlist/PodcastList.vue +90 -103
  71. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +58 -70
  72. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +21 -22
  73. package/src/components/display/podcasts/AnimatorsItem.vue +15 -16
  74. package/src/components/display/podcasts/DownloadPodcastButton.vue +21 -29
  75. package/src/components/display/podcasts/ParticipantDescription.vue +22 -24
  76. package/src/components/display/podcasts/PodcastFilterList.vue +62 -56
  77. package/src/components/display/podcasts/PodcastImage.vue +96 -99
  78. package/src/components/display/podcasts/PodcastInlineList.vue +30 -28
  79. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +107 -114
  80. package/src/components/display/podcasts/PodcastIsPlaying.vue +4 -12
  81. package/src/components/display/podcasts/PodcastItem.vue +48 -63
  82. package/src/components/display/podcasts/PodcastItemInfo.vue +19 -35
  83. package/src/components/display/podcasts/PodcastList.vue +182 -206
  84. package/src/components/display/podcasts/PodcastModuleBox.vue +100 -137
  85. package/src/components/display/podcasts/PodcastPlannedSpinner.vue +4 -6
  86. package/src/components/display/podcasts/PodcastPlayBar.vue +50 -61
  87. package/src/components/display/podcasts/PodcastPlayBasicButton.vue +38 -41
  88. package/src/components/display/podcasts/PodcastPlayButton.vue +164 -175
  89. package/src/components/display/podcasts/PodcastRawTranscript.vue +69 -80
  90. package/src/components/display/podcasts/PodcastRubriqueList.vue +35 -38
  91. package/src/components/display/podcasts/PodcastSwiperList.vue +100 -110
  92. package/src/components/display/podcasts/TagList.vue +48 -50
  93. package/src/components/display/podcasts/VideoModuleBox.vue +13 -24
  94. package/src/components/display/rubriques/RubriqueChooser.vue +135 -140
  95. package/src/components/display/rubriques/RubriqueList.vue +140 -160
  96. package/src/components/display/sharing/ChooseEpisodesNumber.vue +34 -33
  97. package/src/components/display/sharing/FormatSwitch.vue +16 -11
  98. package/src/components/display/sharing/PlayerAnonymousModal.vue +24 -27
  99. package/src/components/display/sharing/PlayerCommonParameters.vue +20 -13
  100. package/src/components/display/sharing/PlayerParameters.vue +69 -71
  101. package/src/components/display/sharing/QrCode.vue +55 -67
  102. package/src/components/display/sharing/ShareAnonymous.vue +160 -178
  103. package/src/components/display/sharing/ShareDistribution.vue +103 -117
  104. package/src/components/display/sharing/ShareNewsletter.vue +154 -161
  105. package/src/components/display/sharing/SharePlayer.vue +273 -295
  106. package/src/components/display/sharing/SharePlayerColors.vue +25 -16
  107. package/src/components/display/sharing/SharePlayerRadio.vue +61 -69
  108. package/src/components/display/sharing/SharePlayerTypes.vue +176 -176
  109. package/src/components/display/sharing/ShareSocialsButtons.vue +63 -75
  110. package/src/components/display/sharing/SubscribeButtons.vue +184 -207
  111. package/src/components/display/studio/RecordingItemButton.vue +1 -4
  112. package/src/components/form/ClassicCheckbox.vue +26 -30
  113. package/src/components/form/ClassicContentEditable.vue +37 -33
  114. package/src/components/form/ClassicCopyButton.vue +40 -44
  115. package/src/components/form/ClassicDatePicker.vue +114 -114
  116. package/src/components/form/ClassicEmojiPicker.vue +20 -28
  117. package/src/components/form/ClassicInputText.vue +116 -120
  118. package/src/components/form/ClassicLoading.vue +7 -12
  119. package/src/components/form/ClassicMultiselect.vue +115 -117
  120. package/src/components/form/ClassicRadio.vue +21 -16
  121. package/src/components/form/ClassicRadioLabel.vue +23 -22
  122. package/src/components/form/ClassicSearch.vue +24 -19
  123. package/src/components/form/ClassicSelect.vue +47 -38
  124. package/src/components/form/ClassicWysiwyg.vue +116 -123
  125. package/src/components/icons/AmazonMusicIcon.vue +7 -10
  126. package/src/components/icons/ApplePodcastIcon.vue +7 -11
  127. package/src/components/icons/BlueSkyIcon.vue +8 -11
  128. package/src/components/icons/DeezerIcon.vue +8 -11
  129. package/src/components/icons/EditFtpIcon.vue +8 -11
  130. package/src/components/icons/IHeartIcon.vue +8 -11
  131. package/src/components/icons/PlayVideoIcon.vue +7 -10
  132. package/src/components/icons/PlayerFmIcon.vue +7 -10
  133. package/src/components/icons/PocketCastIcon.vue +8 -11
  134. package/src/components/icons/PodcastAddictIcon.vue +7 -10
  135. package/src/components/icons/RadiolineIcon.vue +8 -11
  136. package/src/components/icons/TuninIcon.vue +8 -11
  137. package/src/components/icons/XIcon.vue +7 -10
  138. package/src/components/misc/AcpmImage.vue +6 -7
  139. package/src/components/misc/ClassicAccordion.vue +26 -31
  140. package/src/components/misc/ClassicLazy.vue +86 -90
  141. package/src/components/misc/ClassicNav.vue +16 -20
  142. package/src/components/misc/ClassicPopover.vue +271 -282
  143. package/src/components/misc/ClassicSpinner.vue +5 -27
  144. package/src/components/misc/ErrorMessage.vue +11 -12
  145. package/src/components/misc/FooterGarSection.vue +33 -41
  146. package/src/components/misc/FooterSection.vue +94 -131
  147. package/src/components/misc/HomeDropdown.vue +83 -105
  148. package/src/components/misc/MobileMenu.vue +101 -111
  149. package/src/components/misc/ProgressBar.vue +53 -62
  150. package/src/components/misc/TopBar.vue +98 -120
  151. package/src/components/misc/TopBarMainContent.vue +114 -133
  152. package/src/components/misc/modal/ClassicModal.vue +40 -33
  153. package/src/components/misc/modal/ClassicModalInBody.vue +34 -28
  154. package/src/components/misc/modal/ClipboardModal.vue +27 -30
  155. package/src/components/misc/modal/ContractPreviewModal.vue +64 -62
  156. package/src/components/misc/modal/MessageModal.vue +50 -47
  157. package/src/components/misc/modal/NewsletterModal.vue +30 -31
  158. package/src/components/misc/modal/QrCodeModal.vue +21 -21
  159. package/src/components/misc/modal/ShareModalPlayer.vue +43 -52
  160. package/src/components/misc/player/PlayerCompact.vue +6 -4
  161. package/src/components/misc/player/PlayerComponent.vue +8 -9
  162. package/src/components/misc/player/PlayerLarge.vue +9 -8
  163. package/src/components/misc/player/ads/AdsProgressBar.vue +8 -11
  164. package/src/components/misc/player/ads/AdsSkipButton.vue +24 -30
  165. package/src/components/misc/player/chaptering/ChapteringModal.vue +44 -54
  166. package/src/components/misc/player/chaptering/PlayerChaptering.vue +50 -62
  167. package/src/components/misc/player/elements/PlayerImage.vue +51 -57
  168. package/src/components/misc/player/elements/PlayerPlayButton.vue +81 -92
  169. package/src/components/misc/player/elements/PlayerSpeedButton.vue +23 -27
  170. package/src/components/misc/player/elements/PlayerTitle.vue +85 -111
  171. package/src/components/misc/player/progressbar/PlayerProgressBar.vue +18 -29
  172. package/src/components/misc/player/progressbar/PodcastProgressBar.vue +45 -56
  173. package/src/components/misc/player/radio/RadioHistory.vue +80 -99
  174. package/src/components/misc/player/radio/RadioProgressBar.vue +43 -54
  175. package/src/components/misc/player/video/PlayerVideo.vue +27 -40
  176. package/src/components/misc/player/video/PlayerVideoDigiteka.vue +32 -37
  177. package/src/components/misc/player/video/PlayerVideoHls.vue +199 -198
  178. package/src/components/misc/player/video/PlayerYoutubeEmbed.vue +10 -12
  179. package/src/components/pages/CategoryPage.vue +28 -33
  180. package/src/components/pages/EmissionPage.vue +113 -132
  181. package/src/components/pages/EmissionsPage.vue +2 -0
  182. package/src/components/pages/Error403Page.vue +21 -20
  183. package/src/components/pages/HomePage.vue +91 -100
  184. package/src/components/pages/LivesPage.vue +35 -37
  185. package/src/components/pages/MapPage.vue +209 -241
  186. package/src/components/pages/PageLogout.vue +8 -11
  187. package/src/components/pages/PageNotFound.vue +9 -5
  188. package/src/components/pages/ParticipantPage.vue +96 -110
  189. package/src/components/pages/ParticipantsPage.vue +3 -0
  190. package/src/components/pages/PlaylistPage.vue +112 -117
  191. package/src/components/pages/PlaylistsPage.vue +9 -2
  192. package/src/components/pages/PodcastPage.vue +224 -238
  193. package/src/components/pages/PodcastsPage.vue +9 -2
  194. package/src/components/pages/RadioPage.vue +56 -70
  195. package/src/components/pages/RubriquePage.vue +7 -3
  196. package/src/components/pages/SearchPage.vue +31 -36
  197. package/src/components/pages/TagPage.vue +11 -9
  198. package/src/components/pages/VideoPage.vue +14 -11
  199. package/src/helper/displayHelper.ts +1 -1
  200. package/src/helper/loadScript.ts +4 -4
  201. package/src/i18n.ts +2 -2
  202. package/src/main.ts +1 -1
  203. package/src/router/router.ts +17 -4
  204. package/src/stores/AuthStore.ts +12 -12
  205. package/src/stores/FilterStore.ts +1 -1
  206. package/src/stores/VastStore.ts +2 -2
  207. package/src/stores/class/general/player.ts +1 -0
  208. package/public/css/fonts/icomoon.eot +0 -0
  209. package/public/css/fonts/icomoon.svg +0 -113
  210. package/public/css/fonts/icomoon.ttf +0 -0
  211. package/public/css/fonts/icomoon.woff +0 -0
  212. package/public/css/fonts/icomoon.woff2 +0 -0
  213. package/public/css/fonts/style.css +0 -352
  214. package/sonarqube-scanner.js +0 -10
@@ -5,30 +5,30 @@
5
5
  :style="backgroundDisplay"
6
6
  >
7
7
  <h1 v-if="isHeaderDisplay" v-show="titleDisplay">
8
- {{ titleDisplay ?? $t("Home") }}
8
+ {{ titleDisplay ?? t("Home") }}
9
9
  </h1>
10
10
  <div
11
11
  v-show="isDisplay"
12
12
  class="d-flex-low-importance flex-column justify-content-end"
13
13
  >
14
14
  <ol
15
- v-if="filterIab || filterRubrique.length"
15
+ v-if="filterStore.filterIab || filterStore.filterRubrique.length"
16
16
  class="octopus-breadcrumb"
17
17
  >
18
18
  <li class="octopus-breadcrumb-li">
19
- <a href="#" @click="removeFilter(-1, $event)">{{ $t("All") }}</a>
19
+ <a href="#" @click="removeFilter(-1, $event)">{{ t("All") }}</a>
20
20
  </li>
21
- <li v-if="filterIab" class="octopus-breadcrumb-li">
22
- {{ filterIab.name }}
21
+ <li v-if="filterStore.filterIab" class="octopus-breadcrumb-li">
22
+ {{ filterStore.filterIab.name }}
23
23
  </li>
24
24
  <li
25
- v-for="(filter, index) in filterRubrique"
25
+ v-for="(filter, index) in filterStore.filterRubrique"
26
26
  :key="filter.rubriqueId"
27
27
  class="octopus-breadcrumb-li"
28
- :class="filterRubrique.length - 1 === index ? 'active' : ''"
28
+ :class="filterStore.filterRubrique.length - 1 === index ? 'active' : ''"
29
29
  >
30
30
  <a
31
- v-if="filterRubrique.length - 1 !== index"
31
+ v-if="filterStore.filterRubrique.length - 1 !== index"
32
32
  href="#"
33
33
  @click="removeFilter(index, $event)"
34
34
  >{{ filter.nameRubriquage }}</a
@@ -50,14 +50,14 @@
50
50
  </li>
51
51
  </ol>
52
52
  <CategoryList
53
- v-if="!filterIab && !rubriquageFilter.length"
53
+ v-if="!filterStore.filterIab && !rubriquageFilter.length"
54
54
  :is-filter="true"
55
55
  :is-display="isDisplay"
56
56
  @categories-length="checkIfCategories"
57
57
  />
58
58
  <RubriqueList
59
59
  v-else-if="
60
- isDisplay && rubriquageFilter.length !== filterRubrique.length
60
+ isDisplay && rubriquageFilter.length !== filterStore.filterRubrique.length
61
61
  "
62
62
  :rubriquages="rubriquageFilter"
63
63
  />
@@ -66,7 +66,8 @@
66
66
  <section v-if="!isDisplay" class="category-filter-no-filter" />
67
67
  </template>
68
68
 
69
- <script lang="ts">
69
+ <script setup lang="ts">
70
+ import { useI18n } from "vue-i18n";
70
71
  import { useRubriquesFilterParam } from "../../composable/route/useRubriquesFilterParam";
71
72
  import { useRouteUpdateParams } from "../../composable/route/useRouteUpdateParams";
72
73
  import { Rubriquage } from "@/stores/class/rubrique/rubriquage";
@@ -74,9 +75,9 @@ import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
74
75
  import { Rubrique } from "@/stores/class/rubrique/rubrique";
75
76
  import { useFilterStore } from "../../../stores/FilterStore";
76
77
  import { useGeneralStore } from "../../../stores/GeneralStore";
77
- import { mapState, mapActions } from "pinia";
78
- import { defineComponent, defineAsyncComponent } from "vue";
78
+ import { defineAsyncComponent, ref, computed, watch } from "vue";
79
79
  import { Category } from "@/stores/class/general/category";
80
+ import { useRoute } from "vue-router";
80
81
  const CategoryList = defineAsyncComponent(() => import("./CategoryList.vue"));
81
82
  const RubriqueList = defineAsyncComponent(
82
83
  () => import("./../rubriques/RubriqueList.vue"),
@@ -84,194 +85,167 @@ const RubriqueList = defineAsyncComponent(
84
85
  const RubriqueChooser = defineAsyncComponent(
85
86
  () => import("../rubriques/RubriqueChooser.vue"),
86
87
  );
87
- export default defineComponent({
88
- name: "CategoryFilter",
89
- components: {
90
- CategoryList,
91
- RubriqueList,
92
- RubriqueChooser,
93
- },
94
- setup(){
95
- const { updateFiltersParam } = useRouteUpdateParams();
96
- const { modifyRubriquesFilter } = useRubriquesFilterParam();
97
- return {updateFiltersParam, modifyRubriquesFilter }
98
- },
99
- data() {
100
- return {
101
- isCategories: false as boolean,
102
- };
103
- },
104
- computed: {
105
- ...mapState(useGeneralStore, ["storedCategories"]),
106
- ...mapState(useFilterStore, [
107
- "filterIab",
108
- "filterRubrique",
109
- "filterRubriquage",
110
- "filterOrgaId",
111
- ]),
112
- isDisplay(): boolean {
113
- return (
114
- ("homePriv" === this.$route.name ||
115
- "home" === this.$route.name ||
116
- "podcasts" === this.$route.name ||
117
- "emissions" === this.$route.name) &&
118
- (this.isCategories ||
119
- undefined !== this.filterIab ||
120
- 0 !== this.filterRubrique.length ||
121
- 0 !== this.rubriquageFilter.length)
122
- );
123
- },
124
- isHeaderDisplay() {
125
- return (
126
- this.isDisplay ||
127
- "participants" === this.$route.name ||
128
- "playlists" === this.$route.name
129
- );
130
- },
131
- rubriquageFilter(): Array<Rubriquage> {
132
- return this.filterOrgaId ? this.filterRubriquage : [];
133
- },
134
- titleDisplay(): string | undefined {
135
- switch (this.$route.name) {
136
- case "podcasts":
137
- return this.$t("All podcasts");
138
- case "emissions":
139
- return this.$t("All emissions");
140
- case "participants":
141
- return this.$t("All participants");
142
- case "playlists":
143
- return this.$t("All playlists");
144
- default:
145
- return undefined;
146
- }
147
- },
148
- backgroundDisplay(): string {
149
- let imgName = "home";
150
- switch (this.$route.name) {
151
- case "podcasts":
152
- imgName = "podcasts";
153
- break;
154
- case "emissions":
155
- imgName = "emissions";
156
- break;
157
- case "participants":
158
- imgName = "intervenants";
159
- break;
160
- case "playlists":
161
- imgName = "playlists";
162
- break;
163
- default:
164
- break;
165
- }
166
- return `background-image: url('/img/header-${imgName}.webp');`;
167
- },
168
- routeFilterIab() {
169
- return this.$route.query.iabId;
170
- },
171
- routeRubriques() {
172
- return this.$route.query.rubriquesId;
173
- },
174
- },
175
- watch: {
176
- routeFilterIab: {
177
- deep: true,
178
- immediate: true,
179
- async handler() {
180
- if (this.routeFilterIab && "string" === typeof this.routeFilterIab) {
181
- const iabId = parseInt(this.routeFilterIab, 10);
182
- const category = this.storedCategories.filter((c: Category) => {
183
- return c.id === iabId;
184
- });
185
- if (category.length) {
186
- this.filterUpdateIab(category[0]);
187
- }
188
- } else {
189
- this.filterUpdateIab();
190
- }
191
- },
192
- },
193
- routeRubriques: {
194
- deep: true,
195
- immediate: true,
196
- async handler() {
197
- if (0 === this.filterRubriquage.length) {
198
- return;
199
- }
200
- const rubriquesFilter: Array<RubriquageFilter> = [];
201
- if (
202
- this.$route.query.rubriquesId &&
203
- "string" === typeof this.$route.query.rubriquesId
204
- ) {
205
- const arrayFilter = this.$route.query.rubriquesId.split(",");
206
- const filterLength = arrayFilter.length;
207
- for (let index = 0; index < filterLength; index++) {
208
- const rubriqueFilter = arrayFilter[index].split(":");
209
- const rubriquage = this.filterRubriquage.find((x: Rubriquage) => {
210
- return x.rubriquageId === parseInt(rubriqueFilter[0]);
211
- });
212
- if (rubriquage) {
213
- const rubrique = rubriquage.rubriques.find((x: Rubrique) => {
214
- return x.rubriqueId === parseInt(rubriqueFilter[1]);
215
- });
216
- rubriquesFilter.push({
217
- rubriquageId: rubriquage.rubriquageId,
218
- rubriqueId: rubrique.rubriqueId,
219
- nameRubriquage: rubriquage.title,
220
- nameRubrique: rubrique.name,
221
- });
222
- }
223
- }
224
- }
225
- this.filterUpdateRubrique(rubriquesFilter);
226
- },
227
- },
228
- },
229
- methods: {
230
- ...mapActions(useFilterStore, ["filterUpdateIab", "filterUpdateRubrique"]),
231
- checkIfCategories(length: number): void {
232
- this.isCategories = 0 !== length;
233
- },
234
- onRubriqueSelected(index: number, rubrique: Rubrique): void {
235
- if (
236
- !rubrique ||
237
- this.filterRubrique[index].rubriqueId === rubrique.rubriqueId
238
- ) {
239
- return;
240
- }
241
- this.modifyRubriquesFilter((a) => {
242
- a[index].rubriqueId = rubrique.rubriqueId ?? 0;
243
- return a;
244
- });
245
- },
246
- getRubriques(rubriquageId: number): Array<Rubrique> {
247
- const rubriquage = this.filterRubriquage.find((x: Rubriquage) => {
248
- return x.rubriquageId === rubriquageId;
249
- });
250
- return rubriquage ? rubriquage.rubriques : [];
251
- },
252
- getRubriquesLength(rubriquageId: number): number {
253
- const rubriquage = this.filterRubriquage.find((x: Rubriquage) => {
254
- return x.rubriquageId === rubriquageId;
88
+
89
+ //Data
90
+ const isCategories = ref(false);
91
+
92
+ //Composables
93
+ const { t } = useI18n();
94
+ const { updateFiltersParam } = useRouteUpdateParams();
95
+ const { modifyRubriquesFilter } = useRubriquesFilterParam();
96
+ const generalStore = useGeneralStore();
97
+ const filterStore = useFilterStore();
98
+ const route = useRoute();
99
+
100
+ //Computed
101
+ const isDisplay = computed(() => {
102
+ return (
103
+ ("homePriv" === route.name ||
104
+ "home" === route.name ||
105
+ "podcasts" === route.name ||
106
+ "emissions" === route.name) &&
107
+ (isCategories.value ||
108
+ undefined !== filterStore.filterIab ||
109
+ 0 !== filterStore.filterRubrique.length ||
110
+ 0 !== rubriquageFilter.value.length)
111
+ );
112
+ });
113
+ const isHeaderDisplay = computed(() => {
114
+ return (
115
+ isDisplay.value ||
116
+ "participants" === route.name ||
117
+ "playlists" === route.name
118
+ );
119
+ });
120
+ const rubriquageFilter = computed(() => filterStore.filterOrgaId ? filterStore.filterRubriquage : []);
121
+ const titleDisplay = computed(() => {
122
+ switch (route.name) {
123
+ case "podcasts":
124
+ return t("All podcasts");
125
+ case "emissions":
126
+ return t("All emissions");
127
+ case "participants":
128
+ return t("All participants");
129
+ case "playlists":
130
+ return t("All playlists");
131
+ default:
132
+ return undefined;
133
+ }
134
+ });
135
+ const backgroundDisplay = computed(() => {
136
+ let imgName = "home";
137
+ switch (route.name) {
138
+ case "podcasts":
139
+ imgName = "podcasts";
140
+ break;
141
+ case "emissions":
142
+ imgName = "emissions";
143
+ break;
144
+ case "participants":
145
+ imgName = "intervenants";
146
+ break;
147
+ case "playlists":
148
+ imgName = "playlists";
149
+ break;
150
+ default:
151
+ break;
152
+ }
153
+ return `background-image: url('/img/header-${imgName}.webp');`;
154
+ });
155
+ const routeFilterIab = computed(() => route.query.iabId);
156
+ const routeRubriques = computed(() => route.query.rubriquesId);
157
+
158
+
159
+ //Watch
160
+ watch(routeFilterIab, () => {
161
+ if (routeFilterIab.value && "string" === typeof routeFilterIab.value) {
162
+ const iabId = parseInt(routeFilterIab.value, 10);
163
+ const category = generalStore.storedCategories.filter((c: Category) => {
164
+ return c.id === iabId;
165
+ });
166
+ if (category.length) {
167
+ filterStore.filterUpdateIab(category[0]);
168
+ }
169
+ } else {
170
+ filterStore.filterUpdateIab();
171
+ }
172
+ }, {deep: true, immediate: true});
173
+ watch(routeRubriques, () => {
174
+ if (0 === filterStore.filterRubriquage.length) {
175
+ return;
176
+ }
177
+ const rubriquesFilter: Array<RubriquageFilter> = [];
178
+ if (
179
+ route.query.rubriquesId &&
180
+ "string" === typeof route.query.rubriquesId
181
+ ) {
182
+ const arrayFilter = route.query.rubriquesId.split(",");
183
+ const filterLength = arrayFilter.length;
184
+ for (let index = 0; index < filterLength; index++) {
185
+ const rubriqueFilter = arrayFilter[index].split(":");
186
+ const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {
187
+ return x.rubriquageId === parseInt(rubriqueFilter[0]);
255
188
  });
256
- return rubriquage ? rubriquage.rubriques.length : 0;
257
- },
258
- removeFilter(index: number, event?: { preventDefault: () => void }): void {
259
- if (this.filterIab) {
260
- if (this.$route.query.iabId) {
261
- this.updateFiltersParam({ iabId: undefined }, { i: undefined });
262
- }
263
- } else {
264
- this.modifyRubriquesFilter((a) => {
265
- a.splice(index + 1);
266
- return a;
189
+ if (rubriquage) {
190
+ const rubrique = rubriquage.rubriques.find((x: Rubrique) => {
191
+ return x.rubriqueId === parseInt(rubriqueFilter[1]);
192
+ });
193
+ rubriquesFilter.push({
194
+ rubriquageId: rubriquage.rubriquageId,
195
+ rubriqueId: rubrique?.rubriqueId,
196
+ nameRubriquage: rubriquage.title,
197
+ nameRubrique: rubrique?.name,
267
198
  });
268
199
  }
269
- if (event) {
270
- event.preventDefault();
271
- }
272
- },
273
- },
274
- });
200
+ }
201
+ }
202
+ filterStore.filterUpdateRubrique(rubriquesFilter);
203
+ }, {deep: true, immediate: true});
204
+
205
+
206
+ //Methods
207
+ function checkIfCategories(length: number): void {
208
+ isCategories.value = 0 !== length;
209
+ }
210
+ function onRubriqueSelected(index: number, rubrique: Rubrique): void {
211
+ if (
212
+ !rubrique ||
213
+ filterStore.filterRubrique[index].rubriqueId === rubrique.rubriqueId
214
+ ) {
215
+ return;
216
+ }
217
+ modifyRubriquesFilter((a) => {
218
+ a[index].rubriqueId = rubrique.rubriqueId ?? 0;
219
+ return a;
220
+ });
221
+ }
222
+ function getRubriques(rubriquageId: number): Array<Rubrique> {
223
+ const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {
224
+ return x.rubriquageId === rubriquageId;
225
+ });
226
+ return rubriquage ? rubriquage.rubriques : [];
227
+ }
228
+ function getRubriquesLength(rubriquageId: number): number {
229
+ const rubriquage = filterStore.filterRubriquage.find((x: Rubriquage) => {
230
+ return x.rubriquageId === rubriquageId;
231
+ });
232
+ return rubriquage ? rubriquage.rubriques.length : 0;
233
+ }
234
+ function removeFilter(index: number, event?: { preventDefault: () => void }): void {
235
+ if (filterStore.filterIab) {
236
+ if (route.query.iabId) {
237
+ updateFiltersParam({ iabId: undefined }, { i: undefined });
238
+ }
239
+ } else {
240
+ modifyRubriquesFilter((a) => {
241
+ a.splice(index + 1);
242
+ return a;
243
+ });
244
+ }
245
+ if (event) {
246
+ event.preventDefault();
247
+ }
248
+ }
275
249
  </script>
276
250
  <style lang="scss">
277
251
  .octopus-app {