@saooti/octopus-sdk 37.0.6 → 37.0.8
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.
- package/README.md +2 -2
- package/index.ts +22 -22
- package/package.json +26 -22
- package/src/App.vue +69 -60
- package/src/api/classicCrud.ts +12 -12
- package/src/api/initialize.ts +1 -1
- package/src/assets/transition.scss +34 -22
- package/src/components/display/aggregator/RssSection.vue +3 -3
- package/src/components/display/categories/CategoryChooser.vue +73 -60
- package/src/components/display/categories/CategoryFilter.vue +134 -90
- package/src/components/display/categories/CategoryList.vue +76 -62
- package/src/components/display/comments/AddCommentModal.vue +44 -44
- package/src/components/display/comments/CommentBasicView.vue +38 -30
- package/src/components/display/comments/CommentInput.vue +121 -106
- package/src/components/display/comments/CommentItem.vue +144 -102
- package/src/components/display/comments/CommentList.vue +117 -85
- package/src/components/display/comments/CommentParentInfo.vue +18 -15
- package/src/components/display/comments/CommentPlayer.vue +39 -41
- package/src/components/display/comments/CommentSection.vue +68 -53
- package/src/components/display/edit/EditBox.vue +7 -7
- package/src/components/display/edit/EditBoxRadio.vue +3 -4
- package/src/components/display/edit/EditCommentBox.vue +34 -36
- package/src/components/display/emission/EmissionInlineList.vue +75 -63
- package/src/components/display/emission/EmissionItem.vue +47 -35
- package/src/components/display/emission/EmissionList.vue +118 -83
- package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
- package/src/components/display/filter/AdvancedSearch.vue +81 -73
- package/src/components/display/filter/CategorySearchFilter.vue +27 -25
- package/src/components/display/filter/DateFilter.vue +38 -38
- package/src/components/display/filter/MonetizableFilter.vue +16 -14
- package/src/components/display/filter/ProductorSearch.vue +55 -47
- package/src/components/display/filter/RubriqueChoice.vue +42 -27
- package/src/components/display/filter/RubriqueFilter.vue +130 -85
- package/src/components/display/filter/SearchOrder.vue +16 -11
- package/src/components/display/list/ListPaginate.vue +72 -70
- package/src/components/display/list/PaginateParams.vue +29 -30
- package/src/components/display/list/PaginateSection.vue +210 -0
- package/src/components/display/list/SwiperList.vue +28 -32
- package/src/components/display/live/CountDown.vue +12 -14
- package/src/components/display/live/LiveHorizontalList.vue +60 -50
- package/src/components/display/live/LiveItem.vue +42 -26
- package/src/components/display/live/LiveList.vue +92 -65
- package/src/components/display/live/RadioCurrently.vue +47 -42
- package/src/components/display/live/RadioImage.vue +40 -42
- package/src/components/display/live/RadioItem.vue +15 -22
- package/src/components/display/live/RadioList.vue +24 -21
- package/src/components/display/live/RadioPlanning.vue +105 -68
- package/src/components/display/organisation/OrganisationChooser.vue +58 -42
- package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
- package/src/components/display/participant/ParticipantItem.vue +89 -77
- package/src/components/display/participant/ParticipantList.vue +90 -60
- package/src/components/display/playlist/PlaylistItem.vue +32 -35
- package/src/components/display/playlist/PlaylistList.vue +70 -52
- package/src/components/display/playlist/PodcastList.vue +61 -50
- package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
- package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
- package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
- package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
- package/src/components/display/podcasts/PodcastImage.vue +129 -131
- package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
- package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
- package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
- package/src/components/display/podcasts/PodcastItem.vue +96 -90
- package/src/components/display/podcasts/PodcastItemInfo.vue +61 -65
- package/src/components/display/podcasts/PodcastList.vue +115 -84
- package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
- package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
- package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
- package/src/components/display/podcasts/TagList.vue +33 -37
- package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
- package/src/components/display/rubriques/RubriqueList.vue +117 -89
- package/src/components/display/sharing/PlayerParameters.vue +45 -42
- package/src/components/display/sharing/QrCode.vue +52 -46
- package/src/components/display/sharing/ShareButtons.vue +18 -18
- package/src/components/display/sharing/ShareButtonsIntern.vue +100 -78
- package/src/components/display/sharing/ShareDistribution.vue +101 -67
- package/src/components/display/sharing/SharePlayer.vue +207 -127
- package/src/components/display/sharing/SharePlayerColors.vue +15 -15
- package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
- package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
- package/src/components/display/sharing/SubscribeButtons.vue +83 -32
- package/src/components/display/studio/RecordingItemButton.vue +3 -3
- package/src/components/form/ClassicCheckbox.vue +32 -31
- package/src/components/form/ClassicDatePicker.vue +47 -49
- package/src/components/form/ClassicInputText.vue +99 -98
- package/src/components/form/ClassicLoading.vue +11 -14
- package/src/components/form/ClassicMultiselect.vue +125 -126
- package/src/components/form/ClassicRadio.vue +15 -18
- package/src/components/form/ClassicSearch.vue +17 -23
- package/src/components/form/ClassicSelect.vue +35 -27
- package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +103 -118
- package/src/components/misc/AcpmImage.vue +6 -6
- package/src/components/misc/ClassicAccordion.vue +73 -0
- package/src/components/misc/ClassicNav.vue +117 -0
- package/src/components/misc/ClassicPopover.vue +212 -0
- package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
- package/src/components/misc/ErrorMessage.vue +9 -17
- package/src/components/misc/FooterSection.vue +198 -0
- package/src/components/misc/HomeDropdown.vue +60 -60
- package/src/components/misc/LeftMenu.vue +115 -79
- package/src/components/misc/ProgressBar.vue +36 -32
- package/src/components/misc/SnackBar.vue +169 -0
- package/src/components/misc/TopBar.vue +162 -116
- package/src/components/misc/modal/ClassicModal.vue +99 -103
- package/src/components/misc/modal/ClipboardModal.vue +21 -23
- package/src/components/misc/modal/MessageModal.vue +22 -28
- package/src/components/misc/modal/NewsletterModal.vue +139 -113
- package/src/components/misc/modal/QrCodeModal.vue +14 -17
- package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
- package/src/components/misc/player/PlayerCompact.vue +47 -62
- package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
- package/src/components/misc/player/PlayerLarge.vue +62 -61
- package/src/components/misc/player/PlayerProgressBar.vue +40 -30
- package/src/components/misc/player/PlayerTimeline.vue +32 -36
- package/src/components/misc/player/radio/RadioHistory.vue +62 -59
- package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
- package/src/components/mixins/cookies.ts +11 -10
- package/src/components/mixins/displayMethods.ts +5 -4
- package/src/components/mixins/handle403.ts +9 -9
- package/src/components/mixins/imageProxy.ts +14 -7
- package/src/components/mixins/init.ts +31 -16
- package/src/components/mixins/orgaComputed.ts +7 -7
- package/src/components/mixins/organisationFilter.ts +36 -22
- package/src/components/mixins/player/playerComment.ts +46 -37
- package/src/components/mixins/player/playerDisplay.ts +122 -87
- package/src/components/mixins/player/playerLive.ts +65 -43
- package/src/components/mixins/player/playerLogic.ts +133 -88
- package/src/components/mixins/player/playerTranscript.ts +48 -30
- package/src/components/mixins/radio/fetchRadioData.ts +40 -23
- package/src/components/mixins/selenium.ts +2 -2
- package/src/components/mixins/tagOfMixins.ts +11 -11
- package/src/components/pages/CategoryPage.vue +43 -0
- package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
- package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
- package/src/components/pages/Error403Page.vue +20 -19
- package/src/components/pages/HomePage.vue +144 -0
- package/src/components/pages/LivesPage.vue +66 -0
- package/src/components/pages/PageNotFound.vue +33 -22
- package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
- package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
- package/src/components/pages/PlaylistPage.vue +175 -0
- package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
- package/src/components/pages/PodcastPage.vue +365 -0
- package/src/components/pages/PodcastsPage.vue +152 -0
- package/src/components/pages/RadioPage.vue +131 -0
- package/src/components/pages/RubriquePage.vue +45 -0
- package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
- package/src/helper/dom.ts +1 -1
- package/src/helper/duration.ts +10 -4
- package/src/helper/useEventListener.ts +7 -8
- package/src/i18n.ts +31 -30
- package/src/locale/de.ts +272 -257
- package/src/locale/educationen.ts +13 -13
- package/src/locale/educationfr.ts +1 -1
- package/src/locale/en.ts +332 -324
- package/src/locale/es.ts +334 -318
- package/src/locale/fr.ts +339 -324
- package/src/locale/it.ts +341 -328
- package/src/locale/messages.ts +9 -9
- package/src/locale/sl.ts +324 -319
- package/src/main.ts +28 -31
- package/src/router/router.ts +218 -198
- package/src/shims-tsx.d.ts +1 -1
- package/src/shims-vue.d.ts +1 -1
- package/src/stores/ApiStore.ts +44 -44
- package/src/stores/AuthStore.ts +21 -15
- package/src/stores/CommentStore.ts +13 -11
- package/src/stores/FilterStore.ts +25 -15
- package/src/stores/GeneralStore.ts +15 -15
- package/src/stores/ParamSdkStore.ts +179 -137
- package/src/stores/PlayerStore.ts +139 -125
- package/src/stores/class/adserver/adserverConfig.ts +1 -1
- package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
- package/src/stores/class/cartouchier/cartouche.ts +4 -4
- package/src/stores/class/cartouchier/cartouchier.ts +2 -2
- package/src/stores/class/conference/conference.ts +10 -9
- package/src/stores/class/conference/conferenceMessage.ts +2 -2
- package/src/stores/class/conference/conferenceParticipant.ts +1 -1
- package/src/stores/class/conference/studioCall.ts +6 -6
- package/src/stores/class/contract/contractOrganisation.ts +5 -5
- package/src/stores/class/ftp/ftpEmission.ts +9 -9
- package/src/stores/class/ftp/testFtpEmission.ts +4 -4
- package/src/stores/class/general/audioView.ts +19 -19
- package/src/stores/class/general/category.ts +1 -1
- package/src/stores/class/general/classicSelectType.ts +2 -3
- package/src/stores/class/general/customPlayer.ts +8 -8
- package/src/stores/class/general/emission.ts +20 -20
- package/src/stores/class/general/fetchParam.ts +8 -2
- package/src/stores/class/general/initState.ts +31 -31
- package/src/stores/class/general/interfacePageable.ts +13 -13
- package/src/stores/class/general/ituneCategory.ts +4 -4
- package/src/stores/class/general/listReturn.ts +12 -12
- package/src/stores/class/general/media.ts +7 -7
- package/src/stores/class/general/organisation.ts +9 -9
- package/src/stores/class/general/pageable.ts +10 -10
- package/src/stores/class/general/participant.ts +7 -7
- package/src/stores/class/general/player.ts +30 -28
- package/src/stores/class/general/playlist.ts +17 -19
- package/src/stores/class/general/podcast.ts +19 -19
- package/src/stores/class/general/sortPageable.ts +4 -4
- package/src/stores/class/general/soundcastCategory.ts +7 -7
- package/src/stores/class/ouestFrance/ofTag.ts +34 -34
- package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
- package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
- package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
- package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
- package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
- package/src/stores/class/radio/canal.ts +4 -4
- package/src/stores/class/radio/live.ts +6 -6
- package/src/stores/class/radio/mix.ts +16 -16
- package/src/stores/class/radio/playlistMedia.ts +7 -7
- package/src/stores/class/radio/recurrence.ts +54 -54
- package/src/stores/class/rss/rssEmission.ts +13 -13
- package/src/stores/class/rss/rssInfo.ts +7 -7
- package/src/stores/class/rubrique/rubriquage.ts +2 -2
- package/src/stores/class/rubrique/rubrique.ts +1 -1
- package/src/stores/class/stat/statArrayIncome.ts +5 -5
- package/src/stores/class/stat/statArrayObject.ts +26 -26
- package/src/stores/class/stat/statGraph.ts +6 -6
- package/src/stores/class/user/person.ts +4 -2
- package/src/stores/class/user/profile.ts +4 -2
- package/src/stores/class/user/userKeycloak.ts +4 -5
- package/src/components/display/list/Paginate.vue +0 -181
- package/src/components/misc/Accordion.vue +0 -78
- package/src/components/misc/Footer.vue +0 -169
- package/src/components/misc/Nav.vue +0 -119
- package/src/components/misc/Popover.vue +0 -193
- package/src/components/misc/Snackbar.vue +0 -168
- package/src/components/pages/Category.vue +0 -41
- package/src/components/pages/Home.vue +0 -125
- package/src/components/pages/Lives.vue +0 -64
- package/src/components/pages/Playlist.vue +0 -164
- package/src/components/pages/Podcast.vue +0 -307
- package/src/components/pages/Podcasts.vue +0 -146
- package/src/components/pages/Radio.vue +0 -122
- package/src/components/pages/Rubrique.vue +0 -42
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
class="emission-player-container"
|
|
4
|
-
>
|
|
2
|
+
<div class="emission-player-container">
|
|
5
3
|
<router-link
|
|
6
4
|
:to="{
|
|
7
5
|
name: 'emission',
|
|
@@ -10,27 +8,19 @@
|
|
|
10
8
|
}"
|
|
11
9
|
class="d-flex flex-column text-dark"
|
|
12
10
|
>
|
|
13
|
-
<div
|
|
14
|
-
v-if="rubriqueName"
|
|
15
|
-
class="emissionPlayerItem-info"
|
|
16
|
-
>
|
|
11
|
+
<div v-if="rubriqueName" class="emissionPlayerItem-info">
|
|
17
12
|
{{ rubriqueName }}
|
|
18
13
|
</div>
|
|
19
|
-
<div
|
|
20
|
-
class="img-box rounded-0"
|
|
21
|
-
>
|
|
14
|
+
<div class="img-box rounded-0">
|
|
22
15
|
<img
|
|
23
16
|
v-lazy="proxyImageUrl(emission.imageUrl, '330')"
|
|
24
17
|
width="330"
|
|
25
18
|
height="330"
|
|
26
|
-
:title="$t('Emission name image', {name:emission.name})"
|
|
27
|
-
:alt="$t('Emission name image', {name:emission.name})"
|
|
19
|
+
:title="$t('Emission name image', { name: emission.name })"
|
|
20
|
+
:alt="$t('Emission name image', { name: emission.name })"
|
|
28
21
|
class="img-box rounded-0"
|
|
29
|
-
|
|
30
|
-
<div
|
|
31
|
-
v-if="titleInImage"
|
|
32
|
-
class="titleInImage"
|
|
33
|
-
>
|
|
22
|
+
/>
|
|
23
|
+
<div v-if="titleInImage" class="titleInImage">
|
|
34
24
|
{{ emission.name }}
|
|
35
25
|
</div>
|
|
36
26
|
</div>
|
|
@@ -82,45 +72,31 @@
|
|
|
82
72
|
{{ p.title }}
|
|
83
73
|
</div>
|
|
84
74
|
<div
|
|
85
|
-
:ref="'descriptionPodcastContainer'+ p.podcastId"
|
|
75
|
+
:ref="'descriptionPodcastContainer' + p.podcastId"
|
|
86
76
|
class="emission-description html-wysiwyg-content"
|
|
87
77
|
>
|
|
88
78
|
<!-- eslint-disable vue/no-v-html -->
|
|
89
79
|
<div
|
|
90
|
-
:ref="'descriptionPodcast'+ p.podcastId"
|
|
80
|
+
:ref="'descriptionPodcast' + p.podcastId"
|
|
91
81
|
v-html="urlify(p.description)"
|
|
92
82
|
/>
|
|
93
83
|
<!-- eslint-enable -->
|
|
94
84
|
</div>
|
|
95
85
|
</router-link>
|
|
96
|
-
<PodcastPlayBar
|
|
97
|
-
:podcast-id="p.podcastId"
|
|
98
|
-
:duration="p.duration"
|
|
99
|
-
/>
|
|
86
|
+
<PodcastPlayBar :podcast-id="p.podcastId" :duration="p.duration" />
|
|
100
87
|
</div>
|
|
101
88
|
<button
|
|
102
89
|
v-if="
|
|
103
90
|
playerPodcast !== p ||
|
|
104
|
-
|
|
105
|
-
'PAUSED' === playerStatus)
|
|
91
|
+
(playerPodcast === p && 'PAUSED' === playerStatus)
|
|
106
92
|
"
|
|
107
93
|
class="play-button-box bg-secondary"
|
|
108
94
|
@click="play(p)"
|
|
109
95
|
>
|
|
110
|
-
<div
|
|
111
|
-
class="text-light saooti-play"
|
|
112
|
-
:title="$t('Play')"
|
|
113
|
-
/>
|
|
96
|
+
<div class="text-light saooti-play" :title="$t('Play')" />
|
|
114
97
|
</button>
|
|
115
|
-
<button
|
|
116
|
-
|
|
117
|
-
class="play-button-box bg-secondary"
|
|
118
|
-
@click="pause(p)"
|
|
119
|
-
>
|
|
120
|
-
<div
|
|
121
|
-
class="text-light saooti-pause"
|
|
122
|
-
:title="$t('Pause')"
|
|
123
|
-
/>
|
|
98
|
+
<button v-else class="play-button-box bg-secondary" @click="pause(p)">
|
|
99
|
+
<div class="text-light saooti-pause" :title="$t('Pause')" />
|
|
124
100
|
</button>
|
|
125
101
|
</div>
|
|
126
102
|
</div>
|
|
@@ -136,35 +112,35 @@
|
|
|
136
112
|
}"
|
|
137
113
|
class="btn"
|
|
138
114
|
>
|
|
139
|
-
{{ $t(
|
|
115
|
+
{{ $t("More episodes") }}
|
|
140
116
|
</router-link>
|
|
141
117
|
</div>
|
|
142
118
|
</div>
|
|
143
119
|
</template>
|
|
144
120
|
|
|
145
121
|
<script lang="ts">
|
|
146
|
-
import octopusApi from
|
|
147
|
-
import { Emission } from
|
|
148
|
-
import { Podcast } from
|
|
149
|
-
import { state } from
|
|
150
|
-
import PodcastPlayBar from
|
|
151
|
-
import imageProxy from
|
|
152
|
-
import displayMethods from
|
|
153
|
-
import { usePlayerStore } from
|
|
154
|
-
import { useFilterStore } from
|
|
155
|
-
import { mapState, mapActions } from
|
|
156
|
-
import { defineComponent } from
|
|
122
|
+
import octopusApi from "@saooti/octopus-api";
|
|
123
|
+
import { Emission } from "@/stores/class/general/emission";
|
|
124
|
+
import { Podcast } from "@/stores/class/general/podcast";
|
|
125
|
+
import { state } from "../../../stores/ParamSdkStore";
|
|
126
|
+
import PodcastPlayBar from "../podcasts/PodcastPlayBar.vue";
|
|
127
|
+
import imageProxy from "../../mixins/imageProxy";
|
|
128
|
+
import displayMethods from "../../mixins/displayMethods";
|
|
129
|
+
import { usePlayerStore } from "@/stores/PlayerStore";
|
|
130
|
+
import { useFilterStore } from "@/stores/FilterStore";
|
|
131
|
+
import { mapState, mapActions } from "pinia";
|
|
132
|
+
import { defineComponent } from "vue";
|
|
157
133
|
export default defineComponent({
|
|
158
|
-
name:
|
|
134
|
+
name: "EmissionPlayerItem",
|
|
159
135
|
|
|
160
|
-
components:{
|
|
161
|
-
PodcastPlayBar
|
|
136
|
+
components: {
|
|
137
|
+
PodcastPlayBar,
|
|
162
138
|
},
|
|
163
139
|
mixins: [displayMethods, imageProxy],
|
|
164
140
|
props: {
|
|
165
|
-
emission: { default: ()=>({}), type: Object as ()=>Emission },
|
|
141
|
+
emission: { default: () => ({}), type: Object as () => Emission },
|
|
166
142
|
nbPodcasts: { default: undefined, type: Number },
|
|
167
|
-
rubriqueName: { default: undefined, type: String},
|
|
143
|
+
rubriqueName: { default: undefined, type: String },
|
|
168
144
|
},
|
|
169
145
|
|
|
170
146
|
data() {
|
|
@@ -173,28 +149,31 @@ export default defineComponent({
|
|
|
173
149
|
podcasts: [] as Array<Podcast>,
|
|
174
150
|
};
|
|
175
151
|
},
|
|
176
|
-
|
|
152
|
+
|
|
177
153
|
computed: {
|
|
178
|
-
...mapState(useFilterStore, [
|
|
179
|
-
...mapState(usePlayerStore, [
|
|
180
|
-
isProgressBar(): boolean{
|
|
181
|
-
return
|
|
154
|
+
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
155
|
+
...mapState(usePlayerStore, ["playerPodcast", "playerStatus"]),
|
|
156
|
+
isProgressBar(): boolean {
|
|
157
|
+
return state.emissionsPage.progressBar as boolean;
|
|
182
158
|
},
|
|
183
159
|
buttonMore(): boolean {
|
|
184
|
-
return
|
|
160
|
+
return state.emissionsPage.buttonMore as boolean;
|
|
185
161
|
},
|
|
186
162
|
titleInImage(): boolean {
|
|
187
|
-
return
|
|
163
|
+
return state.emissionsPage.titleInImage as boolean;
|
|
188
164
|
},
|
|
189
165
|
authenticated(): boolean {
|
|
190
|
-
return state.generalParameters.authenticated??false;
|
|
166
|
+
return state.generalParameters.authenticated ?? false;
|
|
191
167
|
},
|
|
192
|
-
organisationId(): string|undefined {
|
|
168
|
+
organisationId(): string | undefined {
|
|
193
169
|
return state.generalParameters.organisationId;
|
|
194
170
|
},
|
|
195
171
|
editRight(): boolean {
|
|
196
|
-
return (
|
|
172
|
+
return (
|
|
173
|
+
(true === this.authenticated &&
|
|
174
|
+
this.organisationId === this.emission.orga.id) ||
|
|
197
175
|
true === state.generalParameters.isAdmin
|
|
176
|
+
);
|
|
198
177
|
},
|
|
199
178
|
},
|
|
200
179
|
|
|
@@ -202,17 +181,19 @@ export default defineComponent({
|
|
|
202
181
|
this.loadPodcasts();
|
|
203
182
|
},
|
|
204
183
|
mounted() {
|
|
205
|
-
const emissionDesc =
|
|
206
|
-
const emissionDescContainer =
|
|
184
|
+
const emissionDesc = this.$refs.descriptionEmission as HTMLElement;
|
|
185
|
+
const emissionDescContainer = this.$refs
|
|
186
|
+
.descriptionEmissionContainer as HTMLElement;
|
|
207
187
|
if (
|
|
208
|
-
null !== emissionDesc &&
|
|
188
|
+
null !== emissionDesc &&
|
|
189
|
+
null !== emissionDescContainer &&
|
|
209
190
|
emissionDesc.clientHeight > emissionDescContainer.clientHeight
|
|
210
191
|
) {
|
|
211
|
-
emissionDescContainer.classList.add(
|
|
192
|
+
emissionDescContainer.classList.add("after-emission-description");
|
|
212
193
|
}
|
|
213
194
|
},
|
|
214
195
|
methods: {
|
|
215
|
-
...mapActions(usePlayerStore, [
|
|
196
|
+
...mapActions(usePlayerStore, ["playerPlay", "playerChangeStatus"]),
|
|
216
197
|
play(podcast: Podcast): void {
|
|
217
198
|
if (podcast === this.playerPodcast) {
|
|
218
199
|
this.playerChangeStatus(false);
|
|
@@ -225,34 +206,54 @@ export default defineComponent({
|
|
|
225
206
|
},
|
|
226
207
|
async loadPodcasts(): Promise<void> {
|
|
227
208
|
const nb = this.nbPodcasts ? this.nbPodcasts : 2;
|
|
228
|
-
const data =
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}
|
|
209
|
+
const data = await octopusApi.fetchDataWithParams<{
|
|
210
|
+
count: number;
|
|
211
|
+
result: Array<Podcast>;
|
|
212
|
+
sort: string;
|
|
213
|
+
}>(
|
|
214
|
+
0,
|
|
215
|
+
"podcast/search",
|
|
216
|
+
{
|
|
217
|
+
emissionId: this.emission.emissionId,
|
|
218
|
+
size: nb,
|
|
219
|
+
includeStatus: ["READY", "PROCESSING"],
|
|
220
|
+
},
|
|
221
|
+
true,
|
|
222
|
+
);
|
|
233
223
|
if (0 === data.count) {
|
|
234
224
|
this.activeEmission = false;
|
|
235
225
|
}
|
|
236
226
|
this.podcasts = data.result;
|
|
237
227
|
this.$nextTick(() => {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
podcastDescContainer
|
|
228
|
+
for (let index = 0, len = this.podcasts.length; index < len; index++) {
|
|
229
|
+
const podcastDesc =
|
|
230
|
+
(
|
|
231
|
+
this.$refs[
|
|
232
|
+
"descriptionPodcast" + this.podcasts[index].podcastId
|
|
233
|
+
] as Array<HTMLElement>
|
|
234
|
+
)?.[0] ?? null;
|
|
235
|
+
const podcastDescContainer =
|
|
236
|
+
(
|
|
237
|
+
this.$refs[
|
|
238
|
+
"descriptionPodcastContainer" + this.podcasts[index].podcastId
|
|
239
|
+
] as Array<HTMLElement>
|
|
240
|
+
)?.[0] ?? null;
|
|
241
|
+
if (
|
|
242
|
+
null !== podcastDesc &&
|
|
243
|
+
null !== podcastDescContainer &&
|
|
244
|
+
podcastDesc.clientHeight > podcastDescContainer.clientHeight
|
|
245
|
+
) {
|
|
246
|
+
podcastDescContainer.classList.add("after-emission-description");
|
|
247
|
+
}
|
|
246
248
|
}
|
|
247
|
-
}
|
|
248
249
|
});
|
|
249
250
|
},
|
|
250
251
|
},
|
|
251
|
-
})
|
|
252
|
+
});
|
|
252
253
|
</script>
|
|
253
254
|
|
|
254
255
|
<style lang="scss">
|
|
255
|
-
@import
|
|
256
|
+
@import "@scss/_variables.scss";
|
|
256
257
|
.emission-player-container {
|
|
257
258
|
list-style: none;
|
|
258
259
|
background: #fff;
|
|
@@ -274,7 +275,7 @@ export default defineComponent({
|
|
|
274
275
|
max-height: 3.5rem;
|
|
275
276
|
position: relative;
|
|
276
277
|
&.after-emission-description:after {
|
|
277
|
-
content:
|
|
278
|
+
content: "...";
|
|
278
279
|
position: absolute;
|
|
279
280
|
padding-left: 1rem;
|
|
280
281
|
right: 0;
|
|
@@ -298,5 +299,4 @@ export default defineComponent({
|
|
|
298
299
|
max-width: $octopus-mobile-item-size;
|
|
299
300
|
}
|
|
300
301
|
}
|
|
301
|
-
|
|
302
|
-
</style>
|
|
302
|
+
</style>
|
|
@@ -4,35 +4,32 @@
|
|
|
4
4
|
class="d-flex justify-content-center align-items-center mb-3 text-secondary btn-transparent"
|
|
5
5
|
@click="showFilters = !showFilters"
|
|
6
6
|
>
|
|
7
|
-
<div>{{ $t(
|
|
8
|
-
<div
|
|
7
|
+
<div>{{ $t("Advanced filters") }}</div>
|
|
8
|
+
<div
|
|
9
9
|
class="saooti-down mx-1"
|
|
10
10
|
:class="{ 'arrow-transform': showFilters }"
|
|
11
11
|
/>
|
|
12
12
|
</button>
|
|
13
|
-
<div
|
|
14
|
-
v-show="showFilters"
|
|
15
|
-
class="advanced-search-container"
|
|
16
|
-
>
|
|
13
|
+
<div v-show="showFilters" class="advanced-search-container">
|
|
17
14
|
<div class="d-flex flex-column">
|
|
18
15
|
<div class="text-primary mb-2">
|
|
19
|
-
{{ $t(
|
|
16
|
+
{{ $t("Filter") }}
|
|
20
17
|
</div>
|
|
21
18
|
<MonetizableFilter
|
|
22
19
|
v-if="sdkParameters.isMonetizableFilter && !isEducation"
|
|
23
20
|
:is-emission="isEmission"
|
|
24
|
-
@
|
|
21
|
+
@update-monetization="updateMonetization"
|
|
25
22
|
/>
|
|
26
|
-
<CategorySearchFilter @
|
|
27
|
-
<RubriqueFilter
|
|
23
|
+
<CategorySearchFilter @update-category="updateCategory" />
|
|
24
|
+
<RubriqueFilter
|
|
28
25
|
:reset-rubriquage="resetRubriquage"
|
|
29
26
|
:organisation-id="organisationId"
|
|
30
|
-
@
|
|
27
|
+
@update-rubriquage-filter="updateRubriquageFilter"
|
|
31
28
|
/>
|
|
32
29
|
<DateFilter
|
|
33
30
|
:is-emission="isEmission"
|
|
34
|
-
@
|
|
35
|
-
@
|
|
31
|
+
@update-to-date="updateToDate"
|
|
32
|
+
@update-from-date="updateFromDate"
|
|
36
33
|
/>
|
|
37
34
|
<div
|
|
38
35
|
v-if="organisation && organisationRight && !isPodcastmaker"
|
|
@@ -46,10 +43,7 @@
|
|
|
46
43
|
:is-disabled="isCheckboxNotValidate && isNotValidate"
|
|
47
44
|
/>
|
|
48
45
|
</div>
|
|
49
|
-
<div
|
|
50
|
-
v-if="isCheckboxNotValidate"
|
|
51
|
-
class="d-flex flex-column mt-3"
|
|
52
|
-
>
|
|
46
|
+
<div v-if="isCheckboxNotValidate" class="d-flex flex-column mt-3">
|
|
53
47
|
<ClassicCheckbox
|
|
54
48
|
v-model:textInit="isNotValidate"
|
|
55
49
|
class="flex-shrink-0"
|
|
@@ -60,12 +54,12 @@
|
|
|
60
54
|
</div>
|
|
61
55
|
<div class="d-flex flex-column">
|
|
62
56
|
<div class="text-primary mb-2">
|
|
63
|
-
{{ $t(
|
|
57
|
+
{{ $t("Sort") }}
|
|
64
58
|
</div>
|
|
65
59
|
<SearchOrder
|
|
66
60
|
:is-emission="isEmission"
|
|
67
61
|
:sort-criteria="sortCriteria"
|
|
68
|
-
@
|
|
62
|
+
@update-sort-criteria="updateSortCriteria"
|
|
69
63
|
/>
|
|
70
64
|
</div>
|
|
71
65
|
</div>
|
|
@@ -73,16 +67,18 @@
|
|
|
73
67
|
</template>
|
|
74
68
|
|
|
75
69
|
<script lang="ts">
|
|
76
|
-
import { state } from
|
|
77
|
-
import { orgaComputed } from
|
|
78
|
-
import CategorySearchFilter from
|
|
79
|
-
import DateFilter from
|
|
80
|
-
import SearchOrder from
|
|
81
|
-
import RubriqueFilter from
|
|
82
|
-
import ClassicCheckbox from
|
|
83
|
-
import { RubriquageFilter } from
|
|
84
|
-
import { defineComponent, defineAsyncComponent } from
|
|
85
|
-
const MonetizableFilter = defineAsyncComponent(
|
|
70
|
+
import { state } from "../../../stores/ParamSdkStore";
|
|
71
|
+
import { orgaComputed } from "../../mixins/orgaComputed";
|
|
72
|
+
import CategorySearchFilter from "./CategorySearchFilter.vue";
|
|
73
|
+
import DateFilter from "./DateFilter.vue";
|
|
74
|
+
import SearchOrder from "./SearchOrder.vue";
|
|
75
|
+
import RubriqueFilter from "./RubriqueFilter.vue";
|
|
76
|
+
import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
|
|
77
|
+
import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
|
|
78
|
+
import { defineComponent, defineAsyncComponent } from "vue";
|
|
79
|
+
const MonetizableFilter = defineAsyncComponent(
|
|
80
|
+
() => import("./MonetizableFilter.vue"),
|
|
81
|
+
);
|
|
86
82
|
export default defineComponent({
|
|
87
83
|
components: {
|
|
88
84
|
MonetizableFilter,
|
|
@@ -90,26 +86,28 @@ export default defineComponent({
|
|
|
90
86
|
RubriqueFilter,
|
|
91
87
|
ClassicCheckbox,
|
|
92
88
|
DateFilter,
|
|
93
|
-
SearchOrder
|
|
89
|
+
SearchOrder,
|
|
94
90
|
},
|
|
95
91
|
mixins: [orgaComputed],
|
|
96
92
|
props: {
|
|
97
|
-
organisationId: { default: undefined, type: String},
|
|
98
|
-
isEmission: { default: false, type:
|
|
99
|
-
resetRubriquage: { default: false, type:
|
|
100
|
-
isEducation: { default: false, type:
|
|
101
|
-
includeHidden: { default: false, type:
|
|
102
|
-
sortCriteria: { default:
|
|
93
|
+
organisationId: { default: undefined, type: String },
|
|
94
|
+
isEmission: { default: false, type: Boolean },
|
|
95
|
+
resetRubriquage: { default: false, type: Boolean },
|
|
96
|
+
isEducation: { default: false, type: Boolean },
|
|
97
|
+
includeHidden: { default: false, type: Boolean },
|
|
98
|
+
sortCriteria: { default: "DATE", type: String },
|
|
103
99
|
},
|
|
104
100
|
|
|
105
|
-
emits: [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
101
|
+
emits: [
|
|
102
|
+
"updateToDate",
|
|
103
|
+
"updateFromDate",
|
|
104
|
+
"updateMonetization",
|
|
105
|
+
"updateCategory",
|
|
106
|
+
"updateSortCriteria",
|
|
107
|
+
"includeHidden",
|
|
108
|
+
"notValid",
|
|
109
|
+
"updateRubriquageFilter",
|
|
110
|
+
],
|
|
113
111
|
data() {
|
|
114
112
|
return {
|
|
115
113
|
isNotVisible: this.includeHidden,
|
|
@@ -120,28 +118,33 @@ export default defineComponent({
|
|
|
120
118
|
|
|
121
119
|
computed: {
|
|
122
120
|
isPodcastmaker(): boolean {
|
|
123
|
-
return
|
|
121
|
+
return state.generalParameters.podcastmaker as boolean;
|
|
124
122
|
},
|
|
125
|
-
sdkParameters(){
|
|
123
|
+
sdkParameters() {
|
|
126
124
|
return {
|
|
127
|
-
isMonetizableFilter
|
|
128
|
-
isProduction
|
|
129
|
-
isContribution
|
|
130
|
-
}
|
|
125
|
+
isMonetizableFilter: state.podcastsPage.MonetizableFilter as boolean,
|
|
126
|
+
isProduction: state.generalParameters.isProduction as boolean,
|
|
127
|
+
isContribution: state.generalParameters.isContribution as boolean,
|
|
128
|
+
};
|
|
131
129
|
},
|
|
132
130
|
organisationRight(): boolean {
|
|
133
|
-
return (
|
|
134
|
-
true ===
|
|
131
|
+
return (
|
|
132
|
+
(true === this.authenticated &&
|
|
133
|
+
this.myOrganisationId === this.organisationId) ||
|
|
134
|
+
true === state.generalParameters.isAdmin
|
|
135
|
+
);
|
|
135
136
|
},
|
|
136
|
-
organisation(): string|undefined {
|
|
137
|
-
return this.organisationId??this.filterOrgaId;
|
|
137
|
+
organisation(): string | undefined {
|
|
138
|
+
return this.organisationId ?? this.filterOrgaId;
|
|
138
139
|
},
|
|
139
140
|
textNotVisible(): string {
|
|
140
|
-
return this.isEmission
|
|
141
|
+
return this.isEmission
|
|
142
|
+
? this.$t("Consider podcasts no visible")
|
|
143
|
+
: this.$t("See podcasts no visible");
|
|
141
144
|
},
|
|
142
145
|
isCheckboxNotValidate(): boolean {
|
|
143
146
|
return (
|
|
144
|
-
undefined!==this.organisation &&
|
|
147
|
+
undefined !== this.organisation &&
|
|
145
148
|
this.organisationRight &&
|
|
146
149
|
this.sdkParameters.isContribution &&
|
|
147
150
|
!this.isPodcastmaker &&
|
|
@@ -150,39 +153,44 @@ export default defineComponent({
|
|
|
150
153
|
);
|
|
151
154
|
},
|
|
152
155
|
textNotValidate(): string {
|
|
153
|
-
return this.sdkParameters.isProduction
|
|
156
|
+
return this.sdkParameters.isProduction
|
|
157
|
+
? this.$t("Display all podcasts to validate")
|
|
158
|
+
: this.$t("Display my podcasts to validate");
|
|
154
159
|
},
|
|
155
160
|
},
|
|
156
161
|
watch: {
|
|
157
162
|
organisation(): void {
|
|
158
|
-
this.isNotVisible =
|
|
163
|
+
this.isNotVisible =
|
|
164
|
+
undefined !== this.organisation &&
|
|
165
|
+
this.organisationRight &&
|
|
166
|
+
!this.isEmission;
|
|
159
167
|
},
|
|
160
|
-
isNotVisible(): void{
|
|
161
|
-
this.$emit(
|
|
168
|
+
isNotVisible(): void {
|
|
169
|
+
this.$emit("includeHidden", this.isNotVisible);
|
|
162
170
|
},
|
|
163
171
|
isNotValidate(): void {
|
|
164
|
-
this.$emit(
|
|
172
|
+
this.$emit("notValid", this.isNotValidate);
|
|
165
173
|
},
|
|
166
174
|
},
|
|
167
175
|
methods: {
|
|
168
176
|
updateFromDate(value: string): void {
|
|
169
|
-
this.$emit(
|
|
177
|
+
this.$emit("updateFromDate", value);
|
|
170
178
|
},
|
|
171
179
|
updateToDate(value: string): void {
|
|
172
|
-
this.$emit(
|
|
180
|
+
this.$emit("updateToDate", value);
|
|
173
181
|
},
|
|
174
182
|
updateMonetization(value: string): void {
|
|
175
|
-
this.$emit(
|
|
183
|
+
this.$emit("updateMonetization", value);
|
|
184
|
+
},
|
|
185
|
+
updateCategory(value: number) {
|
|
186
|
+
this.$emit("updateCategory", 0 !== value ? value : undefined);
|
|
176
187
|
},
|
|
177
|
-
|
|
178
|
-
this.$emit(
|
|
188
|
+
updateRubriquageFilter(value: Array<RubriquageFilter>) {
|
|
189
|
+
this.$emit("updateRubriquageFilter", value);
|
|
179
190
|
},
|
|
180
|
-
|
|
181
|
-
this.$emit(
|
|
191
|
+
updateSortCriteria(value: string) {
|
|
192
|
+
this.$emit("updateSortCriteria", value);
|
|
182
193
|
},
|
|
183
|
-
updateSortCriteria(value: string){
|
|
184
|
-
this.$emit('updateSortCriteria', value);
|
|
185
|
-
}
|
|
186
194
|
},
|
|
187
|
-
})
|
|
188
|
-
</script>
|
|
195
|
+
});
|
|
196
|
+
</script>
|
|
@@ -15,17 +15,17 @@
|
|
|
15
15
|
</template>
|
|
16
16
|
|
|
17
17
|
<script lang="ts">
|
|
18
|
-
import ClassicCheckbox from
|
|
19
|
-
import CategoryChooser from
|
|
20
|
-
import { useFilterStore } from
|
|
21
|
-
import { mapState, mapActions } from
|
|
22
|
-
import { defineComponent } from
|
|
18
|
+
import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
|
|
19
|
+
import CategoryChooser from "../categories/CategoryChooser.vue";
|
|
20
|
+
import { useFilterStore } from "@/stores/FilterStore";
|
|
21
|
+
import { mapState, mapActions } from "pinia";
|
|
22
|
+
import { defineComponent } from "vue";
|
|
23
23
|
export default defineComponent({
|
|
24
24
|
components: {
|
|
25
25
|
CategoryChooser,
|
|
26
|
-
ClassicCheckbox
|
|
26
|
+
ClassicCheckbox,
|
|
27
27
|
},
|
|
28
|
-
emits: [
|
|
28
|
+
emits: ["updateCategory"],
|
|
29
29
|
data() {
|
|
30
30
|
return {
|
|
31
31
|
isCategory: false as boolean,
|
|
@@ -35,52 +35,52 @@ export default defineComponent({
|
|
|
35
35
|
};
|
|
36
36
|
},
|
|
37
37
|
computed: {
|
|
38
|
-
...mapState(useFilterStore, [
|
|
38
|
+
...mapState(useFilterStore, ["filterIab"]),
|
|
39
39
|
},
|
|
40
40
|
watch: {
|
|
41
41
|
isCategory(): void {
|
|
42
|
-
if(this.isInternChanged ||this.isInit){
|
|
42
|
+
if (this.isInternChanged || this.isInit) {
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
45
|
this.isInternChanged = true;
|
|
46
|
-
this.$emit(
|
|
46
|
+
this.$emit("updateCategory", this.isCategory ? this.iabId : 0);
|
|
47
47
|
this.resetCategoryFilter();
|
|
48
48
|
this.$nextTick(() => {
|
|
49
49
|
this.isInternChanged = false;
|
|
50
50
|
});
|
|
51
51
|
},
|
|
52
52
|
iabId(): void {
|
|
53
|
-
if(this.isInternChanged ||this.isInit){
|
|
53
|
+
if (this.isInternChanged || this.isInit) {
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
this.isInternChanged = true;
|
|
57
57
|
this.resetCategoryFilter();
|
|
58
|
-
if(this.isCategory){
|
|
59
|
-
this.$emit(
|
|
58
|
+
if (this.isCategory) {
|
|
59
|
+
this.$emit("updateCategory", this.iabId);
|
|
60
60
|
}
|
|
61
61
|
this.$nextTick(() => {
|
|
62
62
|
this.isInternChanged = false;
|
|
63
63
|
});
|
|
64
64
|
},
|
|
65
|
-
filterIab:{
|
|
65
|
+
filterIab: {
|
|
66
66
|
deep: true,
|
|
67
|
-
handler(){
|
|
68
|
-
if(this.isInternChanged){
|
|
67
|
+
handler() {
|
|
68
|
+
if (this.isInternChanged) {
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
this.isInternChanged = true;
|
|
72
72
|
this.iabId = this.filterIab ? this.filterIab.id : 0;
|
|
73
73
|
this.isCategory = this.filterIab ? true : false;
|
|
74
|
-
this.$emit(
|
|
74
|
+
this.$emit("updateCategory", this.iabId);
|
|
75
75
|
this.$nextTick(() => {
|
|
76
76
|
this.isInternChanged = false;
|
|
77
77
|
});
|
|
78
|
-
}
|
|
78
|
+
},
|
|
79
79
|
},
|
|
80
80
|
},
|
|
81
81
|
|
|
82
82
|
created() {
|
|
83
|
-
if(this.filterIab){
|
|
83
|
+
if (this.filterIab) {
|
|
84
84
|
this.iabId = this.filterIab.id;
|
|
85
85
|
this.isCategory = true;
|
|
86
86
|
}
|
|
@@ -89,17 +89,19 @@ export default defineComponent({
|
|
|
89
89
|
});
|
|
90
90
|
},
|
|
91
91
|
methods: {
|
|
92
|
-
...mapActions(useFilterStore, [
|
|
93
|
-
resetCategoryFilter(): void{
|
|
94
|
-
if(!this.filterIab || this.isInit){
|
|
92
|
+
...mapActions(useFilterStore, ["filterUpdateIab"]),
|
|
93
|
+
resetCategoryFilter(): void {
|
|
94
|
+
if (!this.filterIab || this.isInit) {
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
const queries = this.$route.query;
|
|
98
98
|
if (queries.iabId) {
|
|
99
|
-
this.$router.replace({
|
|
99
|
+
this.$router.replace({
|
|
100
|
+
query: { ...queries, ...{ iabId: undefined } },
|
|
101
|
+
});
|
|
100
102
|
}
|
|
101
103
|
this.filterUpdateIab();
|
|
102
|
-
}
|
|
104
|
+
},
|
|
103
105
|
},
|
|
104
|
-
})
|
|
106
|
+
});
|
|
105
107
|
</script>
|