@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
@@ -7,24 +7,18 @@
7
7
  class="player-reduce-button btn bg-transparent text-light saooti-down"
8
8
  @click="changePlayerLargeVersion"
9
9
  />
10
- <router-link
11
- v-if="isImage && podcastImage"
12
- :to="podcastShareUrl"
13
- >
10
+ <router-link v-if="isImage && podcastImage" :to="podcastShareUrl">
14
11
  <img
15
- v-lazy="proxyImageUrl(podcastImage,'200')"
12
+ v-lazy="proxyImageUrl(podcastImage, '200')"
16
13
  width="200"
17
14
  height="200"
18
15
  :alt="$t('Podcast image')"
19
16
  class="img-box"
20
- >
17
+ />
21
18
  </router-link>
22
19
  <div class="d-flex w-100 px-2 mt-2 text-center">
23
- <div
24
- v-if="playerError"
25
- class="text-warning mx-2"
26
- >
27
- {{ $t('Podcast play error') + ' - ' }}
20
+ <div v-if="playerError" class="text-warning mx-2">
21
+ {{ $t("Podcast play error") + " - " }}
28
22
  </div>
29
23
  <div class="flex-grow-1 text-truncate h3">
30
24
  {{ podcastTitle }}
@@ -42,7 +36,7 @@
42
36
  :duration-live-position="durationLivePosition"
43
37
  :player-error="playerError"
44
38
  :listen-time="listenTime"
45
- @updateNotListenTime="$emit('update:notListenTime', $event)"
39
+ @update-not-listen-time="$emit('update:notListenTime', $event)"
46
40
  />
47
41
  <RadioProgressBar v-else />
48
42
  <div class="d-flex justify-content-between">
@@ -51,9 +45,9 @@
51
45
  </div>
52
46
  <RadioHistory v-if="radioUrl" />
53
47
  </div>
54
-
48
+
55
49
  <div
56
- v-if="''!=transcriptText"
50
+ v-if="'' != transcriptText"
57
51
  class="flex-grow-1 d-flex align-items-center w-100"
58
52
  >
59
53
  <div class="flex-grow-1 p-1 text-center mx-3 transcript-bg rounded">
@@ -72,14 +66,12 @@
72
66
  :class="{
73
67
  'saooti-play': isPaused,
74
68
  'saooti-pause': isPlaying,
75
- '':!isPaused&&!isPlaying
69
+ '': !isPaused && !isPlaying,
76
70
  }"
77
71
  class="btn play-big-button-box text-light bg-primary"
78
72
  @click="switchPausePlay"
79
73
  >
80
- <Spinner
81
- v-if="!isPaused&&!isPlaying"
82
- />
74
+ <ClassicSpinner v-if="!isPaused && !isPlaying" />
83
75
  </button>
84
76
  <button
85
77
  title="+15''"
@@ -87,79 +79,87 @@
87
79
  @click="seekClick(15)"
88
80
  />
89
81
  </div>
90
- <PlayerTimeline
91
- v-model:showTimeline="showTimeline"
92
- :comments="comments"
93
- />
82
+ <PlayerTimeline v-model:showTimeline="showTimeline" :comments="comments" />
94
83
  </div>
95
84
  </template>
96
85
  <script lang="ts">
97
- import Spinner from '../Spinner.vue';
98
- import { playerDisplay } from '../../mixins/player/playerDisplay';
99
- import imageProxy from '../../mixins/imageProxy';
100
- import PlayerTimeline from './PlayerTimeline.vue';
101
- import { defineAsyncComponent, defineComponent } from 'vue';
102
- import { CommentPodcast } from '@/stores/class/general/comment';
103
- const RadioProgressBar = defineAsyncComponent(() => import('./radio/RadioProgressBar.vue'));
104
- const RadioHistory = defineAsyncComponent(() => import('./radio/RadioHistory.vue'));
105
- const PlayerProgressBar = defineAsyncComponent(() => import('./PlayerProgressBar.vue'));
86
+ import ClassicSpinner from "../ClassicSpinner.vue";
87
+ import { playerDisplay } from "../../mixins/player/playerDisplay";
88
+ import imageProxy from "../../mixins/imageProxy";
89
+ import PlayerTimeline from "./PlayerTimeline.vue";
90
+ import { defineAsyncComponent, defineComponent } from "vue";
91
+ import { CommentPodcast } from "@/stores/class/general/comment";
92
+ const RadioProgressBar = defineAsyncComponent(
93
+ () => import("./radio/RadioProgressBar.vue"),
94
+ );
95
+ const RadioHistory = defineAsyncComponent(
96
+ () => import("./radio/RadioHistory.vue"),
97
+ );
98
+ const PlayerProgressBar = defineAsyncComponent(
99
+ () => import("./PlayerProgressBar.vue"),
100
+ );
106
101
  export default defineComponent({
107
- name: 'PlayerLarge',
102
+ name: "PlayerLarge",
108
103
 
109
104
  components: {
110
105
  PlayerProgressBar,
111
106
  RadioProgressBar,
112
107
  PlayerTimeline,
113
- Spinner,
114
- RadioHistory
108
+ ClassicSpinner,
109
+ RadioHistory,
115
110
  },
116
- mixins:[playerDisplay, imageProxy],
111
+ mixins: [playerDisplay, imageProxy],
117
112
 
118
113
  props: {
119
- playerError: { default: false, type: Boolean},
120
- notListenTime: { default: 0 , type: Number},
121
- comments: { default: ()=>[] , type: Array as ()=> Array<CommentPodcast> },
122
- displayAlertBar: { default: false , type: Boolean},
123
- percentLiveProgress: { default: 0 , type: Number},
124
- durationLivePosition: { default: 0 , type: Number},
125
- listenTime: { default: 0 , type: Number},
114
+ playerError: { default: false, type: Boolean },
115
+ notListenTime: { default: 0, type: Number },
116
+ comments: { default: () => [], type: Array as () => Array<CommentPodcast> },
117
+ displayAlertBar: { default: false, type: Boolean },
118
+ percentLiveProgress: { default: 0, type: Number },
119
+ durationLivePosition: { default: 0, type: Number },
120
+ listenTime: { default: 0, type: Number },
126
121
  },
127
122
 
128
- emits: ['stopPlayer', 'update:notListenTime', 'changePlayerLargeVersion'],
123
+ emits: ["stopPlayer", "update:notListenTime", "changePlayerLargeVersion"],
129
124
  data() {
130
125
  return {
131
126
  showTimeline: false as boolean,
132
127
  };
133
128
  },
134
- methods:{
135
- stopPlayer(){
136
- this.$emit('stopPlayer');
129
+ methods: {
130
+ stopPlayer() {
131
+ this.$emit("stopPlayer");
137
132
  },
138
- changePlayerLargeVersion(){
139
- this.$emit('changePlayerLargeVersion');
133
+ changePlayerLargeVersion() {
134
+ this.$emit("changePlayerLargeVersion");
140
135
  },
141
- seekClick(addTime: number):void{
142
- const audioPlayer: HTMLAudioElement|null = document.querySelector('#audio-player');
143
- if(!audioPlayer){return;}
136
+ seekClick(addTime: number): void {
137
+ const audioPlayer: HTMLAudioElement | null =
138
+ document.querySelector("#audio-player");
139
+ if (!audioPlayer) {
140
+ return;
141
+ }
144
142
  const seekTo = audioPlayer.currentTime + addTime;
145
- (this.$refs.progressbar as InstanceType<typeof PlayerProgressBar>).isSeekTo(audioPlayer, seekTo >0?seekTo: 0);
143
+ (
144
+ this.$refs.progressbar as InstanceType<typeof PlayerProgressBar>
145
+ ).isSeekTo(audioPlayer, seekTo > 0 ? seekTo : 0);
146
146
  },
147
- }
148
- })
147
+ },
148
+ });
149
149
  </script>
150
150
 
151
151
  <style lang="scss">
152
- .octopus-app{
153
- .player-container .img-box{
152
+ .octopus-app {
153
+ .player-container .img-box {
154
154
  width: 10rem;
155
155
  height: 10rem;
156
156
  }
157
- .player-reduce-button{
157
+ .player-reduce-button {
158
158
  position: absolute;
159
159
  right: 0;
160
160
  font-size: 1.2rem !important;
161
161
  }
162
- .player-grow-large-content{
162
+ .player-grow-large-content {
163
163
  width: 100%;
164
164
  padding: 1rem 2rem;
165
165
  @media (max-width: 960px) {
@@ -178,11 +178,12 @@ export default defineComponent({
178
178
  flex-shrink: 0;
179
179
  cursor: pointer;
180
180
  }
181
- .saooti-recule, .saooti-avance{
181
+ .saooti-recule,
182
+ .saooti-avance {
182
183
  font-size: 2rem !important;
183
184
  }
184
- .transcript-bg{
185
+ .transcript-bg {
185
186
  background: #3e3e3e;
186
187
  }
187
188
  }
188
- </style>
189
+ </style>
@@ -3,7 +3,7 @@
3
3
  v-if="!playerError"
4
4
  :main-progress="percentProgress"
5
5
  :secondary-progress="percentLiveProgress"
6
- :alert-bar="displayAlertBar?durationLivePosition:undefined"
6
+ :alert-bar="displayAlertBar ? durationLivePosition : undefined"
7
7
  :class="classProgress"
8
8
  @mouseup="seekTo"
9
9
  />
@@ -15,44 +15,55 @@
15
15
  </template>
16
16
 
17
17
  <script lang="ts">
18
- import ProgressBar from '../ProgressBar.vue'
19
- import { CommentPodcast } from '@/stores/class/general/comment';
20
- import { usePlayerStore } from '@/stores/PlayerStore';
21
- import { mapState } from 'pinia';
22
- import { defineComponent, defineAsyncComponent } from 'vue';
23
- const CommentPlayer = defineAsyncComponent(() => import('../../display/comments/CommentPlayer.vue'));
18
+ import ProgressBar from "../ProgressBar.vue";
19
+ import { CommentPodcast } from "@/stores/class/general/comment";
20
+ import { usePlayerStore } from "@/stores/PlayerStore";
21
+ import { mapState } from "pinia";
22
+ import { defineComponent, defineAsyncComponent } from "vue";
23
+ const CommentPlayer = defineAsyncComponent(
24
+ () => import("../../display/comments/CommentPlayer.vue"),
25
+ );
24
26
  export default defineComponent({
25
- name: 'PlayerProgressBar',
27
+ name: "PlayerProgressBar",
26
28
 
27
29
  components: {
28
30
  CommentPlayer,
29
- ProgressBar
31
+ ProgressBar,
30
32
  },
31
33
  props: {
32
- classProgress:{ default: "", type: String},
33
- showTimeline: { default: false, type: Boolean},
34
- comments: { default: ()=>[], type: Array as ()=>Array<CommentPodcast>},
35
- displayAlertBar: { default: false, type: Boolean},
36
- percentLiveProgress: { default: 0, type: Number},
37
- durationLivePosition: { default: 0, type: Number},
38
- playerError: { default: false, type: Boolean},
39
- listenTime: { default: 0, type: Number},
34
+ classProgress: { default: "", type: String },
35
+ showTimeline: { default: false, type: Boolean },
36
+ comments: { default: () => [], type: Array as () => Array<CommentPodcast> },
37
+ displayAlertBar: { default: false, type: Boolean },
38
+ percentLiveProgress: { default: 0, type: Number },
39
+ durationLivePosition: { default: 0, type: Number },
40
+ playerError: { default: false, type: Boolean },
41
+ listenTime: { default: 0, type: Number },
40
42
  },
41
- emits: ['updateNotListenTime'],
42
-
43
+ emits: ["updateNotListenTime"],
44
+
43
45
  computed: {
44
- ...mapState(usePlayerStore, ['playerElapsed', 'playerTotal', 'playerPodcast', 'playerLive']),
45
- percentProgress(): number{
46
- if(!this.playerElapsed){return 0;}
46
+ ...mapState(usePlayerStore, [
47
+ "playerElapsed",
48
+ "playerTotal",
49
+ "playerPodcast",
50
+ "playerLive",
51
+ ]),
52
+ percentProgress(): number {
53
+ if (!this.playerElapsed) {
54
+ return 0;
55
+ }
47
56
  return this.playerElapsed * 100;
48
57
  },
49
58
  },
50
59
 
51
-
52
60
  methods: {
53
61
  seekTo(event: MouseEvent): void {
54
- const audioPlayer: HTMLAudioElement|null = document.querySelector('#audio-player');
55
- if(!audioPlayer || null===event.currentTarget){return;}
62
+ const audioPlayer: HTMLAudioElement | null =
63
+ document.querySelector("#audio-player");
64
+ if (!audioPlayer || null === event.currentTarget) {
65
+ return;
66
+ }
56
67
  const rect = (event.currentTarget as Element).getBoundingClientRect();
57
68
  const barWidth = (event.currentTarget as Element).clientWidth;
58
69
  const x = event.clientX - rect.left;
@@ -63,11 +74,10 @@ export default defineComponent({
63
74
  },
64
75
  isSeekTo(audioPlayer: HTMLAudioElement, seekTime: number): void {
65
76
  if (this.playerPodcast || this.playerLive) {
66
- this.$emit('updateNotListenTime',seekTime - this.listenTime);
77
+ this.$emit("updateNotListenTime", seekTime - this.listenTime);
67
78
  }
68
79
  audioPlayer.currentTime = seekTime;
69
- }
70
-
80
+ },
71
81
  },
72
- })
73
- </script>
82
+ });
83
+ </script>
@@ -4,58 +4,54 @@
4
4
  class="timeline-button"
5
5
  @click="$emit('update:showTimeline', !showTimeline)"
6
6
  >
7
- <div
8
- class="saooti-down"
9
- :class="showTimeline ? '' : 'arrow-transform'"
10
- />
7
+ <div class="saooti-down" :class="showTimeline ? '' : 'arrow-transform'" />
11
8
  <div>Timeline</div>
12
9
  </div>
13
10
  </template>
14
11
 
15
12
  <script lang="ts">
16
- import { state } from '../../../stores/ParamSdkStore';
17
- import { defineComponent } from 'vue';
18
- import { CommentPodcast } from '@/stores/class/general/comment';
13
+ import { state } from "../../../stores/ParamSdkStore";
14
+ import { defineComponent } from "vue";
15
+ import { CommentPodcast } from "@/stores/class/general/comment";
19
16
  export default defineComponent({
20
- name: 'PlayerTimeline',
17
+ name: "PlayerTimeline",
21
18
 
22
19
  props: {
23
- showTimeline: { default: false, type: Boolean},
24
- comments: { default: ()=>[], type: Array as ()=>Array<CommentPodcast>},
20
+ showTimeline: { default: false, type: Boolean },
21
+ comments: { default: () => [], type: Array as () => Array<CommentPodcast> },
25
22
  },
26
- emits:['update:showTimeline'],
23
+ emits: ["update:showTimeline"],
27
24
 
28
25
  computed: {
29
26
  isPodcastmaker(): boolean {
30
- return (state.generalParameters.podcastmaker as boolean);
27
+ return state.generalParameters.podcastmaker as boolean;
31
28
  },
32
29
  },
33
-
34
- })
30
+ });
35
31
  </script>
36
32
  <style lang="scss">
37
- @import '@scss/_variables.scss';
38
- .octopus-app{
39
- .player-container {
40
- .timeline-button {
41
- background: black;
42
- padding: 0.1rem;
43
- border-radius: 50%;
44
- width: 70px;
45
- height: 70px;
46
- font-size: 0.7rem;
47
- font-weight: bold;
48
- justify-content: center;
49
- display: flex;
50
- flex-direction: column;
51
- align-items: center;
52
- cursor: pointer;
53
- color: $octopus-primary-color;
54
- margin-left: 0.5rem;
55
- @media (max-width: 960px) {
56
- display: none;
33
+ @import "@scss/_variables.scss";
34
+ .octopus-app {
35
+ .player-container {
36
+ .timeline-button {
37
+ background: black;
38
+ padding: 0.1rem;
39
+ border-radius: 50%;
40
+ width: 70px;
41
+ height: 70px;
42
+ font-size: 0.7rem;
43
+ font-weight: bold;
44
+ justify-content: center;
45
+ display: flex;
46
+ flex-direction: column;
47
+ align-items: center;
48
+ cursor: pointer;
49
+ color: $octopus-primary-color;
50
+ margin-left: 0.5rem;
51
+ @media (max-width: 960px) {
52
+ display: none;
53
+ }
57
54
  }
58
55
  }
59
56
  }
60
- }
61
- </style>
57
+ </style>
@@ -1,34 +1,30 @@
1
1
  <template>
2
- <div
3
- v-if="playerRadioHistory.length"
4
- class="d-flex align-items-center mt-3"
5
- >
2
+ <div v-if="playerRadioHistory.length" class="d-flex align-items-center mt-3">
6
3
  <div class="fw-bold me-3">
7
- {{ $t('Previously') +':' }}
4
+ {{ $t("Previously") + ":" }}
8
5
  </div>
9
6
  <button
10
- v-if="indexStart!==0"
7
+ v-if="indexStart !== 0"
11
8
  class="btn btn-transparent text-light saooti-left"
12
9
  @click="handleResize(0)"
13
10
  />
14
- <div
15
- ref="historyListContainer"
16
- class="history-list-container"
17
- >
18
- <div
19
- v-for="(pastItem, index) in playerRadioHistory"
11
+ <div ref="historyListContainer" class="history-list-container">
12
+ <div
13
+ v-for="(pastItem, index) in playerRadioHistory"
20
14
  :key="pastItem.title"
21
15
  :ref="'history' + index"
22
16
  class="d-flex flex-shrink-0"
23
17
  >
24
18
  <div class="d-flex flex-shrink-0 align-items-end">
25
- <span class="me-2 hour-past-item">{{ displayTimeItem(pastItem) }}</span>
19
+ <span class="me-2 hour-past-item">{{
20
+ displayTimeItem(pastItem)
21
+ }}</span>
26
22
  <span class="me-3">{{ displayPreviousItem(pastItem) }}</span>
27
23
  </div>
28
24
  </div>
29
25
  </div>
30
26
  <button
31
- v-if="indexNotDisplay<=playerRadioHistory.length-1"
27
+ v-if="indexNotDisplay <= playerRadioHistory.length - 1"
32
28
  class="btn btn-transparent text-light saooti-right"
33
29
  @click="handleResize(indexNotDisplay)"
34
30
  />
@@ -36,100 +32,107 @@
36
32
  </template>
37
33
 
38
34
  <script lang="ts">
39
- import { usePlayerStore } from '@/stores/PlayerStore';
40
- import { mapState } from 'pinia';
41
- import dayjs from 'dayjs';
42
- import {fetchRadioData} from '../../../mixins/radio/fetchRadioData';
43
- import { defineComponent } from 'vue';
44
- import { MediaRadio } from '@/stores/class/general/player';
35
+ import { usePlayerStore } from "@/stores/PlayerStore";
36
+ import { mapState } from "pinia";
37
+ import dayjs from "dayjs";
38
+ import { fetchRadioData } from "../../../mixins/radio/fetchRadioData";
39
+ import { defineComponent } from "vue";
40
+ import { MediaRadio } from "@/stores/class/general/player";
45
41
  export default defineComponent({
46
- name: 'RadioHistory',
42
+ name: "RadioHistory",
47
43
 
48
- components: {
49
- },
44
+ components: {},
50
45
 
51
46
  mixins: [fetchRadioData],
52
- emits: ['updateNotListenTime'],
47
+ emits: ["updateNotListenTime"],
53
48
  data() {
54
49
  return {
55
50
  indexStart: 0 as number,
56
51
  indexNotDisplay: 100 as number,
57
52
  };
58
53
  },
59
-
54
+
60
55
  computed: {
61
- ...mapState(usePlayerStore, ['playerRadio']),
62
- playerRadioHistory(){
56
+ ...mapState(usePlayerStore, ["playerRadio"]),
57
+ playerRadioHistory() {
63
58
  return this.playerRadio?.history ?? [];
64
- }
59
+ },
65
60
  },
66
- watch:{
61
+ watch: {
67
62
  playerRadioHistory: {
68
63
  deep: true,
69
- immediate:true,
70
- handler(){
64
+ immediate: true,
65
+ handler() {
71
66
  this.$nextTick(() => {
72
67
  this.handleResize(0);
73
68
  });
74
- }
69
+ },
75
70
  },
76
71
  },
77
72
  created() {
78
- window.addEventListener('resize', ()=>{this.handleResize(0);});
73
+ window.addEventListener("resize", () => {
74
+ this.handleResize(0);
75
+ });
79
76
  },
80
77
  unmounted() {
81
- window.removeEventListener('resize', ()=>{this.handleResize(0);});
78
+ window.removeEventListener("resize", () => {
79
+ this.handleResize(0);
80
+ });
82
81
  },
83
82
  mounted() {
84
83
  this.handleResize(0);
85
84
  },
86
- methods:{
87
- handleResize(indexAsked:number): void {
88
- const historyList = (this.$refs.historyListContainer as HTMLElement);
89
- if(null === historyList ||!historyList){
85
+ methods: {
86
+ handleResize(indexAsked: number): void {
87
+ const historyList = this.$refs.historyListContainer as HTMLElement;
88
+ if (null === historyList || !historyList) {
90
89
  return;
91
90
  }
92
91
  this.indexStart = indexAsked;
93
92
  this.indexNotDisplay = this.playerRadioHistory.length;
94
93
  for (let index = 0; index < this.playerRadioHistory.length; index++) {
95
- const el = (this.$refs['history' +index] as Array<HTMLElement>)[0];
94
+ const el = (this.$refs["history" + index] as Array<HTMLElement>)[0];
96
95
  if (!el) continue;
97
- if(index < this.indexStart && !el.classList.contains('hid')){
98
- el.classList.add('hid');
96
+ if (index < this.indexStart && !el.classList.contains("hid")) {
97
+ el.classList.add("hid");
99
98
  continue;
100
99
  }
101
- if (index >= this.indexStart && el.classList.contains('hid')) {
102
- el.classList.remove('hid');
100
+ if (index >= this.indexStart && el.classList.contains("hid")) {
101
+ el.classList.remove("hid");
103
102
  }
104
103
  }
105
- for (let index = this.indexStart + 1; index < this.playerRadioHistory.length; index++) {
106
- const el = (this.$refs['history' +index] as Array<HTMLElement>)[0];
104
+ for (
105
+ let index = this.indexStart + 1;
106
+ index < this.playerRadioHistory.length;
107
+ index++
108
+ ) {
109
+ const el = (this.$refs["history" + index] as Array<HTMLElement>)[0];
107
110
  if (!el) continue;
108
- if (index > this.indexNotDisplay && !el.classList.contains('hid')) {
109
- el.classList.add('hid');
111
+ if (index > this.indexNotDisplay && !el.classList.contains("hid")) {
112
+ el.classList.add("hid");
110
113
  continue;
111
114
  }
112
115
  const parent = el.parentElement;
113
- if (parent && el.offsetLeft + el.clientWidth > parent.clientWidth ) {
116
+ if (parent && el.offsetLeft + el.clientWidth > parent.clientWidth) {
114
117
  this.indexNotDisplay = index;
115
- el.classList.add('hid');
118
+ el.classList.add("hid");
116
119
  }
117
120
  }
118
121
  },
119
- displayTimeItem(item: MediaRadio):string{
120
- return dayjs(item.startDate).format('HH:mm');
122
+ displayTimeItem(item: MediaRadio): string {
123
+ return dayjs(item.startDate).format("HH:mm");
121
124
  },
122
- displayPreviousItem(item: MediaRadio):string{
123
- if(item.podcastId){
125
+ displayPreviousItem(item: MediaRadio): string {
126
+ if (item.podcastId) {
124
127
  return item.title;
125
128
  }
126
129
  return this.displayTitle(item);
127
- }
128
- }
129
- })
130
+ },
131
+ },
132
+ });
130
133
  </script>
131
134
  <style lang="scss">
132
- .octopus-app{
135
+ .octopus-app {
133
136
  .history-list-container {
134
137
  display: inline-flex;
135
138
  justify-content: flex-start;
@@ -138,9 +141,9 @@ export default defineComponent({
138
141
  width: 0;
139
142
  position: relative;
140
143
  }
141
- .hour-past-item{
144
+ .hour-past-item {
142
145
  font-size: 0.8rem;
143
146
  color: #dbdbdb;
144
147
  }
145
148
  }
146
- </style>
149
+ </style>