@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,6 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <div class="module-box text-center-mobile">
3
+ <div class="module-box text-center-mobile overflow-visible">
4
4
  <h3>{{ $t('Embed') }}</h3>
5
5
  <template v-if="!exclusive && (authenticated || notExclusive)">
6
6
  <div class="d-flex flex-column align-items-center">
@@ -16,130 +16,48 @@
16
16
  :src="iFrameSrc"
17
17
  scrolling="no"
18
18
  frameborder="0"
19
- :width="iFrameWidth"
19
+ width="100%"
20
20
  :height="iFrameHeight"
21
- class="maxIframe"
22
- ></iframe>
23
- <div class="d-flex flex-column">
24
- <button class="btn mb-3" @click="isShareModal = true">
25
- {{ $t('Share the player') }}
26
- </button>
27
- <template v-if="!isLiveReadyToRecord">
28
- <label
29
- for="iframe-select"
30
- class="d-inline"
31
- aria-label="select miniplayer"
32
- ></label>
33
- <select
34
- v-model="iFrameModel"
35
- id="iframe-select"
36
- class="frame-select input-no-outline"
37
- >
38
- <option value="default">{{ $t('Default version') }}</option>
39
- <option value="large">{{ $t('Large version') }}</option>
40
- <option value="emission" v-if="podcast && podcast.podcastId">{{
41
- $t('Emission version')
42
- }}</option>
43
- <option
44
- value="largeEmission"
45
- v-if="podcast && podcast.podcastId"
46
- >{{ $t('Large emission version') }}</option
47
- >
48
- <option
49
- value="largeSuggestion"
50
- v-if="podcast && podcast.podcastId"
51
- >{{ $t('Large suggestion version') }}</option
52
- >
53
- </select>
54
- </template>
55
- </div>
56
- <div class="d-flex justify-content-around mt-3 flex-grow w-100">
57
- <div class="d-flex flex-column align-items-center flex-shrink mr-3">
58
- <div class="font-weight-600">{{ $t('Choose color') }}</div>
59
- <swatches
60
- v-model="color"
61
- class="c-hand input-no-outline"
62
- show-fallback
63
- colors="text-advanced"
64
- popover-to="right"
65
- :data-color="color"
66
- ></swatches>
67
- </div>
68
- <div class="d-flex flex-column align-items-center">
69
- <div class="font-weight-600">{{ $t('Choose theme') }}</div>
70
- <div class="d-flex">
71
- <swatches
72
- v-model="theme"
73
- :data-theme="theme"
74
- class="c-hand input-no-outline mr-1"
75
- :swatch-style="{
76
- padding: '0px 0px',
77
- marginRight: '0px',
78
- marginBottom: '0px',
79
- border: '1px gray solid',
80
- }"
81
- :wrapper-style="{
82
- paddingTop: '0px',
83
- paddingLeft: '0px',
84
- paddingRight: '0px',
85
- paddingBottom: '0px',
86
- }"
87
- :colors="['#000000']"
88
- inline
89
- ></swatches>
90
- <swatches
91
- v-model="theme"
92
- :data-theme="theme"
93
- class="c-hand input-no-outline"
94
- :swatch-style="{
95
- padding: '0px 0px',
96
- marginRight: '0px',
97
- marginBottom: '0px',
98
- border: '1px gray solid',
99
- }"
100
- :wrapper-style="{
101
- paddingTop: '0px',
102
- paddingLeft: '0px',
103
- paddingRight: '0px',
104
- paddingBottom: '0px',
105
- }"
106
- :colors="['#ffffff']"
107
- inline
108
- ></swatches>
109
- </div>
110
- </div>
111
- </div>
112
- <div
113
- class="d-flex align-items-center flex-wrap"
21
+ class="max-iframe my-2"
22
+ />
23
+ <SharePlayerTypes
24
+ v-if="!isLiveReadyToRecord"
25
+ v-model:iFrameModel="iFrameModel"
26
+ :podcast="podcast"
27
+ :emission="emission"
28
+ :playlist="playlist"
29
+ :organisation-id="organisationId"
30
+ />
31
+ <SharePlayerColors
32
+ v-model:color="color"
33
+ v-model:theme="theme"
34
+ />
35
+ <ClassicCheckbox
114
36
  v-if="isPodcastNotVisible || playlist"
115
- >
116
- <div class="checkbox-saooti">
117
- <input
118
- type="checkbox"
119
- class="custom-control-input"
120
- id="isVisibleCheckbox"
121
- v-model="isVisible"
122
- />
123
- <label
124
- class="custom-control-label mr-2"
125
- for="isVisibleCheckbox"
126
- >{{ titleStillAvailable }}</label
127
- >
128
- </div>
129
- </div>
37
+ v-model:textInit="isVisible"
38
+ id-checkbox="is-visible-checkbox"
39
+ :label="titleStillAvailable"
40
+ />
130
41
  </div>
131
42
  <PlayerParameters
132
- v-if="!podcast || isEmission || isLargeEmission || isLargeSuggestion"
133
- :podcast="podcast"
134
- :playlist="playlist"
135
- :iFrameModel="iFrameModel"
136
- :isVisible="isVisible"
137
- @episodeNumbers="updateEpisodeNumber"
138
- @proceedReading="updateProceedReading"
139
- @isVisible="updateIsVisible"
140
- @iFrameNumber="updateIframeNumber"
141
- @startTime="updateStartTime"
43
+ v-if="isPlayerParameter"
44
+ :is-visible="isVisible"
45
+ :chose-number-episode="displayChoiceAllEpisodes|| isLargeSuggestion"
46
+ :display-choice-all-episodes="displayChoiceAllEpisodes"
47
+ @displayArticle="displayArticle = $event"
48
+ @episodeNumbers="episodeNumbers = $event"
49
+ @proceedReading="proceedReading = $event"
50
+ @isVisible="isVisible = $event"
51
+ @iFrameNumber="iFrameNumber = $event"
142
52
  />
53
+ <div class="d-flex flex-column align-items-center mt-3">
54
+ <button
55
+ class="btn btn-primary mb-3"
56
+ @click="isShareModal = true"
57
+ >
58
+ {{ $t('Share the player') }}
59
+ </button>
60
+ </div>
143
61
  </template>
144
62
  <div v-else-if="exclusive && authenticated">
145
63
  {{ $t('Only organisation members can share the content') }}
@@ -150,314 +68,232 @@
150
68
  </div>
151
69
  <ShareModalPlayer
152
70
  v-if="isShareModal"
71
+ :embed-link="iFrame"
72
+ :embedly-link="iFrameSrc"
73
+ :direct-link="podcast"
153
74
  @close="isShareModal = false"
154
- :embedLink="iFrame"
155
- :embedlyLink="iFrameSrc"
156
- :directLink="podcast"
157
- ></ShareModalPlayer>
75
+ />
158
76
  </div>
159
77
  </template>
160
78
 
161
- <style lang="scss">
162
- @import '../../../sass/_variables.scss';
163
- .custom-radio .custom-control-label {
164
- cursor: pointer;
165
- }
166
- .input-share-player {
167
- border: 1px solid #ddd;
168
- border-radius: 50px;
169
- &#number-input {
170
- margin: 0 1rem;
171
- width: 60px;
172
- }
173
- }
174
- .sticker {
175
- align-self: center;
176
- background: rgba($octopus-primary-color, 0.3);
177
- padding: 0.5rem;
178
- transition: all 0.5s ease;
179
- color: #41403e;
180
- letter-spacing: 1px;
181
- outline: none;
182
- box-shadow: 10px 10px 34px -15px hsla(0, 0%, 0%, 0.4);
183
- border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
184
- border: solid 2px #41403e;
185
- &:hover {
186
- box-shadow: 2px 8px 4px -6px hsla(0, 0%, 0%, 0.3);
187
- }
188
- }
189
- .maxIframe {
190
- max-width: 300px;
191
- }
192
- .vue-swatches__container {
193
- padding: 0 !important;
194
- background-color: transparent !important;
195
- }
196
- .vue-swatches__swatch--selected {
197
- border: 2px #40a372 solid !important;
198
- box-shadow: unset !important;
199
- -webkit-box-shadow: unset !important;
200
- }
201
- </style>
202
-
203
79
  <script lang="ts">
204
- import ShareModalPlayer from '../../misc/modal/ShareModalPlayer.vue';
205
- import PlayerParameters from './PlayerParameters.vue';
80
+ import { orgaComputed } from '../../mixins/orgaComputed';
206
81
  import { state } from '../../../store/paramStore';
207
- //@ts-ignore
208
- import Swatches from 'vue-swatches';
209
- import 'vue-swatches/dist/vue-swatches.min.css';
210
- import profileApi from '@/api/profile';
211
-
212
- import { defineComponent } from 'vue'
82
+ import octopusApi from '@saooti/octopus-api';
83
+ import { Podcast } from '@/store/class/general/podcast';
84
+ import { Emission } from '@/store/class/general/emission';
85
+ import { Playlist } from '@/store/class/general/playlist';
86
+ import { defineComponent, defineAsyncComponent } from 'vue';
87
+ const ShareModalPlayer = defineAsyncComponent(() => import('../../misc/modal/ShareModalPlayer.vue'));
88
+ const PlayerParameters = defineAsyncComponent(() => import('./PlayerParameters.vue'));
89
+ const SharePlayerTypes = defineAsyncComponent(() => import('./SharePlayerTypes.vue'));
90
+ const SharePlayerColors = defineAsyncComponent(() => import('./SharePlayerColors.vue'));
91
+ const ClassicCheckbox = defineAsyncComponent(() => import('../../form/ClassicCheckbox.vue'));
213
92
  export default defineComponent({
214
- props: [
215
- 'podcast',
216
- 'emission',
217
- 'organisationId',
218
- 'exclusive',
219
- 'notExclusive',
220
- 'playlist',
221
- 'isEducation',
222
- ],
223
-
224
93
  components: {
225
94
  ShareModalPlayer,
226
- Swatches,
95
+ SharePlayerColors,
227
96
  PlayerParameters,
97
+ SharePlayerTypes,
98
+ ClassicCheckbox
228
99
  },
229
-
230
- async created() {
231
- await this.initColor();
232
- if (this.isLiveReadyToRecord) {
233
- this.iFrameModel = 'large';
234
- }
100
+ mixins:[orgaComputed],
101
+ props: {
102
+ podcast: { default: undefined, type: Object as ()=> Podcast},
103
+ emission: { default: undefined, type: Object as ()=> Emission},
104
+ playlist: { default: undefined, type: Object as ()=> Playlist},
105
+ organisationId: { default: undefined, type: String},
106
+ isEducation: { default: false, type: Boolean},
107
+ exclusive: { default: false, type: Boolean},
108
+ notExclusive: { default: true, type: Boolean},
235
109
  },
236
110
 
237
111
  data() {
238
112
  return {
239
- iFrameModel: 'default',
240
- isShareModal: false,
241
- color: '#40a372',
242
- theme: '#ffffff',
243
- proceedReading: true,
244
- episodeNumbers: 'number',
245
- iFrameNumber: '3',
246
- startTime: 0,
247
- isVisible: false,
113
+ iFrameModel: 'default' as string,
114
+ isShareModal: false as boolean,
115
+ color: '#40a372' as string,
116
+ theme: '#000000' as string,
117
+ proceedReading: true as boolean,
118
+ episodeNumbers: 'number' as string,
119
+ iFrameNumber: '3' as string,
120
+ isVisible: false as boolean,
121
+ displayArticle: true as boolean,
122
+ colors: ['#000000', '#ffffff'],
248
123
  };
249
124
  },
125
+
250
126
  computed: {
251
- isEmission():boolean {
127
+ displayChoiceAllEpisodes():boolean{
128
+ return !this.podcast || this.isEmission || this.isLargeEmission;
129
+ },
130
+ baseUrl(): string{
131
+ return (state.podcastPage.MiniplayerUri as string);
132
+ },
133
+ isEmission(): boolean {
252
134
  return 'emission' === this.iFrameModel;
253
135
  },
254
- isLargeEmission():boolean {
255
- return 'largeEmission' === this.iFrameModel;
136
+ isLargeEmission(): boolean {
137
+ return 'emissionLarge' === this.iFrameModel;
256
138
  },
257
- isLargeSuggestion():boolean {
139
+ isLargeSuggestion(): boolean {
258
140
  return 'largeSuggestion' === this.iFrameModel;
259
141
  },
260
- titleStillAvailable():string {
261
- if (this.isPodcastNotVisible) return this.$t('Podcast still available');
262
- return this.$t('Podcasts still available');
142
+ titleStillAvailable(): string {
143
+ return this.isPodcastNotVisible ?this.$t('Podcast still available') : this.$t('Podcasts still available');
263
144
  },
264
- isLiveReadyToRecord():boolean {
145
+ isLiveReadyToRecord(): boolean {
265
146
  if (this.podcast)
266
147
  return (
267
- this.podcast.conferenceId &&
148
+ undefined !== this.podcast.conferenceId &&
268
149
  0 !== this.podcast.conferenceId &&
269
150
  this.podcast.processingStatus === 'READY_TO_RECORD'
270
151
  );
271
152
  return false;
272
153
  },
273
- noAd() {
274
- if (
275
- (this.podcast &&
276
- this.podcast.organisation.id !== this.organisationId &&
277
- 'NO' === this.podcast.monetisable) ||
278
- (this.podcast &&
279
- 'UNDEFINED' === this.podcast.monetisable &&
280
- 'NO' === this.podcast.emission.monetisable)
281
- ) {
282
- return true;
283
- }
284
- return false;
285
- },
286
- authenticated():boolean {
287
- return state.generalParameters.authenticated;
154
+ noAd(): boolean {
155
+ return (this.podcast?.organisation.id !== this.organisationId &&
156
+ 'NO' === this.podcast?.monetisable) ||
157
+ ('UNDEFINED' === this.podcast?.monetisable &&
158
+ 'NO' === this.podcast?.emission.monetisable);
288
159
  },
289
- iFrameSrc() {
290
- let url = [''];
291
- let iFrameNumber = '/' + this.iFrameNumber;
292
- if (
293
- (!this.podcast || this.isEmission || this.isLargeEmission) &&
294
- 'all' === this.episodeNumbers
295
- ) {
296
- iFrameNumber = '/0';
297
- }
298
- if (!this.podcast && !this.playlist) {
299
- if ('default' === this.iFrameModel) {
300
- url.push(
301
- `${state.podcastPage.MiniplayerUri}miniplayer/emission/${this.emission.emissionId}${iFrameNumber}`
302
- );
303
- } else {
304
- url.push(
305
- `${state.podcastPage.MiniplayerUri}miniplayer/emissionLarge/${this.emission.emissionId}${iFrameNumber}`
306
- );
160
+ iFrameSrc(): string {
161
+ const url = [''];
162
+ let iFrameNumber = this.displayChoiceAllEpisodes && 'all' === this.episodeNumbers ? '/0' : '/' + this.iFrameNumber;
163
+ url.push(`${this.baseUrl}miniplayer/`);
164
+ if (!this.podcast && !this.playlist && this.emission) {
165
+ switch (this.iFrameModel) {
166
+ case 'default': url.push('emission'); break;
167
+ case 'large': url.push('emissionLarge'); break;
168
+ default: url.push(`${this.iFrameModel}`);break;
307
169
  }
170
+ url.push(`/${this.emission.emissionId}${iFrameNumber}`);
308
171
  } else if (this.playlist) {
309
- if ('default' === this.iFrameModel) {
310
- url.push(
311
- `${state.podcastPage.MiniplayerUri}miniplayer/playlist/${this.playlist.playlistId}`
312
- );
313
- } else {
314
- url.push(
315
- `${state.podcastPage.MiniplayerUri}miniplayer/playlistLarge/${this.playlist.playlistId}`
316
- );
172
+ switch (this.iFrameModel) {
173
+ case 'default': url.push('playlist'); break;
174
+ case 'large': url.push('playlistLarge'); break;
175
+ default: url.push(`${this.iFrameModel}`);break;
317
176
  }
318
- } else {
177
+ url.push(`/${this.playlist.playlistId}`);
178
+ } else if(this.emission && this.podcast){
179
+ url.push(`${this.iFrameModel}/`);
319
180
  if (this.isEmission || this.isLargeEmission) {
320
- url.push(
321
- `${state.podcastPage.MiniplayerUri}miniplayer/${this.iFrameModel}/${this.emission.emissionId}${iFrameNumber}/${this.podcast.podcastId}`
322
- );
181
+ url.push(`${this.emission.emissionId}${iFrameNumber}/${this.podcast.podcastId}`);
323
182
  } else if (this.isLargeSuggestion) {
324
- url.push(
325
- `${state.podcastPage.MiniplayerUri}miniplayer/${this.iFrameModel}/${this.podcast.podcastId}${iFrameNumber}`
326
- );
327
- } else {
328
- url.push(
329
- `${state.podcastPage.MiniplayerUri}miniplayer/${this.iFrameModel}/${this.podcast.podcastId}`
330
- );
183
+ url.push(`${this.podcast.podcastId}${iFrameNumber}`);
184
+ } else {
185
+ url.push(`${this.podcast.podcastId}`);
331
186
  }
332
187
  }
333
188
  url.push('?distributorId=' + this.organisationId);
334
- url.push(
335
- '&color=' +
336
- this.color.substring(1) +
337
- '&theme=' +
338
- this.theme.substring(1)
339
- );
340
-
189
+ url.push(`&color=${this.color.substring(1)}&theme=${this.theme.substring(1)}`);
341
190
  if (!this.proceedReading) {
342
191
  url.push('&proceed=false');
343
192
  }
344
- url.push('&time=' + this.startTime);
193
+ if(!this.displayArticle){
194
+ url.push('&article=false');
195
+ }
345
196
  if (this.isVisible) {
346
- url.push('&key=' + window.btoa(this.dataTitle));
197
+ url.push('&key=' + window.btoa(this.dataTitle.toString()));
347
198
  }
348
199
  return url.join('');
349
200
  },
350
-
351
- iFrameWidth() {
352
- return '100%';
353
- },
354
-
355
- iFrameHeight() {
201
+ iFrameHeight(): string {
356
202
  switch (this.iFrameModel) {
357
203
  case 'large':
358
204
  if (this.podcast) return '180px';
359
205
  if ('number' === this.episodeNumbers) {
360
- switch (this.iFrameNumber) {
361
- case '1':
362
- return '185px';
363
- case '2':
364
- return '240px';
365
- case '3':
366
- return '290px';
367
- case '4':
368
- return '345px';
369
- case '5':
370
- return '390px';
371
- default:
372
- return '435px';
206
+ switch (this.iFrameNumber.toString()) {
207
+ case '1': return '270px';
208
+ case '2': return '320px';
209
+ case '3': return '360px';
210
+ case '4': return '420px';
211
+ case '5': return '420px';
212
+ default: return '420px';
373
213
  }
374
214
  }
375
215
  return '435px';
376
- case 'largeEmission':
216
+ case 'emissionLarge':
377
217
  case 'largeSuggestion':
378
218
  if ('number' !== this.episodeNumbers) return '510px';
379
- switch (this.iFrameNumber) {
380
- case '1':
381
- return '260px';
382
- case '2':
383
- return '315px';
384
- case '3':
385
- return '365px';
386
- case '4':
387
- return '420px';
388
- case '5':
389
- return '465px';
390
- default:
391
- return '510px';
219
+ switch (this.iFrameNumber.toString()) {
220
+ case '1':return '315px';
221
+ case '2':return '365px';
222
+ case '3':return '420px';
223
+ case '4':return '470px';
224
+ case '5':return '470px';
225
+ default:return '470px';
392
226
  }
393
- case 'emission':
394
- return '530px';
227
+ case 'emission':return '530px';
395
228
  default:
396
229
  if (this.podcast) return '520px';
397
230
  return '530px';
398
231
  }
399
232
  },
400
-
401
- iFrame() {
402
- return `<iframe src="${this.iFrameSrc}" width="${this.iFrameWidth}" height="${this.iFrameHeight}" scrolling="no" frameborder="0"></iframe>`;
233
+ iFrame(): string {
234
+ return `<iframe src="${this.iFrameSrc}" width="100%" height="${this.iFrameHeight}" scrolling="no" frameborder="0"></iframe>`;
403
235
  },
404
-
405
- isPodcastNotVisible():boolean {
236
+ isPodcastNotVisible(): boolean {
406
237
  return (
407
- this.podcast &&
238
+ undefined !== this.podcast &&
408
239
  !this.podcast.availability.visibility &&
409
240
  ('default' === this.iFrameModel || 'large' === this.iFrameModel)
410
241
  );
411
242
  },
412
-
413
- dataTitle():any {
243
+ dataTitle(): number {
414
244
  if (this.podcast) return this.podcast.podcastId;
415
245
  if (this.emission) return this.emission.emissionId;
416
- return this.playlist.playlistId;
246
+ if (this.playlist) return this.playlist.playlistId;
247
+ return 0;
417
248
  },
249
+ isPlayerParameter(): boolean{
250
+ return (!this.podcast || (this.podcast.article && 0 !== this.podcast.article.length) || this.isEmission || this.isLargeEmission || this.isLargeSuggestion) && !this.playlist;
251
+ }
252
+ },
253
+ async created() {
254
+ await this.initColor();
255
+ if (this.isLiveReadyToRecord) {
256
+ this.iFrameModel = 'large';
257
+ }
418
258
  },
419
-
420
259
  methods: {
421
- async initColor() {
260
+ async initColor(): Promise<void> {
422
261
  if (!this.authenticated) return;
423
- let orgaId = undefined;
424
- if (this.podcast) {
425
- orgaId = this.podcast.organisation.id;
426
- } else if (this.playlist) {
427
- orgaId = this.playlist.organisation.id;
428
- } else {
429
- orgaId = this.emission.orga.id;
430
- }
431
- const data:any = await profileApi.fetchOrganisationAttibutes(
432
- this.$store,
433
- orgaId
434
- );
435
- if (data.hasOwnProperty('COLOR')) {
436
- this.color = data.COLOR;
437
- } else {
438
- this.color = '#40a372';
439
- }
440
- if (data.hasOwnProperty('THEME')) {
441
- this.theme = data.THEME;
442
- } else {
443
- this.theme = '#ffffff';
262
+ let data;
263
+ if(this.$store.state.organisation?.attributes && Object.keys(this.$store.state.organisation.attributes).length > 1){
264
+ data = this.$store.state.organisation.attributes;
265
+ }else{
266
+ data= await octopusApi.fetchData<{[key:string]:string}>(0, 'organisation/attributes/'+this.myOrganisationId);
444
267
  }
445
- },
446
- updateEpisodeNumber(value: string) {
447
- this.episodeNumbers = value;
448
- },
449
- updateProceedReading(value: boolean) {
450
- this.proceedReading = value;
451
- },
452
- updateIframeNumber(value: string) {
453
- this.iFrameNumber = value;
454
- },
455
- updateStartTime(value: number) {
456
- this.startTime = value;
457
- },
458
- updateIsVisible(value: boolean) {
459
- this.isVisible = value;
268
+ this.color = Object.prototype.hasOwnProperty.call(data,'COLOR') ? data.COLOR : '#40a372';
269
+ this.theme = Object.prototype.hasOwnProperty.call(data,'THEME') ? data.THEME : '#000000';
460
270
  },
461
271
  },
462
- });
272
+ })
463
273
  </script>
274
+
275
+ <style lang="scss">
276
+ @import '../../../sass/_variables.scss';
277
+ .octopus-app{
278
+ .sticker {
279
+ align-self: center;
280
+ background: $octopus-primary-dark;
281
+ padding: 0.5rem;
282
+ transition: all 0.5s ease;
283
+ color: white;
284
+ font-weight: bold;
285
+ letter-spacing: 1px;
286
+ box-shadow: 10px 10px 34px -15px hsla(0, 0%, 0%, 0.4);
287
+ border-radius: 255px 15px 225px 15px/15px 225px 15px 255px;
288
+ border: solid 2px #41403e;
289
+ &:hover {
290
+ box-shadow: 2px 8px 4px -6px hsla(0, 0%, 0%, 0.3);
291
+ background: transparent;
292
+ color: $octopus-primary-dark;
293
+ }
294
+ }
295
+ .max-iframe {
296
+ max-width: 300px;
297
+ }
298
+ }
299
+ </style>