@saooti/octopus-sdk 40.2.18 → 41.0.0-SNAPSHOT

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 (204) hide show
  1. package/package.json +38 -39
  2. package/src/App.vue +68 -88
  3. package/src/components/composable/player/usePlayerLive.ts +12 -3
  4. package/src/components/composable/player/usePlayerLogic.ts +6 -6
  5. package/src/components/composable/podcasts/usePodcastView.ts +3 -3
  6. package/src/components/composable/useInit.ts +2 -2
  7. package/src/components/composable/useMetaTitleWatch.ts +2 -2
  8. package/src/components/display/accessibility/AccessibilityModal.vue +56 -68
  9. package/src/components/display/categories/CategoryChooser.vue +142 -145
  10. package/src/components/display/categories/CategoryFilter.vue +172 -198
  11. package/src/components/display/categories/CategoryList.vue +122 -147
  12. package/src/components/display/comments/CommentInput.vue +100 -122
  13. package/src/components/display/comments/CommentList.vue +169 -191
  14. package/src/components/display/comments/CommentName.vue +35 -45
  15. package/src/components/display/comments/CommentParentInfo.vue +28 -34
  16. package/src/components/display/comments/CommentPlayer.vue +38 -50
  17. package/src/components/display/comments/CommentSection.vue +85 -103
  18. package/src/components/display/comments/item/CommentBasicView.vue +48 -61
  19. package/src/components/display/comments/item/CommentItem.vue +101 -116
  20. package/src/components/display/comments/item/CommentMoreActions.vue +174 -189
  21. package/src/components/display/comments/item/CommentMoreActionsAdmin.vue +1 -3
  22. package/src/components/display/comments/like/LikeButton.vue +36 -41
  23. package/src/components/display/comments/like/LikeSection.vue +128 -136
  24. package/src/components/display/comments/modal/CheckIdentityModal.vue +35 -40
  25. package/src/components/display/comments/modal/EditCommentModal.vue +72 -78
  26. package/src/components/display/comments/modal/RecaptchaModal.vue +58 -63
  27. package/src/components/display/comments/modal/ReportAbuseModal.vue +59 -66
  28. package/src/components/display/edit/EditBox.vue +6 -9
  29. package/src/components/display/edit/EditBoxRadio.vue +1 -5
  30. package/src/components/display/emission/EmissionInlineList.vue +82 -97
  31. package/src/components/display/emission/EmissionItem.vue +56 -69
  32. package/src/components/display/emission/EmissionList.vue +192 -218
  33. package/src/components/display/emission/EmissionPlayerItem.vue +48 -65
  34. package/src/components/display/emission/EmissionPresentationItem.vue +44 -54
  35. package/src/components/display/emission/EmissionPresentationList.vue +51 -61
  36. package/src/components/display/filter/AdvancedSearch.vue +154 -176
  37. package/src/components/display/filter/CategorySearchFilter.vue +43 -46
  38. package/src/components/display/filter/DateFilter.vue +76 -91
  39. package/src/components/display/filter/MonetizableFilter.vue +27 -30
  40. package/src/components/display/filter/ProductorSearch.vue +87 -90
  41. package/src/components/display/filter/RubriqueChoice.vue +58 -63
  42. package/src/components/display/filter/RubriqueFilter.vue +154 -169
  43. package/src/components/display/filter/SearchOrder.vue +35 -35
  44. package/src/components/display/list/ListPaginate.vue +80 -93
  45. package/src/components/display/list/PaginateParams.vue +36 -40
  46. package/src/components/display/list/PaginateSection.vue +113 -124
  47. package/src/components/display/list/SwiperList.vue +97 -109
  48. package/src/components/display/live/CountDown.vue +15 -9
  49. package/src/components/display/live/CountdownOctopus.vue +16 -10
  50. package/src/components/display/live/LiveHorizontalList.vue +95 -103
  51. package/src/components/display/live/LiveItem.vue +65 -73
  52. package/src/components/display/live/LiveList.vue +125 -137
  53. package/src/components/display/live/RadioCurrently.vue +66 -73
  54. package/src/components/display/live/RadioImage.vue +40 -51
  55. package/src/components/display/live/RadioItem.vue +9 -14
  56. package/src/components/display/live/RadioList.vue +39 -53
  57. package/src/components/display/live/RadioPlanning.vue +211 -223
  58. package/src/components/display/organisation/OrganisationChooser.vue +117 -123
  59. package/src/components/display/organisation/OrganisationChooserLight.vue +44 -52
  60. package/src/components/display/participant/ParticipantInlineList.vue +42 -58
  61. package/src/components/display/participant/ParticipantItem.vue +66 -74
  62. package/src/components/display/participant/ParticipantList.vue +119 -141
  63. package/src/components/display/playlist/PlaylistItem.vue +33 -46
  64. package/src/components/display/playlist/PlaylistList.vue +118 -144
  65. package/src/components/display/playlist/PodcastList.vue +79 -101
  66. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +58 -70
  67. package/src/components/display/podcastmaker/PodcastmakerHeader.vue +21 -22
  68. package/src/components/display/podcasts/AnimatorsItem.vue +15 -16
  69. package/src/components/display/podcasts/DownloadPodcastButton.vue +21 -29
  70. package/src/components/display/podcasts/ParticipantDescription.vue +22 -24
  71. package/src/components/display/podcasts/PodcastFilterList.vue +48 -53
  72. package/src/components/display/podcasts/PodcastImage.vue +96 -99
  73. package/src/components/display/podcasts/PodcastInlineList.vue +30 -28
  74. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +107 -114
  75. package/src/components/display/podcasts/PodcastIsPlaying.vue +4 -12
  76. package/src/components/display/podcasts/PodcastItem.vue +48 -63
  77. package/src/components/display/podcasts/PodcastItemInfo.vue +19 -35
  78. package/src/components/display/podcasts/PodcastList.vue +183 -206
  79. package/src/components/display/podcasts/PodcastModuleBox.vue +100 -137
  80. package/src/components/display/podcasts/PodcastPlannedSpinner.vue +4 -6
  81. package/src/components/display/podcasts/PodcastPlayBar.vue +50 -61
  82. package/src/components/display/podcasts/PodcastPlayBasicButton.vue +38 -41
  83. package/src/components/display/podcasts/PodcastPlayButton.vue +164 -175
  84. package/src/components/display/podcasts/PodcastRawTranscript.vue +69 -80
  85. package/src/components/display/podcasts/PodcastRubriqueList.vue +35 -38
  86. package/src/components/display/podcasts/PodcastSwiperList.vue +100 -110
  87. package/src/components/display/podcasts/TagList.vue +49 -51
  88. package/src/components/display/podcasts/VideoModuleBox.vue +13 -24
  89. package/src/components/display/rubriques/RubriqueChooser.vue +135 -140
  90. package/src/components/display/rubriques/RubriqueList.vue +140 -160
  91. package/src/components/display/sharing/ChooseEpisodesNumber.vue +34 -33
  92. package/src/components/display/sharing/FormatSwitch.vue +16 -11
  93. package/src/components/display/sharing/PlayerAnonymousModal.vue +24 -27
  94. package/src/components/display/sharing/PlayerCommonParameters.vue +20 -13
  95. package/src/components/display/sharing/PlayerParameters.vue +69 -71
  96. package/src/components/display/sharing/QrCode.vue +55 -67
  97. package/src/components/display/sharing/ShareAnonymous.vue +160 -178
  98. package/src/components/display/sharing/ShareDistribution.vue +103 -117
  99. package/src/components/display/sharing/ShareNewsletter.vue +154 -161
  100. package/src/components/display/sharing/SharePlayer.vue +273 -295
  101. package/src/components/display/sharing/SharePlayerColors.vue +25 -16
  102. package/src/components/display/sharing/SharePlayerRadio.vue +61 -69
  103. package/src/components/display/sharing/SharePlayerTypes.vue +176 -176
  104. package/src/components/display/sharing/ShareSocialsButtons.vue +63 -75
  105. package/src/components/display/sharing/SubscribeButtons.vue +185 -209
  106. package/src/components/display/studio/RecordingItemButton.vue +1 -4
  107. package/src/components/form/ClassicCheckbox.vue +26 -30
  108. package/src/components/form/ClassicContentEditable.vue +37 -33
  109. package/src/components/form/ClassicCopyButton.vue +40 -44
  110. package/src/components/form/ClassicDatePicker.vue +114 -114
  111. package/src/components/form/ClassicEmojiPicker.vue +20 -28
  112. package/src/components/form/ClassicInputText.vue +116 -120
  113. package/src/components/form/ClassicLoading.vue +7 -12
  114. package/src/components/form/ClassicMultiselect.vue +106 -116
  115. package/src/components/form/ClassicRadio.vue +21 -16
  116. package/src/components/form/ClassicRadioLabel.vue +23 -22
  117. package/src/components/form/ClassicSearch.vue +24 -19
  118. package/src/components/form/ClassicSelect.vue +47 -38
  119. package/src/components/form/ClassicWysiwyg.vue +116 -123
  120. package/src/components/icons/AmazonMusicIcon.vue +7 -10
  121. package/src/components/icons/ApplePodcastIcon.vue +7 -11
  122. package/src/components/icons/BlueSkyIcon.vue +8 -11
  123. package/src/components/icons/DeezerIcon.vue +8 -11
  124. package/src/components/icons/EditFtpIcon.vue +8 -11
  125. package/src/components/icons/IHeartIcon.vue +8 -11
  126. package/src/components/icons/PlayVideoIcon.vue +7 -10
  127. package/src/components/icons/PlayerFmIcon.vue +7 -10
  128. package/src/components/icons/PocketCastIcon.vue +8 -11
  129. package/src/components/icons/PodcastAddictIcon.vue +7 -10
  130. package/src/components/icons/RadiolineIcon.vue +8 -11
  131. package/src/components/icons/TuninIcon.vue +8 -11
  132. package/src/components/icons/XIcon.vue +7 -10
  133. package/src/components/misc/AcpmImage.vue +6 -7
  134. package/src/components/misc/ClassicAccordion.vue +27 -32
  135. package/src/components/misc/ClassicLazy.vue +86 -90
  136. package/src/components/misc/ClassicNav.vue +16 -20
  137. package/src/components/misc/ClassicPopover.vue +266 -282
  138. package/src/components/misc/ClassicSpinner.vue +5 -27
  139. package/src/components/misc/ErrorMessage.vue +11 -12
  140. package/src/components/misc/FooterGarSection.vue +33 -41
  141. package/src/components/misc/FooterSection.vue +109 -130
  142. package/src/components/misc/HomeDropdown.vue +85 -108
  143. package/src/components/misc/MobileMenu.vue +102 -113
  144. package/src/components/misc/ProgressBar.vue +53 -62
  145. package/src/components/misc/TopBar.vue +97 -120
  146. package/src/components/misc/TopBarMainContent.vue +116 -135
  147. package/src/components/misc/modal/ClassicModal.vue +40 -33
  148. package/src/components/misc/modal/ClassicModalInBody.vue +34 -28
  149. package/src/components/misc/modal/ClipboardModal.vue +27 -30
  150. package/src/components/misc/modal/ContractPreviewModal.vue +64 -62
  151. package/src/components/misc/modal/MessageModal.vue +50 -47
  152. package/src/components/misc/modal/NewsletterModal.vue +30 -31
  153. package/src/components/misc/modal/QrCodeModal.vue +21 -21
  154. package/src/components/misc/modal/ShareModalPlayer.vue +43 -52
  155. package/src/components/misc/player/PlayerCompact.vue +6 -4
  156. package/src/components/misc/player/PlayerComponent.vue +8 -9
  157. package/src/components/misc/player/PlayerLarge.vue +9 -8
  158. package/src/components/misc/player/ads/AdsProgressBar.vue +8 -11
  159. package/src/components/misc/player/ads/AdsSkipButton.vue +24 -30
  160. package/src/components/misc/player/chaptering/ChapteringModal.vue +44 -54
  161. package/src/components/misc/player/chaptering/PlayerChaptering.vue +50 -62
  162. package/src/components/misc/player/elements/PlayerImage.vue +51 -57
  163. package/src/components/misc/player/elements/PlayerPlayButton.vue +81 -92
  164. package/src/components/misc/player/elements/PlayerSpeedButton.vue +23 -27
  165. package/src/components/misc/player/elements/PlayerTitle.vue +85 -111
  166. package/src/components/misc/player/progressbar/PlayerProgressBar.vue +18 -29
  167. package/src/components/misc/player/progressbar/PodcastProgressBar.vue +45 -56
  168. package/src/components/misc/player/radio/RadioHistory.vue +80 -99
  169. package/src/components/misc/player/radio/RadioProgressBar.vue +43 -54
  170. package/src/components/misc/player/video/PlayerVideo.vue +27 -40
  171. package/src/components/misc/player/video/PlayerVideoDigiteka.vue +32 -37
  172. package/src/components/misc/player/video/PlayerVideoHls.vue +199 -198
  173. package/src/components/misc/player/video/PlayerYoutubeEmbed.vue +10 -12
  174. package/src/components/pages/CategoryPage.vue +28 -33
  175. package/src/components/pages/EmissionPage.vue +98 -131
  176. package/src/components/pages/EmissionsPage.vue +2 -0
  177. package/src/components/pages/Error403Page.vue +22 -21
  178. package/src/components/pages/HomePage.vue +91 -100
  179. package/src/components/pages/LivesPage.vue +35 -37
  180. package/src/components/pages/MapPage.vue +209 -241
  181. package/src/components/pages/PageLogout.vue +8 -11
  182. package/src/components/pages/PageNotFound.vue +9 -5
  183. package/src/components/pages/ParticipantPage.vue +83 -111
  184. package/src/components/pages/ParticipantsPage.vue +3 -0
  185. package/src/components/pages/PlaylistPage.vue +98 -116
  186. package/src/components/pages/PlaylistsPage.vue +9 -2
  187. package/src/components/pages/PodcastPage.vue +223 -238
  188. package/src/components/pages/PodcastsPage.vue +9 -2
  189. package/src/components/pages/RadioPage.vue +56 -70
  190. package/src/components/pages/RubriquePage.vue +7 -3
  191. package/src/components/pages/SearchPage.vue +31 -36
  192. package/src/components/pages/TagPage.vue +11 -9
  193. package/src/components/pages/VideoPage.vue +14 -11
  194. package/src/helper/displayHelper.ts +1 -1
  195. package/src/i18n.ts +2 -2
  196. package/src/main.ts +1 -1
  197. package/src/stores/class/general/player.ts +1 -0
  198. package/public/css/fonts/icomoon.eot +0 -0
  199. package/public/css/fonts/icomoon.svg +0 -113
  200. package/public/css/fonts/icomoon.ttf +0 -0
  201. package/public/css/fonts/icomoon.woff +0 -0
  202. package/public/css/fonts/icomoon.woff2 +0 -0
  203. package/public/css/fonts/style.css +0 -352
  204. package/sonarqube-scanner.js +0 -10
@@ -6,16 +6,16 @@
6
6
  v-model:is-mobile="isMobile"
7
7
  :text-count="
8
8
  showCount && emissions.length > 1
9
- ? $t('Number emissions', { nb: displayCount }) + sortText
9
+ ? t('Number emissions', { nb: displayCount }) + sortText
10
10
  : undefined
11
11
  "
12
12
  :total-count="totalCount"
13
13
  :loading="loading"
14
- :loading-text="loading ? $t('Loading emissions ...') : undefined"
14
+ :loading-text="loading ? t('Loading emissions ...') : undefined"
15
15
  :player-responsive="true"
16
16
  >
17
17
  <template #list>
18
- <div v-if="!itemPlayer" class="octopus-element-list two-items-list">
18
+ <div v-if="!state.emissionsPage.itemPlayer" class="octopus-element-list two-items-list">
19
19
  <ClassicLazy
20
20
  v-for="e in displayArray"
21
21
  :key="e.emissionId"
@@ -29,7 +29,7 @@
29
29
  name: 'emission',
30
30
  params: { emissionId: e.emissionId },
31
31
  }"
32
- :title="$t('Series name page', { name: e.name })"
32
+ :title="t('Series name page', { name: e.name })"
33
33
  >
34
34
  {{ e.name }}
35
35
  </router-link>
@@ -56,7 +56,7 @@
56
56
  </ListPaginate>
57
57
  </template>
58
58
 
59
- <script lang="ts">
59
+ <script setup lang="ts">
60
60
  import ListPaginate from "../list/ListPaginate.vue";
61
61
  import classicApi from "../../../api/classicApi";
62
62
  import ClassicLazy from "../../misc/ClassicLazy.vue";
@@ -64,234 +64,208 @@ import {useErrorHandler} from "../../composable/useErrorHandler";
64
64
  import { state } from "../../../stores/ParamSdkStore";
65
65
  import { Emission, emptyEmissionData } from "@/stores/class/general/emission";
66
66
  import { Rubrique } from "@/stores/class/rubrique/rubrique";
67
- import { defineComponent, defineAsyncComponent } from "vue";
67
+ import { defineAsyncComponent, ref, Ref, computed, watch, onMounted } from "vue";
68
68
  import { FetchParam } from "@/stores/class/general/fetchParam";
69
69
  import { AxiosError } from "axios";
70
70
  import { Rubriquage } from "@/stores/class/rubrique/rubriquage";
71
71
  import { useFilterStore } from "../../../stores/FilterStore";
72
- import { mapState } from "pinia";
73
72
  import { ListClassicReturn } from "@/stores/class/general/listReturn";
73
+ import { useI18n } from "vue-i18n";
74
74
  const EmissionItem = defineAsyncComponent(() => import("./EmissionItem.vue"));
75
75
  const EmissionPlayerItem = defineAsyncComponent(
76
76
  () => import("./EmissionPlayerItem.vue"),
77
77
  );
78
- export default defineComponent({
79
- name: "EmissionList",
80
78
 
81
- components: {
82
- EmissionItem,
83
- EmissionPlayerItem,
84
- ListPaginate,
85
- ClassicLazy,
86
- },
79
+ //Props
80
+ const props = defineProps({
81
+ first: { default: 0, type: Number },
82
+ size: { default: 30, type: Number },
83
+ query: { default: undefined, type: String },
84
+ iabId: { default: undefined, type: Number },
85
+ organisationId: { default: undefined, type: String },
86
+ monetisable: { default: "UNDEFINED", type: String },
87
+ before: { default: undefined, type: String },
88
+ after: { default: undefined, type: String },
89
+ sort: { default: "DATE", type: String },
90
+ showCount: { default: false, type: Boolean },
91
+ includeHidden: { default: false, type: Boolean },
92
+ rubriqueId: { default: () => [], type: Array as () => Array<number> },
93
+ rubriquageId: { default: () => [], type: Array as () => Array<number> },
94
+ noRubriquageId: { default: () => [], type: Array as () => Array<number> },
95
+ nbPodcasts: { default: undefined, type: Number },
96
+ })
87
97
 
98
+ //Data
99
+ const loading = ref(true);
100
+ const dfirst = ref(props.first);
101
+ const dsize = ref(props.size);
102
+ const totalCount = ref(0);
103
+ const displayCount = ref(0);
104
+ const isMobile = ref(false);
105
+ const emissions: Ref<Array<Emission>> = ref([]);
106
+ const rubriques: Ref<Array<Rubrique> | undefined> = ref(undefined);
107
+
108
+ //Composables
109
+ const { t } = useI18n();
110
+ const {handle403} = useErrorHandler();
111
+ const filterStore = useFilterStore();
112
+
113
+ //Computed
114
+ const displayArray = computed(() => {
115
+ if (isMobile.value) {
116
+ return emissions.value;
117
+ }
118
+ return emissions.value.slice(
119
+ dfirst.value,
120
+ Math.min(dfirst.value + dsize.value, totalCount.value),
121
+ );
122
+ });
123
+ const displayRubriquage = computed(() => state.emissionsPage.rubriquage);
124
+ const changePaginate = computed(() => `${props.first}|${props.size}`);
125
+ const changed = computed(() => {
126
+ return `${props.organisationId}|${props.query}|${props.monetisable}|${props.includeHidden}
127
+ ${props.iabId}|${props.rubriqueId}|${props.rubriquageId}|${props.before}|${props.after}|${props.sort}|${props.noRubriquageId}`;
128
+ });
129
+ const sortText = computed(() => {
130
+ let textSort = "";
131
+ switch (props.sort) {
132
+ case "SCORE":
133
+ textSort = " " + t("sort by score");
134
+ break;
135
+ case "LAST_PODCAST_DESC":
136
+ textSort = " " + t("sort by date");
137
+ break;
138
+ case "NAME":
139
+ textSort = " " + t("sort by alphabetical");
140
+ break;
141
+ default:
142
+ textSort = " " + t("sort by date");
143
+ break;
144
+ }
145
+ return textSort.replace("triés", "triées");
146
+ });
147
+ const organisation = computed(() => props.organisationId ? props.organisationId : filterStore.filterOrgaId);
88
148
 
89
- props: {
90
- first: { default: 0, type: Number },
91
- size: { default: 30, type: Number },
92
- query: { default: undefined, type: String },
93
- iabId: { default: undefined, type: Number },
94
- organisationId: { default: undefined, type: String },
95
- monetisable: { default: "UNDEFINED", type: String },
96
- before: { default: undefined, type: String },
97
- after: { default: undefined, type: String },
98
- sort: { default: "DATE", type: String },
99
- showCount: { default: false, type: Boolean },
100
- includeHidden: { default: false, type: Boolean },
101
- rubriqueId: { default: () => [], type: Array as () => Array<number> },
102
- rubriquageId: { default: () => [], type: Array as () => Array<number> },
103
- noRubriquageId: { default: () => [], type: Array as () => Array<number> },
104
- nbPodcasts: { default: undefined, type: Number },
105
- },
106
- setup(){
107
- const {handle403} = useErrorHandler();
108
- return { handle403 }
109
- },
110
149
 
111
- data() {
112
- return {
113
- loading: true as boolean,
114
- dfirst: this.first,
115
- dsize: this.size,
116
- totalCount: 0 as number,
117
- displayCount: 0 as number,
118
- emissions: [] as Array<Emission>,
119
- rubriques: undefined as Array<Rubrique> | undefined,
120
- isMobile: false as boolean,
121
- };
122
- },
150
+ //Watch
151
+ watch(changePaginate, () => {
152
+ dfirst.value = props.first;
153
+ dsize.value = props.size;
154
+ });
155
+ watch(changed, () =>reloadList());
156
+ watch(dsize, () =>reloadList());
157
+ watch(dfirst, () =>{
158
+ if (
159
+ !emissions.value[dfirst.value] ||
160
+ 0 === emissions.value[dfirst.value].emissionId
161
+ ) {
162
+ fetchContent(false);
163
+ }
164
+ });
123
165
 
124
- computed: {
125
- ...mapState(useFilterStore, ["filterOrgaId"]),
126
- displayArray(): Array<Emission> {
127
- if (this.isMobile) {
128
- return this.emissions;
129
- }
130
- return this.emissions.slice(
131
- this.dfirst,
132
- Math.min(this.dfirst + this.dsize, this.totalCount),
133
- );
134
- },
135
- itemPlayer(): boolean {
136
- return state.emissionsPage.itemPlayer as boolean;
137
- },
138
- displayRubriquage(): number | undefined {
139
- return state.emissionsPage.rubriquage;
140
- },
141
- changePaginate(): string {
142
- return `${this.first}|${this.size}`;
143
- },
144
- changed(): string {
145
- return `${this.organisationId}|${this.query}|${this.monetisable}|${this.includeHidden}
146
- ${this.iabId}|${this.rubriqueId}|${this.rubriquageId}|${this.before}|${this.after}|${this.sort}|${this.noRubriquageId}`;
147
- },
148
- sortText(): string {
149
- let textSort = "";
150
- switch (this.sort) {
151
- case "SCORE":
152
- textSort = " " + this.$t("sort by score");
153
- break;
154
- case "LAST_PODCAST_DESC":
155
- textSort = " " + this.$t("sort by date");
156
- break;
157
- case "NAME":
158
- textSort = " " + this.$t("sort by alphabetical");
159
- break;
160
- default:
161
- textSort = " " + this.$t("sort by date");
162
- break;
163
- }
164
166
 
165
- return textSort.replace("triés", "triées");
166
- },
167
- organisation(): string | undefined {
168
- return this.organisationId ? this.organisationId : this.filterOrgaId;
169
- },
170
- },
171
- watch: {
172
- changePaginate() {
173
- this.dfirst = this.first;
174
- this.dsize = this.size;
175
- },
176
- changed(): void {
177
- this.reloadList();
178
- },
179
- dsize(): void {
180
- this.reloadList();
181
- },
182
- dfirst(): void {
183
- if (
184
- !this.emissions[this.dfirst] ||
185
- 0 === this.emissions[this.dfirst].emissionId
186
- ) {
187
- this.fetchContent(false);
188
- }
189
- },
190
- },
167
+ onMounted(()=>{
168
+ fetchContent(true);
169
+ if (displayRubriquage.value) {
170
+ fetchRubriques();
171
+ }
172
+ })
191
173
 
192
- mounted() {
193
- this.fetchContent(true);
194
- if (this.displayRubriquage) {
195
- this.fetchRubriques();
174
+ //Methods
175
+ function reloadList() {
176
+ dfirst.value = 0;
177
+ fetchContent(true);
178
+ }
179
+ async function fetchContent(reset: boolean): Promise<void> {
180
+ loading.value = true;
181
+ const param: FetchParam = {
182
+ first: dfirst.value,
183
+ size: dsize.value,
184
+ query: props.query,
185
+ organisationId: organisation.value,
186
+ monetisable: props.monetisable,
187
+ iabId: props.iabId,
188
+ before: props.before,
189
+ after: props.after,
190
+ sort: props.sort,
191
+ noRubriquageId: props.noRubriquageId.length
192
+ ? props.noRubriquageId
193
+ : undefined,
194
+ rubriqueId: props.rubriqueId.length ? props.rubriqueId : undefined,
195
+ rubriquageId: props.rubriquageId.length ? props.rubriquageId : undefined,
196
+ includeHidden: props.includeHidden,
197
+ };
198
+ try {
199
+ const data = await classicApi.fetchData<ListClassicReturn<Emission>>({
200
+ api: 0,
201
+ path: "emission/search",
202
+ parameters: param,
203
+ specialTreatement: true,
204
+ });
205
+ afterFetching(reset, data);
206
+ } catch (error) {
207
+ handle403(error as AxiosError);
208
+ }
209
+ }
210
+ function afterFetching(
211
+ reset: boolean,
212
+ data: { count: number; result: Array<Emission>; sort: string },
213
+ ): void {
214
+ if (reset) {
215
+ emissions.value.length = 0;
216
+ }
217
+ if (dfirst.value > emissions.value.length) {
218
+ for (
219
+ let i = emissions.value.length - 1, len = dfirst.value + dsize.value;
220
+ i < len;
221
+ i++
222
+ ) {
223
+ emissions.value.push(emptyEmissionData());
196
224
  }
197
- },
198
- methods: {
199
- reloadList() {
200
- this.dfirst = 0;
201
- this.fetchContent(true);
202
- },
203
- async fetchContent(reset: boolean): Promise<void> {
204
- this.loading = true;
205
- const param: FetchParam = {
206
- first: this.dfirst,
207
- size: this.dsize,
208
- query: this.query,
209
- organisationId: this.organisation,
210
- monetisable: this.monetisable,
211
- iabId: this.iabId,
212
- before: this.before,
213
- after: this.after,
214
- sort: this.sort,
215
- noRubriquageId: this.noRubriquageId.length
216
- ? this.noRubriquageId
217
- : undefined,
218
- rubriqueId: this.rubriqueId.length ? this.rubriqueId : undefined,
219
- rubriquageId: this.rubriquageId.length ? this.rubriquageId : undefined,
220
- includeHidden: this.includeHidden,
221
- };
222
- try {
223
- const data = await classicApi.fetchData<ListClassicReturn<Emission>>({
224
- api: 0,
225
- path: "emission/search",
226
- parameters: param,
227
- specialTreatement: true,
228
- });
229
- this.afterFetching(reset, data);
230
- } catch (error) {
231
- this.handle403(error as AxiosError);
232
- }
233
- },
234
- afterFetching(
235
- reset: boolean,
236
- data: { count: number; result: Array<Emission>; sort: string },
237
- ): void {
238
- if (reset) {
239
- this.emissions.length = 0;
240
- }
241
- if (this.dfirst > this.emissions.length) {
242
- for (
243
- let i = this.emissions.length - 1, len = this.dfirst + this.dsize;
244
- i < len;
245
- i++
246
- ) {
247
- this.emissions.push(emptyEmissionData());
248
- }
249
- }
250
- this.displayCount = data.count;
251
- const responseEmissions = data.result.filter((e: Emission | null) => {
252
- if (null === e) {
253
- this.displayCount--;
254
- }
255
- return null !== e;
256
- });
257
- this.emissions = this.emissions
258
- .slice(0, this.dfirst)
259
- .concat(responseEmissions)
260
- .concat(
261
- this.emissions.slice(this.dfirst + this.dsize, this.emissions.length),
262
- );
263
- this.totalCount = data.count;
264
- this.loading = false;
265
- },
266
- async fetchRubriques(): Promise<void> {
267
- const data = await classicApi.fetchData<Rubriquage>({
268
- api: 0,
269
- path: "rubriquage/" + this.displayRubriquage,
270
- });
271
- this.rubriques = data.rubriques;
272
- },
273
- mainRubriquage(emission: Emission): string {
274
- return emission.rubriqueIds?.[0] === state.emissionsPage.mainRubrique
275
- ? "partenaireRubrique"
276
- : "";
277
- },
278
- rubriquesId(emission: Emission): string | undefined {
279
- if (
280
- !this.displayRubriquage ||
281
- !emission.rubriqueIds ||
282
- 0 === emission.rubriqueIds.length ||
283
- !this.rubriques ||
284
- !this.rubriques.length
285
- )
286
- return undefined;
287
- const rubrique = this.rubriques.find(
288
- (element: Rubrique) => element.rubriqueId === emission.rubriqueIds[0],
289
- );
290
- if (!rubrique) {
291
- return undefined;
292
- }
293
- return rubrique.name;
294
- },
295
- },
296
- });
225
+ }
226
+ displayCount.value = data.count;
227
+ const responseEmissions = data.result.filter((e: Emission | null) => {
228
+ if (null === e) {
229
+ displayCount.value--;
230
+ }
231
+ return null !== e;
232
+ });
233
+ emissions.value = emissions.value
234
+ .slice(0, dfirst.value)
235
+ .concat(responseEmissions)
236
+ .concat(
237
+ emissions.value.slice(dfirst.value + dsize.value, emissions.value.length),
238
+ );
239
+ totalCount.value = data.count;
240
+ loading.value = false;
241
+ }
242
+ async function fetchRubriques(): Promise<void> {
243
+ const data = await classicApi.fetchData<Rubriquage>({
244
+ api: 0,
245
+ path: "rubriquage/" + displayRubriquage.value,
246
+ });
247
+ rubriques.value = data.rubriques;
248
+ }
249
+ function mainRubriquage(emission: Emission): string {
250
+ return emission.rubriqueIds?.[0] === state.emissionsPage.mainRubrique
251
+ ? "partenaireRubrique"
252
+ : "";
253
+ }
254
+ function rubriquesId(emission: Emission): string | undefined {
255
+ if (
256
+ !displayRubriquage.value ||
257
+ !emission.rubriqueIds ||
258
+ 0 === emission.rubriqueIds.length ||
259
+ !rubriques.value ||
260
+ !rubriques.value.length
261
+ )
262
+ return undefined;
263
+ const rubrique = rubriques.value.find(
264
+ (element: Rubrique) => element.rubriqueId === emission.rubriqueIds[0],
265
+ );
266
+ if (!rubrique) {
267
+ return undefined;
268
+ }
269
+ return rubrique.name;
270
+ }
297
271
  </script>
@@ -5,7 +5,7 @@
5
5
  name: 'emission',
6
6
  params: { emissionId: emission.emissionId },
7
7
  }"
8
- :title="$t('Series name page', { name: emission.name })"
8
+ :title="t('Series name page', { name: emission.name })"
9
9
  class="d-flex flex-column text-dark"
10
10
  >
11
11
  <div v-if="rubriqueName" class="emission-player-item-info">
@@ -16,9 +16,10 @@
16
16
  v-lazy="useProxyImageUrl(emission.imageUrl, '330')"
17
17
  width="330"
18
18
  height="330"
19
- role="presentation"
20
- alt=""
21
- :title="$t('Emission name image', { name: emission.name })"
19
+ aria-hidden="true"
20
+ alt=""
21
+
22
+ :title="t('Emission name image', { name: emission.name })"
22
23
  class="img-box"
23
24
  />
24
25
  </div>
@@ -37,7 +38,7 @@
37
38
  name: 'podcast',
38
39
  params: { podcastId: p.podcastId },
39
40
  }"
40
- :title="$t('Episode name page', { name: p.title })"
41
+ :title="t('Episode name page', { name: p.title })"
41
42
  class="text-dark fw-bold basic-line-clamp"
42
43
  >
43
44
  {{ p.title }}
@@ -50,7 +51,7 @@
50
51
  name: 'podcast',
51
52
  params: { podcastId: p.podcastId },
52
53
  }"
53
- :title="$t('Episode name page', { name: p.title })"
54
+ :title="t('Episode name page', { name: p.title })"
54
55
  class="d-flex flex-grow-1 align-items-center define-width text-dark"
55
56
  >
56
57
  <div class="fw-bold text-truncate">
@@ -77,85 +78,67 @@
77
78
  }"
78
79
  class="btn"
79
80
  >
80
- {{ $t("More episodes") }}
81
+ {{ t("More episodes") }}
81
82
  </router-link>
82
83
  </div>
83
84
  </div>
84
85
  </template>
85
86
 
86
- <script lang="ts">
87
+ <script setup lang="ts">
87
88
  import classicApi from "../../../api/classicApi";
88
89
  import { Emission } from "@/stores/class/general/emission";
89
90
  import { Podcast } from "@/stores/class/general/podcast";
90
91
  import { state } from "../../../stores/ParamSdkStore";
91
92
  import {useImageProxy} from "../../composable/useImageProxy";
92
- import {useOrgaComputed} from "../../composable/useOrgaComputed";
93
- import { defineAsyncComponent, defineComponent } from "vue";
93
+ import { computed, defineAsyncComponent, onBeforeMount, Ref, ref } from "vue";
94
94
  import { ListClassicReturn } from "@/stores/class/general/listReturn";
95
+ import { useI18n } from "vue-i18n";
95
96
  const PodcastPlayBar = defineAsyncComponent(
96
97
  () => import("../podcasts/PodcastPlayBar.vue"),
97
98
  );
98
99
  const PodcastPlayBasicButton = defineAsyncComponent(() => import("../podcasts/PodcastPlayBasicButton.vue"));
99
- export default defineComponent({
100
- name: "EmissionPlayerItem",
101
100
 
102
- components: {
103
- PodcastPlayBar,
104
- PodcastPlayBasicButton
105
- },
106
- props: {
107
- emission: { default: () => ({}), type: Object as () => Emission },
108
- nbPodcasts: { default: undefined, type: Number },
109
- rubriqueName: { default: undefined, type: String },
110
- },
111
- setup(){
112
- const { useProxyImageUrl } = useImageProxy();
113
- const { isEditRights } = useOrgaComputed();
114
- return { useProxyImageUrl, isEditRights }
115
- },
101
+ //Props
102
+ const props = defineProps({
103
+ emission: { default: () => ({}), type: Object as () => Emission },
104
+ nbPodcasts: { default: undefined, type: Number },
105
+ rubriqueName: { default: undefined, type: String },
106
+ })
116
107
 
117
- data() {
118
- return {
119
- activeEmission: true as boolean,
120
- podcasts: [] as Array<Podcast>,
121
- };
122
- },
108
+ //Data
109
+ const activeEmission = ref(true);
110
+ const podcasts: Ref<Array<Podcast>> = ref([]);
111
+
123
112
 
124
- computed: {
125
- isProgressBar(): boolean {
126
- return state.emissionsPage.progressBar as boolean;
127
- },
128
- buttonMore(): boolean {
129
- return state.emissionsPage.buttonMore as boolean;
130
- },
131
- editRight(): boolean {
132
- return this.isEditRights(this.emission?.orga.id);
133
- },
134
- },
113
+ //Composables
114
+ const { t } = useI18n();
115
+ const { useProxyImageUrl } = useImageProxy();
116
+
117
+ //Computed
118
+ const isProgressBar = computed(() => state.emissionsPage.progressBar as boolean);
119
+ const buttonMore = computed(() => state.emissionsPage.buttonMore as boolean);
135
120
 
136
- created() {
137
- this.loadPodcasts();
138
- },
139
- methods: {
140
- async loadPodcasts(): Promise<void> {
141
- const nb = this.nbPodcasts ? this.nbPodcasts : 2;
142
- const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({
143
- api: 0,
144
- path: "podcast/search",
145
- parameters: {
146
- emissionId: this.emission.emissionId,
147
- size: nb,
148
- includeStatus: ["READY", "PROCESSING"],
149
- },
150
- specialTreatement: true,
151
- });
152
- if (0 === data.count) {
153
- this.activeEmission = false;
154
- }
155
- this.podcasts = data.result;
121
+
122
+ onBeforeMount(()=>loadPodcasts())
123
+
124
+ //Methods
125
+ async function loadPodcasts(): Promise<void> {
126
+ const nb = props.nbPodcasts ? props.nbPodcasts : 2;
127
+ const data = await classicApi.fetchData<ListClassicReturn<Podcast>>({
128
+ api: 0,
129
+ path: "podcast/search",
130
+ parameters: {
131
+ emissionId: props.emission.emissionId,
132
+ size: nb,
133
+ includeStatus: ["READY", "PROCESSING"],
156
134
  },
157
- },
158
- });
135
+ specialTreatement: true,
136
+ });
137
+ if (0 === data.count) {
138
+ activeEmission.value = false;
139
+ }
140
+ podcasts.value = data.result;
141
+ }
159
142
  </script>
160
143
 
161
144
  <style lang="scss">