@saooti/octopus-sdk 37.0.5 → 37.0.7

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 (263) hide show
  1. package/README.md +2 -2
  2. package/index.html +1 -0
  3. package/index.ts +21 -21
  4. package/package.json +26 -20
  5. package/public/css/fonts/icomoon.eot +0 -0
  6. package/public/css/fonts/icomoon.svg +1 -1
  7. package/public/css/fonts/icomoon.ttf +0 -0
  8. package/public/css/fonts/icomoon.woff +0 -0
  9. package/public/css/fonts/montserrat/Montserrat-Black.ttf +0 -0
  10. package/public/css/fonts/montserrat/Montserrat-BlackItalic.ttf +0 -0
  11. package/public/css/fonts/montserrat/Montserrat-Bold.ttf +0 -0
  12. package/public/css/fonts/montserrat/Montserrat-BoldItalic.ttf +0 -0
  13. package/public/css/fonts/montserrat/Montserrat-ExtraBold.ttf +0 -0
  14. package/public/css/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf +0 -0
  15. package/public/css/fonts/montserrat/Montserrat-ExtraLight.ttf +0 -0
  16. package/public/css/fonts/montserrat/Montserrat-ExtraLightItalic.ttf +0 -0
  17. package/public/css/fonts/montserrat/Montserrat-Italic.ttf +0 -0
  18. package/public/css/fonts/montserrat/Montserrat-Light.ttf +0 -0
  19. package/public/css/fonts/montserrat/Montserrat-LightItalic.ttf +0 -0
  20. package/public/css/fonts/montserrat/Montserrat-Medium.ttf +0 -0
  21. package/public/css/fonts/montserrat/Montserrat-MediumItalic.ttf +0 -0
  22. package/public/css/fonts/montserrat/Montserrat-Regular.ttf +0 -0
  23. package/public/css/fonts/montserrat/Montserrat-SemiBold.ttf +0 -0
  24. package/public/css/fonts/montserrat/Montserrat-SemiBoldItalic.ttf +0 -0
  25. package/public/css/fonts/montserrat/Montserrat-Thin.ttf +0 -0
  26. package/public/css/fonts/montserrat/Montserrat-ThinItalic.ttf +0 -0
  27. package/public/css/fonts/montserrat/style.css +28 -0
  28. package/public/css/fonts/style.css +5 -5
  29. package/src/App.vue +69 -60
  30. package/src/api/classicCrud.ts +12 -12
  31. package/src/api/initialize.ts +1 -1
  32. package/src/assets/bootstrap.scss +9 -0
  33. package/src/assets/general.scss +1 -1
  34. package/src/assets/share.scss +1 -1
  35. package/src/components/display/aggregator/RssSection.vue +3 -3
  36. package/src/components/display/categories/CategoryChooser.vue +73 -60
  37. package/src/components/display/categories/CategoryFilter.vue +134 -90
  38. package/src/components/display/categories/CategoryList.vue +76 -62
  39. package/src/components/display/comments/AddCommentModal.vue +44 -44
  40. package/src/components/display/comments/CommentBasicView.vue +38 -30
  41. package/src/components/display/comments/CommentInput.vue +122 -110
  42. package/src/components/display/comments/CommentItem.vue +144 -102
  43. package/src/components/display/comments/CommentList.vue +117 -85
  44. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  45. package/src/components/display/comments/CommentPlayer.vue +39 -41
  46. package/src/components/display/comments/CommentSection.vue +68 -53
  47. package/src/components/display/edit/EditBox.vue +7 -7
  48. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  49. package/src/components/display/edit/EditCommentBox.vue +34 -36
  50. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  51. package/src/components/display/emission/EmissionItem.vue +47 -35
  52. package/src/components/display/emission/EmissionList.vue +111 -83
  53. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  54. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  55. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  56. package/src/components/display/filter/DateFilter.vue +38 -38
  57. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  58. package/src/components/display/filter/ProductorSearch.vue +55 -47
  59. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  60. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  61. package/src/components/display/filter/SearchOrder.vue +16 -11
  62. package/src/components/display/list/ListPaginate.vue +72 -70
  63. package/src/components/display/list/PaginateParams.vue +29 -30
  64. package/src/components/display/list/PaginateSection.vue +210 -0
  65. package/src/components/display/list/SwiperList.vue +28 -32
  66. package/src/components/display/live/CountDown.vue +12 -14
  67. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  68. package/src/components/display/live/LiveItem.vue +42 -26
  69. package/src/components/display/live/LiveList.vue +92 -65
  70. package/src/components/display/live/RadioCurrently.vue +47 -42
  71. package/src/components/display/live/RadioImage.vue +40 -42
  72. package/src/components/display/live/RadioItem.vue +15 -22
  73. package/src/components/display/live/RadioList.vue +24 -21
  74. package/src/components/display/live/RadioPlanning.vue +105 -68
  75. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  76. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  77. package/src/components/display/participant/ParticipantItem.vue +89 -76
  78. package/src/components/display/participant/ParticipantList.vue +90 -60
  79. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  80. package/src/components/display/playlist/PlaylistList.vue +70 -52
  81. package/src/components/display/playlist/PodcastList.vue +61 -50
  82. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  83. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  84. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  85. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  86. package/src/components/display/podcasts/PodcastImage.vue +129 -138
  87. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  88. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  89. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  90. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  91. package/src/components/display/podcasts/PodcastItemInfo.vue +63 -65
  92. package/src/components/display/podcasts/PodcastList.vue +115 -84
  93. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  94. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  95. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  96. package/src/components/display/podcasts/TagList.vue +33 -37
  97. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  98. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  99. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  100. package/src/components/display/sharing/QrCode.vue +52 -46
  101. package/src/components/display/sharing/ShareButtons.vue +25 -27
  102. package/src/components/display/sharing/ShareButtonsIntern.vue +182 -155
  103. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  104. package/src/components/display/sharing/SharePlayer.vue +207 -127
  105. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  106. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  107. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  108. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  109. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  110. package/src/components/form/ClassicCheckbox.vue +32 -31
  111. package/src/components/form/ClassicDatePicker.vue +47 -49
  112. package/src/components/form/ClassicInputText.vue +99 -98
  113. package/src/components/form/ClassicLoading.vue +11 -14
  114. package/src/components/form/ClassicMultiselect.vue +125 -126
  115. package/src/components/form/ClassicRadio.vue +15 -18
  116. package/src/components/form/ClassicSearch.vue +17 -23
  117. package/src/components/form/ClassicSelect.vue +35 -27
  118. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +94 -109
  119. package/src/components/misc/AcpmImage.vue +26 -0
  120. package/src/components/misc/ClassicAccordion.vue +69 -0
  121. package/src/components/misc/ClassicNav.vue +117 -0
  122. package/src/components/misc/ClassicPopover.vue +212 -0
  123. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  124. package/src/components/misc/ErrorMessage.vue +9 -17
  125. package/src/components/misc/FooterSection.vue +198 -0
  126. package/src/components/misc/HomeDropdown.vue +67 -64
  127. package/src/components/misc/LeftMenu.vue +115 -79
  128. package/src/components/misc/ProgressBar.vue +36 -32
  129. package/src/components/misc/SnackBar.vue +169 -0
  130. package/src/components/misc/TopBar.vue +161 -115
  131. package/src/components/misc/modal/ClassicModal.vue +99 -103
  132. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  133. package/src/components/misc/modal/MessageModal.vue +22 -28
  134. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  135. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  136. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  137. package/src/components/misc/player/PlayerCompact.vue +47 -62
  138. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  139. package/src/components/misc/player/PlayerLarge.vue +66 -62
  140. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  141. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  142. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  143. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  144. package/src/components/mixins/cookies.ts +11 -10
  145. package/src/components/mixins/displayMethods.ts +5 -4
  146. package/src/components/mixins/handle403.ts +9 -9
  147. package/src/components/mixins/imageProxy.ts +14 -7
  148. package/src/components/mixins/init.ts +31 -16
  149. package/src/components/mixins/orgaComputed.ts +7 -7
  150. package/src/components/mixins/organisationFilter.ts +36 -22
  151. package/src/components/mixins/player/playerComment.ts +46 -37
  152. package/src/components/mixins/player/playerDisplay.ts +122 -87
  153. package/src/components/mixins/player/playerLive.ts +65 -43
  154. package/src/components/mixins/player/playerLogic.ts +133 -88
  155. package/src/components/mixins/player/playerTranscript.ts +48 -30
  156. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  157. package/src/components/mixins/selenium.ts +2 -2
  158. package/src/components/mixins/tagOfMixins.ts +11 -11
  159. package/src/components/pages/CategoryPage.vue +43 -0
  160. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  161. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  162. package/src/components/pages/Error403Page.vue +20 -19
  163. package/src/components/pages/HomePage.vue +144 -0
  164. package/src/components/pages/LivesPage.vue +66 -0
  165. package/src/components/pages/PageNotFound.vue +33 -22
  166. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  167. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  168. package/src/components/pages/PlaylistPage.vue +175 -0
  169. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  170. package/src/components/pages/PodcastPage.vue +365 -0
  171. package/src/components/pages/PodcastsPage.vue +152 -0
  172. package/src/components/pages/RadioPage.vue +131 -0
  173. package/src/components/pages/RubriquePage.vue +45 -0
  174. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  175. package/src/helper/dom.ts +1 -1
  176. package/src/helper/duration.ts +10 -4
  177. package/src/helper/useEventListener.ts +7 -8
  178. package/src/i18n.ts +31 -30
  179. package/src/locale/de.ts +263 -257
  180. package/src/locale/educationen.ts +13 -13
  181. package/src/locale/educationfr.ts +1 -1
  182. package/src/locale/en.ts +323 -324
  183. package/src/locale/es.ts +325 -318
  184. package/src/locale/fr.ts +330 -324
  185. package/src/locale/it.ts +332 -328
  186. package/src/locale/messages.ts +9 -9
  187. package/src/locale/sl.ts +315 -319
  188. package/src/main.ts +28 -31
  189. package/src/router/router.ts +218 -198
  190. package/src/shims-tsx.d.ts +1 -1
  191. package/src/shims-vue.d.ts +1 -1
  192. package/src/stores/ApiStore.ts +44 -44
  193. package/src/stores/AuthStore.ts +24 -16
  194. package/src/stores/CommentStore.ts +13 -11
  195. package/src/stores/FilterStore.ts +25 -15
  196. package/src/stores/GeneralStore.ts +15 -15
  197. package/src/stores/ParamSdkStore.ts +179 -137
  198. package/src/stores/PlayerStore.ts +139 -125
  199. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  200. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  201. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  202. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  203. package/src/stores/class/conference/conference.ts +10 -9
  204. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  205. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  206. package/src/stores/class/conference/studioCall.ts +6 -6
  207. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  208. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  209. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  210. package/src/stores/class/general/audioView.ts +19 -19
  211. package/src/stores/class/general/category.ts +1 -1
  212. package/src/stores/class/general/classicSelectType.ts +2 -3
  213. package/src/stores/class/general/customPlayer.ts +8 -8
  214. package/src/stores/class/general/emission.ts +20 -21
  215. package/src/stores/class/general/fetchParam.ts +8 -2
  216. package/src/stores/class/general/initState.ts +31 -31
  217. package/src/stores/class/general/interfacePageable.ts +13 -13
  218. package/src/stores/class/general/ituneCategory.ts +4 -4
  219. package/src/stores/class/general/listReturn.ts +12 -12
  220. package/src/stores/class/general/media.ts +7 -7
  221. package/src/stores/class/general/organisation.ts +9 -10
  222. package/src/stores/class/general/pageable.ts +10 -10
  223. package/src/stores/class/general/participant.ts +7 -7
  224. package/src/stores/class/general/player.ts +30 -28
  225. package/src/stores/class/general/playlist.ts +17 -19
  226. package/src/stores/class/general/podcast.ts +19 -19
  227. package/src/stores/class/general/sortPageable.ts +4 -4
  228. package/src/stores/class/general/soundcastCategory.ts +7 -7
  229. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  230. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  231. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  232. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  233. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  234. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  235. package/src/stores/class/radio/canal.ts +4 -4
  236. package/src/stores/class/radio/live.ts +6 -6
  237. package/src/stores/class/radio/mix.ts +16 -16
  238. package/src/stores/class/radio/playlistMedia.ts +7 -7
  239. package/src/stores/class/radio/recurrence.ts +54 -54
  240. package/src/stores/class/rss/rssEmission.ts +13 -13
  241. package/src/stores/class/rss/rssInfo.ts +7 -7
  242. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  243. package/src/stores/class/rubrique/rubrique.ts +1 -1
  244. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  245. package/src/stores/class/stat/statArrayObject.ts +26 -26
  246. package/src/stores/class/stat/statGraph.ts +6 -6
  247. package/src/stores/class/user/person.ts +4 -2
  248. package/src/stores/class/user/profile.ts +4 -2
  249. package/src/stores/class/user/userKeycloak.ts +4 -5
  250. package/src/components/display/list/Paginate.vue +0 -181
  251. package/src/components/misc/Accordion.vue +0 -78
  252. package/src/components/misc/Footer.vue +0 -165
  253. package/src/components/misc/Nav.vue +0 -119
  254. package/src/components/misc/Popover.vue +0 -193
  255. package/src/components/misc/Snackbar.vue +0 -168
  256. package/src/components/pages/Category.vue +0 -41
  257. package/src/components/pages/Home.vue +0 -125
  258. package/src/components/pages/Lives.vue +0 -64
  259. package/src/components/pages/Playlist.vue +0 -164
  260. package/src/components/pages/Podcast.vue +0 -307
  261. package/src/components/pages/Podcasts.vue +0 -146
  262. package/src/components/pages/Radio.vue +0 -122
  263. package/src/components/pages/Rubrique.vue +0 -42
@@ -3,12 +3,9 @@
3
3
  <template v-if="loaded && !error">
4
4
  <div class="page-element-title-container">
5
5
  <div class="page-element-title">
6
- <h1>{{ $t('Emission') }}</h1>
6
+ <h1>{{ $t("Emission") }}</h1>
7
7
  </div>
8
- <div
9
- class="page-element-bg"
10
- :style="backgroundDisplay"
11
- />
8
+ <div class="page-element-bg" :style="backgroundDisplay" />
12
9
  </div>
13
10
  <div class="d-flex flex-column page-element">
14
11
  <div class="module-box">
@@ -19,13 +16,10 @@
19
16
  height="330"
20
17
  :alt="$t('Emission name image', { name: name })"
21
18
  class="img-box float-start me-3 mb-3"
22
- >
19
+ />
23
20
  <h2>{{ name }}</h2>
24
21
  <!-- eslint-disable vue/no-v-html -->
25
- <p
26
- class="html-wysiwyg-content"
27
- v-html="urlify(description)"
28
- />
22
+ <p class="html-wysiwyg-content" v-html="urlify(description)" />
29
23
  <!-- eslint-enable -->
30
24
  </div>
31
25
  <EditBox
@@ -33,7 +27,7 @@
33
27
  :emission="emission"
34
28
  :rss-emission="rssEmission"
35
29
  :ftp-emission="ftpEmission"
36
- @isUpdated="getEmissionDetails"
30
+ @is-updated="getEmissionDetails"
37
31
  />
38
32
  </div>
39
33
  <SharePlayer
@@ -74,30 +68,44 @@
74
68
  </div>
75
69
  </template>
76
70
  <ClassicLoading
77
- :loading-text="!loaded?$t('Loading content ...'):undefined"
78
- :error-text="error?$t(`Emission doesn't exist`):undefined"
71
+ :loading-text="!loaded ? $t('Loading content ...') : undefined"
72
+ :error-text="error ? $t(`Emission doesn't exist`) : undefined"
79
73
  />
80
74
  </div>
81
75
  </template>
82
76
 
83
77
  <script lang="ts">
84
- import octopusApi from '@saooti/octopus-api';
85
- import { state } from '../../stores/ParamSdkStore';
86
- import displayMethods from '../mixins/displayMethods';
87
- import imageProxy from '../mixins/imageProxy';
88
- import { orgaComputed } from '../mixins/orgaComputed';
89
- import { handle403 } from '../mixins/handle403';
90
- import { Emission } from '@/stores/class/general/emission';
91
- import ClassicLoading from '../form/ClassicLoading.vue';
92
- import { defineComponent, defineAsyncComponent } from 'vue';
93
- import { AxiosError } from 'axios';
94
- const PodcastFilterList = defineAsyncComponent(() => import('../display/podcasts/PodcastFilterList.vue'));
95
- const SharePlayer = defineAsyncComponent(() => import('../display/sharing/SharePlayer.vue'));
96
- const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
97
- const ShareDistribution = defineAsyncComponent(() => import('../display/sharing/ShareDistribution.vue'));
98
- const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
99
- const SubscribeButtons = defineAsyncComponent(() => import('../display/sharing/SubscribeButtons.vue'));
100
- const LiveHorizontalList = defineAsyncComponent(() => import('../display/live/LiveHorizontalList.vue'));
78
+ import octopusApi from "@saooti/octopus-api";
79
+ import { state } from "../../stores/ParamSdkStore";
80
+ import displayMethods from "../mixins/displayMethods";
81
+ import imageProxy from "../mixins/imageProxy";
82
+ import { orgaComputed } from "../mixins/orgaComputed";
83
+ import { handle403 } from "../mixins/handle403";
84
+ import { Emission } from "@/stores/class/general/emission";
85
+ import ClassicLoading from "../form/ClassicLoading.vue";
86
+ import { defineComponent, defineAsyncComponent } from "vue";
87
+ import { AxiosError } from "axios";
88
+ const PodcastFilterList = defineAsyncComponent(
89
+ () => import("../display/podcasts/PodcastFilterList.vue"),
90
+ );
91
+ const SharePlayer = defineAsyncComponent(
92
+ () => import("../display/sharing/SharePlayer.vue"),
93
+ );
94
+ const ShareButtons = defineAsyncComponent(
95
+ () => import("../display/sharing/ShareButtons.vue"),
96
+ );
97
+ const ShareDistribution = defineAsyncComponent(
98
+ () => import("../display/sharing/ShareDistribution.vue"),
99
+ );
100
+ const EditBox = defineAsyncComponent(
101
+ () => import("@/components/display/edit/EditBox.vue"),
102
+ );
103
+ const SubscribeButtons = defineAsyncComponent(
104
+ () => import("../display/sharing/SubscribeButtons.vue"),
105
+ );
106
+ const LiveHorizontalList = defineAsyncComponent(
107
+ () => import("../display/live/LiveHorizontalList.vue"),
108
+ );
101
109
  export default defineComponent({
102
110
  components: {
103
111
  PodcastFilterList,
@@ -107,19 +115,19 @@ export default defineComponent({
107
115
  EditBox,
108
116
  SubscribeButtons,
109
117
  LiveHorizontalList,
110
- ClassicLoading
118
+ ClassicLoading,
111
119
  },
112
120
  mixins: [displayMethods, handle403, orgaComputed, imageProxy],
113
121
  props: {
114
- emissionId: { default: undefined, type: Number},
115
- isEducation: { default: false, type: Boolean},
122
+ emissionId: { default: undefined, type: Number },
123
+ isEducation: { default: false, type: Boolean },
116
124
  },
117
- emits: ['emissionTitle'],
125
+ emits: ["emissionTitle"],
118
126
 
119
127
  data() {
120
128
  return {
121
129
  loaded: false as boolean,
122
- title: '' as string,
130
+ title: "" as string,
123
131
  emission: undefined as Emission | undefined,
124
132
  error: false as boolean,
125
133
  rssEmission: false as boolean,
@@ -129,47 +137,61 @@ export default defineComponent({
129
137
  fetchLive: true as boolean,
130
138
  };
131
139
  },
132
-
140
+
133
141
  computed: {
134
- pageParameters(){
142
+ pageParameters() {
135
143
  return {
136
- isEditBox : (state.podcastPage.EditBox as boolean),
137
- isShareButtons: (state.podcastPage.ShareButtons as boolean),
138
- isSharePlayer: (state.podcastPage.SharePlayer as boolean),
139
- isShareDistribution:(state.podcastPage.ShareDistribution as boolean),
140
- isDisplayPodcasts:(state.emissionPage.isDisplayPodcasts as boolean),
144
+ isEditBox: state.podcastPage.EditBox as boolean,
145
+ isShareButtons: state.podcastPage.ShareButtons as boolean,
146
+ isSharePlayer: state.podcastPage.SharePlayer as boolean,
147
+ isShareDistribution: state.podcastPage.ShareDistribution as boolean,
148
+ isDisplayPodcasts: state.emissionPage.isDisplayPodcasts as boolean,
141
149
  };
142
150
  },
143
151
  isPodcastmaker(): boolean {
144
- return (state.generalParameters.podcastmaker as boolean);
152
+ return state.generalParameters.podcastmaker as boolean;
145
153
  },
146
154
  rssUrl(): string {
147
155
  return `${state.generalParameters.ApiUri}rss/emission/${this.emissionId}`;
148
156
  },
149
157
  name(): string {
150
- return this.emission?.name??'';
158
+ return this.emission?.name ?? "";
151
159
  },
152
160
  imageUrl(): string {
153
- return this.emission? `${this.emission.imageUrl}`:'';
161
+ return this.emission ? `${this.emission.imageUrl}` : "";
154
162
  },
155
163
  description(): string {
156
- return this.emission?.description??'';
164
+ return this.emission?.description ?? "";
157
165
  },
158
166
  editRight(): boolean {
159
- return (true===this.authenticated && this.myOrganisationId === this.emission?.orga.id) ||
160
- true===state.generalParameters.isAdmin
167
+ return (
168
+ (true === this.authenticated &&
169
+ this.myOrganisationId === this.emission?.orga.id) ||
170
+ true === state.generalParameters.isAdmin
171
+ );
161
172
  },
162
173
  countLink(): number {
163
- const platformShare = ['amazon','googlePodcasts','applePodcast', 'deezer', 'spotify', 'tunein',
164
- 'radioline', 'podcastAddict', 'playerFm', 'pocketCasts'];
174
+ const platformShare = [
175
+ "amazon",
176
+ "googlePodcasts",
177
+ "applePodcast",
178
+ "deezer",
179
+ "spotify",
180
+ "tunein",
181
+ "radioline",
182
+ "podcastAddict",
183
+ "playerFm",
184
+ "pocketCasts",
185
+ ];
165
186
  let count = 0;
166
187
  for (let i = 0, len = platformShare.length; i < len; i++) {
167
- if (undefined !== this.emission?.annotations?.[platformShare[i]]) count++;
188
+ if (undefined !== this.emission?.annotations?.[platformShare[i]])
189
+ count++;
168
190
  }
169
191
  return count;
170
192
  },
171
- backgroundDisplay():string{
172
- if(!this.emission){
193
+ backgroundDisplay(): string {
194
+ if (!this.emission) {
173
195
  return "";
174
196
  }
175
197
  return `background-image: url('${this.emission.imageUrl}');`;
@@ -184,39 +206,48 @@ export default defineComponent({
184
206
  },
185
207
  },
186
208
  methods: {
187
- initError():void{
209
+ initError(): void {
188
210
  this.error = true;
189
211
  this.loaded = true;
190
212
  },
191
- handleAnnotations(){
213
+ handleAnnotations() {
192
214
  if (!this.emission || !this.emission.annotations) return;
193
- this.rssEmission = 'RSS'===this.emission.annotations.SOURCE_KIND? true: false;
194
- this.ftpEmission = 'FTP'===this.emission.annotations.SOURCE_KIND? true: false;
215
+ this.rssEmission =
216
+ "RSS" === this.emission.annotations.SOURCE_KIND ? true : false;
217
+ this.ftpEmission =
218
+ "FTP" === this.emission.annotations.SOURCE_KIND ? true : false;
195
219
  if (this.emission.annotations.exclusive) {
196
- this.exclusive ='true' === this.emission.annotations.exclusive;
197
- this.exclusive =this.exclusive && this.myOrganisationId !== this.emission.orga.id;
220
+ this.exclusive = "true" === this.emission.annotations.exclusive;
221
+ this.exclusive =
222
+ this.exclusive && this.myOrganisationId !== this.emission.orga.id;
198
223
  }
199
224
  if (this.emission.annotations.notExclusive) {
200
- this.notExclusive ='true' === this.emission.annotations.notExclusive;
225
+ this.notExclusive = "true" === this.emission.annotations.notExclusive;
201
226
  }
202
227
  },
203
228
  async getEmissionDetails(): Promise<void> {
204
229
  this.loaded = false;
205
230
  this.error = false;
206
231
  try {
207
- this.emission = await octopusApi.fetchData<Emission>(0,'emission/'+this.emissionId);
208
- if("PUBLIC"!==this.emission.orga.privacy && this.filterOrgaId!==this.emission.orga.id){
232
+ this.emission = await octopusApi.fetchData<Emission>(
233
+ 0,
234
+ "emission/" + this.emissionId,
235
+ );
236
+ if (
237
+ "PUBLIC" !== this.emission.orga.privacy &&
238
+ this.filterOrgaId !== this.emission.orga.id
239
+ ) {
209
240
  this.initError();
210
241
  return;
211
242
  }
212
- this.$emit('emissionTitle', this.name);
243
+ this.$emit("emissionTitle", this.name);
213
244
  this.loaded = true;
214
245
  this.handleAnnotations();
215
- } catch(error) {
216
- this.handle403((error as AxiosError));
246
+ } catch (error) {
247
+ this.handle403(error as AxiosError);
217
248
  this.initError();
218
249
  }
219
250
  },
220
251
  },
221
- })
222
- </script>
252
+ });
253
+ </script>
@@ -12,13 +12,13 @@
12
12
  :sort-criteria="sortEmission"
13
13
  :organisation-id="organisationId"
14
14
  :include-hidden="includeHidden"
15
- @updateCategory="iabId = $event"
16
- @updateRubriquageFilter="updateRubriquageFilter"
17
- @updateMonetization="monetization = $event"
18
- @updateFromDate="fromDate = $event"
19
- @updateToDate="toDate = $event"
20
- @updateSortCriteria="sortEmission = $event"
21
- @includeHidden="includeHidden = $event"
15
+ @update-category="iabId = $event"
16
+ @update-rubriquage-filter="updateRubriquageFilter"
17
+ @update-monetization="monetization = $event"
18
+ @update-from-date="fromDate = $event"
19
+ @update-to-date="toDate = $event"
20
+ @update-sort-criteria="sortEmission = $event"
21
+ @include-hidden="includeHidden = $event"
22
22
  />
23
23
  <EmissionList
24
24
  :show-count="true"
@@ -40,66 +40,73 @@
40
40
  </template>
41
41
 
42
42
  <script lang="ts">
43
- import { orgaComputed } from '../mixins/orgaComputed';
44
- import EmissionList from '../display/emission/EmissionList.vue';
45
- import AdvancedSearch from '../display/filter/AdvancedSearch.vue';
46
- import { state } from '../../stores/ParamSdkStore';
47
- import { useFilterStore } from '@/stores/FilterStore';
48
- import { mapState } from 'pinia';
49
- import { RubriquageFilter } from '@/stores/class/rubrique/rubriquageFilter';
50
- import { defineComponent, defineAsyncComponent } from 'vue';
51
- const ProductorSearch = defineAsyncComponent(() => import('../display/filter/ProductorSearch.vue'));
43
+ import { orgaComputed } from "../mixins/orgaComputed";
44
+ import EmissionList from "../display/emission/EmissionList.vue";
45
+ import AdvancedSearch from "../display/filter/AdvancedSearch.vue";
46
+ import { state } from "../../stores/ParamSdkStore";
47
+ import { useFilterStore } from "@/stores/FilterStore";
48
+ import { mapState } from "pinia";
49
+ import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
50
+ import { defineComponent, defineAsyncComponent } from "vue";
51
+ const ProductorSearch = defineAsyncComponent(
52
+ () => import("../display/filter/ProductorSearch.vue"),
53
+ );
52
54
  export default defineComponent({
53
55
  components: {
54
56
  ProductorSearch,
55
57
  EmissionList,
56
58
  AdvancedSearch,
57
59
  },
58
- mixins:[orgaComputed],
60
+ mixins: [orgaComputed],
59
61
  props: {
60
- productor: { default: undefined, type: String},
61
- isEducation: { default: false, type: Boolean},
62
+ productor: { default: undefined, type: String },
63
+ isEducation: { default: false, type: Boolean },
62
64
  },
63
65
 
64
66
  data() {
65
67
  return {
66
68
  isInit: false as boolean,
67
- searchPattern: '' as string,
69
+ searchPattern: "" as string,
68
70
  organisationId: undefined as string | undefined,
69
- monetization: 'UNDEFINED' as string, // UNDEFINED, YES, NO
71
+ monetization: "UNDEFINED" as string, // UNDEFINED, YES, NO
70
72
  emissionId: undefined as number | undefined,
71
73
  iabId: undefined as number | undefined,
72
74
  fromDate: undefined as string | undefined,
73
75
  toDate: undefined as string | undefined,
74
76
  resetRubriquage: false as boolean,
75
77
  includeHidden: false as boolean,
76
- sortEmission: 'LAST_PODCAST_DESC' as string, // SCORE, DATE, POPULARITY, NAME, LAST_PODCAST_DESC
78
+ sortEmission: "LAST_PODCAST_DESC" as string, // SCORE, DATE, POPULARITY, NAME, LAST_PODCAST_DESC
77
79
  noRubriquageId: [] as Array<number>,
78
80
  rubriquageId: [] as Array<number>,
79
81
  rubriqueId: [] as Array<number>,
80
82
  };
81
83
  },
82
-
84
+
83
85
  computed: {
84
- ...mapState(useFilterStore, ['filterIab', 'filterRubrique']),
86
+ ...mapState(useFilterStore, ["filterIab", "filterRubrique"]),
85
87
  organisationRight(): boolean {
86
- return (true===this.authenticated && this.myOrganisationId === this.organisationId) ||
87
- true===state.generalParameters.isAdmin
88
+ return (
89
+ (true === this.authenticated &&
90
+ this.myOrganisationId === this.organisationId) ||
91
+ true === state.generalParameters.isAdmin
92
+ );
88
93
  },
89
- organisation(): string|undefined {
90
- return this.organisationId?this.organisationId:this.filterOrgaId;
94
+ organisation(): string | undefined {
95
+ return this.organisationId ? this.organisationId : this.filterOrgaId;
91
96
  },
92
97
  },
93
- watch:{
98
+ watch: {
94
99
  organisationId(): void {
95
- if(!this.isInit){return;}
100
+ if (!this.isInit) {
101
+ return;
102
+ }
96
103
  this.resetRubriquage = !this.resetRubriquage;
97
104
  this.rubriquageId = [];
98
105
  this.rubriqueId = [];
99
106
  this.noRubriquageId = [];
100
107
  },
101
108
  searchPattern(value: string): void {
102
- this.sortEmission = '' !== value ? 'SCORE' : 'DATE';
109
+ this.sortEmission = "" !== value ? "SCORE" : "DATE";
103
110
  },
104
111
  },
105
112
 
@@ -107,30 +114,30 @@ export default defineComponent({
107
114
  this.initComponent();
108
115
  },
109
116
  methods: {
110
- initComponent(): void{
111
- this.iabId =this.filterIab?.id;
112
- this.organisationId = this.productor ?this.productor: this.filterOrgaId;
117
+ initComponent(): void {
118
+ this.iabId = this.filterIab?.id;
119
+ this.organisationId = this.productor ? this.productor : this.filterOrgaId;
113
120
  if (this.organisation && this.organisationRight) {
114
121
  this.includeHidden = true;
115
122
  }
116
- if(this.filterRubrique.length){
123
+ if (this.filterRubrique.length) {
117
124
  this.updateRubriquageFilter(this.filterRubrique);
118
125
  }
119
126
  this.$nextTick(() => {
120
127
  this.isInit = true;
121
128
  });
122
129
  },
123
- updateRubriquageFilter(value: Array<RubriquageFilter>){
130
+ updateRubriquageFilter(value: Array<RubriquageFilter>) {
124
131
  const length = value.length;
125
- const allRubriquageId: Array<number>= [];
126
- const noRubriquageId: Array<number>= [];
127
- const rubriqueId: Array<number>= [];
132
+ const allRubriquageId: Array<number> = [];
133
+ const noRubriquageId: Array<number> = [];
134
+ const rubriqueId: Array<number> = [];
128
135
  for (let index = 0; index < length; index++) {
129
- if(-1===value[index].rubriqueId){
136
+ if (-1 === value[index].rubriqueId) {
130
137
  noRubriquageId.push(value[index].rubriquageId);
131
- } else if(0===value[index].rubriqueId){
138
+ } else if (0 === value[index].rubriqueId) {
132
139
  allRubriquageId.push(value[index].rubriquageId);
133
- }else{
140
+ } else {
134
141
  rubriqueId.push(value[index].rubriqueId);
135
142
  }
136
143
  }
@@ -139,5 +146,5 @@ export default defineComponent({
139
146
  this.noRubriquageId = noRubriquageId;
140
147
  },
141
148
  },
142
- })
143
- </script>
149
+ });
150
+ </script>
@@ -8,8 +8,8 @@
8
8
  class="logo-octopus"
9
9
  src="/img/logo_octopus_final.svg"
10
10
  :alt="$t('Logo of main page')"
11
- >
12
- <h2>{{ $t('You do not have the right to access this page' ) }}</h2>
11
+ />
12
+ <h2>{{ $t("You do not have the right to access this page") }}</h2>
13
13
  </div>
14
14
  <img
15
15
  width="600"
@@ -17,31 +17,32 @@
17
17
  class="stop-octopus-img"
18
18
  src="/img/403.webp"
19
19
  :alt="$t('You do not have the right to access this page')"
20
- >
20
+ />
21
21
  </div>
22
-
22
+
23
23
  <a
24
24
  class="btn btn-primary"
25
- :href="authenticated ?'/sso/logout':'/sso/login'"
26
- >{{ authText }}</a>
25
+ :href="authenticated ? '/sso/logout' : '/sso/login'"
26
+ >{{ authText }}</a
27
+ >
27
28
  </div>
28
29
  </template>
29
30
 
30
31
  <script lang="ts">
31
- import { state } from '../../stores/ParamSdkStore';
32
- import { useGeneralStore } from '@/stores/GeneralStore';
33
- import { mapState } from 'pinia';
34
- import { defineComponent } from 'vue';
32
+ import { state } from "../../stores/ParamSdkStore";
33
+ import { useGeneralStore } from "@/stores/GeneralStore";
34
+ import { mapState } from "pinia";
35
+ import { defineComponent } from "vue";
35
36
  export default defineComponent({
36
- name: 'Error403Page',
37
+ name: "Error403Page",
37
38
  computed: {
38
- ...mapState(useGeneralStore, ['metaTitle']),
39
+ ...mapState(useGeneralStore, ["metaTitle"]),
39
40
  authenticated(): boolean {
40
- return (state.generalParameters.authenticated as boolean);
41
+ return state.generalParameters.authenticated as boolean;
42
+ },
43
+ authText(): string {
44
+ return this.authenticated ? this.$t("Logout") : this.$t("Login");
41
45
  },
42
- authText():string{
43
- return this.authenticated ? this.$t('Logout') : this.$t('Login');
44
- }
45
46
  },
46
47
  mounted() {
47
48
  document.title = this.metaTitle;
@@ -49,11 +50,11 @@ export default defineComponent({
49
50
  });
50
51
  </script>
51
52
  <style lang="scss">
52
- .octopus-app .not-auth-content{
53
+ .octopus-app .not-auth-content {
53
54
  @media (max-width: 960px) {
54
55
  align-items: center;
55
56
  }
56
- .stop-octopus-img{
57
+ .stop-octopus-img {
57
58
  width: 600px;
58
59
  height: auto;
59
60
  @media (max-width: 1400px) {
@@ -64,4 +65,4 @@ export default defineComponent({
64
65
  }
65
66
  }
66
67
  }
67
- </style>
68
+ </style>
@@ -0,0 +1,144 @@
1
+ <template>
2
+ <div class="page-box">
3
+ <template v-if="0 === rubriquageFilter.length">
4
+ <PodcastInlineList
5
+ v-for="c in categories"
6
+ :key="c.id"
7
+ :iab-id="c.id"
8
+ :title="c.name"
9
+ :button-text="$t('All podcast button', { name: c.name })"
10
+ />
11
+ </template>
12
+ <template v-else>
13
+ <PodcastInlineList
14
+ v-for="r in rubriqueToShow"
15
+ :key="r.rubriqueId"
16
+ :rubrique-id="rubriqueId.concat(r.rubriqueId)"
17
+ :title="r.name"
18
+ :button-text="$t('All podcast button', { name: r.name })"
19
+ />
20
+ <template v-if="rubriqueDisplay && rubriqueDisplay.length > 0">
21
+ <PodcastInlineList
22
+ v-if="rubriqueDisplay.length < rubriqueMaxDisplay"
23
+ :no-rubriquage-id="[rubriqueDisplay[0].rubriquageId]"
24
+ :rubrique-id="rubriqueId"
25
+ :title="$t('Without rubric')"
26
+ :button-text="
27
+ $t('All podcast button', { name: $t('Without rubric') })
28
+ "
29
+ />
30
+ <router-link
31
+ v-else
32
+ :to="{
33
+ name: 'podcasts',
34
+ query: {
35
+ productor: filterOrgaId,
36
+ iabId: filterIab?.id,
37
+ rubriquesId: rubriqueQueryParam,
38
+ },
39
+ }"
40
+ class="btn btn-primary align-self-center width-fit-content mt-5 m-auto"
41
+ >
42
+ {{ $t("See more") }}
43
+ </router-link>
44
+ </template>
45
+ </template>
46
+ </div>
47
+ </template>
48
+
49
+ <script lang="ts">
50
+ import PodcastInlineList from "../display/podcasts/PodcastInlineList.vue";
51
+ import { state } from "../../stores/ParamSdkStore";
52
+ import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
53
+ import { Rubriquage } from "@/stores/class/rubrique/rubriquage";
54
+ import { Rubrique } from "@/stores/class/rubrique/rubrique";
55
+ import { useFilterStore } from "@/stores/FilterStore";
56
+ import { useGeneralStore } from "@/stores/GeneralStore";
57
+ import { mapState } from "pinia";
58
+ import { defineComponent } from "vue";
59
+ import { Category } from "@/stores/class/general/category";
60
+ export default defineComponent({
61
+ name: "HomePage",
62
+ components: {
63
+ PodcastInlineList,
64
+ },
65
+ data() {
66
+ return {
67
+ rubriqueId: [] as Array<number>,
68
+ rubriqueMaxDisplay: 20 as number,
69
+ };
70
+ },
71
+ computed: {
72
+ ...mapState(useGeneralStore, ["storedCategories"]),
73
+ ...mapState(useFilterStore, [
74
+ "filterRubriquage",
75
+ "filterOrgaId",
76
+ "filterRubrique",
77
+ "filterRubriqueDisplay",
78
+ "filterIab",
79
+ ]),
80
+ rubriqueQueryParam(): string | undefined {
81
+ if (this.filterRubrique?.length) {
82
+ return this.filterRubrique
83
+ .map(
84
+ (value: RubriquageFilter) =>
85
+ value.rubriquageId + ":" + value.rubriqueId,
86
+ )
87
+ .join();
88
+ }
89
+ return undefined;
90
+ },
91
+ rubriqueDisplay(): Array<Rubrique> {
92
+ return this.filterRubriqueDisplay.filter(
93
+ (rubrique: Rubrique) => 0 !== rubrique.podcastCount,
94
+ );
95
+ },
96
+ rubriqueToShow(): Array<Rubrique> {
97
+ if (
98
+ !this.rubriqueDisplay ||
99
+ this.rubriqueDisplay.length < this.rubriqueMaxDisplay
100
+ ) {
101
+ return this.rubriqueDisplay ?? [];
102
+ }
103
+ return this.rubriqueDisplay.slice(0, this.rubriqueMaxDisplay);
104
+ },
105
+ rubriquageFilter(): Array<Rubriquage> {
106
+ return this.filterOrgaId ? this.filterRubriquage : [];
107
+ },
108
+ rubriqueFilter(): Array<RubriquageFilter> {
109
+ return this.filterRubrique;
110
+ },
111
+ categories(): Array<Category> {
112
+ if (this.filterIab) {
113
+ return [this.filterIab];
114
+ }
115
+ return this.storedCategories.filter((c: Category) => {
116
+ if (state.generalParameters.podcastmaker)
117
+ return c.podcastOrganisationCount;
118
+ return c.podcastCount;
119
+ });
120
+ },
121
+ },
122
+ watch: {
123
+ rubriqueFilter: {
124
+ deep: true,
125
+ immediate: true,
126
+ handler() {
127
+ this.updateRubriquageFilter();
128
+ },
129
+ },
130
+ },
131
+ methods: {
132
+ updateRubriquageFilter() {
133
+ const length = this.rubriqueFilter.length;
134
+ const rubriqueId: Array<number> = [];
135
+ for (let index = 0; index < length; index++) {
136
+ if (0 < this.rubriqueFilter[index].rubriqueId) {
137
+ rubriqueId.push(this.rubriqueFilter[index].rubriqueId);
138
+ }
139
+ }
140
+ this.rubriqueId = rubriqueId;
141
+ },
142
+ },
143
+ });
144
+ </script>