@saooti/octopus-sdk 37.0.5 → 37.0.7

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 (263) hide show
  1. package/README.md +2 -2
  2. package/index.html +1 -0
  3. package/index.ts +21 -21
  4. package/package.json +26 -20
  5. package/public/css/fonts/icomoon.eot +0 -0
  6. package/public/css/fonts/icomoon.svg +1 -1
  7. package/public/css/fonts/icomoon.ttf +0 -0
  8. package/public/css/fonts/icomoon.woff +0 -0
  9. package/public/css/fonts/montserrat/Montserrat-Black.ttf +0 -0
  10. package/public/css/fonts/montserrat/Montserrat-BlackItalic.ttf +0 -0
  11. package/public/css/fonts/montserrat/Montserrat-Bold.ttf +0 -0
  12. package/public/css/fonts/montserrat/Montserrat-BoldItalic.ttf +0 -0
  13. package/public/css/fonts/montserrat/Montserrat-ExtraBold.ttf +0 -0
  14. package/public/css/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf +0 -0
  15. package/public/css/fonts/montserrat/Montserrat-ExtraLight.ttf +0 -0
  16. package/public/css/fonts/montserrat/Montserrat-ExtraLightItalic.ttf +0 -0
  17. package/public/css/fonts/montserrat/Montserrat-Italic.ttf +0 -0
  18. package/public/css/fonts/montserrat/Montserrat-Light.ttf +0 -0
  19. package/public/css/fonts/montserrat/Montserrat-LightItalic.ttf +0 -0
  20. package/public/css/fonts/montserrat/Montserrat-Medium.ttf +0 -0
  21. package/public/css/fonts/montserrat/Montserrat-MediumItalic.ttf +0 -0
  22. package/public/css/fonts/montserrat/Montserrat-Regular.ttf +0 -0
  23. package/public/css/fonts/montserrat/Montserrat-SemiBold.ttf +0 -0
  24. package/public/css/fonts/montserrat/Montserrat-SemiBoldItalic.ttf +0 -0
  25. package/public/css/fonts/montserrat/Montserrat-Thin.ttf +0 -0
  26. package/public/css/fonts/montserrat/Montserrat-ThinItalic.ttf +0 -0
  27. package/public/css/fonts/montserrat/style.css +28 -0
  28. package/public/css/fonts/style.css +5 -5
  29. package/src/App.vue +69 -60
  30. package/src/api/classicCrud.ts +12 -12
  31. package/src/api/initialize.ts +1 -1
  32. package/src/assets/bootstrap.scss +9 -0
  33. package/src/assets/general.scss +1 -1
  34. package/src/assets/share.scss +1 -1
  35. package/src/components/display/aggregator/RssSection.vue +3 -3
  36. package/src/components/display/categories/CategoryChooser.vue +73 -60
  37. package/src/components/display/categories/CategoryFilter.vue +134 -90
  38. package/src/components/display/categories/CategoryList.vue +76 -62
  39. package/src/components/display/comments/AddCommentModal.vue +44 -44
  40. package/src/components/display/comments/CommentBasicView.vue +38 -30
  41. package/src/components/display/comments/CommentInput.vue +122 -110
  42. package/src/components/display/comments/CommentItem.vue +144 -102
  43. package/src/components/display/comments/CommentList.vue +117 -85
  44. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  45. package/src/components/display/comments/CommentPlayer.vue +39 -41
  46. package/src/components/display/comments/CommentSection.vue +68 -53
  47. package/src/components/display/edit/EditBox.vue +7 -7
  48. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  49. package/src/components/display/edit/EditCommentBox.vue +34 -36
  50. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  51. package/src/components/display/emission/EmissionItem.vue +47 -35
  52. package/src/components/display/emission/EmissionList.vue +111 -83
  53. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  54. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  55. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  56. package/src/components/display/filter/DateFilter.vue +38 -38
  57. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  58. package/src/components/display/filter/ProductorSearch.vue +55 -47
  59. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  60. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  61. package/src/components/display/filter/SearchOrder.vue +16 -11
  62. package/src/components/display/list/ListPaginate.vue +72 -70
  63. package/src/components/display/list/PaginateParams.vue +29 -30
  64. package/src/components/display/list/PaginateSection.vue +210 -0
  65. package/src/components/display/list/SwiperList.vue +28 -32
  66. package/src/components/display/live/CountDown.vue +12 -14
  67. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  68. package/src/components/display/live/LiveItem.vue +42 -26
  69. package/src/components/display/live/LiveList.vue +92 -65
  70. package/src/components/display/live/RadioCurrently.vue +47 -42
  71. package/src/components/display/live/RadioImage.vue +40 -42
  72. package/src/components/display/live/RadioItem.vue +15 -22
  73. package/src/components/display/live/RadioList.vue +24 -21
  74. package/src/components/display/live/RadioPlanning.vue +105 -68
  75. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  76. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  77. package/src/components/display/participant/ParticipantItem.vue +89 -76
  78. package/src/components/display/participant/ParticipantList.vue +90 -60
  79. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  80. package/src/components/display/playlist/PlaylistList.vue +70 -52
  81. package/src/components/display/playlist/PodcastList.vue +61 -50
  82. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  83. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  84. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  85. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  86. package/src/components/display/podcasts/PodcastImage.vue +129 -138
  87. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  88. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  89. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  90. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  91. package/src/components/display/podcasts/PodcastItemInfo.vue +63 -65
  92. package/src/components/display/podcasts/PodcastList.vue +115 -84
  93. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  94. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  95. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  96. package/src/components/display/podcasts/TagList.vue +33 -37
  97. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  98. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  99. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  100. package/src/components/display/sharing/QrCode.vue +52 -46
  101. package/src/components/display/sharing/ShareButtons.vue +25 -27
  102. package/src/components/display/sharing/ShareButtonsIntern.vue +182 -155
  103. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  104. package/src/components/display/sharing/SharePlayer.vue +207 -127
  105. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  106. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  107. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  108. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  109. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  110. package/src/components/form/ClassicCheckbox.vue +32 -31
  111. package/src/components/form/ClassicDatePicker.vue +47 -49
  112. package/src/components/form/ClassicInputText.vue +99 -98
  113. package/src/components/form/ClassicLoading.vue +11 -14
  114. package/src/components/form/ClassicMultiselect.vue +125 -126
  115. package/src/components/form/ClassicRadio.vue +15 -18
  116. package/src/components/form/ClassicSearch.vue +17 -23
  117. package/src/components/form/ClassicSelect.vue +35 -27
  118. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +94 -109
  119. package/src/components/misc/AcpmImage.vue +26 -0
  120. package/src/components/misc/ClassicAccordion.vue +69 -0
  121. package/src/components/misc/ClassicNav.vue +117 -0
  122. package/src/components/misc/ClassicPopover.vue +212 -0
  123. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  124. package/src/components/misc/ErrorMessage.vue +9 -17
  125. package/src/components/misc/FooterSection.vue +198 -0
  126. package/src/components/misc/HomeDropdown.vue +67 -64
  127. package/src/components/misc/LeftMenu.vue +115 -79
  128. package/src/components/misc/ProgressBar.vue +36 -32
  129. package/src/components/misc/SnackBar.vue +169 -0
  130. package/src/components/misc/TopBar.vue +161 -115
  131. package/src/components/misc/modal/ClassicModal.vue +99 -103
  132. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  133. package/src/components/misc/modal/MessageModal.vue +22 -28
  134. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  135. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  136. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  137. package/src/components/misc/player/PlayerCompact.vue +47 -62
  138. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  139. package/src/components/misc/player/PlayerLarge.vue +66 -62
  140. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  141. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  142. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  143. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  144. package/src/components/mixins/cookies.ts +11 -10
  145. package/src/components/mixins/displayMethods.ts +5 -4
  146. package/src/components/mixins/handle403.ts +9 -9
  147. package/src/components/mixins/imageProxy.ts +14 -7
  148. package/src/components/mixins/init.ts +31 -16
  149. package/src/components/mixins/orgaComputed.ts +7 -7
  150. package/src/components/mixins/organisationFilter.ts +36 -22
  151. package/src/components/mixins/player/playerComment.ts +46 -37
  152. package/src/components/mixins/player/playerDisplay.ts +122 -87
  153. package/src/components/mixins/player/playerLive.ts +65 -43
  154. package/src/components/mixins/player/playerLogic.ts +133 -88
  155. package/src/components/mixins/player/playerTranscript.ts +48 -30
  156. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  157. package/src/components/mixins/selenium.ts +2 -2
  158. package/src/components/mixins/tagOfMixins.ts +11 -11
  159. package/src/components/pages/CategoryPage.vue +43 -0
  160. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  161. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  162. package/src/components/pages/Error403Page.vue +20 -19
  163. package/src/components/pages/HomePage.vue +144 -0
  164. package/src/components/pages/LivesPage.vue +66 -0
  165. package/src/components/pages/PageNotFound.vue +33 -22
  166. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  167. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  168. package/src/components/pages/PlaylistPage.vue +175 -0
  169. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  170. package/src/components/pages/PodcastPage.vue +365 -0
  171. package/src/components/pages/PodcastsPage.vue +152 -0
  172. package/src/components/pages/RadioPage.vue +131 -0
  173. package/src/components/pages/RubriquePage.vue +45 -0
  174. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  175. package/src/helper/dom.ts +1 -1
  176. package/src/helper/duration.ts +10 -4
  177. package/src/helper/useEventListener.ts +7 -8
  178. package/src/i18n.ts +31 -30
  179. package/src/locale/de.ts +263 -257
  180. package/src/locale/educationen.ts +13 -13
  181. package/src/locale/educationfr.ts +1 -1
  182. package/src/locale/en.ts +323 -324
  183. package/src/locale/es.ts +325 -318
  184. package/src/locale/fr.ts +330 -324
  185. package/src/locale/it.ts +332 -328
  186. package/src/locale/messages.ts +9 -9
  187. package/src/locale/sl.ts +315 -319
  188. package/src/main.ts +28 -31
  189. package/src/router/router.ts +218 -198
  190. package/src/shims-tsx.d.ts +1 -1
  191. package/src/shims-vue.d.ts +1 -1
  192. package/src/stores/ApiStore.ts +44 -44
  193. package/src/stores/AuthStore.ts +24 -16
  194. package/src/stores/CommentStore.ts +13 -11
  195. package/src/stores/FilterStore.ts +25 -15
  196. package/src/stores/GeneralStore.ts +15 -15
  197. package/src/stores/ParamSdkStore.ts +179 -137
  198. package/src/stores/PlayerStore.ts +139 -125
  199. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  200. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  201. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  202. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  203. package/src/stores/class/conference/conference.ts +10 -9
  204. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  205. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  206. package/src/stores/class/conference/studioCall.ts +6 -6
  207. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  208. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  209. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  210. package/src/stores/class/general/audioView.ts +19 -19
  211. package/src/stores/class/general/category.ts +1 -1
  212. package/src/stores/class/general/classicSelectType.ts +2 -3
  213. package/src/stores/class/general/customPlayer.ts +8 -8
  214. package/src/stores/class/general/emission.ts +20 -21
  215. package/src/stores/class/general/fetchParam.ts +8 -2
  216. package/src/stores/class/general/initState.ts +31 -31
  217. package/src/stores/class/general/interfacePageable.ts +13 -13
  218. package/src/stores/class/general/ituneCategory.ts +4 -4
  219. package/src/stores/class/general/listReturn.ts +12 -12
  220. package/src/stores/class/general/media.ts +7 -7
  221. package/src/stores/class/general/organisation.ts +9 -10
  222. package/src/stores/class/general/pageable.ts +10 -10
  223. package/src/stores/class/general/participant.ts +7 -7
  224. package/src/stores/class/general/player.ts +30 -28
  225. package/src/stores/class/general/playlist.ts +17 -19
  226. package/src/stores/class/general/podcast.ts +19 -19
  227. package/src/stores/class/general/sortPageable.ts +4 -4
  228. package/src/stores/class/general/soundcastCategory.ts +7 -7
  229. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  230. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  231. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  232. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  233. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  234. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  235. package/src/stores/class/radio/canal.ts +4 -4
  236. package/src/stores/class/radio/live.ts +6 -6
  237. package/src/stores/class/radio/mix.ts +16 -16
  238. package/src/stores/class/radio/playlistMedia.ts +7 -7
  239. package/src/stores/class/radio/recurrence.ts +54 -54
  240. package/src/stores/class/rss/rssEmission.ts +13 -13
  241. package/src/stores/class/rss/rssInfo.ts +7 -7
  242. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  243. package/src/stores/class/rubrique/rubrique.ts +1 -1
  244. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  245. package/src/stores/class/stat/statArrayObject.ts +26 -26
  246. package/src/stores/class/stat/statGraph.ts +6 -6
  247. package/src/stores/class/user/person.ts +4 -2
  248. package/src/stores/class/user/profile.ts +4 -2
  249. package/src/stores/class/user/userKeycloak.ts +4 -5
  250. package/src/components/display/list/Paginate.vue +0 -181
  251. package/src/components/misc/Accordion.vue +0 -78
  252. package/src/components/misc/Footer.vue +0 -165
  253. package/src/components/misc/Nav.vue +0 -119
  254. package/src/components/misc/Popover.vue +0 -193
  255. package/src/components/misc/Snackbar.vue +0 -168
  256. package/src/components/pages/Category.vue +0 -41
  257. package/src/components/pages/Home.vue +0 -125
  258. package/src/components/pages/Lives.vue +0 -64
  259. package/src/components/pages/Playlist.vue +0 -164
  260. package/src/components/pages/Podcast.vue +0 -307
  261. package/src/components/pages/Podcasts.vue +0 -146
  262. package/src/components/pages/Radio.vue +0 -122
  263. package/src/components/pages/Rubrique.vue +0 -42
@@ -12,16 +12,16 @@
12
12
  <!-- eslint-enable -->
13
13
  <div class="d-flex flex-column flex-grow-1 ms-4">
14
14
  <h4 class="mb-3">
15
- {{ $t('Configuration') }}
15
+ {{ $t("Configuration") }}
16
16
  </h4>
17
- <label for="share-url-newsletter">{{ $t('Share') }}</label>
17
+ <label for="share-url-newsletter">{{ $t("Share") }}</label>
18
18
  <input
19
19
  id="share-url-newsletter"
20
20
  v-model="shareUrl"
21
21
  class="form-input mb-2"
22
22
  type="text"
23
23
  :class="{ 'border border-danger': 0 === shareUrl }"
24
- >
24
+ />
25
25
  <template v-if="podcast">
26
26
  <ClassicCheckbox
27
27
  v-model:textInit="displayEmissionName"
@@ -37,19 +37,19 @@
37
37
  <div class="d-flex align-items-center mt-2">
38
38
  <VSwatches
39
39
  v-model="color"
40
- class="c-hand me-2 mt-2"
40
+ class="c-hand me-2 mt-2"
41
41
  show-fallback
42
42
  colors="text-advanced"
43
43
  popover-to="right"
44
44
  :data-color="color"
45
45
  />
46
- <div>{{ $t('Choose main color') }}</div>
46
+ <div>{{ $t("Choose main color") }}</div>
47
47
  </div>
48
48
  <div
49
- class=" d-flex justify-content-between align-items-center mt-3 mb-2"
49
+ class="d-flex justify-content-between align-items-center mt-3 mb-2"
50
50
  >
51
51
  <h4 class="mb-0">
52
- {{ $t('HTML Code') }}
52
+ {{ $t("HTML Code") }}
53
53
  </h4>
54
54
  <input
55
55
  type="button"
@@ -57,7 +57,7 @@
57
57
  class="btn btn-primary"
58
58
  :title="$t('Copy')"
59
59
  @click="onCopyCode(newsletterHtml, afterCopy)"
60
- >
60
+ />
61
61
  </div>
62
62
  <textarea
63
63
  id="newsletter_code_textarea"
@@ -65,86 +65,78 @@
65
65
  readonly
66
66
  @click="selectAll"
67
67
  />
68
- <label
69
- for="newsletter_code_textarea"
70
- :title="$t('HTML Code')"
71
- />
68
+ <label for="newsletter_code_textarea" :title="$t('HTML Code')" />
72
69
  </div>
73
70
  </div>
74
- <Snackbar
75
- ref="snackbar"
76
- position="bottom-left"
77
- />
71
+ <SnackBar ref="snackbar" position="bottom-left" />
78
72
  </template>
79
73
  <template #footer>
80
- <button
81
- class="btn btn-primary m-1"
82
- @click="closePopup"
83
- >
84
- {{ $t('Close') }}
74
+ <button class="btn btn-primary m-1" @click="closePopup">
75
+ {{ $t("Close") }}
85
76
  </button>
86
77
  </template>
87
78
  </ClassicModal>
88
79
  </template>
89
80
 
90
81
  <script lang="ts">
91
- import ClassicModal from '../modal/ClassicModal.vue';
92
- import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
93
- import Snackbar from '../../misc/Snackbar.vue';
94
- import dayjs from 'dayjs';
82
+ import ClassicModal from "../modal/ClassicModal.vue";
83
+ import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
84
+ import SnackBar from "../../misc/SnackBar.vue";
85
+ import dayjs from "dayjs";
95
86
  // @ts-ignore
96
- import {VSwatches} from 'vue3-swatches';
97
- import 'vue3-swatches/dist/style.css';
87
+ import { VSwatches } from "vue3-swatches";
88
+ import "vue3-swatches/dist/style.css";
98
89
  // @ts-ignore
99
- import humanizeDuration from 'humanize-duration';
100
- import displayMethods from '../../mixins/displayMethods';
101
- import { Participant } from '@/stores/class/general/participant';
102
- import { Podcast } from '@/stores/class/general/podcast';
103
- import { state } from '../../../stores/ParamSdkStore';
104
- import { defineComponent } from 'vue';
105
- import { useAuthStore } from '@/stores/AuthStore';
106
- import { mapState } from 'pinia';
107
- import octopusApi from '@saooti/octopus-api';
108
- import { Emission } from '@/stores/class/general/emission';
109
- import { Playlist } from '@/stores/class/general/playlist';
90
+ import humanizeDuration from "humanize-duration";
91
+ import displayMethods from "../../mixins/displayMethods";
92
+ import { Participant } from "@/stores/class/general/participant";
93
+ import { Podcast } from "@/stores/class/general/podcast";
94
+ import { state } from "../../../stores/ParamSdkStore";
95
+ import { defineComponent } from "vue";
96
+ import { useAuthStore } from "@/stores/AuthStore";
97
+ import { mapState } from "pinia";
98
+ import octopusApi from "@saooti/octopus-api";
99
+ import { Emission } from "@/stores/class/general/emission";
100
+ import { Playlist } from "@/stores/class/general/playlist";
110
101
  export default defineComponent({
111
- name: 'NewsletterModal',
102
+ name: "NewsletterModal",
112
103
 
113
104
  components: {
114
- Snackbar,
105
+ SnackBar,
115
106
  VSwatches,
116
107
  ClassicCheckbox,
117
- ClassicModal
108
+ ClassicModal,
118
109
  },
119
110
 
120
111
  mixins: [displayMethods],
121
112
 
122
113
  props: {
123
- podcast: { default: undefined, type: Object as ()=> Podcast},
124
- emission: { default: undefined, type: Object as ()=> Emission},
125
- playlist: { default: undefined, type: Object as ()=>Playlist},
114
+ podcast: { default: undefined, type: Object as () => Podcast },
115
+ emission: { default: undefined, type: Object as () => Emission },
116
+ playlist: { default: undefined, type: Object as () => Playlist },
126
117
  },
127
118
 
128
- emits: ['close'],
119
+ emits: ["close"],
129
120
 
130
121
  data() {
131
122
  return {
132
123
  displayParticipantsNames: true as boolean,
133
124
  displayEmissionName: true as boolean,
134
- color: '#40a372' as string,
125
+ color: "#40a372" as string,
135
126
  shareUrl: window.location.href,
136
-
137
127
  };
138
128
  },
139
129
 
140
130
  computed: {
141
- ...mapState(useAuthStore, ['authOrganisation']),
131
+ ...mapState(useAuthStore, ["authOrganisation"]),
142
132
  date(): string {
143
- if(!this.podcast || 1970 === dayjs(this.podcast.pubDate).year()){return '';}
144
- return dayjs(this.podcast.pubDate).format('D MMMM YYYY, HH[h]mm');
133
+ if (!this.podcast || 1970 === dayjs(this.podcast.pubDate).year()) {
134
+ return "";
135
+ }
136
+ return dayjs(this.podcast.pubDate).format("D MMMM YYYY, HH[h]mm");
145
137
  },
146
138
  duration(): string {
147
- if (!this.podcast || this.podcast.duration <= 1) return '';
139
+ if (!this.podcast || this.podcast.duration <= 1) return "";
148
140
  if (this.podcast.duration > 600000) {
149
141
  return humanizeDuration(this.podcast.duration, {
150
142
  language: this.$i18n.locale,
@@ -159,91 +151,110 @@ export default defineComponent({
159
151
  });
160
152
  },
161
153
  emissionName(): string {
162
- if (!this.displayEmissionName || !this.podcast){return ''}
163
- return (
164
- `<tr><td colspan="2" style="font-size: 16px;line-height:24px;font-weight: bold;">${this.podcast.emission.name}</td></tr>`
165
- );
154
+ if (!this.displayEmissionName || !this.podcast) {
155
+ return "";
156
+ }
157
+ return `<tr><td colspan="2" style="font-size: 16px;line-height:24px;font-weight: bold;">${this.podcast.emission.name}</td></tr>`;
166
158
  },
167
- articleHtml(): string{
168
- if (!this.podcast?.article ||0 === this.podcast.article?.length){return ''}
169
- return (`<a href="${this.podcast.article}" title="${this.$t('See associated article')}">
159
+ articleHtml(): string {
160
+ if (!this.podcast?.article || 0 === this.podcast.article?.length) {
161
+ return "";
162
+ }
163
+ return `<a href="${this.podcast.article}" title="${this.$t(
164
+ "See associated article",
165
+ )}">
170
166
  <img width="44" height="44" style="display: inline-block;vertical-align: middle; margin-right:3px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAA6UlEQVRIie3WPUpEMRTF8R9+4QpEBGttrcdeV+E2pp3KdYi7GBRttNVCZgOCjSuQ+UCLJzLIe7l3HpFpPJAuOf+T5F4SYh3jFZ/JMVlevJUwv8c+HvEQzD/FIBEaHOFtKdkosWb0PfdHGwXzOxxk03SpDVDNvA1Q1bwNcFMwn/cB/K6iQ+3VMsVVDQDcylVMSl1VBOea5FFjTXHWZVJqtCdcYjcI+YHnPoB3FY6qdERVVNrBHi6wGXgscK3Z8UqAE80dbAeAGV4wXhUwxk5gHurP72CtgP9Gw5oabYBhT7/wwZ/If09S35Yv52lVAXwyqt0AAAAASUVORK5CYII=">
171
167
  </a>
172
- <a style="color: #000;text-decoration: none;" href="${this.podcast.article}">${this.$t('See associated article')}</a>`);
168
+ <a style="color: #000;text-decoration: none;" href="${
169
+ this.podcast.article
170
+ }">${this.$t("See associated article")}</a>`;
173
171
  },
174
172
  participantsName(): string {
175
- if (!this.displayParticipantsNames || !this.podcast || !this.podcast.animators) return '';
176
- const text = [''];
173
+ if (
174
+ !this.displayParticipantsNames ||
175
+ !this.podcast ||
176
+ !this.podcast.animators
177
+ )
178
+ return "";
179
+ const text = [""];
177
180
  this.podcast.animators.forEach((element: Participant) => {
178
181
  text.push(
179
182
  `<table width='100%' style="width:100%;background: #f3f3f3;font-family: Arial, sans-serif;font-size: 12px;line-height: 20px;border-bottom-left-radius: 1.5em;border-bottom-right-radius: 1.5em;">
180
183
  <tr>
181
184
  <td width="90" rowspan="2" style="text-align:left; vertical-align: top; width: 90px;padding:0 15px 15px 10px">
182
- <img width="72" style="width: 62px;height: 62px;border-radius: 50%;background-color: #fff;" src="${element.imageUrl}" alt="${this.$t('Animator image')}">
185
+ <img width="72" style="width: 62px;height: 62px;border-radius: 50%;background-color: #fff;" src="${
186
+ element.imageUrl
187
+ }" alt="${this.$t("Animator image")}">
183
188
  </td>
184
- <td height="1" style="height: 1px;text-align:left; font-size: 14px;line-height:20px;vertical-align: top;font-weight: bold;padding-top: 23px;">${this.getName(element)}</td>
185
- </tr>`
189
+ <td height="1" style="height: 1px;text-align:left; font-size: 14px;line-height:20px;vertical-align: top;font-weight: bold;padding-top: 23px;">${this.getName(
190
+ element,
191
+ )}</td>
192
+ </tr>`,
186
193
  );
187
194
  if (element.description) {
188
195
  text.push(
189
196
  `<tr><td style="height: 100%;text-align:justify;padding-bottom: 15px;padding-right: 15px; font-size: 12px;line-height:16px;vertical-align: top">
190
- ${element.description}</td></tr>`
197
+ ${element.description}</td></tr>`,
191
198
  );
192
199
  }
193
200
  text.push(`</table>`);
194
201
  });
195
- return text.join('');
202
+ return text.join("");
196
203
  },
197
- imageUrl():string{
198
- if(this.podcast){
199
- return `${this.podcast.imageUrl}" alt="${this.$t('Podcast image')}`;
204
+ imageUrl(): string {
205
+ if (this.podcast) {
206
+ return `${this.podcast.imageUrl}" alt="${this.$t("Podcast image")}`;
200
207
  }
201
- if(this.emission){
202
- return `${this.emission.imageUrl}" alt="${this.$t('Emission image')}`;
208
+ if (this.emission) {
209
+ return `${this.emission.imageUrl}" alt="${this.$t("Emission image")}`;
203
210
  }
204
- if(this.playlist){
205
- return `${this.playlist.imageUrl}" alt="${this.$t('Playlist image')}`;
211
+ if (this.playlist) {
212
+ return `${this.playlist.imageUrl}" alt="${this.$t("Playlist image")}`;
206
213
  }
207
- return '';
214
+ return "";
208
215
  },
209
- title():string{
210
- if(this.podcast){
216
+ title(): string {
217
+ if (this.podcast) {
211
218
  return this.podcast.title;
212
219
  }
213
- if(this.emission){
220
+ if (this.emission) {
214
221
  return this.emission.name;
215
222
  }
216
- if(this.playlist){
223
+ if (this.playlist) {
217
224
  return this.playlist.title;
218
225
  }
219
- return '';
226
+ return "";
220
227
  },
221
- description():string{
228
+ description(): string {
222
229
  if (this.podcast && this.podcast.description) {
223
230
  return `<tr><td colspan="2" valign="top" style="line-height:24px;font-size: 14px;max-width: 500px;">${this.podcast.description}</td></tr>`;
224
231
  }
225
- if(this.emission && this.emission.description){
232
+ if (this.emission && this.emission.description) {
226
233
  return `<tr><td colspan="2" valign="top" style="line-height:24px;font-size: 14px;max-width: 500px;">${this.emission.description}</td></tr>`;
227
234
  }
228
- if(this.playlist && this.playlist.description){
235
+ if (this.playlist && this.playlist.description) {
229
236
  return `<tr><td colspan="2" valign="top" style="line-height:24px;font-size: 14px;max-width: 500px;">${this.playlist.description}</td></tr>`;
230
237
  }
231
- return '';
238
+ return "";
232
239
  },
233
- shareText():string{
240
+ shareText(): string {
234
241
  if (this.podcast) {
235
- return this.$t('Listen this episode');
242
+ return this.$t("Listen this episode");
236
243
  }
237
244
  if (this.emission) {
238
- return this.$t('All podcast emission button');
245
+ return this.$t("All podcast emission button");
239
246
  }
240
- return this.$t('Podcasts in the playlist');
247
+ return this.$t("Podcasts in the playlist");
241
248
  },
242
- durationPodcast():string{
243
- if(!this.podcast){return ''}
249
+ durationPodcast(): string {
250
+ if (!this.podcast) {
251
+ return "";
252
+ }
244
253
  return `<td colspan="2" style="height: 1px;color: #666;font-size: 12px;line-height: 16px;padding-top:15px;">
245
254
  <span>${this.date}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
246
- <span style="padding: 0 10px">${this.$t('Duration', { duration: this.duration })}</span>
255
+ <span style="padding: 0 10px">${this.$t("Duration", {
256
+ duration: this.duration,
257
+ })}</span>
247
258
  </td>`;
248
259
  },
249
260
  newsletterHtml(): string {
@@ -260,76 +271,91 @@ export default defineComponent({
260
271
  ${this.title}
261
272
  </td>
262
273
  </tr>
263
- ${this.emissionName}${this.description}`
274
+ ${this.emissionName}${this.description}`,
264
275
  ];
265
276
  html.push(
266
- `</table>
277
+ `</table>
267
278
  <div style="font-family: Arial, sans-serif;font-size: 12px;line-height: 20px;background: #f3f3f3;vertical-align: middle;padding: 15px 10px;display: flex; align-items:center; flex-wrap:wrap">
268
279
  <a href="${this.shareUrl}">
269
280
  <img width="44" height="44" style="display: inline-block;vertical-align: middle" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABmJLR0QA/wD/AP+gvaeTAAAAxElEQVRIie3WMWpCURBG4Q8FSRrtbC2SPhvICmzchVuwtXQLbsE2pVUIkjqQHVgqNmIj6EvxGHhFQAIvcxt/OPVhhrlzh3sKZ4MvTLLFVYNPvJYQB294LiGucMYSw2xxcMQcj9niYIsputni4BvjEuJgjZcS4goXrDDKFgcnLDDIFgd7zNDLFgfvTUHnL23ISJuV7iS3Ooarn1VxkeeUvkDSV2b6J3FQT+pDW8Jb4vRD4Kqe1Kf/Ev4mTj32PhQ6b+9pPT+XHgysHrPM6QAAAABJRU5ErkJggg=="/>
270
281
  </a>
271
282
  <a style="color: #000;text-decoration: none; margin-right:8px" href="${this.shareUrl}">${this.shareText}</a>
272
283
  ${this.articleHtml}
273
- </div>${this.participantsName}`
284
+ </div>${this.participantsName}`,
274
285
  );
275
- return html.join('');
286
+ return html.join("");
276
287
  },
277
288
  },
278
- created(){
289
+ created() {
279
290
  this.initData();
280
291
  },
281
292
  methods: {
282
293
  closePopup(): void {
283
- this.$emit('close');
294
+ this.$emit("close");
284
295
  },
285
296
  getName(person: Participant): string {
286
- return (`${person.firstName??''} ${person.lastName??''}`).trim();
297
+ return `${person.firstName ?? ""} ${person.lastName ?? ""}`.trim();
287
298
  },
288
299
  selectAll(element: Event): void {
289
300
  const target = element.target;
290
- if(null!==target){
301
+ if (null !== target) {
291
302
  (target as HTMLInputElement).focus();
292
303
  (target as HTMLInputElement).select();
293
304
  }
294
305
  },
295
- afterCopy(): void{
296
- (this.$refs.snackbar as InstanceType<typeof Snackbar>).open(this.$t('Data in clipboard'));
306
+ afterCopy(): void {
307
+ (this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
308
+ this.$t("Data in clipboard"),
309
+ );
297
310
  },
298
311
  async initData(): Promise<void> {
299
312
  let attributes;
300
- if(""!==this.authOrganisation.id && this.authOrganisation.attributes && Object.keys(this.authOrganisation.attributes).length > 1){
313
+ if (
314
+ "" !== this.authOrganisation.id &&
315
+ this.authOrganisation.attributes &&
316
+ Object.keys(this.authOrganisation.attributes).length > 1
317
+ ) {
301
318
  attributes = this.authOrganisation.attributes;
302
- }else{
303
- attributes = await octopusApi.fetchData<{[key:string]:string}>(0, 'organisation/attributes/'+state.generalParameters.organisationId);
319
+ } else {
320
+ attributes = await octopusApi.fetchData<{ [key: string]: string }>(
321
+ 0,
322
+ "organisation/attributes/" + state.generalParameters.organisationId,
323
+ );
304
324
  }
305
- if (Object.prototype.hasOwnProperty.call(attributes,'podcastmakerUrl')) {
306
- this.shareUrl = attributes.podcastmakerUrl + window.location.pathname+window.location.search;
325
+ if (Object.prototype.hasOwnProperty.call(attributes, "podcastmakerUrl")) {
326
+ this.shareUrl =
327
+ attributes.podcastmakerUrl +
328
+ window.location.pathname +
329
+ window.location.search;
307
330
  }
308
- if(state.generalParameters.podcastmaker && state.generalParameters.podcastmakerColor){
331
+ if (
332
+ state.generalParameters.podcastmaker &&
333
+ state.generalParameters.podcastmakerColor
334
+ ) {
309
335
  this.color = state.generalParameters.podcastmakerColor;
310
336
  return;
311
337
  }
312
- if (Object.prototype.hasOwnProperty.call(attributes,'COLOR')) {
313
- this.color = (attributes.COLOR as string);
338
+ if (Object.prototype.hasOwnProperty.call(attributes, "COLOR")) {
339
+ this.color = attributes.COLOR as string;
314
340
  }
315
341
  },
316
342
  },
317
- })
343
+ });
318
344
  </script>
319
345
 
320
346
  <style lang="scss">
321
- .octopus-app{
322
- #newsletter-modal{
347
+ .octopus-app {
348
+ #newsletter-modal {
323
349
  textarea {
324
350
  border: 2px solid #eee;
325
351
  height: 200px;
326
352
  padding: 1em;
327
353
  }
328
- .octopus-modal-dialog{
354
+ .octopus-modal-dialog {
329
355
  max-width: 80%;
330
356
  max-height: calc(100% - 3.5rem) !important;
331
357
  }
332
- .octopus-modal-content{
358
+ .octopus-modal-content {
333
359
  max-height: calc(100vh - 100px) !important;
334
360
  }
335
361
  }
@@ -8,34 +8,31 @@
8
8
  <QrCode :url="urlPage" />
9
9
  </template>
10
10
  <template #footer>
11
- <button
12
- class="btn btn-primary m-1"
13
- @click="closePopup"
14
- >
15
- {{ $t('Close') }}
11
+ <button class="btn btn-primary m-1" @click="closePopup">
12
+ {{ $t("Close") }}
16
13
  </button>
17
14
  </template>
18
15
  </ClassicModal>
19
16
  </template>
20
17
 
21
18
  <script lang="ts">
22
- import ClassicModal from '../modal/ClassicModal.vue';
23
- import QrCode from '../../display/sharing/QrCode.vue';
24
- import { defineComponent } from 'vue'
19
+ import ClassicModal from "../modal/ClassicModal.vue";
20
+ import QrCode from "../../display/sharing/QrCode.vue";
21
+ import { defineComponent } from "vue";
25
22
  export default defineComponent({
26
- name: 'QrCodeModal',
23
+ name: "QrCodeModal",
27
24
  components: {
28
25
  QrCode,
29
- ClassicModal
26
+ ClassicModal,
30
27
  },
31
28
  props: {
32
- urlPage: { default: undefined, type: String},
29
+ urlPage: { default: undefined, type: String },
33
30
  },
34
- emits: ['close'],
35
- methods:{
31
+ emits: ["close"],
32
+ methods: {
36
33
  closePopup(): void {
37
- this.$emit('close');
34
+ this.$emit("close");
38
35
  },
39
- }
40
- })
41
- </script>
36
+ },
37
+ });
38
+ </script>
@@ -5,28 +5,15 @@
5
5
  @close="closePopup"
6
6
  >
7
7
  <template #body>
8
- <Nav
9
- v-model:activeTab="activeTab"
10
- :tab-number="tabs.length"
11
- >
12
- <template
13
- v-for="(tab, index) in tabs"
14
- #[index]
15
- >
8
+ <ClassicNav v-model:activeTab="activeTab" :tab-number="tabs.length">
9
+ <template v-for="(tab, index) in tabs" #[index]>
16
10
  {{ tab }}
17
11
  </template>
18
- <template
19
- #tab0
20
- >
12
+ <template #tab0>
21
13
  <p>{{ embedLink }}</p>
22
- <div
23
- class="saooti-copy"
24
- @click="onCopyCode(embedLink, afterCopy)"
25
- />
14
+ <div class="saooti-copy" @click="onCopyCode(embedLink, afterCopy)" />
26
15
  </template>
27
- <template
28
- #tab1
29
- >
16
+ <template #tab1>
30
17
  <div class="d-flex flex-column flex-grow-1">
31
18
  <div class="d-flex justify-content-between align-items-center">
32
19
  <p>{{ embedlyLink }}</p>
@@ -38,88 +25,85 @@
38
25
  <QrCode :url="embedlyLink" />
39
26
  </div>
40
27
  </template>
41
- <template
42
- v-if="directLink"
43
- #tab2
44
- >
28
+ <template v-if="directLink" #tab2>
45
29
  <p>{{ directLink.audioUrl }}</p>
46
30
  <div
47
31
  class="saooti-copy"
48
32
  @click="onCopyCode(directLink.audioUrl, snackbarRef)"
49
33
  />
50
34
  </template>
51
- </Nav>
35
+ </ClassicNav>
52
36
  </template>
53
37
  <template #footer>
54
- <button
55
- class="btn btn-primary m-1"
56
- @click="closePopup"
57
- >
58
- {{ $t('Close') }}
38
+ <button class="btn btn-primary m-1" @click="closePopup">
39
+ {{ $t("Close") }}
59
40
  </button>
60
41
  </template>
61
42
  </ClassicModal>
62
- <Snackbar
63
- ref="snackbar"
64
- position="bottom-left"
65
- />
43
+ <SnackBar ref="snackbar" position="bottom-left" />
66
44
  </template>
67
45
 
68
46
  <script lang="ts">
69
- import Snackbar from '../Snackbar.vue';
70
- import displayMethods from '../../mixins/displayMethods';
71
- import ClassicModal from '../modal/ClassicModal.vue';
72
- import Nav from '../Nav.vue';
73
- import QrCode from '../../display/sharing/QrCode.vue';
74
- import { defineComponent } from 'vue'
75
- import { Podcast } from '@/stores/class/general/podcast';
47
+ import SnackBar from "../SnackBar.vue";
48
+ import displayMethods from "../../mixins/displayMethods";
49
+ import ClassicModal from "../modal/ClassicModal.vue";
50
+ import ClassicNav from "../ClassicNav.vue";
51
+ import QrCode from "../../display/sharing/QrCode.vue";
52
+ import { defineComponent } from "vue";
53
+ import { Podcast } from "@/stores/class/general/podcast";
76
54
  export default defineComponent({
77
- name: 'ShareModalPlayer',
55
+ name: "ShareModalPlayer",
78
56
 
79
57
  components: {
80
- Snackbar,
58
+ SnackBar,
81
59
  QrCode,
82
60
  ClassicModal,
83
- Nav
61
+ ClassicNav,
84
62
  },
85
63
  mixins: [displayMethods],
86
64
  props: {
87
- embedLink: { default: undefined, type: String},
88
- embedlyLink: { default: undefined, type: String},
89
- directLink: { default: undefined, type: Object as ()=>Podcast},
65
+ embedLink: { default: undefined, type: String },
66
+ embedlyLink: { default: undefined, type: String },
67
+ directLink: { default: undefined, type: Object as () => Podcast },
90
68
  },
91
- emits: ['close'],
69
+ emits: ["close"],
92
70
  data() {
93
71
  return {
94
72
  activeTab: 0 as number,
95
73
  };
96
74
  },
97
- computed:{
98
- tabs(): Array<string>{
99
- if(this.directLink){
100
- return [this.$t('Embed link'),this.$t('Embedly link'),this.$t('Direct link')];
75
+ computed: {
76
+ tabs(): Array<string> {
77
+ if (this.directLink) {
78
+ return [
79
+ this.$t("Embed link"),
80
+ this.$t("Embedly link"),
81
+ this.$t("Direct link"),
82
+ ];
101
83
  }
102
- return [this.$t('Embed link'),this.$t('Embedly link')];
103
- }
84
+ return [this.$t("Embed link"), this.$t("Embedly link")];
85
+ },
104
86
  },
105
87
  methods: {
106
88
  closePopup(): void {
107
- this.$emit('close');
89
+ this.$emit("close");
90
+ },
91
+ afterCopy(): void {
92
+ (this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
93
+ this.$t("Data in clipboard"),
94
+ );
108
95
  },
109
- afterCopy(): void{
110
- (this.$refs.snackbar as InstanceType<typeof Snackbar>).open(this.$t('Data in clipboard'));
111
- }
112
96
  },
113
- })
97
+ });
114
98
  </script>
115
99
 
116
100
  <style lang="scss">
117
- .octopus-app{
118
- #share-modal{
101
+ .octopus-app {
102
+ #share-modal {
119
103
  .saooti-copy {
120
104
  cursor: pointer;
121
105
  align-self: center;
122
106
  }
123
107
  }
124
108
  }
125
- </style>
109
+ </style>