@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
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div class="page-box">
3
+ <template v-if="!filterOrgaId && !organisationId && !isPodcastmaker">
4
+ <div class="align-self-start fw-bold mb-2">
5
+ {{ $t("Please chose a productor") }}
6
+ </div>
7
+ <OrganisationChooser
8
+ :defaultanswer="$t('Please chose a productor')"
9
+ @selected="onOrganisationSelected"
10
+ />
11
+ </template>
12
+ <template v-if="filterOrgaId || organisationId">
13
+ <LiveList :organisation-id="organisationId" />
14
+ <RadioList :organisation-id="organisationId" />
15
+ </template>
16
+ </div>
17
+ </template>
18
+
19
+ <script lang="ts">
20
+ import { state } from "../../stores/ParamSdkStore";
21
+ import { Organisation } from "@/stores/class/general/organisation";
22
+ import { defineComponent, defineAsyncComponent } from "vue";
23
+ import { useFilterStore } from "@/stores/FilterStore";
24
+ import { mapState } from "pinia";
25
+ const LiveList = defineAsyncComponent(
26
+ () => import("../display/live/LiveList.vue"),
27
+ );
28
+ const RadioList = defineAsyncComponent(
29
+ () => import("../display/live/RadioList.vue"),
30
+ );
31
+ const OrganisationChooser = defineAsyncComponent(
32
+ () => import("../display/organisation/OrganisationChooser.vue"),
33
+ );
34
+ export default defineComponent({
35
+ components: {
36
+ LiveList,
37
+ RadioList,
38
+ OrganisationChooser,
39
+ },
40
+ props: {
41
+ organisationId: { default: undefined, type: String },
42
+ productor: { default: undefined, type: String },
43
+ },
44
+ emits: ["update:organisationId"],
45
+
46
+ computed: {
47
+ ...mapState(useFilterStore, ["filterOrgaId"]),
48
+
49
+ isPodcastmaker(): boolean {
50
+ return state.generalParameters.podcastmaker as boolean;
51
+ },
52
+ },
53
+ created() {
54
+ if (this.productor) {
55
+ this.$emit("update:organisationId", this.productor);
56
+ } else if (this.filterOrgaId) {
57
+ this.$emit("update:organisationId", this.filterOrgaId);
58
+ }
59
+ },
60
+ methods: {
61
+ onOrganisationSelected(organisation: Organisation | undefined): void {
62
+ this.$emit("update:organisationId", organisation?.id);
63
+ },
64
+ },
65
+ });
66
+ </script>
@@ -4,41 +4,52 @@
4
4
  :style="backgroundStyle"
5
5
  >
6
6
  <div class="position-absolute module-box">
7
- <h1>{{ $t('Oops') }}</h1>
8
- <h2>{{ $t('The page you are looking for cannot be found') }}</h2>
7
+ <h1>{{ $t("Oops") }}</h1>
8
+ <h2>{{ $t("The page you are looking for cannot be found") }}</h2>
9
9
  <router-link
10
10
  class="btn btn-primary"
11
11
  :to="{
12
12
  name: 'home',
13
- query: { productor: filterOrgaId,
14
- iabId:filterIab?.id,
15
- rubriquesId: rubriqueQueryParam},
13
+ query: {
14
+ productor: filterOrgaId,
15
+ iabId: filterIab?.id,
16
+ rubriquesId: rubriqueQueryParam,
17
+ },
16
18
  }"
17
19
  >
18
- {{ $t('Back to home') }}
20
+ {{ $t("Back to home") }}
19
21
  </router-link>
20
22
  </div>
21
23
  </div>
22
24
  </template>
23
25
 
24
26
  <script lang="ts">
25
- import { RubriquageFilter } from '@/stores/class/rubrique/rubriquageFilter';
26
- import { useFilterStore } from '@/stores/FilterStore';
27
- import { useGeneralStore } from '@/stores/GeneralStore';
28
- import { mapState } from 'pinia';
29
- import { defineComponent } from 'vue';
27
+ import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
28
+ import { useFilterStore } from "@/stores/FilterStore";
29
+ import { useGeneralStore } from "@/stores/GeneralStore";
30
+ import { mapState } from "pinia";
31
+ import { defineComponent } from "vue";
30
32
  export default defineComponent({
31
- name: 'PageNotFound',
32
- computed:{
33
- ...mapState(useGeneralStore, ['metaTitle']),
34
- ...mapState(useFilterStore, ['filterRubrique', 'filterIab', 'filterOrgaId']),
35
- rubriqueQueryParam(): string|undefined{
36
- if(this.filterRubrique?.length){
37
- return this.filterRubrique.map((value: RubriquageFilter) => value.rubriquageId+':'+value.rubriqueId).join();
33
+ name: "PageNotFound",
34
+ computed: {
35
+ ...mapState(useGeneralStore, ["metaTitle"]),
36
+ ...mapState(useFilterStore, [
37
+ "filterRubrique",
38
+ "filterIab",
39
+ "filterOrgaId",
40
+ ]),
41
+ rubriqueQueryParam(): string | undefined {
42
+ if (this.filterRubrique?.length) {
43
+ return this.filterRubrique
44
+ .map(
45
+ (value: RubriquageFilter) =>
46
+ value.rubriquageId + ":" + value.rubriqueId,
47
+ )
48
+ .join();
38
49
  }
39
50
  return undefined;
40
51
  },
41
- backgroundStyle():string{
52
+ backgroundStyle(): string {
42
53
  return "background-image: url('/img/404.svg');";
43
54
  },
44
55
  },
@@ -48,13 +59,13 @@ export default defineComponent({
48
59
  });
49
60
  </script>
50
61
  <style lang="scss">
51
- .octopus-app .page-not-found{
62
+ .octopus-app .page-not-found {
52
63
  background-size: cover;
53
64
  background-position: center;
54
- background-color: #ebebeb;
65
+ background-color: #ebebeb;
55
66
  display: flex;
56
67
  flex-direction: column;
57
68
  align-items: center;
58
69
  padding: 0;
59
70
  }
60
- </style>
71
+ </style>
@@ -1,14 +1,10 @@
1
1
  <template>
2
2
  <div class="page-box">
3
- <div
4
- v-if="loaded && !error"
5
- >
3
+ <div v-if="loaded && !error">
6
4
  <h1 v-if="!pageParameters.lightStyle">
7
5
  {{ titleDisplay }}
8
6
  </h1>
9
- <div
10
- class="d-flex flex-column align-items-center mb-3"
11
- >
7
+ <div class="d-flex flex-column align-items-center mb-3">
12
8
  <img
13
9
  v-lazy="proxyImageUrl(participant.imageUrl, '200')"
14
10
  width="200"
@@ -16,7 +12,7 @@
16
12
  :title="$t('Animator image')"
17
13
  :alt="$t('Animator image')"
18
14
  class="img-box mb-3"
19
- >
15
+ />
20
16
  <h2 class="text-capitalize">
21
17
  {{ name }}
22
18
  </h2>
@@ -30,7 +26,7 @@
30
26
  v-if="editRight && pageParameters.isEditBox"
31
27
  :participant="participant"
32
28
  class="w-100"
33
- @participantUpdate="updateParticipant"
29
+ @participant-update="updateParticipant"
34
30
  />
35
31
  <ShareButtons
36
32
  v-if="pageParameters.isShareButtons"
@@ -56,80 +52,92 @@
56
52
  />
57
53
  </div>
58
54
  <ClassicLoading
59
- :loading-text="!loaded?$t('Loading content ...'):undefined"
60
- :error-text="error?$t(`Animator doesn't exist`):undefined"
55
+ :loading-text="!loaded ? $t('Loading content ...') : undefined"
56
+ :error-text="error ? $t(`Animator doesn't exist`) : undefined"
61
57
  />
62
58
  </div>
63
59
  </template>
64
60
 
65
61
  <script lang="ts">
66
- import octopusApi from '@saooti/octopus-api';
67
- import { state } from '../../stores/ParamSdkStore';
68
- import displayMethods from '../mixins/displayMethods';
69
- import imageProxy from '../mixins/imageProxy';
70
- import { orgaComputed } from '../mixins/orgaComputed';
71
- import { handle403 } from '../mixins/handle403';
72
- import { Participant } from '@/stores/class/general/participant';
73
- import ClassicLoading from '../form/ClassicLoading.vue';
74
- import { defineComponent, defineAsyncComponent } from 'vue';
75
- import { AxiosError } from 'axios';
76
- const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
77
- const PodcastFilterList = defineAsyncComponent(() => import('../display/podcasts/PodcastFilterList.vue'));
78
- const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
79
- const PodcastList = defineAsyncComponent(() => import('../display/podcasts/PodcastList.vue'));
62
+ import octopusApi from "@saooti/octopus-api";
63
+ import { state } from "../../stores/ParamSdkStore";
64
+ import displayMethods from "../mixins/displayMethods";
65
+ import imageProxy from "../mixins/imageProxy";
66
+ import { orgaComputed } from "../mixins/orgaComputed";
67
+ import { handle403 } from "../mixins/handle403";
68
+ import { Participant } from "@/stores/class/general/participant";
69
+ import ClassicLoading from "../form/ClassicLoading.vue";
70
+ import { defineComponent, defineAsyncComponent } from "vue";
71
+ import { AxiosError } from "axios";
72
+ const ShareButtons = defineAsyncComponent(
73
+ () => import("../display/sharing/ShareButtons.vue"),
74
+ );
75
+ const PodcastFilterList = defineAsyncComponent(
76
+ () => import("../display/podcasts/PodcastFilterList.vue"),
77
+ );
78
+ const EditBox = defineAsyncComponent(
79
+ () => import("@/components/display/edit/EditBox.vue"),
80
+ );
81
+ const PodcastList = defineAsyncComponent(
82
+ () => import("../display/podcasts/PodcastList.vue"),
83
+ );
80
84
  export default defineComponent({
81
85
  components: {
82
86
  ShareButtons,
83
87
  PodcastFilterList,
84
88
  EditBox,
85
89
  PodcastList,
86
- ClassicLoading
90
+ ClassicLoading,
87
91
  },
88
92
  mixins: [displayMethods, handle403, orgaComputed, imageProxy],
89
93
  props: {
90
- participantId: { default: undefined, type: Number},
94
+ participantId: { default: undefined, type: Number },
91
95
  },
92
- emits: ['participantTitle'],
96
+ emits: ["participantTitle"],
93
97
  data() {
94
98
  return {
95
99
  loaded: false as boolean,
96
- participant: undefined as Participant|undefined,
100
+ participant: undefined as Participant | undefined,
97
101
  error: false as boolean,
98
102
  reload: false as boolean,
99
103
  };
100
104
  },
101
105
  computed: {
102
- titleDisplay(): string{
103
- return state.intervenantPage.titlePage??this.$t('Animator');
106
+ titleDisplay(): string {
107
+ return state.intervenantPage.titlePage ?? this.$t("Animator");
104
108
  },
105
- pageParameters(){
109
+ pageParameters() {
106
110
  return {
107
- isEditBox : (state.podcastPage.EditBox as boolean),
108
- isShareButtons: (state.podcastPage.ShareButtons as boolean),
109
- lightStyle:(state.intervenantPage.lightStyle as boolean),
111
+ isEditBox: state.podcastPage.EditBox as boolean,
112
+ isShareButtons: state.podcastPage.ShareButtons as boolean,
113
+ lightStyle: state.intervenantPage.lightStyle as boolean,
110
114
  };
111
115
  },
112
116
  rssUrl(): string {
113
117
  return `${state.generalParameters.ApiUri}rss/participant/${this.participantId}`;
114
118
  },
115
119
  description(): string {
116
- return this.participant?.description ?? '';
120
+ return this.participant?.description ?? "";
117
121
  },
118
122
  name(): string {
119
- return (`${this.participant?.firstName??''} ${this.participant?.lastName??''}`).trim();
123
+ return `${this.participant?.firstName ?? ""} ${
124
+ this.participant?.lastName ?? ""
125
+ }`.trim();
120
126
  },
121
127
  editRight(): boolean {
122
- return (true===this.authenticated &&
128
+ return (
129
+ (true === this.authenticated &&
123
130
  this.myOrganisationId === this.participant?.orga?.id) ||
124
- true===state.generalParameters.isAdmin
131
+ true === state.generalParameters.isAdmin
132
+ );
125
133
  },
126
134
  },
127
135
  watch: {
128
136
  participant: {
129
137
  deep: true,
130
- handler(){
131
- this.reload = !this.reload;
132
- }
138
+ handler() {
139
+ this.reload = !this.reload;
140
+ },
133
141
  },
134
142
  participantId: {
135
143
  immediate: true,
@@ -139,35 +147,41 @@ export default defineComponent({
139
147
  },
140
148
  },
141
149
  methods: {
142
- initError():void{
150
+ initError(): void {
143
151
  this.error = true;
144
152
  this.loaded = true;
145
153
  },
146
154
  async getParticipantDetails(): Promise<void> {
147
155
  this.loaded = false;
148
156
  try {
149
- const data = await octopusApi.fetchData<Participant>(0, 'participant/'+this.participantId);
150
- if("PUBLIC"!==data?.orga?.privacy && this.filterOrgaId!==data?.orga?.id){
157
+ const data = await octopusApi.fetchData<Participant>(
158
+ 0,
159
+ "participant/" + this.participantId,
160
+ );
161
+ if (
162
+ "PUBLIC" !== data?.orga?.privacy &&
163
+ this.filterOrgaId !== data?.orga?.id
164
+ ) {
151
165
  this.initError();
152
166
  return;
153
167
  }
154
168
  this.updateParticipant(data);
155
169
  this.loaded = true;
156
- } catch(error) {
157
- this.handle403((error as AxiosError));
170
+ } catch (error) {
171
+ this.handle403(error as AxiosError);
158
172
  this.initError();
159
173
  }
160
174
  },
161
175
  updateParticipant(participant: Participant): void {
162
176
  this.participant = participant;
163
- this.$emit('participantTitle', this.name);
177
+ this.$emit("participantTitle", this.name);
164
178
  },
165
179
  },
166
- })
180
+ });
167
181
  </script>
168
182
 
169
183
  <style lang="scss">
170
- .octopus-app{
184
+ .octopus-app {
171
185
  @media (min-width: 950px) {
172
186
  .participant-desc {
173
187
  max-width: 50%;
@@ -16,10 +16,10 @@
16
16
  </template>
17
17
 
18
18
  <script lang="ts">
19
- import { orgaComputed } from '../mixins/orgaComputed';
20
- import ParticipantList from '../display/participant/ParticipantList.vue';
21
- import ProductorSearch from '../display/filter/ProductorSearch.vue';
22
- import { defineComponent } from 'vue'
19
+ import { orgaComputed } from "../mixins/orgaComputed";
20
+ import ParticipantList from "../display/participant/ParticipantList.vue";
21
+ import ProductorSearch from "../display/filter/ProductorSearch.vue";
22
+ import { defineComponent } from "vue";
23
23
  export default defineComponent({
24
24
  components: {
25
25
  ProductorSearch,
@@ -27,18 +27,18 @@ export default defineComponent({
27
27
  },
28
28
  mixins: [orgaComputed],
29
29
  props: {
30
- productor: { default: undefined, type: String},
30
+ productor: { default: undefined, type: String },
31
31
  },
32
32
  data() {
33
33
  return {
34
34
  first: 0 as number,
35
35
  size: 30 as number,
36
- searchPattern: '' as string,
36
+ searchPattern: "" as string,
37
37
  organisationId: undefined as string | undefined,
38
38
  };
39
39
  },
40
40
  created() {
41
- this.organisationId = this.productor ?this.productor: this.filterOrgaId;
41
+ this.organisationId = this.productor ? this.productor : this.filterOrgaId;
42
42
  },
43
- })
44
- </script>
43
+ });
44
+ </script>
@@ -0,0 +1,175 @@
1
+ <template>
2
+ <div class="page-box">
3
+ <template v-if="loaded && !error">
4
+ <div class="page-element-title-container">
5
+ <div class="page-element-title">
6
+ <h1>{{ pageTitle }}</h1>
7
+ </div>
8
+ <div class="page-element-bg" :style="backgroundDisplay" />
9
+ </div>
10
+ <div class="d-flex flex-column page-element">
11
+ <div class="module-box">
12
+ <div class="mb-5 mt-3 descriptionText">
13
+ <img
14
+ v-lazy="proxyImageUrl(imageUrl, '330')"
15
+ width="330"
16
+ height="330"
17
+ :alt="$t('Playlist name image', { name: name })"
18
+ class="img-box float-start me-3 mb-3"
19
+ />
20
+ <h2>{{ name }}</h2>
21
+ <!-- eslint-disable vue/no-v-html -->
22
+ <p class="html-wysiwyg-content" v-html="urlify(description)" />
23
+ <!-- eslint-enable -->
24
+ </div>
25
+ <EditBox
26
+ v-if="editRight && pageParameters.isEditBox"
27
+ :playlist="playlist"
28
+ />
29
+ </div>
30
+ <SharePlayer
31
+ v-if="pageParameters.isSharePlayer && authenticated"
32
+ :playlist="playlist"
33
+ :organisation-id="myOrganisationId"
34
+ :is-education="isEducation"
35
+ />
36
+ <ShareButtons
37
+ v-if="pageParameters.isShareButtons"
38
+ :playlist="playlist"
39
+ />
40
+ <PodcastList :playlist="playlist" />
41
+ </div>
42
+ </template>
43
+ <ClassicLoading
44
+ :loading-text="!loaded ? $t('Loading content ...') : undefined"
45
+ :error-text="error ? $t(`Playlist doesn't exist`) : undefined"
46
+ />
47
+ </div>
48
+ </template>
49
+
50
+ <script lang="ts">
51
+ import { orgaComputed } from "../mixins/orgaComputed";
52
+ import ClassicLoading from "../form/ClassicLoading.vue";
53
+ import PodcastList from "../display/playlist/PodcastList.vue";
54
+ import octopusApi from "@saooti/octopus-api";
55
+ import { state } from "../../stores/ParamSdkStore";
56
+ import displayMethods from "../mixins/displayMethods";
57
+ import imageProxy from "../mixins/imageProxy";
58
+ import { handle403 } from "../mixins/handle403";
59
+ import { Playlist } from "@/stores/class/general/playlist";
60
+ import { defineComponent, defineAsyncComponent } from "vue";
61
+ import { AxiosError } from "axios";
62
+ const ShareButtons = defineAsyncComponent(
63
+ () => import("../display/sharing/ShareButtons.vue"),
64
+ );
65
+ const EditBox = defineAsyncComponent(
66
+ () => import("@/components/display/edit/EditBox.vue"),
67
+ );
68
+ const SharePlayer = defineAsyncComponent(
69
+ () => import("../display/sharing/SharePlayer.vue"),
70
+ );
71
+ export default defineComponent({
72
+ components: {
73
+ ShareButtons,
74
+ EditBox,
75
+ PodcastList,
76
+ SharePlayer,
77
+ ClassicLoading,
78
+ },
79
+ mixins: [displayMethods, handle403, orgaComputed, imageProxy],
80
+
81
+ props: {
82
+ playlistId: { default: undefined, type: Number },
83
+ isEducation: { default: false, type: Boolean },
84
+ },
85
+
86
+ emits: ["playlistTitle"],
87
+ data() {
88
+ return {
89
+ loaded: false as boolean,
90
+ playlist: undefined as Playlist | undefined,
91
+ error: false as boolean,
92
+ };
93
+ },
94
+ computed: {
95
+ pageParameters() {
96
+ return {
97
+ isEditBox: state.podcastPage.EditBox as boolean,
98
+ isShareButtons: state.podcastPage.ShareButtons as boolean,
99
+ isSharePlayer: state.podcastPage.SharePlayer as boolean,
100
+ };
101
+ },
102
+ pageTitle(): string {
103
+ return this.playlistRadio
104
+ ? this.$t("Mix of episodes")
105
+ : this.$t("Playlist");
106
+ },
107
+ playlistRadio(): boolean {
108
+ return (
109
+ "AMBIANCE" === this.playlist?.ambianceType ||
110
+ "AMBIANCE_PROGRAMMED" === this.playlist?.ambianceType
111
+ );
112
+ },
113
+ name(): string {
114
+ return this.playlist?.title ?? "";
115
+ },
116
+ imageUrl(): string {
117
+ return this.playlist?.imageUrl ?? "";
118
+ },
119
+ description(): string {
120
+ return this.playlist?.description ?? "";
121
+ },
122
+ editRight(): boolean {
123
+ return (
124
+ (true === state.generalParameters.isPlaylist &&
125
+ this.myOrganisationId === this.playlist?.organisation?.id) ||
126
+ true === state.generalParameters.isAdmin
127
+ );
128
+ },
129
+ backgroundDisplay(): string {
130
+ if (!this.playlist) {
131
+ return "";
132
+ }
133
+ return `background-image: url('${this.playlist.imageUrl}');`;
134
+ },
135
+ },
136
+ watch: {
137
+ playlistId: {
138
+ immediate: true,
139
+ handler() {
140
+ this.getPlaylistDetails();
141
+ },
142
+ },
143
+ },
144
+
145
+ methods: {
146
+ initError(): void {
147
+ this.error = true;
148
+ this.loaded = true;
149
+ },
150
+ async getPlaylistDetails(): Promise<void> {
151
+ try {
152
+ this.loaded = false;
153
+ this.error = false;
154
+ this.playlist = await octopusApi.fetchData<Playlist>(
155
+ 0,
156
+ "playlist/" + this.playlistId,
157
+ );
158
+ if (
159
+ (!this.editRight && this.playlistRadio) ||
160
+ ("PUBLIC" !== this.playlist.organisation?.privacy &&
161
+ this.filterOrgaId !== this.playlist.organisation?.id)
162
+ ) {
163
+ this.initError();
164
+ return;
165
+ }
166
+ this.$emit("playlistTitle", this.playlist.title);
167
+ } catch (error) {
168
+ this.handle403(error as AxiosError);
169
+ this.initError();
170
+ }
171
+ this.loaded = true;
172
+ },
173
+ },
174
+ });
175
+ </script>
@@ -6,7 +6,7 @@
6
6
  class="d-flex justify-content-center my-3"
7
7
  >
8
8
  <div class="btn btn-primary">
9
- {{ $t('Create playlist') }}
9
+ {{ $t("Create playlist") }}
10
10
  </div>
11
11
  </router-link>
12
12
  <ProductorSearch
@@ -25,33 +25,35 @@
25
25
  </template>
26
26
 
27
27
  <script lang="ts">
28
- import { orgaComputed } from '../mixins/orgaComputed';
29
- import PlaylistList from '../display/playlist/PlaylistList.vue';
30
- import { state } from '../../stores/ParamSdkStore';
31
- import { defineComponent, defineAsyncComponent } from 'vue';
32
- const ProductorSearch = defineAsyncComponent(() => import('../display/filter/ProductorSearch.vue'));
28
+ import { orgaComputed } from "../mixins/orgaComputed";
29
+ import PlaylistList from "../display/playlist/PlaylistList.vue";
30
+ import { state } from "../../stores/ParamSdkStore";
31
+ import { defineComponent, defineAsyncComponent } from "vue";
32
+ const ProductorSearch = defineAsyncComponent(
33
+ () => import("../display/filter/ProductorSearch.vue"),
34
+ );
33
35
  export default defineComponent({
34
36
  components: {
35
37
  ProductorSearch,
36
38
  PlaylistList,
37
39
  },
38
- mixins:[orgaComputed],
40
+ mixins: [orgaComputed],
39
41
  props: {
40
- productor: { default: undefined, type: String},
42
+ productor: { default: undefined, type: String },
41
43
  },
42
44
 
43
45
  data() {
44
46
  return {
45
47
  first: 0 as number,
46
48
  size: 30 as number,
47
- searchPattern: '' as string,
49
+ searchPattern: "" as string,
48
50
  organisationId: undefined as string | undefined,
49
51
  };
50
52
  },
51
-
53
+
52
54
  computed: {
53
55
  isPodcastmaker(): boolean {
54
- return (state.generalParameters.podcastmaker as boolean);
56
+ return state.generalParameters.podcastmaker as boolean;
55
57
  },
56
58
  editRight(): boolean {
57
59
  return state.generalParameters.isPlaylist ? true : false;
@@ -59,7 +61,7 @@ export default defineComponent({
59
61
  },
60
62
 
61
63
  created() {
62
- this.organisationId = this.productor ?this.productor: this.filterOrgaId;
64
+ this.organisationId = this.productor ? this.productor : this.filterOrgaId;
63
65
  },
64
- })
65
- </script>
66
+ });
67
+ </script>