@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,209 +1,167 @@
1
1
  <template>
2
- <b-card no-body class="player-parameters mt-3" v-if="!playlist">
3
- <b-card-header header-tag="header" role="tab">
4
- <b-button block v-b-toggle.playerParameters variant="info">{{
5
- $t('player parameters')
6
- }}</b-button>
7
- </b-card-header>
8
- <b-collapse id="playerParameters" role="tabpanel">
9
- <b-card-body>
10
- <b-card-text>
2
+ <div
3
+ id="accordionParameters"
4
+ class="accordion mt-3"
5
+ >
6
+ <div class="accordion-item">
7
+ <h2
8
+ id="labelPlayerParameter"
9
+ class="accordion-header mb-0"
10
+ >
11
+ <button
12
+ class="accordion-button collapsed"
13
+ type="button"
14
+ data-bs-toggle="collapse"
15
+ data-bs-target="#playerParameters"
16
+ aria-expanded="false"
17
+ aria-controls="playerParameters"
18
+ >
19
+ {{ $t('player parameters') }}
20
+ </button>
21
+ </h2>
22
+ <div
23
+ id="playerParameters"
24
+ class="accordion-collapse collapse"
25
+ titleledby="labelPlayerParameter"
26
+ data-bs-parent="#accordionParameters"
27
+ >
28
+ <div class="accordion-body">
11
29
  <div
12
- class="d-flex flex-column flex-grow"
13
- v-if="
14
- !podcast || isEmission || isLargeEmission || isLargeSuggestion
15
- "
30
+ v-if="choseNumberEpisode"
31
+ class="d-flex flex-column flex-grow-1"
16
32
  >
17
33
  <div
18
- class="d-flex align-items-center w-100 flex-wrap mt-1"
19
- v-if="!podcast || isEmission || isLargeEmission"
34
+ v-if="displayChoiceAllEpisodes"
35
+ class="d-flex align-items-center flex-wrap mt-1"
20
36
  >
21
- <b-form-radio
37
+ <input
22
38
  v-model="episodeNumbers"
39
+ class="form-check-input"
40
+ type="radio"
23
41
  name="episodeNumbers"
24
42
  value="all"
25
- ></b-form-radio>
26
- <span class="flex-shrink">{{ $t('Show every episode') }}</span>
43
+ >
44
+ <span class="flex-shrink-0">{{ $t('Show every episode') }}</span>
27
45
  </div>
28
46
  <div
29
47
  class="d-flex align-items-center flex-wrap"
30
- :class="!podcast || isEmission || isLargeEmission ? '' : 'mt-3'"
48
+ :class="displayChoiceAllEpisodes ? '' : 'mt-3'"
31
49
  >
32
- <b-form-radio
50
+ <input
51
+ v-if="displayChoiceAllEpisodes"
33
52
  v-model="episodeNumbers"
53
+ class="form-check-input"
54
+ type="radio"
34
55
  name="episodeNumbers"
35
56
  value="number"
36
- v-if="!podcast || isEmission || isLargeEmission"
37
- ></b-form-radio>
38
- <span class="flex-shrink">{{ $t('Show') }}</span>
57
+ >
58
+ <span class="flex-shrink-0">{{ $t('Show') }}</span>
39
59
  <input
40
60
  id="number-input"
41
- type="number"
42
61
  v-model="iFrameNumber"
62
+ type="number"
43
63
  min="1"
44
64
  max="50"
45
- class="input-share-player input-no-outline text-center m-2"
46
- />
65
+ class="input-share-player text-center m-2"
66
+ >
47
67
  <label
48
68
  for="number-input"
49
- class="d-inline"
50
- :aria-label="$t('Number of player podcasts')"
51
- ></label>
52
- <span class="flex-shrink">{{ $t('Last podcasts') }}</span>
53
- </div>
54
- <div class="checkbox-saooti">
55
- <input
56
- type="checkbox"
57
- class="custom-control-input"
58
- id="proceedCheck"
59
- v-model="proceedReading"
69
+ :title="$t('Number of player podcasts')"
60
70
  />
61
- <label class="custom-control-label" for="proceedCheck">{{
62
- $t('Proceed reading')
63
- }}</label>
64
- </div>
65
- <div class="checkbox-saooti">
66
- <input
67
- type="checkbox"
68
- class="custom-control-input"
69
- id="isVisibleCheckbox"
70
- v-model="isVisibleTemp"
71
- />
72
- <label
73
- class="custom-control-label mr-2"
74
- for="isVisibleCheckbox"
75
- >{{ $t('Podcasts still available') }}</label
76
- >
71
+ <span class="flex-shrink-0">{{ $t('Last podcasts') }}</span>
77
72
  </div>
73
+ <ClassicCheckbox
74
+ v-model:textInit="proceedReading"
75
+ id-checkbox="proceed-reading-checkbox"
76
+ :label="$t('Proceed reading')"
77
+ />
78
+ <ClassicCheckbox
79
+ v-model:textInit="isVisibleTemp"
80
+ id-checkbox="is-visible-checkbox"
81
+ :label="$t('Podcasts still available')"
82
+ />
78
83
  </div>
79
- <!-- <div class="d-flex align-items-center flex-wrap" v-if="podcast && iFrameModel !== 'emission'">
80
- <div class="checkbox-saooti">
81
- <input type="checkbox" class="custom-control-input" id="startTime" v-model="startTime">
82
- <label class="custom-control-label mr-2" for="startTime">{{$t('Start at')}}</label>
83
- </div>
84
- <input
85
- ref="minutesRef"
86
- type="number"
87
- :value="minutes"
88
- min="0"
89
- class="input-share-player input-no-outline"
90
- @change="onDurationChange"/>
91
- <div class="mr-1 ml-1">:</div>
92
- <input
93
- ref="secondesRef"
94
- type="number"
95
- :value="secondes"
96
- min="0"
97
- max="59"
98
- class="input-share-player input-no-outline"
99
- @change="onDurationChange"/>
100
- </div> -->
101
- </b-card-text>
102
- </b-card-body>
103
- </b-collapse>
104
- </b-card>
84
+ <div
85
+ v-else
86
+ class="d-flex flex-column flex-grow-1"
87
+ >
88
+ <ClassicCheckbox
89
+ v-model:textInit="displayArticle"
90
+ id-checkbox="display-article-checkbox"
91
+ :label="$t('Display associated article')"
92
+ />
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ </div>
105
98
  </template>
106
- <style lang="scss">
107
- .player-parameters.card {
108
- border: 0;
109
- .btn {
110
- border-radius: 0;
111
- }
112
- .card-header {
113
- border: 0;
114
- background-color: #fafafa;
115
- padding: 0;
116
- }
117
- .card-body {
118
- padding: 0.25rem;
119
- border: 0.05rem solid #eee;
120
- background-color: #fafafa;
121
- .custom-control {
122
- padding-left: 0;
123
- }
124
- input[type='number'] {
125
- padding-left: 10px;
126
- text-align: center;
127
- width: 90px;
128
- }
129
- }
130
- }
131
- </style>
99
+
132
100
  <script lang="ts">
133
- import { defineComponent, ref } from 'vue'
101
+ import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
102
+ import { defineComponent } from 'vue'
134
103
  export default defineComponent({
135
- props: ['podcast', 'playlist', 'iFrameModel', 'isVisible'],
104
+ components:{
105
+ ClassicCheckbox,
106
+ },
107
+ props: {
108
+ isVisible: { default: false, type: Boolean},
109
+ choseNumberEpisode: {default: false, type: Boolean},
110
+ displayChoiceAllEpisodes: {default: false, type: Boolean}
111
+ },
112
+ emits: ['episodeNumbers', 'proceedReading', 'isVisible', 'iFrameNumber', 'displayArticle'],
136
113
 
137
- emits: ['startTime', 'episodeNumbers', 'proceedReading', 'isVisible', 'iFrameNumber'],
138
114
  data() {
139
115
  return {
140
- proceedReading: true,
141
- episodeNumbers: 'number',
142
- iFrameNumberPriv: '3',
143
- minutes: 0,
144
- secondes: 0,
145
- startTime: true,
146
- isVisibleTemp: this.isVisible,
147
- };
148
- },
149
- setup() {
150
- const minutesRef:any =ref(null);
151
- const secondesRef:any =ref(null);
152
- return {
153
- minutesRef,secondesRef
116
+ proceedReading: true as boolean,
117
+ episodeNumbers: 'number' as string,
118
+ iFrameNumberPriv: '3' as string,
119
+ isVisibleTemp: this.isVisible as boolean,
120
+ displayArticle: true as boolean,
154
121
  };
155
122
  },
156
123
  computed: {
157
124
  iFrameNumber: {
158
- get(): any {
125
+ get(): string {
159
126
  return this.iFrameNumberPriv;
160
127
  },
161
- set(value:any) {
162
- let val = parseInt(value, 10);
128
+ set(value: string) {
129
+ const val = parseInt(value, 10);
163
130
  if (!isNaN(val) && val >= 1 && val <= 50) {
164
131
  this.iFrameNumberPriv = value;
165
132
  }
166
133
  },
167
134
  },
168
- isEmission():boolean {
169
- return 'emission' === this.iFrameModel;
170
- },
171
- isLargeEmission():boolean {
172
- return 'largeEmission' === this.iFrameModel;
173
- },
174
- isLargeSuggestion():boolean {
175
- return 'largeSuggestion' === this.iFrameModel;
176
- },
177
- },
178
-
179
- methods: {
180
- onDurationChange() {
181
- if (this.startTime) {
182
- let minutes = parseInt(this.minutesRef.value, 10);
183
- let secondes = parseInt(this.secondesRef.value, 10);
184
- this.$emit('startTime', minutes * 60 + secondes);
185
- } else {
186
- this.$emit('startTime', 0);
187
- }
188
- },
189
135
  },
190
-
191
136
  watch: {
192
- episodeNumbers() {
137
+ episodeNumbers(): void {
193
138
  this.$emit('episodeNumbers', this.episodeNumbers);
194
139
  },
195
- proceedReading() {
140
+ proceedReading(): void {
196
141
  this.$emit('proceedReading', this.proceedReading);
197
142
  },
198
- isVisibleTemp() {
143
+ isVisibleTemp(): void {
199
144
  this.$emit('isVisible', this.isVisibleTemp);
200
145
  },
201
- isVisible() {
146
+ isVisible(): void {
202
147
  this.isVisibleTemp = this.isVisible;
203
148
  },
204
- iFrameNumberPriv() {
149
+ iFrameNumberPriv(): void {
205
150
  this.$emit('iFrameNumber', this.iFrameNumberPriv);
206
151
  },
152
+ displayArticle(): void{
153
+ this.$emit('displayArticle', this.displayArticle);
154
+ }
207
155
  },
208
- });
156
+ })
209
157
  </script>
158
+
159
+ <style lang="scss">
160
+ .octopus-app{
161
+ .input-share-player {
162
+ border: 1px solid #ddd;
163
+ border-radius: 50px;
164
+ width: 60px;
165
+ }
166
+ }
167
+ </style>
@@ -0,0 +1,96 @@
1
+ <template>
2
+ <div class="d-flex flex-column align-items-center">
3
+ <qrcode-vue
4
+ :value="url"
5
+ :size="size"
6
+ level="H"
7
+ :foreground="color"
8
+ class="myQrCode"
9
+ :margin="2"
10
+ />
11
+ <ClassicCheckbox
12
+ v-if="'#000000'!==otherColor"
13
+ v-model:textInit="isNotBlack"
14
+ class="flex-shrink-0"
15
+ id-checkbox="is-black-qr-code"
16
+ :label="$t('Use organization color')"
17
+ />
18
+ <button
19
+ class="btn m-3"
20
+ @click="download"
21
+ >
22
+ {{ $t('Download') }}
23
+ </button>
24
+ <Snackbar
25
+ ref="snackbar"
26
+ position="bottom-left"
27
+ />
28
+ </div>
29
+ </template>
30
+
31
+ <script lang="ts">
32
+ import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
33
+ import { state } from '../../../store/paramStore';
34
+ import octopusApi from '@saooti/octopus-api';
35
+ import Snackbar from '../../misc/Snackbar.vue';
36
+ import QrcodeVue from 'qrcode.vue'
37
+ import { defineComponent } from 'vue'
38
+ import SnackbarVue from '../../misc/Snackbar.vue';
39
+ export default defineComponent({
40
+ name: 'QrCode',
41
+
42
+ components: {
43
+ Snackbar,
44
+ QrcodeVue,
45
+ ClassicCheckbox
46
+ },
47
+ props: {
48
+ url: { default: '', type: String},
49
+ },
50
+
51
+ data() {
52
+ return {
53
+ size: 200 as number,
54
+ color: "#000000" as string,
55
+ otherColor:"#000000" as string,
56
+ isNotBlack: false as boolean,
57
+ };
58
+ },
59
+ watch:{
60
+ isNotBlack(){
61
+ this.color = this.isNotBlack ? this.otherColor : "#000000";
62
+ }
63
+ },
64
+ created(){
65
+ this.initColor();
66
+ },
67
+ methods:{
68
+ download(): void{
69
+ const link = document.createElement('a');
70
+ link.download = 'qrcode.png';
71
+ const canvas = document.getElementsByClassName('myQrCode');
72
+ if(canvas && canvas.length > 0 && canvas[0]){
73
+ link.href = (canvas[0] as HTMLCanvasElement).toDataURL();
74
+ link.click();
75
+ (this.$refs.snackbar as InstanceType<typeof SnackbarVue>).open(this.$t('Download started'));
76
+ }
77
+ },
78
+ async initColor(): Promise<void> {
79
+ if(state.generalParameters.podcastmaker && state.generalParameters.podcastmakerColor){
80
+ this.otherColor = state.generalParameters.podcastmakerColor;
81
+ return;
82
+ }
83
+ if (!state.generalParameters.authenticated) return;
84
+ let data;
85
+ if(this.$store.state.organisation?.attributes && Object.keys(this.$store.state.organisation.attributes).length > 1){
86
+ data = this.$store.state.organisation.attributes;
87
+ }else{
88
+ data= await octopusApi.fetchData<{[key:string]:string}>(0, 'organisation/attributes/'+state.generalParameters.organisationId);
89
+ }
90
+ if (Object.prototype.hasOwnProperty.call(data,'COLOR')) {
91
+ this.otherColor = data.COLOR;
92
+ }
93
+ },
94
+ }
95
+ })
96
+ </script>