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