@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
@@ -4,9 +4,7 @@
4
4
  {{ titleFilter }}
5
5
  </h2>
6
6
  <div class="d-flex align-items-center flex-wrap mb-2">
7
- <div
8
- class="w-50-responsive pe-3"
9
- >
7
+ <div class="w-50-responsive pe-3">
10
8
  <CategoryChooser
11
9
  :defaultanswer="$t('No category filter')"
12
10
  @selected="onCategorySelected"
@@ -37,46 +35,50 @@
37
35
  </template>
38
36
 
39
37
  <script lang="ts">
40
- import ClassicSearch from '../../form/ClassicSearch.vue';
41
- import PodcastList from './PodcastList.vue';
42
- import { Category } from '@/stores/class/general/category';
43
- import { defineComponent, defineAsyncComponent } from 'vue';
44
- import { Podcast } from '@/stores/class/general/podcast';
45
- const CategoryChooser = defineAsyncComponent(() => import('../categories/CategoryChooser.vue'));
38
+ import ClassicSearch from "../../form/ClassicSearch.vue";
39
+ import PodcastList from "./PodcastList.vue";
40
+ import { Category } from "@/stores/class/general/category";
41
+ import { defineComponent, defineAsyncComponent } from "vue";
42
+ import { Podcast } from "@/stores/class/general/podcast";
43
+ const CategoryChooser = defineAsyncComponent(
44
+ () => import("../categories/CategoryChooser.vue"),
45
+ );
46
46
  export default defineComponent({
47
47
  components: {
48
48
  CategoryChooser,
49
49
  PodcastList,
50
- ClassicSearch
50
+ ClassicSearch,
51
51
  },
52
52
  props: {
53
- participantId: { default: undefined, type: Number},
54
- name: { default: undefined, type: String},
55
- emissionId: { default: undefined, type: Number},
56
- categoryFilter: { default: false, type: Boolean},
57
- reload: { default: false, type: Boolean},
58
- editRight: { default: false, type: Boolean},
59
- productorId: { default: () => [], type: Array as ()=> Array<string>},
53
+ participantId: { default: undefined, type: Number },
54
+ name: { default: undefined, type: String },
55
+ emissionId: { default: undefined, type: Number },
56
+ categoryFilter: { default: false, type: Boolean },
57
+ reload: { default: false, type: Boolean },
58
+ editRight: { default: false, type: Boolean },
59
+ productorId: { default: () => [], type: Array as () => Array<string> },
60
60
  showCount: { default: false, type: Boolean },
61
61
  },
62
- emits: ['fetch'],
62
+ emits: ["fetch"],
63
63
 
64
64
  data() {
65
65
  return {
66
66
  first: 0 as number,
67
67
  size: 30 as number,
68
- searchPattern: '' as string,
68
+ searchPattern: "" as string,
69
69
  iabId: undefined as number | undefined,
70
70
  reloadList: false as boolean,
71
71
  };
72
72
  },
73
73
 
74
74
  computed: {
75
- titleFilter():string{
76
- return this.name ? this.$t('All podcast button', { name: this.name }) : this.$t('All podcast emission button');
75
+ titleFilter(): string {
76
+ return this.name
77
+ ? this.$t("All podcast button", { name: this.name })
78
+ : this.$t("All podcast emission button");
77
79
  },
78
80
  query(): string {
79
- return this.searchPattern.length >= 3 ? this.searchPattern : '' ;
81
+ return this.searchPattern.length >= 3 ? this.searchPattern : "";
80
82
  },
81
83
  },
82
84
  watch: {
@@ -85,12 +87,12 @@ export default defineComponent({
85
87
  },
86
88
  },
87
89
  methods: {
88
- onCategorySelected(category: Category|undefined): void {
90
+ onCategorySelected(category: Category | undefined): void {
89
91
  this.iabId = category?.id ? category.id : undefined;
90
92
  },
91
93
  fetch(podcasts: Array<Podcast>): void {
92
- this.$emit('fetch', podcasts);
94
+ this.$emit("fetch", podcasts);
93
95
  },
94
96
  },
95
- })
96
- </script>
97
+ });
98
+ </script>
@@ -4,15 +4,15 @@
4
4
  class="img-box img-box-podcast mb-3 flex-column justify-content-start align-items-start position-relative flex-shrink-0 float-start"
5
5
  >
6
6
  <img
7
- v-lazy="proxyImageUrl(podcast.imageUrl,'330')"
7
+ v-lazy="proxyImageUrl(podcast.imageUrl, '330')"
8
8
  width="330"
9
9
  height="330"
10
10
  class="img-box img-box-podcast"
11
- :alt="$t('Episode name image', {name:podcast.title})"
12
- >
11
+ :alt="$t('Episode name image', { name: podcast.title })"
12
+ />
13
13
  <div
14
14
  v-if="isPodcastmaker"
15
- :class="mainRubrique? 'mainRubrique' : 'notMainRubrique'"
15
+ :class="mainRubrique ? 'mainRubrique' : 'notMainRubrique'"
16
16
  />
17
17
  <div
18
18
  v-if="fetchConference"
@@ -25,11 +25,8 @@
25
25
  >
26
26
  {{ statusText }}
27
27
  </div>
28
- <div
29
- v-if="isRecordedInLive"
30
- class="live-image-status recording-bg"
31
- >
32
- {{ $t('Recorded in live') }}
28
+ <div v-if="isRecordedInLive" class="live-image-status recording-bg">
29
+ {{ $t("Recorded in live") }}
33
30
  </div>
34
31
  <button
35
32
  v-if="hidePlay || recordingLive"
@@ -37,24 +34,14 @@
37
34
  :class="classicPodcastPlay ? '' : 'transparent-background'"
38
35
  @click="play"
39
36
  >
40
- <div
41
- v-if="!isLiveToBeRecorded"
42
- class="icon-container"
43
- >
44
- <div
45
- v-if="!playingPodcast"
46
- :title="$t('Play')"
47
- class="saooti-play"
48
- />
37
+ <div v-if="!isLiveToBeRecorded" class="icon-container">
38
+ <div v-if="!playingPodcast" :title="$t('Play')" class="saooti-play" />
49
39
  <div
50
40
  v-if="!classicPodcastPlay"
51
41
  class="special-icon-play-button"
52
42
  :class="iconName"
53
43
  />
54
- <div
55
- v-if="playingPodcast"
56
- class="bloc-paddle"
57
- >
44
+ <div v-if="playingPodcast" class="bloc-paddle">
58
45
  <span class="paddle1" />
59
46
  <span class="paddle2" />
60
47
  <span class="paddle3" />
@@ -63,187 +50,189 @@
63
50
  {{ durationString }}
64
51
  </div>
65
52
  </div>
66
- <div
67
- v-else
68
- class="icon-container play-button-error-icon"
69
- >
70
- <div
71
- :title="textVisible"
72
- class="big-icon-error"
73
- :class="iconName"
74
- />
53
+ <div v-else class="icon-container play-button-error-icon">
54
+ <div :title="textVisible" class="big-icon-error" :class="iconName" />
75
55
  </div>
76
- <div
77
- v-if="!classicPodcastPlay"
78
- class="live-image-status bg-dark"
79
- >
56
+ <div v-if="!classicPodcastPlay" class="live-image-status bg-dark">
80
57
  {{ textVisible }}
81
58
  </div>
82
59
  </button>
83
60
  <div
84
61
  v-if="displayDescription && isMobile"
85
62
  class="background-icon bg-primary saooti-arrow-up"
86
- :class="isDescription ? 'saooti-arrow-down':'saooti-arrow-up'"
87
- :title="isDescription ? $t('Hide description'):$t('Show description')"
63
+ :class="isDescription ? 'saooti-arrow-down' : 'saooti-arrow-up'"
64
+ :title="isDescription ? $t('Hide description') : $t('Show description')"
88
65
  @click="showDescription"
89
66
  />
90
67
  </div>
91
68
  </template>
92
69
 
93
70
  <script lang="ts">
94
- import DurationHelper from '../../../helper/duration';
95
- import { state } from '../../../stores/ParamSdkStore';
96
- import { Podcast } from '@/stores/class/general/podcast';
97
- import { Conference } from '@/stores/class/conference/conference';
98
- import imageProxy from '../../mixins/imageProxy';
99
- import { usePlayerStore } from '@/stores/PlayerStore';
100
- import { mapState, mapActions } from 'pinia';
101
- import { defineComponent } from 'vue'
71
+ import DurationHelper from "../../../helper/duration";
72
+ import { state } from "../../../stores/ParamSdkStore";
73
+ import { Podcast } from "@/stores/class/general/podcast";
74
+ import { Conference } from "@/stores/class/conference/conference";
75
+ import imageProxy from "../../mixins/imageProxy";
76
+ import { usePlayerStore } from "@/stores/PlayerStore";
77
+ import { mapState, mapActions } from "pinia";
78
+ import { defineComponent } from "vue";
102
79
  export default defineComponent({
103
- name: 'PodcastImage',
104
- mixins:[imageProxy],
80
+ name: "PodcastImage",
81
+ mixins: [imageProxy],
105
82
  props: {
106
- podcast: { default: ()=>({}), type: Object as ()=>Podcast},
107
- hidePlay: { default: false, type: Boolean},
108
- displayDescription: { default: false, type: Boolean},
109
- arrowDirection: { default: 'up', type: String},
110
- isAnimatorLive: { default: false, type: Boolean},
111
- fetchConference: { default: undefined, type: Object as ()=>Conference},
83
+ podcast: { default: () => ({}), type: Object as () => Podcast },
84
+ hidePlay: { default: false, type: Boolean },
85
+ displayDescription: { default: false, type: Boolean },
86
+ arrowDirection: { default: "up", type: String },
87
+ isAnimatorLive: { default: false, type: Boolean },
88
+ fetchConference: { default: undefined, type: Object as () => Conference },
112
89
  },
113
- emits: ['hideDescription', 'showDescription'],
90
+ emits: ["hideDescription", "showDescription"],
114
91
  data() {
115
92
  return {
116
93
  isDescription: false as boolean,
117
94
  };
118
95
  },
119
96
  computed: {
120
- ...mapState(usePlayerStore, ['playerPodcast', 'playerLive', 'playerStatus']),
121
- playingPodcast(){
97
+ ...mapState(usePlayerStore, [
98
+ "playerPodcast",
99
+ "playerLive",
100
+ "playerStatus",
101
+ ]),
102
+ playingPodcast() {
122
103
  return (
123
- (this.playerPodcast?.podcastId === this.podcast.podcastId) ||
124
- (this.fetchConference && 'null' !== this.fetchConference.toString() &&
125
- this.playerLive?.conferenceId ===this.fetchConference.conferenceId)
104
+ this.playerPodcast?.podcastId === this.podcast.podcastId ||
105
+ (this.fetchConference &&
106
+ "null" !== this.fetchConference.toString() &&
107
+ this.playerLive?.conferenceId === this.fetchConference.conferenceId)
126
108
  );
127
109
  },
128
- authenticated(): boolean {
129
- return (state.generalParameters.authenticated as boolean);
130
- },
131
- mainRubrique(): boolean{
132
- return undefined!==state.podcastPage.mainRubrique && 0!==state.podcastPage.mainRubrique && (this.podcast?.rubriqueIds?.includes(state.podcastPage.mainRubrique) as boolean);
110
+ mainRubrique(): boolean {
111
+ return (
112
+ undefined !== state.podcastPage.mainRubrique &&
113
+ 0 !== state.podcastPage.mainRubrique &&
114
+ (this.podcast?.rubriqueIds?.includes(
115
+ state.podcastPage.mainRubrique,
116
+ ) as boolean)
117
+ );
133
118
  },
134
119
  isPodcastmaker(): boolean {
135
- return (state.generalParameters.podcastmaker as boolean);
120
+ return state.generalParameters.podcastmaker as boolean;
136
121
  },
137
122
  isMobile(): boolean {
138
- return window.matchMedia('(hover: none)').matches;
123
+ return window.matchMedia("(hover: none)").matches;
139
124
  },
140
125
  isRecordedInLive(): boolean {
141
126
  return (
142
127
  undefined === this.fetchConference &&
143
128
  undefined !== this.podcast.conferenceId &&
144
- 'READY_TO_RECORD' !== this.podcast.processingStatus
129
+ "READY_TO_RECORD" !== this.podcast.processingStatus
145
130
  );
146
131
  },
147
132
  isLiveToBeRecorded(): boolean {
148
133
  return (
149
134
  undefined === this.fetchConference &&
150
135
  undefined !== this.podcast.conferenceId &&
151
- 'READY_TO_RECORD' === this.podcast.processingStatus
136
+ "READY_TO_RECORD" === this.podcast.processingStatus
152
137
  );
153
138
  },
154
139
  classicPodcastPlay(): boolean {
155
140
  return (
156
- undefined!==this.podcast &&
141
+ undefined !== this.podcast &&
157
142
  false !== this.podcast.valid &&
158
- ('READY_TO_RECORD' === this.podcast.processingStatus ||
159
- 'READY' === this.podcast.processingStatus ||
160
- ('PROCESSING' === this.podcast.processingStatus && !this.authenticated)) &&
161
- !this.isLiveToBeRecorded && undefined!==this.podcast.availability.visibility
162
- && this.podcast.availability.visibility
143
+ ("READY_TO_RECORD" === this.podcast.processingStatus ||
144
+ "READY" === this.podcast.processingStatus ||
145
+ ("PROCESSING" === this.podcast.processingStatus &&
146
+ !(state.generalParameters.authenticated as boolean))) &&
147
+ !this.isLiveToBeRecorded &&
148
+ undefined !== this.podcast.availability.visibility &&
149
+ this.podcast.availability.visibility
163
150
  );
164
151
  },
165
152
  iconName(): string {
166
- if (this.isLiveToBeRecorded) return 'saooti-clock';
167
- if ('READY' === this.podcast.processingStatus || this.fetchConference) {
168
- if (!this.podcast.valid) return 'saooti-checkmark';
153
+ if (this.isLiveToBeRecorded) return "saooti-clock";
154
+ if ("READY" === this.podcast.processingStatus || this.fetchConference) {
155
+ if (!this.podcast.valid) return "saooti-checkmark";
169
156
  if (
170
157
  !this.podcast.availability.visibility &&
171
158
  this.podcast.availability.date
172
159
  )
173
- return 'saooti-clock';
174
- return 'saooti-eye-blocked';
160
+ return "saooti-clock";
161
+ return "saooti-eye-blocked";
175
162
  }
176
163
  if (
177
- 'PLANNED' === this.podcast.processingStatus ||
178
- 'PROCESSING' === this.podcast.processingStatus
164
+ "PLANNED" === this.podcast.processingStatus ||
165
+ "PROCESSING" === this.podcast.processingStatus
179
166
  )
180
- return 'saooti-hourglass';
181
- if ('CANCELED' === this.podcast.processingStatus)
182
- return 'saooti-cancel-circle';
183
- return 'saooti-warning';
167
+ return "saooti-hourglass";
168
+ if ("CANCELED" === this.podcast.processingStatus)
169
+ return "saooti-cancel-circle";
170
+ return "saooti-warning";
184
171
  },
185
172
  textVisible(): string {
186
173
  if (this.isLiveToBeRecorded)
187
- return this.$t('Podcast linked to waiting live');
188
- if ('READY' === this.podcast.processingStatus || this.fetchConference) {
189
- if (!this.podcast.valid) return this.$t('Podcast to validate');
174
+ return this.$t("Podcast linked to waiting live");
175
+ if ("READY" === this.podcast.processingStatus || this.fetchConference) {
176
+ if (!this.podcast.valid) return this.$t("Podcast to validate");
190
177
  if (
191
178
  !this.podcast.availability.visibility &&
192
179
  this.podcast.availability.date
193
180
  )
194
- return this.$t('Podcast publish in future');
195
- return this.$t('Podcast no visible');
181
+ return this.$t("Podcast publish in future");
182
+ return this.$t("Podcast no visible");
196
183
  }
197
184
  if (
198
- 'PLANNED' === this.podcast.processingStatus ||
199
- 'PROCESSING' === this.podcast.processingStatus
185
+ "PLANNED" === this.podcast.processingStatus ||
186
+ "PROCESSING" === this.podcast.processingStatus
200
187
  )
201
- return this.$t('Podcast in process');
202
- if ('CANCELED' === this.podcast.processingStatus)
203
- return this.$t('Podcast in cancelled status');
204
- return this.$t('Podcast in error');
188
+ return this.$t("Podcast in process");
189
+ if ("CANCELED" === this.podcast.processingStatus)
190
+ return this.$t("Podcast in cancelled status");
191
+ return this.$t("Podcast in error");
205
192
  },
206
193
  statusText(): string {
207
- if (!this.fetchConference) return '';
194
+ if (!this.fetchConference) return "";
208
195
  switch (this.fetchConference.status) {
209
- case 'PLANNED':
210
- return this.$t('live in few time');
211
- case 'PENDING':
212
- if (this.isAnimatorLive) return this.$t('Open studio');
213
- return this.$t('live upcoming');
214
- case 'RECORDING':
215
- return this.$t('In live');
216
- case 'DEBRIEFING':
196
+ case "PLANNED":
197
+ return this.$t("live in few time");
198
+ case "PENDING":
199
+ if (this.isAnimatorLive) return this.$t("Open studio");
200
+ return this.$t("live upcoming");
201
+ case "RECORDING":
202
+ return this.$t("In live");
203
+ case "DEBRIEFING":
217
204
  /* if (!this.isAnimatorLive) return ''; */
218
- if ('READY_TO_RECORD' === this.podcast.processingStatus)
219
- return this.$t('Not recording');
220
- return this.$t('Debriefing');
221
- case 'ERROR':
222
- return this.$t('In error');
223
- case 'PUBLISHING':
224
- return this.$t('Publishing');
205
+ if ("READY_TO_RECORD" === this.podcast.processingStatus)
206
+ return this.$t("Not recording");
207
+ return this.$t("Debriefing");
208
+ case "ERROR":
209
+ return this.$t("In error");
210
+ case "PUBLISHING":
211
+ return this.$t("Publishing");
225
212
  default:
226
- return '';
213
+ return "";
227
214
  }
228
215
  },
229
216
  recordingLive(): boolean {
230
217
  return (
231
218
  undefined !== this.fetchConference &&
232
- -1 !== this.fetchConference.conferenceId &&
233
- ('RECORDING' === this.fetchConference.status ||
234
- 'PENDING' === this.fetchConference.status)
219
+ -1 !== this.fetchConference.conferenceId &&
220
+ ("RECORDING" === this.fetchConference.status ||
221
+ "PENDING" === this.fetchConference.status)
235
222
  );
236
223
  },
237
- clickPlayGoPage():boolean{
238
- return (state.podcastPage.clickPlayGoPage as boolean);
224
+ clickPlayGoPage(): boolean {
225
+ return state.podcastPage.clickPlayGoPage as boolean;
239
226
  },
240
227
  durationString(): string {
241
- return DurationHelper.formatDuration(Math.round(this.podcast.duration/1000));
228
+ return DurationHelper.formatDuration(
229
+ Math.round(this.podcast.duration / 1000),
230
+ );
242
231
  },
243
232
  },
244
233
  watch: {
245
234
  arrowDirection(): void {
246
- if ('up' === this.arrowDirection) {
235
+ if ("up" === this.arrowDirection) {
247
236
  this.isDescription = true;
248
237
  this.showDescription();
249
238
  } else {
@@ -252,42 +241,44 @@ export default defineComponent({
252
241
  }
253
242
  },
254
243
  },
255
-
244
+
256
245
  methods: {
257
- ...mapActions(usePlayerStore, ['playerChangeStatus', 'playerPlay']),
246
+ ...mapActions(usePlayerStore, ["playerChangeStatus", "playerPlay"]),
258
247
  play(): void {
259
248
  if (this.isLiveToBeRecorded) {
260
249
  return;
261
250
  }
262
- if(this.playingPodcast){
263
- this.playerChangeStatus("PLAYING"===this.playerStatus);
251
+ if (this.playingPodcast) {
252
+ this.playerChangeStatus("PLAYING" === this.playerStatus);
264
253
  return;
265
254
  }
266
255
  if (!this.recordingLive) {
267
256
  this.playerPlay(this.podcast);
268
- }else{
269
- this.playerPlay({...this.podcast, ...{conferenceId:this.fetchConference?.conferenceId}});
257
+ } else {
258
+ this.playerPlay({
259
+ ...this.podcast,
260
+ ...{ conferenceId: this.fetchConference?.conferenceId },
261
+ });
270
262
  }
271
- if(this.clickPlayGoPage){
272
- this.$router.push('/main/pub/podcast/'+this.podcast.podcastId);
263
+ if (this.clickPlayGoPage) {
264
+ this.$router.push("/main/pub/podcast/" + this.podcast.podcastId);
273
265
  }
274
266
  },
275
267
  showDescription(): void {
276
268
  if (this.isDescription) {
277
- this.$emit('hideDescription');
269
+ this.$emit("hideDescription");
278
270
  } else {
279
- this.$emit('showDescription');
271
+ this.$emit("showDescription");
280
272
  }
281
273
  this.isDescription = !this.isDescription;
282
274
  },
283
275
  },
284
- })
276
+ });
285
277
  </script>
286
278
 
287
-
288
279
  <style lang="scss">
289
- @import '@scss/_variables.scss';
290
- .octopus-app{
280
+ @import "@scss/_variables.scss";
281
+ .octopus-app {
291
282
  .live-image-status {
292
283
  text-align: center;
293
284
  width: 100%;
@@ -296,10 +287,10 @@ export default defineComponent({
296
287
  color: white;
297
288
  text-transform: uppercase;
298
289
  position: absolute;
299
- top:0;
290
+ top: 0;
300
291
  }
301
292
 
302
- .background-icon{
293
+ .background-icon {
303
294
  border-radius: 50%;
304
295
  width: 1rem;
305
296
  height: 1rem;
@@ -314,7 +305,7 @@ export default defineComponent({
314
305
  .transparent-background {
315
306
  background-color: rgba(255, 255, 255, 0.5);
316
307
  }
317
-
308
+
318
309
  .image-play-button .play-button-error-icon {
319
310
  background: #0000009d !important;
320
311
  cursor: default !important;
@@ -341,4 +332,4 @@ export default defineComponent({
341
332
  justify-content: center;
342
333
  }
343
334
  }
344
- </style>
335
+ </style>
@@ -15,7 +15,7 @@
15
15
  :no-rubriquage-id="noRubriquageId"
16
16
  :query="query"
17
17
  :podcast-id="podcastId"
18
- @update:isArrow="$emit('update:isArrow',$event)"
18
+ @update:is-arrow="$emit('update:isArrow', $event)"
19
19
  />
20
20
  <PodcastSwiperList
21
21
  v-else
@@ -32,48 +32,52 @@
32
32
  :rubriquage-id="rubriquageId"
33
33
  :no-rubriquage-id="noRubriquageId"
34
34
  :query="query"
35
- @update:isArrow="$emit('update:isArrow',$event)"
35
+ @update:is-arrow="$emit('update:isArrow', $event)"
36
36
  />
37
37
  </template>
38
38
 
39
39
  <script lang="ts">
40
- import { state } from '../../../stores/ParamSdkStore';
41
- import { defineAsyncComponent, defineComponent } from 'vue';
42
- const PodcastInlineListClassic = defineAsyncComponent(() => import('./PodcastInlineListClassic.vue'));
43
- const PodcastSwiperList = defineAsyncComponent(() => import('./PodcastSwiperList.vue'));
40
+ import { state } from "../../../stores/ParamSdkStore";
41
+ import { defineAsyncComponent, defineComponent } from "vue";
42
+ const PodcastInlineListClassic = defineAsyncComponent(
43
+ () => import("./PodcastInlineListClassic.vue"),
44
+ );
45
+ const PodcastSwiperList = defineAsyncComponent(
46
+ () => import("./PodcastSwiperList.vue"),
47
+ );
44
48
  export default defineComponent({
45
- name: 'PodcastInlineList',
46
-
49
+ name: "PodcastInlineList",
50
+
47
51
  components: {
48
52
  PodcastInlineListClassic,
49
53
  PodcastSwiperList,
50
54
  },
51
55
  props: {
52
- organisationId: { default: () => [], type: Array as ()=> Array<string>},
53
- emissionId: { default: undefined, type: Number},
54
- iabId: { default: undefined, type: Number},
55
- title: { default: '', type: String},
56
- href: { default: undefined, type: String},
57
- buttonText: { default: undefined, type: String},
58
- isArrow: { default: false, type: Boolean},
59
- requirePopularSort: { default:undefined, type: Boolean},
60
- buttonPlus: { default:false, type: Boolean},
61
- rubriqueId: { default: () => [], type: Array as ()=> Array<number> },
62
- rubriquageId:{ default: () => [], type: Array as ()=> Array<number> },
63
- noRubriquageId: { default: () => [], type: Array as ()=> Array<number> },
64
- query: { default: undefined, type: String},
65
- podcastId: { default: undefined, type: Number},
56
+ organisationId: { default: () => [], type: Array as () => Array<string> },
57
+ emissionId: { default: undefined, type: Number },
58
+ iabId: { default: undefined, type: Number },
59
+ title: { default: "", type: String },
60
+ href: { default: undefined, type: String },
61
+ buttonText: { default: undefined, type: String },
62
+ isArrow: { default: false, type: Boolean },
63
+ requirePopularSort: { default: undefined, type: Boolean },
64
+ buttonPlus: { default: false, type: Boolean },
65
+ rubriqueId: { default: () => [], type: Array as () => Array<number> },
66
+ rubriquageId: { default: () => [], type: Array as () => Array<number> },
67
+ noRubriquageId: { default: () => [], type: Array as () => Array<number> },
68
+ query: { default: undefined, type: String },
69
+ podcastId: { default: undefined, type: Number },
66
70
  },
67
- emits: ['update:isArrow'],
68
- computed:{
71
+ emits: ["update:isArrow"],
72
+ computed: {
69
73
  listTypeClassic(): boolean {
70
- return (state.podcastPage.listTypeClassic as boolean);
74
+ return state.podcastPage.listTypeClassic as boolean;
71
75
  },
72
- }
73
- })
76
+ },
77
+ });
74
78
  </script>
75
79
  <style lang="scss">
76
- .octopus-app .loading-size{
80
+ .octopus-app .loading-size {
77
81
  height: 21.4rem;
78
82
  }
79
- </style>
83
+ </style>