@saooti/octopus-sdk 37.0.6 → 37.0.8

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 (236) hide show
  1. package/README.md +2 -2
  2. package/index.ts +22 -22
  3. package/package.json +26 -22
  4. package/src/App.vue +69 -60
  5. package/src/api/classicCrud.ts +12 -12
  6. package/src/api/initialize.ts +1 -1
  7. package/src/assets/transition.scss +34 -22
  8. package/src/components/display/aggregator/RssSection.vue +3 -3
  9. package/src/components/display/categories/CategoryChooser.vue +73 -60
  10. package/src/components/display/categories/CategoryFilter.vue +134 -90
  11. package/src/components/display/categories/CategoryList.vue +76 -62
  12. package/src/components/display/comments/AddCommentModal.vue +44 -44
  13. package/src/components/display/comments/CommentBasicView.vue +38 -30
  14. package/src/components/display/comments/CommentInput.vue +121 -106
  15. package/src/components/display/comments/CommentItem.vue +144 -102
  16. package/src/components/display/comments/CommentList.vue +117 -85
  17. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  18. package/src/components/display/comments/CommentPlayer.vue +39 -41
  19. package/src/components/display/comments/CommentSection.vue +68 -53
  20. package/src/components/display/edit/EditBox.vue +7 -7
  21. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  22. package/src/components/display/edit/EditCommentBox.vue +34 -36
  23. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  24. package/src/components/display/emission/EmissionItem.vue +47 -35
  25. package/src/components/display/emission/EmissionList.vue +118 -83
  26. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  27. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  28. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  29. package/src/components/display/filter/DateFilter.vue +38 -38
  30. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  31. package/src/components/display/filter/ProductorSearch.vue +55 -47
  32. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  33. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  34. package/src/components/display/filter/SearchOrder.vue +16 -11
  35. package/src/components/display/list/ListPaginate.vue +72 -70
  36. package/src/components/display/list/PaginateParams.vue +29 -30
  37. package/src/components/display/list/PaginateSection.vue +210 -0
  38. package/src/components/display/list/SwiperList.vue +28 -32
  39. package/src/components/display/live/CountDown.vue +12 -14
  40. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  41. package/src/components/display/live/LiveItem.vue +42 -26
  42. package/src/components/display/live/LiveList.vue +92 -65
  43. package/src/components/display/live/RadioCurrently.vue +47 -42
  44. package/src/components/display/live/RadioImage.vue +40 -42
  45. package/src/components/display/live/RadioItem.vue +15 -22
  46. package/src/components/display/live/RadioList.vue +24 -21
  47. package/src/components/display/live/RadioPlanning.vue +105 -68
  48. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  49. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  50. package/src/components/display/participant/ParticipantItem.vue +89 -77
  51. package/src/components/display/participant/ParticipantList.vue +90 -60
  52. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  53. package/src/components/display/playlist/PlaylistList.vue +70 -52
  54. package/src/components/display/playlist/PodcastList.vue +61 -50
  55. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  56. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  57. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  58. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  59. package/src/components/display/podcasts/PodcastImage.vue +129 -131
  60. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  61. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  62. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  63. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  64. package/src/components/display/podcasts/PodcastItemInfo.vue +61 -65
  65. package/src/components/display/podcasts/PodcastList.vue +115 -84
  66. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  67. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  68. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  69. package/src/components/display/podcasts/TagList.vue +33 -37
  70. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  71. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  72. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  73. package/src/components/display/sharing/QrCode.vue +52 -46
  74. package/src/components/display/sharing/ShareButtons.vue +18 -18
  75. package/src/components/display/sharing/ShareButtonsIntern.vue +100 -78
  76. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  77. package/src/components/display/sharing/SharePlayer.vue +207 -127
  78. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  79. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  80. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  81. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  82. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  83. package/src/components/form/ClassicCheckbox.vue +32 -31
  84. package/src/components/form/ClassicDatePicker.vue +47 -49
  85. package/src/components/form/ClassicInputText.vue +99 -98
  86. package/src/components/form/ClassicLoading.vue +11 -14
  87. package/src/components/form/ClassicMultiselect.vue +125 -126
  88. package/src/components/form/ClassicRadio.vue +15 -18
  89. package/src/components/form/ClassicSearch.vue +17 -23
  90. package/src/components/form/ClassicSelect.vue +35 -27
  91. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +103 -118
  92. package/src/components/misc/AcpmImage.vue +6 -6
  93. package/src/components/misc/ClassicAccordion.vue +73 -0
  94. package/src/components/misc/ClassicNav.vue +117 -0
  95. package/src/components/misc/ClassicPopover.vue +212 -0
  96. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  97. package/src/components/misc/ErrorMessage.vue +9 -17
  98. package/src/components/misc/FooterSection.vue +198 -0
  99. package/src/components/misc/HomeDropdown.vue +60 -60
  100. package/src/components/misc/LeftMenu.vue +115 -79
  101. package/src/components/misc/ProgressBar.vue +36 -32
  102. package/src/components/misc/SnackBar.vue +169 -0
  103. package/src/components/misc/TopBar.vue +162 -116
  104. package/src/components/misc/modal/ClassicModal.vue +99 -103
  105. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  106. package/src/components/misc/modal/MessageModal.vue +22 -28
  107. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  108. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  109. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  110. package/src/components/misc/player/PlayerCompact.vue +47 -62
  111. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  112. package/src/components/misc/player/PlayerLarge.vue +62 -61
  113. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  114. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  115. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  116. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  117. package/src/components/mixins/cookies.ts +11 -10
  118. package/src/components/mixins/displayMethods.ts +5 -4
  119. package/src/components/mixins/handle403.ts +9 -9
  120. package/src/components/mixins/imageProxy.ts +14 -7
  121. package/src/components/mixins/init.ts +31 -16
  122. package/src/components/mixins/orgaComputed.ts +7 -7
  123. package/src/components/mixins/organisationFilter.ts +36 -22
  124. package/src/components/mixins/player/playerComment.ts +46 -37
  125. package/src/components/mixins/player/playerDisplay.ts +122 -87
  126. package/src/components/mixins/player/playerLive.ts +65 -43
  127. package/src/components/mixins/player/playerLogic.ts +133 -88
  128. package/src/components/mixins/player/playerTranscript.ts +48 -30
  129. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  130. package/src/components/mixins/selenium.ts +2 -2
  131. package/src/components/mixins/tagOfMixins.ts +11 -11
  132. package/src/components/pages/CategoryPage.vue +43 -0
  133. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  134. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  135. package/src/components/pages/Error403Page.vue +20 -19
  136. package/src/components/pages/HomePage.vue +144 -0
  137. package/src/components/pages/LivesPage.vue +66 -0
  138. package/src/components/pages/PageNotFound.vue +33 -22
  139. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  140. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  141. package/src/components/pages/PlaylistPage.vue +175 -0
  142. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  143. package/src/components/pages/PodcastPage.vue +365 -0
  144. package/src/components/pages/PodcastsPage.vue +152 -0
  145. package/src/components/pages/RadioPage.vue +131 -0
  146. package/src/components/pages/RubriquePage.vue +45 -0
  147. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  148. package/src/helper/dom.ts +1 -1
  149. package/src/helper/duration.ts +10 -4
  150. package/src/helper/useEventListener.ts +7 -8
  151. package/src/i18n.ts +31 -30
  152. package/src/locale/de.ts +272 -257
  153. package/src/locale/educationen.ts +13 -13
  154. package/src/locale/educationfr.ts +1 -1
  155. package/src/locale/en.ts +332 -324
  156. package/src/locale/es.ts +334 -318
  157. package/src/locale/fr.ts +339 -324
  158. package/src/locale/it.ts +341 -328
  159. package/src/locale/messages.ts +9 -9
  160. package/src/locale/sl.ts +324 -319
  161. package/src/main.ts +28 -31
  162. package/src/router/router.ts +218 -198
  163. package/src/shims-tsx.d.ts +1 -1
  164. package/src/shims-vue.d.ts +1 -1
  165. package/src/stores/ApiStore.ts +44 -44
  166. package/src/stores/AuthStore.ts +21 -15
  167. package/src/stores/CommentStore.ts +13 -11
  168. package/src/stores/FilterStore.ts +25 -15
  169. package/src/stores/GeneralStore.ts +15 -15
  170. package/src/stores/ParamSdkStore.ts +179 -137
  171. package/src/stores/PlayerStore.ts +139 -125
  172. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  173. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  174. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  175. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  176. package/src/stores/class/conference/conference.ts +10 -9
  177. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  178. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  179. package/src/stores/class/conference/studioCall.ts +6 -6
  180. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  181. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  182. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  183. package/src/stores/class/general/audioView.ts +19 -19
  184. package/src/stores/class/general/category.ts +1 -1
  185. package/src/stores/class/general/classicSelectType.ts +2 -3
  186. package/src/stores/class/general/customPlayer.ts +8 -8
  187. package/src/stores/class/general/emission.ts +20 -20
  188. package/src/stores/class/general/fetchParam.ts +8 -2
  189. package/src/stores/class/general/initState.ts +31 -31
  190. package/src/stores/class/general/interfacePageable.ts +13 -13
  191. package/src/stores/class/general/ituneCategory.ts +4 -4
  192. package/src/stores/class/general/listReturn.ts +12 -12
  193. package/src/stores/class/general/media.ts +7 -7
  194. package/src/stores/class/general/organisation.ts +9 -9
  195. package/src/stores/class/general/pageable.ts +10 -10
  196. package/src/stores/class/general/participant.ts +7 -7
  197. package/src/stores/class/general/player.ts +30 -28
  198. package/src/stores/class/general/playlist.ts +17 -19
  199. package/src/stores/class/general/podcast.ts +19 -19
  200. package/src/stores/class/general/sortPageable.ts +4 -4
  201. package/src/stores/class/general/soundcastCategory.ts +7 -7
  202. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  203. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  204. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  205. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  206. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  207. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  208. package/src/stores/class/radio/canal.ts +4 -4
  209. package/src/stores/class/radio/live.ts +6 -6
  210. package/src/stores/class/radio/mix.ts +16 -16
  211. package/src/stores/class/radio/playlistMedia.ts +7 -7
  212. package/src/stores/class/radio/recurrence.ts +54 -54
  213. package/src/stores/class/rss/rssEmission.ts +13 -13
  214. package/src/stores/class/rss/rssInfo.ts +7 -7
  215. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  216. package/src/stores/class/rubrique/rubrique.ts +1 -1
  217. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  218. package/src/stores/class/stat/statArrayObject.ts +26 -26
  219. package/src/stores/class/stat/statGraph.ts +6 -6
  220. package/src/stores/class/user/person.ts +4 -2
  221. package/src/stores/class/user/profile.ts +4 -2
  222. package/src/stores/class/user/userKeycloak.ts +4 -5
  223. package/src/components/display/list/Paginate.vue +0 -181
  224. package/src/components/misc/Accordion.vue +0 -78
  225. package/src/components/misc/Footer.vue +0 -169
  226. package/src/components/misc/Nav.vue +0 -119
  227. package/src/components/misc/Popover.vue +0 -193
  228. package/src/components/misc/Snackbar.vue +0 -168
  229. package/src/components/pages/Category.vue +0 -41
  230. package/src/components/pages/Home.vue +0 -125
  231. package/src/components/pages/Lives.vue +0 -64
  232. package/src/components/pages/Playlist.vue +0 -164
  233. package/src/components/pages/Podcast.vue +0 -307
  234. package/src/components/pages/Podcasts.vue +0 -146
  235. package/src/components/pages/Radio.vue +0 -122
  236. 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,15 +34,8 @@
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"
@@ -53,6 +43,7 @@
53
43
  />
54
44
  <div
55
45
  v-if="playingPodcast"
46
+ :class="'PLAYING' === playerStatus ? 'play-animation' : ''"
56
47
  class="bloc-paddle"
57
48
  >
58
49
  <span class="paddle1" />
@@ -63,184 +54,189 @@
63
54
  {{ durationString }}
64
55
  </div>
65
56
  </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
- />
57
+ <div v-else class="icon-container play-button-error-icon">
58
+ <div :title="textVisible" class="big-icon-error" :class="iconName" />
75
59
  </div>
76
- <div
77
- v-if="!classicPodcastPlay"
78
- class="live-image-status bg-dark"
79
- >
60
+ <div v-if="!classicPodcastPlay" class="live-image-status bg-dark">
80
61
  {{ textVisible }}
81
62
  </div>
82
63
  </button>
83
64
  <div
84
65
  v-if="displayDescription && isMobile"
85
66
  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')"
67
+ :class="isDescription ? 'saooti-arrow-down' : 'saooti-arrow-up'"
68
+ :title="isDescription ? $t('Hide description') : $t('Show description')"
88
69
  @click="showDescription"
89
70
  />
90
71
  </div>
91
72
  </template>
92
73
 
93
74
  <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'
75
+ import DurationHelper from "../../../helper/duration";
76
+ import { state } from "../../../stores/ParamSdkStore";
77
+ import { Podcast } from "@/stores/class/general/podcast";
78
+ import { Conference } from "@/stores/class/conference/conference";
79
+ import imageProxy from "../../mixins/imageProxy";
80
+ import { usePlayerStore } from "@/stores/PlayerStore";
81
+ import { mapState, mapActions } from "pinia";
82
+ import { defineComponent } from "vue";
102
83
  export default defineComponent({
103
- name: 'PodcastImage',
104
- mixins:[imageProxy],
84
+ name: "PodcastImage",
85
+ mixins: [imageProxy],
105
86
  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},
87
+ podcast: { default: () => ({}), type: Object as () => Podcast },
88
+ hidePlay: { default: false, type: Boolean },
89
+ displayDescription: { default: false, type: Boolean },
90
+ arrowDirection: { default: "up", type: String },
91
+ isAnimatorLive: { default: false, type: Boolean },
92
+ fetchConference: { default: undefined, type: Object as () => Conference },
112
93
  },
113
- emits: ['hideDescription', 'showDescription'],
94
+ emits: ["hideDescription", "showDescription"],
114
95
  data() {
115
96
  return {
116
97
  isDescription: false as boolean,
117
98
  };
118
99
  },
119
100
  computed: {
120
- ...mapState(usePlayerStore, ['playerPodcast', 'playerLive', 'playerStatus']),
121
- playingPodcast(){
101
+ ...mapState(usePlayerStore, [
102
+ "playerPodcast",
103
+ "playerLive",
104
+ "playerStatus",
105
+ ]),
106
+ playingPodcast() {
122
107
  return (
123
- (this.playerPodcast?.podcastId === this.podcast.podcastId) ||
124
- (this.fetchConference && 'null' !== this.fetchConference.toString() &&
125
- this.playerLive?.conferenceId ===this.fetchConference.conferenceId)
108
+ this.playerPodcast?.podcastId === this.podcast.podcastId ||
109
+ (this.fetchConference &&
110
+ "null" !== this.fetchConference.toString() &&
111
+ this.playerLive?.conferenceId === this.fetchConference.conferenceId)
126
112
  );
127
113
  },
128
- mainRubrique(): boolean{
129
- return undefined!==state.podcastPage.mainRubrique && 0!==state.podcastPage.mainRubrique && (this.podcast?.rubriqueIds?.includes(state.podcastPage.mainRubrique) as boolean);
114
+ mainRubrique(): boolean {
115
+ return (
116
+ undefined !== state.podcastPage.mainRubrique &&
117
+ 0 !== state.podcastPage.mainRubrique &&
118
+ (this.podcast?.rubriqueIds?.includes(
119
+ state.podcastPage.mainRubrique,
120
+ ) as boolean)
121
+ );
130
122
  },
131
123
  isPodcastmaker(): boolean {
132
- return (state.generalParameters.podcastmaker as boolean);
124
+ return state.generalParameters.podcastmaker as boolean;
133
125
  },
134
126
  isMobile(): boolean {
135
- return window.matchMedia('(hover: none)').matches;
127
+ return window.matchMedia("(hover: none)").matches;
136
128
  },
137
129
  isRecordedInLive(): boolean {
138
130
  return (
139
131
  undefined === this.fetchConference &&
140
132
  undefined !== this.podcast.conferenceId &&
141
- 'READY_TO_RECORD' !== this.podcast.processingStatus
133
+ "READY_TO_RECORD" !== this.podcast.processingStatus
142
134
  );
143
135
  },
144
136
  isLiveToBeRecorded(): boolean {
145
137
  return (
146
138
  undefined === this.fetchConference &&
147
139
  undefined !== this.podcast.conferenceId &&
148
- 'READY_TO_RECORD' === this.podcast.processingStatus
140
+ "READY_TO_RECORD" === this.podcast.processingStatus
149
141
  );
150
142
  },
151
143
  classicPodcastPlay(): boolean {
152
144
  return (
153
- undefined!==this.podcast &&
145
+ undefined !== this.podcast &&
154
146
  false !== this.podcast.valid &&
155
- ('READY_TO_RECORD' === this.podcast.processingStatus ||
156
- 'READY' === this.podcast.processingStatus ||
157
- ('PROCESSING' === this.podcast.processingStatus && !(state.generalParameters.authenticated as boolean))) &&
158
- !this.isLiveToBeRecorded && undefined!==this.podcast.availability.visibility
159
- && this.podcast.availability.visibility
147
+ ("READY_TO_RECORD" === this.podcast.processingStatus ||
148
+ "READY" === this.podcast.processingStatus ||
149
+ ("PROCESSING" === this.podcast.processingStatus &&
150
+ !(state.generalParameters.authenticated as boolean))) &&
151
+ !this.isLiveToBeRecorded &&
152
+ undefined !== this.podcast.availability.visibility &&
153
+ this.podcast.availability.visibility
160
154
  );
161
155
  },
162
156
  iconName(): string {
163
- if (this.isLiveToBeRecorded) return 'saooti-clock';
164
- if ('READY' === this.podcast.processingStatus || this.fetchConference) {
165
- if (!this.podcast.valid) return 'saooti-checkmark';
157
+ if (this.isLiveToBeRecorded) return "saooti-clock";
158
+ if ("READY" === this.podcast.processingStatus || this.fetchConference) {
159
+ if (!this.podcast.valid) return "saooti-checkmark";
166
160
  if (
167
161
  !this.podcast.availability.visibility &&
168
162
  this.podcast.availability.date
169
163
  )
170
- return 'saooti-clock';
171
- return 'saooti-eye-blocked';
164
+ return "saooti-clock";
165
+ return "saooti-eye-blocked";
172
166
  }
173
167
  if (
174
- 'PLANNED' === this.podcast.processingStatus ||
175
- 'PROCESSING' === this.podcast.processingStatus
168
+ "PLANNED" === this.podcast.processingStatus ||
169
+ "PROCESSING" === this.podcast.processingStatus
176
170
  )
177
- return 'saooti-hourglass';
178
- if ('CANCELED' === this.podcast.processingStatus)
179
- return 'saooti-cancel-circle';
180
- return 'saooti-warning';
171
+ return "saooti-hourglass";
172
+ if ("CANCELED" === this.podcast.processingStatus)
173
+ return "saooti-cancel-circle";
174
+ return "saooti-warning";
181
175
  },
182
176
  textVisible(): string {
183
177
  if (this.isLiveToBeRecorded)
184
- return this.$t('Podcast linked to waiting live');
185
- if ('READY' === this.podcast.processingStatus || this.fetchConference) {
186
- if (!this.podcast.valid) return this.$t('Podcast to validate');
178
+ return this.$t("Podcast linked to waiting live");
179
+ if ("READY" === this.podcast.processingStatus || this.fetchConference) {
180
+ if (!this.podcast.valid) return this.$t("Podcast to validate");
187
181
  if (
188
182
  !this.podcast.availability.visibility &&
189
183
  this.podcast.availability.date
190
184
  )
191
- return this.$t('Podcast publish in future');
192
- return this.$t('Podcast no visible');
185
+ return this.$t("Podcast publish in future");
186
+ return this.$t("Podcast no visible");
193
187
  }
194
188
  if (
195
- 'PLANNED' === this.podcast.processingStatus ||
196
- 'PROCESSING' === this.podcast.processingStatus
189
+ "PLANNED" === this.podcast.processingStatus ||
190
+ "PROCESSING" === this.podcast.processingStatus
197
191
  )
198
- return this.$t('Podcast in process');
199
- if ('CANCELED' === this.podcast.processingStatus)
200
- return this.$t('Podcast in cancelled status');
201
- return this.$t('Podcast in error');
192
+ return this.$t("Podcast in process");
193
+ if ("CANCELED" === this.podcast.processingStatus)
194
+ return this.$t("Podcast in cancelled status");
195
+ return this.$t("Podcast in error");
202
196
  },
203
197
  statusText(): string {
204
- if (!this.fetchConference) return '';
198
+ if (!this.fetchConference) return "";
205
199
  switch (this.fetchConference.status) {
206
- case 'PLANNED':
207
- return this.$t('live in few time');
208
- case 'PENDING':
209
- if (this.isAnimatorLive) return this.$t('Open studio');
210
- return this.$t('live upcoming');
211
- case 'RECORDING':
212
- return this.$t('In live');
213
- case 'DEBRIEFING':
200
+ case "PLANNED":
201
+ return this.$t("live in few time");
202
+ case "PENDING":
203
+ if (this.isAnimatorLive) return this.$t("Open studio");
204
+ return this.$t("live upcoming");
205
+ case "RECORDING":
206
+ return this.$t("In live");
207
+ case "DEBRIEFING":
214
208
  /* if (!this.isAnimatorLive) return ''; */
215
- if ('READY_TO_RECORD' === this.podcast.processingStatus)
216
- return this.$t('Not recording');
217
- return this.$t('Debriefing');
218
- case 'ERROR':
219
- return this.$t('In error');
220
- case 'PUBLISHING':
221
- return this.$t('Publishing');
209
+ if ("READY_TO_RECORD" === this.podcast.processingStatus)
210
+ return this.$t("Not recording");
211
+ return this.$t("Debriefing");
212
+ case "ERROR":
213
+ return this.$t("In error");
214
+ case "PUBLISHING":
215
+ return this.$t("Publishing");
222
216
  default:
223
- return '';
217
+ return "";
224
218
  }
225
219
  },
226
220
  recordingLive(): boolean {
227
221
  return (
228
222
  undefined !== this.fetchConference &&
229
- -1 !== this.fetchConference.conferenceId &&
230
- ('RECORDING' === this.fetchConference.status ||
231
- 'PENDING' === this.fetchConference.status)
223
+ -1 !== this.fetchConference.conferenceId &&
224
+ ("RECORDING" === this.fetchConference.status ||
225
+ "PENDING" === this.fetchConference.status)
232
226
  );
233
227
  },
234
- clickPlayGoPage():boolean{
235
- return (state.podcastPage.clickPlayGoPage as boolean);
228
+ clickPlayGoPage(): boolean {
229
+ return state.podcastPage.clickPlayGoPage as boolean;
236
230
  },
237
231
  durationString(): string {
238
- return DurationHelper.formatDuration(Math.round(this.podcast.duration/1000));
232
+ return DurationHelper.formatDuration(
233
+ Math.round(this.podcast.duration / 1000),
234
+ );
239
235
  },
240
236
  },
241
237
  watch: {
242
238
  arrowDirection(): void {
243
- if ('up' === this.arrowDirection) {
239
+ if ("up" === this.arrowDirection) {
244
240
  this.isDescription = true;
245
241
  this.showDescription();
246
242
  } else {
@@ -249,42 +245,44 @@ export default defineComponent({
249
245
  }
250
246
  },
251
247
  },
252
-
248
+
253
249
  methods: {
254
- ...mapActions(usePlayerStore, ['playerChangeStatus', 'playerPlay']),
250
+ ...mapActions(usePlayerStore, ["playerChangeStatus", "playerPlay"]),
255
251
  play(): void {
256
252
  if (this.isLiveToBeRecorded) {
257
253
  return;
258
254
  }
259
- if(this.playingPodcast){
260
- this.playerChangeStatus("PLAYING"===this.playerStatus);
255
+ if (this.playingPodcast) {
256
+ this.playerChangeStatus("PLAYING" === this.playerStatus);
261
257
  return;
262
258
  }
263
259
  if (!this.recordingLive) {
264
260
  this.playerPlay(this.podcast);
265
- }else{
266
- this.playerPlay({...this.podcast, ...{conferenceId:this.fetchConference?.conferenceId}});
261
+ } else {
262
+ this.playerPlay({
263
+ ...this.podcast,
264
+ ...{ conferenceId: this.fetchConference?.conferenceId },
265
+ });
267
266
  }
268
- if(this.clickPlayGoPage){
269
- this.$router.push('/main/pub/podcast/'+this.podcast.podcastId);
267
+ if (this.clickPlayGoPage) {
268
+ this.$router.push("/main/pub/podcast/" + this.podcast.podcastId);
270
269
  }
271
270
  },
272
271
  showDescription(): void {
273
272
  if (this.isDescription) {
274
- this.$emit('hideDescription');
273
+ this.$emit("hideDescription");
275
274
  } else {
276
- this.$emit('showDescription');
275
+ this.$emit("showDescription");
277
276
  }
278
277
  this.isDescription = !this.isDescription;
279
278
  },
280
279
  },
281
- })
280
+ });
282
281
  </script>
283
282
 
284
-
285
283
  <style lang="scss">
286
- @import '@scss/_variables.scss';
287
- .octopus-app{
284
+ @import "@scss/_variables.scss";
285
+ .octopus-app {
288
286
  .live-image-status {
289
287
  text-align: center;
290
288
  width: 100%;
@@ -293,10 +291,10 @@ export default defineComponent({
293
291
  color: white;
294
292
  text-transform: uppercase;
295
293
  position: absolute;
296
- top:0;
294
+ top: 0;
297
295
  }
298
296
 
299
- .background-icon{
297
+ .background-icon {
300
298
  border-radius: 50%;
301
299
  width: 1rem;
302
300
  height: 1rem;
@@ -311,7 +309,7 @@ export default defineComponent({
311
309
  .transparent-background {
312
310
  background-color: rgba(255, 255, 255, 0.5);
313
311
  }
314
-
312
+
315
313
  .image-play-button .play-button-error-icon {
316
314
  background: #0000009d !important;
317
315
  cursor: default !important;
@@ -338,4 +336,4 @@ export default defineComponent({
338
336
  justify-content: center;
339
337
  }
340
338
  }
341
- </style>
339
+ </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>