@saooti/octopus-sdk 1.0.0 → 1.1.1

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 (317) hide show
  1. package/README.md +261 -0
  2. package/index.d.ts +4 -0
  3. package/index.ts +55 -3
  4. package/package.json +53 -45
  5. package/public/config.ts +4 -0
  6. package/public/css/fonts/icomoon.eot +0 -0
  7. package/public/css/fonts/icomoon.svg +129 -0
  8. package/public/css/fonts/icomoon.ttf +0 -0
  9. package/public/css/fonts/icomoon.woff +0 -0
  10. package/public/css/fonts/style.css +186 -1224
  11. package/public/img/403.jpeg +0 -0
  12. package/public/img/404.svg +242 -0
  13. package/public/img/ACPM.png +0 -0
  14. package/public/img/ouest_france_logo.svg +12 -0
  15. package/src/App.vue +102 -31
  16. package/src/api/classicCrud.ts +34 -0
  17. package/src/api/initialize.ts +5 -2
  18. package/src/assets/bootstrap-diff.scss +197 -0
  19. package/src/assets/form.scss +77 -77
  20. package/src/assets/general.scss +284 -272
  21. package/src/assets/live.scss +39 -0
  22. package/src/assets/modal.scss +43 -50
  23. package/src/assets/multiselect.scss +522 -573
  24. package/src/assets/octopus-library.scss +18 -4
  25. package/src/assets/share.scss +243 -0
  26. package/src/assets/transition.scss +98 -2
  27. package/src/components/display/aggregator/RssSection.vue +3 -5
  28. package/src/components/display/categories/CategoryChooser.vue +151 -114
  29. package/src/components/display/categories/CategoryFilter.vue +162 -0
  30. package/src/components/display/categories/CategoryList.vue +149 -117
  31. package/src/components/display/comments/AddCommentModal.vue +103 -108
  32. package/src/components/display/comments/CommentBasicView.vue +95 -0
  33. package/src/components/display/comments/CommentInput.vue +195 -183
  34. package/src/components/display/comments/CommentItem.vue +170 -208
  35. package/src/components/display/comments/CommentList.vue +134 -228
  36. package/src/components/display/comments/CommentParentInfo.vue +28 -62
  37. package/src/components/display/comments/CommentPlayer.vue +53 -56
  38. package/src/components/display/comments/CommentSection.vue +52 -83
  39. package/src/components/display/edit/EditBox.vue +10 -4
  40. package/src/components/display/edit/EditCommentBox.vue +124 -38
  41. package/src/components/display/emission/EmissionChooser.vue +88 -108
  42. package/src/components/display/emission/EmissionInlineList.vue +156 -157
  43. package/src/components/display/emission/EmissionItem.vue +72 -226
  44. package/src/components/display/emission/EmissionList.vue +159 -201
  45. package/src/components/display/emission/EmissionPlayerItem.vue +203 -174
  46. package/src/components/display/filter/AdvancedSearch.vue +224 -432
  47. package/src/components/display/filter/CategoryFilter.vue +105 -0
  48. package/src/components/display/filter/MonetizableFilter.vue +18 -15
  49. package/src/components/display/filter/ProductorSearch.vue +153 -176
  50. package/src/components/display/filter/RubriqueChoice.vue +97 -0
  51. package/src/components/display/filter/RubriqueFilter.vue +232 -0
  52. package/src/components/display/list/ListPaginate.vue +145 -0
  53. package/src/components/display/list/Paginate.vue +218 -0
  54. package/src/components/display/live/CountDown.vue +31 -30
  55. package/src/components/display/live/LiveHorizontalList.vue +84 -62
  56. package/src/components/display/live/LiveItem.vue +161 -186
  57. package/src/components/display/live/LiveList.vue +184 -295
  58. package/src/components/display/organisation/OrganisationChooser.vue +124 -162
  59. package/src/components/display/organisation/OrganisationChooserLight.vue +53 -56
  60. package/src/components/display/participant/ParticipantItem.vue +91 -128
  61. package/src/components/display/participant/ParticipantList.vue +134 -121
  62. package/src/components/display/playlist/PlaylistItem.vue +60 -97
  63. package/src/components/display/playlist/PlaylistList.vue +99 -92
  64. package/src/components/display/playlist/PodcastList.vue +117 -132
  65. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +191 -0
  66. package/src/components/display/podcasts/AnimatorsItem.vue +29 -37
  67. package/src/components/display/podcasts/ParticipantDescription.vue +82 -0
  68. package/src/components/display/podcasts/PodcastFilterList.vue +49 -102
  69. package/src/components/display/podcasts/PodcastImage.vue +208 -225
  70. package/src/components/display/podcasts/PodcastInlineList.vue +62 -355
  71. package/src/components/display/podcasts/PodcastInlineListClassic.vue +240 -0
  72. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +167 -0
  73. package/src/components/display/podcasts/PodcastItem.vue +94 -218
  74. package/src/components/display/podcasts/PodcastItemInfo.vue +166 -0
  75. package/src/components/display/podcasts/PodcastList.vue +127 -178
  76. package/src/components/display/podcasts/PodcastModuleBox.vue +234 -0
  77. package/src/components/display/podcasts/PodcastPlayBar.vue +101 -0
  78. package/src/components/display/podcasts/PodcastSwiperList.vue +204 -0
  79. package/src/components/display/podcasts/TagList.vue +60 -38
  80. package/src/components/display/rubriques/RubriqueChooser.vue +144 -131
  81. package/src/components/display/rubriques/RubriqueList.vue +216 -0
  82. package/src/components/display/sharing/PlayerParameters.vue +111 -153
  83. package/src/components/display/sharing/QrCode.vue +96 -0
  84. package/src/components/display/sharing/ShareButtons.vue +63 -233
  85. package/src/components/display/sharing/ShareButtonsIntern.vue +225 -0
  86. package/src/components/display/sharing/ShareDistribution.vue +102 -166
  87. package/src/components/display/sharing/SharePlayer.vue +189 -353
  88. package/src/components/display/sharing/SharePlayerColors.vue +78 -0
  89. package/src/components/display/sharing/SharePlayerTypes.vue +112 -0
  90. package/src/components/display/sharing/SplitButton.vue +42 -0
  91. package/src/components/display/sharing/SubscribeButtons.vue +65 -118
  92. package/src/components/display/studio/RecordingItemButton.vue +3 -5
  93. package/src/components/form/ClassicCheckbox.vue +66 -0
  94. package/src/components/form/ClassicLoading.vue +28 -0
  95. package/src/components/form/ClassicRadio.vue +66 -0
  96. package/src/components/form/ClassicSearch.vue +86 -0
  97. package/src/components/form/ClassicSelect.vue +65 -0
  98. package/src/components/misc/ErrorMessage.vue +27 -18
  99. package/src/components/misc/Footer.vue +151 -108
  100. package/src/components/misc/HomeDropdown.vue +95 -154
  101. package/src/components/misc/LeftMenu.vue +137 -206
  102. package/src/components/misc/Popover.vue +118 -0
  103. package/src/components/misc/Snackbar.vue +73 -37
  104. package/src/components/misc/TopBar.vue +211 -314
  105. package/src/components/misc/modal/ClipboardModal.vue +34 -47
  106. package/src/components/misc/modal/MessageModal.vue +74 -53
  107. package/src/components/misc/modal/NewsletterModal.vue +272 -224
  108. package/src/components/misc/modal/QrCodeModal.vue +58 -0
  109. package/src/components/misc/modal/ShareModalPlayer.vue +140 -74
  110. package/src/components/misc/player/Player.vue +146 -0
  111. package/src/components/misc/player/PlayerCompact.vue +154 -0
  112. package/src/components/misc/player/PlayerLarge.vue +166 -0
  113. package/src/components/misc/player/PlayerProgressBar.vue +112 -0
  114. package/src/components/misc/player/PlayerTimeline.vue +61 -0
  115. package/src/components/mixins/functions.ts +21 -18
  116. package/src/components/mixins/handle403.ts +17 -0
  117. package/src/components/mixins/init.ts +24 -0
  118. package/src/components/mixins/orgaComputed.ts +15 -0
  119. package/src/components/mixins/organisationFilter.ts +41 -0
  120. package/src/components/mixins/player/playerComment.ts +98 -0
  121. package/src/components/mixins/player/playerDisplay.ts +113 -0
  122. package/src/components/mixins/player/playerLive.ts +111 -0
  123. package/src/components/mixins/player/playerLogic.ts +225 -0
  124. package/src/components/mixins/tagOfMixins.ts +19 -0
  125. package/src/components/pages/Category.vue +24 -28
  126. package/src/components/pages/Emission.vue +144 -177
  127. package/src/components/pages/Emissions.vue +94 -110
  128. package/src/components/pages/Error403Page.vue +60 -0
  129. package/src/components/pages/Home.vue +74 -21
  130. package/src/components/pages/Lives.vue +53 -58
  131. package/src/components/pages/PageNotFound.vue +55 -0
  132. package/src/components/pages/Participant.vue +113 -129
  133. package/src/components/pages/Participants.vue +25 -41
  134. package/src/components/pages/Playlist.vue +86 -86
  135. package/src/components/pages/Playlists.vue +33 -52
  136. package/src/components/pages/Podcast.vue +206 -478
  137. package/src/components/pages/Podcasts.vue +112 -156
  138. package/src/components/pages/Rubrique.vue +21 -27
  139. package/src/components/pages/Search.vue +37 -94
  140. package/src/helper/dom.ts +2 -2
  141. package/src/helper/duration.ts +18 -8
  142. package/src/helper/useEventListener.ts +18 -0
  143. package/src/i18n.ts +36 -0
  144. package/src/locale/de.ts +309 -0
  145. package/src/locale/educationen.ts +14 -0
  146. package/src/locale/en.ts +316 -1
  147. package/src/locale/es.ts +309 -0
  148. package/src/locale/fr.ts +47 -15
  149. package/src/locale/it.ts +307 -0
  150. package/src/locale/messages.ts +11 -2
  151. package/src/locale/sl.ts +309 -0
  152. package/src/main.ts +64 -55
  153. package/src/router/router.ts +192 -159
  154. package/src/sass/_variables.scss +10 -8
  155. package/src/shims-tsx.d.ts +15 -0
  156. package/src/shims-vue-recaptcha-v3.d.ts +9 -0
  157. package/src/shims-vue.d.ts +5 -6
  158. package/src/store/AppStore.ts +41 -173
  159. package/src/store/class/adserver/adserverConfig.ts +9 -0
  160. package/src/store/class/adserver/adserverOtherEmission.ts +13 -0
  161. package/src/store/class/adserver/adserverTiming.ts +10 -0
  162. package/src/store/class/cartouchier/cartouche.ts +15 -0
  163. package/src/store/class/cartouchier/cartouchier.ts +9 -0
  164. package/src/store/class/conference/conference.ts +35 -0
  165. package/src/store/class/conference/conferenceMessage.ts +10 -0
  166. package/src/store/class/conference/conferenceParticipant.ts +18 -0
  167. package/src/store/class/conference/pad.ts +15 -0
  168. package/src/store/class/conference/studioCall.ts +7 -0
  169. package/src/store/class/contract/contract.ts +7 -0
  170. package/src/store/class/contract/contractOrganisation.ts +7 -0
  171. package/src/store/class/ftp/ftpEmission.ts +41 -0
  172. package/src/store/class/ftp/ftpParam.ts +12 -0
  173. package/src/store/class/ftp/testFtpEmission.ts +5 -0
  174. package/src/store/class/general/audioView.ts +21 -0
  175. package/src/store/class/general/category.ts +10 -0
  176. package/src/store/class/general/comment.ts +16 -0
  177. package/src/store/class/general/customPlayer.ts +9 -0
  178. package/src/store/class/general/emission.ts +23 -0
  179. package/src/store/class/general/fetchParam.ts +3 -0
  180. package/src/store/class/general/initState.ts +25 -0
  181. package/src/store/class/general/interfacePageable.ts +16 -0
  182. package/src/store/class/general/ituneCategory.ts +5 -0
  183. package/src/store/class/general/media.ts +14 -0
  184. package/src/store/class/general/organisation.ts +20 -0
  185. package/src/store/class/general/pageable.ts +13 -0
  186. package/src/store/class/general/participant.ts +12 -0
  187. package/src/store/class/general/player.ts +14 -0
  188. package/src/store/class/general/playlist.ts +13 -0
  189. package/src/store/class/general/podcast.ts +43 -0
  190. package/src/store/class/general/sortPageable.ts +5 -0
  191. package/src/store/class/general/soundcastCategory.ts +8 -0
  192. package/src/store/class/ouestFrance/ofTag.ts +36 -0
  193. package/src/store/class/ouestFrance/ofTagInfo.ts +9 -0
  194. package/src/store/class/ouestFrance/ofTagPage.ts +7 -0
  195. package/src/store/class/ouestFrance/ofTagSeo.ts +7 -0
  196. package/src/store/class/ouestFrance/ofTagVente.ts +6 -0
  197. package/src/store/class/ouestFrance/ofTagWithParents.ts +26 -0
  198. package/src/store/class/rss/aggregator.ts +28 -0
  199. package/src/store/class/rss/rssEmission.ts +14 -0
  200. package/src/store/class/rss/rssInfo.ts +8 -0
  201. package/src/store/class/rubrique/rubriquage.ts +10 -0
  202. package/src/store/class/rubrique/rubriquageFilter.ts +6 -0
  203. package/src/store/class/rubrique/rubrique.ts +9 -0
  204. package/src/store/class/stat/statArrayIncome.ts +6 -0
  205. package/src/store/class/stat/statArrayObject.ts +34 -0
  206. package/src/store/class/stat/statGraph.ts +7 -0
  207. package/src/store/class/user/person.ts +15 -0
  208. package/src/store/class/user/profile.ts +12 -0
  209. package/src/store/class/user/userKeycloak.ts +24 -0
  210. package/src/store/paramStore.ts +222 -217
  211. package/src/store/typeAppStore.ts +186 -235
  212. package/src/vuex-shim.d.ts +8 -0
  213. package/tsconfig.json +4 -0
  214. package/vue.config.js +16 -0
  215. package/public/css/fonts/saooti-ui.eot +0 -0
  216. package/public/css/fonts/saooti-ui.svg +0 -829
  217. package/public/css/fonts/saooti-ui.ttf +0 -0
  218. package/public/css/fonts/saooti-ui.woff +0 -0
  219. package/public/css/fonts/stitcher-logo.svg +0 -83
  220. package/public/img/ACPM.PNG +0 -0
  221. package/src/api/comments.ts +0 -7
  222. package/src/api/emissions.ts +0 -7
  223. package/src/api/podcasts.ts +0 -7
  224. package/src/api/profile.ts +0 -8
  225. package/src/api/studio.ts +0 -1
  226. package/src/assets/bootstrap_scss/_alert.scss +0 -51
  227. package/src/assets/bootstrap_scss/_badge.scss +0 -54
  228. package/src/assets/bootstrap_scss/_breadcrumb.scss +0 -42
  229. package/src/assets/bootstrap_scss/_button-group.scss +0 -164
  230. package/src/assets/bootstrap_scss/_buttons.scss +0 -291
  231. package/src/assets/bootstrap_scss/_card.scss +0 -278
  232. package/src/assets/bootstrap_scss/_carousel.scss +0 -197
  233. package/src/assets/bootstrap_scss/_close.scss +0 -41
  234. package/src/assets/bootstrap_scss/_code.scss +0 -48
  235. package/src/assets/bootstrap_scss/_custom-forms.scss +0 -522
  236. package/src/assets/bootstrap_scss/_dropdown.scss +0 -201
  237. package/src/assets/bootstrap_scss/_forms.scss +0 -352
  238. package/src/assets/bootstrap_scss/_functions.scss +0 -134
  239. package/src/assets/bootstrap_scss/_grid.scss +0 -69
  240. package/src/assets/bootstrap_scss/_images.scss +0 -42
  241. package/src/assets/bootstrap_scss/_input-group.scss +0 -191
  242. package/src/assets/bootstrap_scss/_jumbotron.scss +0 -17
  243. package/src/assets/bootstrap_scss/_list-group.scss +0 -158
  244. package/src/assets/bootstrap_scss/_media.scss +0 -8
  245. package/src/assets/bootstrap_scss/_mixins.scss +0 -47
  246. package/src/assets/bootstrap_scss/_modal.scss +0 -243
  247. package/src/assets/bootstrap_scss/_nav.scss +0 -120
  248. package/src/assets/bootstrap_scss/_navbar.scss +0 -324
  249. package/src/assets/bootstrap_scss/_pagination.scss +0 -74
  250. package/src/assets/bootstrap_scss/_popover.scss +0 -170
  251. package/src/assets/bootstrap_scss/_print.scss +0 -141
  252. package/src/assets/bootstrap_scss/_progress.scss +0 -46
  253. package/src/assets/bootstrap_scss/_reboot.scss +0 -482
  254. package/src/assets/bootstrap_scss/_root.scss +0 -20
  255. package/src/assets/bootstrap_scss/_spinners.scss +0 -55
  256. package/src/assets/bootstrap_scss/_tables.scss +0 -185
  257. package/src/assets/bootstrap_scss/_toasts.scss +0 -44
  258. package/src/assets/bootstrap_scss/_tooltip.scss +0 -115
  259. package/src/assets/bootstrap_scss/_transitions.scss +0 -20
  260. package/src/assets/bootstrap_scss/_type.scss +0 -125
  261. package/src/assets/bootstrap_scss/_utilities.scss +0 -17
  262. package/src/assets/bootstrap_scss/_variables.scss +0 -1145
  263. package/src/assets/bootstrap_scss/bootstrap-grid.scss +0 -29
  264. package/src/assets/bootstrap_scss/bootstrap-reboot.scss +0 -12
  265. package/src/assets/bootstrap_scss/bootstrap.scss +0 -44
  266. package/src/assets/bootstrap_scss/mixins/_alert.scss +0 -13
  267. package/src/assets/bootstrap_scss/mixins/_background-variant.scss +0 -22
  268. package/src/assets/bootstrap_scss/mixins/_badge.scss +0 -17
  269. package/src/assets/bootstrap_scss/mixins/_border-radius.scss +0 -63
  270. package/src/assets/bootstrap_scss/mixins/_box-shadow.scss +0 -20
  271. package/src/assets/bootstrap_scss/mixins/_breakpoints.scss +0 -123
  272. package/src/assets/bootstrap_scss/mixins/_buttons.scss +0 -110
  273. package/src/assets/bootstrap_scss/mixins/_caret.scss +0 -62
  274. package/src/assets/bootstrap_scss/mixins/_clearfix.scss +0 -7
  275. package/src/assets/bootstrap_scss/mixins/_deprecate.scss +0 -10
  276. package/src/assets/bootstrap_scss/mixins/_float.scss +0 -14
  277. package/src/assets/bootstrap_scss/mixins/_forms.scss +0 -177
  278. package/src/assets/bootstrap_scss/mixins/_gradients.scss +0 -45
  279. package/src/assets/bootstrap_scss/mixins/_grid-framework.scss +0 -71
  280. package/src/assets/bootstrap_scss/mixins/_grid.scss +0 -69
  281. package/src/assets/bootstrap_scss/mixins/_hover.scss +0 -37
  282. package/src/assets/bootstrap_scss/mixins/_image.scss +0 -36
  283. package/src/assets/bootstrap_scss/mixins/_list-group.scss +0 -21
  284. package/src/assets/bootstrap_scss/mixins/_lists.scss +0 -7
  285. package/src/assets/bootstrap_scss/mixins/_nav-divider.scss +0 -11
  286. package/src/assets/bootstrap_scss/mixins/_pagination.scss +0 -22
  287. package/src/assets/bootstrap_scss/mixins/_reset-text.scss +0 -17
  288. package/src/assets/bootstrap_scss/mixins/_resize.scss +0 -6
  289. package/src/assets/bootstrap_scss/mixins/_screen-reader.scss +0 -34
  290. package/src/assets/bootstrap_scss/mixins/_size.scss +0 -7
  291. package/src/assets/bootstrap_scss/mixins/_table-row.scss +0 -39
  292. package/src/assets/bootstrap_scss/mixins/_text-emphasis.scss +0 -17
  293. package/src/assets/bootstrap_scss/mixins/_text-hide.scss +0 -11
  294. package/src/assets/bootstrap_scss/mixins/_text-truncate.scss +0 -8
  295. package/src/assets/bootstrap_scss/mixins/_transition.scss +0 -16
  296. package/src/assets/bootstrap_scss/mixins/_visibility.scss +0 -8
  297. package/src/assets/bootstrap_scss/utilities/_align.scss +0 -8
  298. package/src/assets/bootstrap_scss/utilities/_background.scss +0 -19
  299. package/src/assets/bootstrap_scss/utilities/_borders.scss +0 -75
  300. package/src/assets/bootstrap_scss/utilities/_clearfix.scss +0 -3
  301. package/src/assets/bootstrap_scss/utilities/_display.scss +0 -26
  302. package/src/assets/bootstrap_scss/utilities/_embed.scss +0 -39
  303. package/src/assets/bootstrap_scss/utilities/_flex.scss +0 -51
  304. package/src/assets/bootstrap_scss/utilities/_float.scss +0 -11
  305. package/src/assets/bootstrap_scss/utilities/_overflow.scss +0 -5
  306. package/src/assets/bootstrap_scss/utilities/_position.scss +0 -32
  307. package/src/assets/bootstrap_scss/utilities/_screenreaders.scss +0 -11
  308. package/src/assets/bootstrap_scss/utilities/_shadows.scss +0 -6
  309. package/src/assets/bootstrap_scss/utilities/_sizing.scss +0 -20
  310. package/src/assets/bootstrap_scss/utilities/_spacing.scss +0 -73
  311. package/src/assets/bootstrap_scss/utilities/_stretched-link.scss +0 -19
  312. package/src/assets/bootstrap_scss/utilities/_text.scss +0 -72
  313. package/src/assets/bootstrap_scss/utilities/_visibility.scss +0 -13
  314. package/src/assets/bootstrap_scss/vendor/_rfs.scss +0 -204
  315. package/src/components/misc/Player.vue +0 -792
  316. package/src/shims-vuex.d.ts +0 -7
  317. package/src/views/Home.vue +0 -18
@@ -1,226 +1,116 @@
1
1
  <template>
2
2
  <div
3
- class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink float-left"
4
- :style="{ 'background-image': 'url(\'' + podcast.imageUrl + '\')' }"
5
3
  v-if="podcast"
4
+ class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink-0 float-start"
6
5
  >
6
+ <img
7
+ v-lazy="podcast.imageUrl"
8
+ class="img-box"
9
+ :alt="$t('Episode name image', {name:podcast.title})"
10
+ >
11
+ <div
12
+ v-if="isPodcastmaker"
13
+ :class="mainRubrique? 'mainRubrique' : 'notMainRubrique'"
14
+ />
7
15
  <div
16
+ v-if="fetchConference"
8
17
  class="live-image-status"
9
18
  :class="
10
- fetchConference && 'null' !== fetchConference
19
+ fetchConference && 'null' !== fetchConference && fetchConference.status
11
20
  ? fetchConference.status.toLowerCase() + '-bg'
12
21
  : ''
13
22
  "
14
- v-if="fetchConference"
15
23
  >
16
24
  {{ statusText }}
17
25
  </div>
18
- <div class="live-image-status recording-bg" v-if="isRecordedInLive">
19
- {{ 'Enregistré en live' }}
20
- </div>
21
26
  <div
22
- class="podcast-image-play-button"
23
- v-on:click="play"
27
+ v-if="isRecordedInLive"
28
+ class="live-image-status recording-bg"
29
+ >
30
+ {{ $t('Recorded in live') }}
31
+ </div>
32
+ <button
24
33
  v-if="hidePlay || recordingLive"
34
+ class="podcast-image-play-button"
25
35
  :class="classicPodcastPlay ? '' : 'transparent-background'"
36
+ @click="play"
26
37
  >
27
- <div class="icon-container" v-if="!isLiveToBeRecorded">
38
+ <div
39
+ v-if="!isLiveToBeRecorded"
40
+ class="icon-container"
41
+ >
28
42
  <div
29
- :aria-label="$t('Play')"
30
- class="saooti-play2-bounty primary-color"
31
43
  v-show="!playingPodcast"
32
- ></div>
44
+ :title="$t('Play')"
45
+ class="saooti-play primary-color"
46
+ />
33
47
  <div
48
+ v-if="!classicPodcastPlay"
34
49
  class="special-icon-play-button"
35
50
  :class="iconName"
36
- v-if="!classicPodcastPlay"
37
- ></div>
38
- <div class="bloc-paddle" v-show="playingPodcast">
39
- <span class="paddle1 primary-color"></span>
40
- <span class="paddle2 primary-color"></span>
41
- <span class="paddle3 primary-color"></span>
51
+ />
52
+ <div
53
+ v-show="playingPodcast"
54
+ class="bloc-paddle"
55
+ >
56
+ <span class="paddle1" />
57
+ <span class="paddle2" />
58
+ <span class="paddle3" />
42
59
  </div>
43
60
  </div>
44
- <div class="icon-container error-icon" v-else>
61
+ <div
62
+ v-else
63
+ class="icon-container error-icon"
64
+ >
45
65
  <div
46
- :aria-label="textVisible"
66
+ :title="textVisible"
47
67
  class="big-icon-error"
48
68
  :class="iconName"
49
- ></div>
69
+ />
50
70
  </div>
51
71
  <div
52
- class="small-Text mt-3 font-weight-bolder"
53
72
  v-if="!classicPodcastPlay"
73
+ class="small-text mt-3 fw-bolder"
54
74
  >
55
75
  {{ textVisible }}
56
76
  </div>
57
- </div>
58
- <div
59
- class="background-icon saooti-arrow-up2"
60
- :aria-label="$t('Show description')"
61
- v-if="!isDescription && displayDescription && isMobile"
62
- @click="showDescription"
63
- ></div>
77
+ </button>
64
78
  <div
65
- class="background-icon saooti-arrow-down2"
66
- :aria-label="$t('Hide description')"
67
- v-if="isDescription && displayDescription && isMobile"
79
+ v-if="displayDescription && isMobile"
80
+ class="background-icon primary-bg saooti-arrow-up"
81
+ :class="isDescription ? 'saooti-arrow-down':'saooti-arrow-up'"
82
+ :title="isDescription ? $t('Hide description'):$t('Show description')"
68
83
  @click="showDescription"
69
- ></div>
84
+ />
70
85
  </div>
71
86
  </template>
72
87
 
73
- <style lang="scss">
74
- .no-visible-img {
75
- width: 3rem;
76
- height: 3rem;
77
- border-radius: 50%;
78
- padding: 0.7em;
79
- background: rgba(0, 0, 0, 0.31);
80
- }
81
- .special-icon-play-button {
82
- width: 30px;
83
- height: 30px;
84
- background-color: #ffd663;
85
- border-radius: 50%;
86
- position: absolute;
87
- right: 4.5rem;
88
- top: 6rem;
89
- font-size: 0.9rem;
90
- font-weight: bold;
91
- display: flex;
92
- align-items: center;
93
- justify-content: center;
94
- }
95
- .transparent-background {
96
- background-color: rgba(255, 255, 255, 0.5);
97
- }
98
- .podcast-image-play-button {
99
- position: absolute;
100
- display: flex;
101
- align-items: center;
102
- justify-content: center;
103
- top: 0;
104
- left: 0;
105
- right: 0;
106
- bottom: 0;
107
- cursor: pointer;
108
- flex-direction: column;
109
-
110
- .icon-container {
111
- background: #00000050;
112
- border-radius: 50%;
113
- height: 3rem;
114
- width: 3rem;
115
- display: flex;
116
- align-items: center;
117
- justify-content: center;
118
-
119
- &.error-icon {
120
- background: #00000050 !important;
121
- cursor: default !important;
122
- }
123
-
124
- &:hover {
125
- background: #00000030;
126
- }
127
-
128
- > .saooti-play2-bounty {
129
- font-size: 2em;
130
- position: relative;
131
- right: -0.2rem;
132
- }
133
- .big-icon-error {
134
- font-size: 2em;
135
- position: relative;
136
- }
137
- z-index: 2;
138
- }
139
- }
140
- .bloc-paddle {
141
- align-items: flex-end;
142
- display: flex;
143
- width: 2rem;
144
- height: 2.6rem;
145
- padding: 0.7rem;
146
- justify-content: space-around;
147
- align-content: flex-start;
148
- border-radius: 50%;
149
- background: transparent !important;
150
-
151
- > span {
152
- width: 0.1rem;
153
- background: #fff;
154
- }
155
-
156
- .paddle1 {
157
- animation-duration: 0.6s;
158
- animation-name: slidein;
159
- animation-iteration-count: infinite;
160
- animation-direction: alternate;
161
- }
162
-
163
- .paddle2 {
164
- animation-duration: 0.3s;
165
- animation-name: slidein2;
166
- animation-iteration-count: infinite;
167
- animation-direction: alternate;
168
- }
169
-
170
- .paddle3 {
171
- animation-duration: 0.5s;
172
- animation-name: slidein3;
173
- animation-iteration-count: infinite;
174
- animation-direction: alternate;
175
- }
176
- @keyframes slidein {
177
- 0% {
178
- height: 0;
179
- }
180
- 100% {
181
- height: 1rem;
182
- }
183
- }
184
-
185
- @keyframes slidein2 {
186
- 0% {
187
- height: 0.3rem;
188
- }
189
- 100% {
190
- height: 1.2rem;
191
- }
192
- }
193
-
194
- @keyframes slidein3 {
195
- 0% {
196
- height: 1.2rem;
197
- }
198
- 100% {
199
- height: 0;
200
- }
201
- }
202
- }
203
- </style>
204
-
205
88
  <script lang="ts">
206
89
  import { mapState } from 'vuex';
207
-
208
- import { defineComponent } from 'vue';
90
+ import { state } from '../../../store/paramStore';
91
+ import {StoreState} from '@/store/typeAppStore';
92
+ import { Podcast } from '@/store/class/general/podcast';
93
+ import { Conference } from '@/store/class/conference/conference';
94
+ import { defineComponent } from 'vue'
209
95
  export default defineComponent({
210
96
  name: 'PodcastImage',
211
-
212
- props: [
213
- 'podcast',
214
- 'hidePlay',
215
- 'displayDescription',
216
- 'arrowDirection',
217
- 'fetchConference',
218
- 'isAnimatorLive',
219
- ],
97
+ props: {
98
+ podcast: { default: ()=>({}), type: Object as ()=>Podcast},
99
+ hidePlay: { default: false, type: Boolean},
100
+ displayDescription: { default: false, type: Boolean},
101
+ arrowDirection: { default: 'up', type: String},
102
+ isAnimatorLive: { default: false, type: Boolean},
103
+ fetchConference: { default: undefined, type: Object as ()=>Conference},
104
+ },
220
105
  emits: ['hideDescription', 'showDescription'],
106
+ data() {
107
+ return {
108
+ isDescription: false as boolean,
109
+ };
110
+ },
221
111
  computed: {
222
112
  ...mapState({
223
- playingPodcast(state:any) {
113
+ playingPodcast(state: StoreState) {
224
114
  return (
225
115
  (state.player.podcast &&
226
116
  state.player.podcast.podcastId === this.podcast.podcastId) ||
@@ -232,37 +122,40 @@ export default defineComponent({
232
122
  );
233
123
  },
234
124
  }),
235
-
236
- isMobile() {
125
+ mainRubrique(): boolean{
126
+ return undefined!==state.podcastPage.mainRubrique && 0!==state.podcastPage.mainRubrique && true==this.podcast?.rubriqueIds?.includes(state.podcastPage.mainRubrique);
127
+ },
128
+ isPodcastmaker(): boolean {
129
+ return (state.generalParameters.podcastmaker as boolean);
130
+ },
131
+ isMobile(): boolean {
237
132
  return window.matchMedia('(hover: none)').matches;
238
133
  },
239
-
240
- isRecordedInLive():boolean {
134
+ isRecordedInLive(): boolean {
241
135
  return (
242
136
  undefined === this.fetchConference &&
243
137
  undefined !== this.podcast.conferenceId &&
244
138
  'READY_TO_RECORD' !== this.podcast.processingStatus
245
139
  );
246
140
  },
247
-
248
- isLiveToBeRecorded():boolean {
141
+ isLiveToBeRecorded(): boolean {
249
142
  return (
250
143
  undefined === this.fetchConference &&
251
144
  undefined !== this.podcast.conferenceId &&
252
145
  'READY_TO_RECORD' === this.podcast.processingStatus
253
146
  );
254
147
  },
255
- classicPodcastPlay():boolean {
148
+ classicPodcastPlay(): boolean {
256
149
  return (
257
- this.podcast &&
150
+ undefined!==this.podcast &&
258
151
  false !== this.podcast.valid &&
259
152
  ('READY_TO_RECORD' === this.podcast.processingStatus ||
260
153
  'READY' === this.podcast.processingStatus) &&
261
- !this.isLiveToBeRecorded &&
262
- this.podcast.availability.visibility
154
+ !this.isLiveToBeRecorded && undefined!==this.podcast.availability.visibility
155
+ && this.podcast.availability.visibility
263
156
  );
264
157
  },
265
- iconName() {
158
+ iconName(): string {
266
159
  if (this.isLiveToBeRecorded) return 'saooti-clock';
267
160
  if ('READY' === this.podcast.processingStatus || this.fetchConference) {
268
161
  if (false == this.podcast.valid) return 'saooti-checkmark';
@@ -282,7 +175,7 @@ export default defineComponent({
282
175
  return 'saooti-cancel-circle';
283
176
  return 'saooti-warning';
284
177
  },
285
- textVisible():string {
178
+ textVisible(): string {
286
179
  if (this.isLiveToBeRecorded)
287
180
  return this.$t('Podcast linked to waiting live');
288
181
  if ('READY' === this.podcast.processingStatus || this.fetchConference) {
@@ -303,8 +196,7 @@ export default defineComponent({
303
196
  return this.$t('Podcast in cancelled status');
304
197
  return this.$t('Podcast in error');
305
198
  },
306
-
307
- statusText():string {
199
+ statusText(): string {
308
200
  if (!this.fetchConference) return '';
309
201
  switch (this.fetchConference.status) {
310
202
  case 'PLANNED':
@@ -327,42 +219,56 @@ export default defineComponent({
327
219
  return '';
328
220
  }
329
221
  },
330
-
331
- recordingLive():boolean {
222
+ recordingLive(): boolean {
332
223
  return (
333
- this.fetchConference &&
334
- 'null' !== this.fetchConference &&
224
+ undefined !== this.fetchConference &&
225
+ -1 !== this.fetchConference.conferenceId &&
335
226
  ('RECORDING' === this.fetchConference.status ||
336
227
  'PENDING' === this.fetchConference.status)
337
228
  );
338
229
  },
230
+ clickPlayGoPage():boolean{
231
+ return (state.podcastPage.clickPlayGoPage as boolean);
232
+ },
339
233
  },
340
-
341
- data() {
342
- return {
343
- isDescription: false,
344
- };
234
+ watch: {
235
+ arrowDirection(): void {
236
+ if ('up' === this.arrowDirection) {
237
+ this.isDescription = true;
238
+ this.showDescription();
239
+ } else {
240
+ this.isDescription = false;
241
+ this.showDescription();
242
+ }
243
+ },
345
244
  },
346
-
245
+
347
246
  methods: {
348
- play() {
247
+ play(): void {
349
248
  if (this.isLiveToBeRecorded) {
350
249
  return;
351
250
  }
251
+ if(this.playingPodcast){
252
+ this.$store.commit('playerPause', "PLAYING"===this.$store.state.player.status);
253
+ return;
254
+ }
352
255
  if (!this.recordingLive) {
353
256
  this.$store.commit('playerPlayPodcast', this.podcast);
354
- return;
257
+ }else{
258
+ this.$store.commit('playerPlayPodcast', {
259
+ title: this.podcast.title,
260
+ audioUrl: this.podcast.audioUrl,
261
+ duration: this.podcast.duration,
262
+ conferenceId: this.fetchConference?.conferenceId,
263
+ livePodcastId: this.podcast.podcastId,
264
+ organisation: this.podcast.organisation,
265
+ });
266
+ }
267
+ if(this.clickPlayGoPage){
268
+ this.$router.push('/main/pub/podcast/'+this.podcast.podcastId);
355
269
  }
356
- this.$store.commit('playerPlayPodcast', {
357
- title: this.podcast.title,
358
- audioUrl: this.podcast.audioUrl,
359
- duration: this.podcast.duration,
360
- conferenceId: this.fetchConference.conferenceId,
361
- livePodcastId: this.podcast.podcastId,
362
- organisation: this.podcast.organisation.id,
363
- });
364
270
  },
365
- showDescription() {
271
+ showDescription(): void {
366
272
  if (this.isDescription) {
367
273
  this.$emit('hideDescription');
368
274
  } else {
@@ -371,17 +277,94 @@ export default defineComponent({
371
277
  this.isDescription = !this.isDescription;
372
278
  },
373
279
  },
280
+ })
281
+ </script>
374
282
 
375
- watch: {
376
- arrowDirection(newValue) {
377
- if ('up' === newValue) {
378
- this.isDescription = true;
379
- this.showDescription();
380
- } else {
381
- this.isDescription = false;
382
- this.showDescription();
283
+
284
+ <style lang="scss">
285
+ .octopus-app{
286
+ .live-image-status {
287
+ text-align: center;
288
+ width: 100%;
289
+ font-size: 0.6rem;
290
+ padding: 0.2rem 0;
291
+ color: white;
292
+ text-transform: uppercase;
293
+ position: absolute;
294
+ }
295
+
296
+ .background-icon{
297
+ border-radius: 50%;
298
+ width: 1rem;
299
+ height: 1rem;
300
+ font-size: 1rem;
301
+ right: 0;
302
+ bottom: 0;
303
+ margin: 5px;
304
+ position: absolute;
305
+ cursor: pointer;
306
+ z-index: 3;
307
+ }
308
+ .special-icon-play-button {
309
+ width: 30px;
310
+ height: 30px;
311
+ background-color: #ffd663;
312
+ border-radius: 50%;
313
+ position: absolute;
314
+ right: 4.5rem;
315
+ top: 6rem;
316
+ font-size: 0.9rem;
317
+ font-weight: bold;
318
+ display: flex;
319
+ align-items: center;
320
+ justify-content: center;
321
+ }
322
+ .transparent-background {
323
+ background-color: rgba(255, 255, 255, 0.5);
324
+ }
325
+ .podcast-image-play-button{
326
+ position: absolute;
327
+ display: flex;
328
+ align-items: center;
329
+ justify-content: center;
330
+ top: 0;
331
+ left: 0;
332
+ right: 0;
333
+ bottom: 0;
334
+ cursor: pointer;
335
+ flex-direction: column;
336
+ background: transparent;
337
+ border-width: 0;
338
+ &:focus{
339
+ background: rgba(0, 0, 0, 0.5);
340
+ }
341
+
342
+ .icon-container {
343
+ background: #00000050;
344
+ border-radius: 50%;
345
+ height: 3rem;
346
+ width: 3rem;
347
+ display: flex;
348
+ align-items: center;
349
+ justify-content: center;
350
+ &.error-icon {
351
+ background: #00000050 !important;
352
+ cursor: default !important;
383
353
  }
384
- },
385
- },
386
- });
387
- </script>
354
+ &:hover {
355
+ background: #00000030;
356
+ }
357
+ > .saooti-play {
358
+ font-size: 2em;
359
+ position: relative;
360
+ right: -0.2rem;
361
+ }
362
+ .big-icon-error {
363
+ font-size: 2em;
364
+ position: relative;
365
+ }
366
+ z-index: 2;
367
+ }
368
+ }
369
+ }
370
+ </style>