@saooti/octopus-sdk 37.0.60 → 37.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/App.vue +17 -3
- package/src/components/display/comments/CommentSection.vue +4 -25
- package/src/components/display/emission/EmissionInlineList.vue +6 -2
- package/src/components/display/emission/EmissionList.vue +8 -3
- package/src/components/display/emission/EmissionPlayerItem.vue +5 -1
- package/src/components/display/live/LiveItem.vue +4 -1
- package/src/components/display/live/LiveList.vue +7 -7
- package/src/components/display/participant/ParticipantList.vue +7 -2
- package/src/components/display/playlist/PlaylistList.vue +7 -2
- package/src/components/display/playlist/PodcastList.vue +8 -3
- package/src/components/display/podcasts/ParticipantDescription.vue +0 -3
- package/src/components/display/podcasts/PodcastItemInfo.vue +6 -1
- package/src/components/display/podcasts/PodcastList.vue +8 -3
- package/src/components/display/podcasts/PodcastModuleBox.vue +5 -2
- package/src/components/display/sharing/PlayerParameters.vue +7 -7
- package/src/components/display/sharing/ShareButtonsIntern.vue +8 -6
- package/src/components/display/sharing/ShareDistribution.vue +7 -3
- package/src/components/display/sharing/SharePlayer.vue +11 -9
- package/src/components/form/ClassicDatePicker.vue +8 -8
- package/src/components/misc/ClassicLazy.vue +5 -5
- package/src/components/misc/FooterSection.vue +6 -1
- package/src/components/misc/player/PlayerComponent.vue +6 -2
- package/src/components/pages/EmissionPage.vue +5 -2
- package/src/components/pages/HomePage.vue +5 -5
- package/src/components/pages/PlaylistPage.vue +4 -1
- package/src/components/pages/PodcastPage.vue +34 -10
- package/src/components/pages/RadioPage.vue +4 -1
package/package.json
CHANGED
package/src/App.vue
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
:is-education="false"
|
|
7
7
|
@close="displayMenu = false"
|
|
8
8
|
/>
|
|
9
|
-
<CategoryFilter />
|
|
9
|
+
<CategoryFilter v-if="firstDisplayCategoryFilter" />
|
|
10
10
|
<router-view />
|
|
11
11
|
<ClassicLazy
|
|
12
12
|
v-if="pageFullyLoad"
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
<script lang="ts">
|
|
23
23
|
import TopBar from "@/components/misc/TopBar.vue";
|
|
24
24
|
import PlayerComponent from "@/components/misc/player/PlayerComponent.vue";
|
|
25
|
-
import CategoryFilter from "@/components/display/categories/CategoryFilter.vue";
|
|
26
25
|
import ClassicLazy from "@/components/misc/ClassicLazy.vue";
|
|
27
26
|
import { state } from "./stores/ParamSdkStore";
|
|
28
27
|
import { Rubriquage } from "./stores/class/rubrique/rubriquage";
|
|
@@ -40,6 +39,9 @@ const LeftMenu = defineAsyncComponent(
|
|
|
40
39
|
const FooterOctopus = defineAsyncComponent(
|
|
41
40
|
() => import("@/components/misc/FooterSection.vue"),
|
|
42
41
|
);
|
|
42
|
+
const CategoryFilter = defineAsyncComponent(
|
|
43
|
+
() => import("@/components/display/categories/CategoryFilter.vue"),
|
|
44
|
+
);
|
|
43
45
|
export default defineComponent({
|
|
44
46
|
name: "App",
|
|
45
47
|
|
|
@@ -59,7 +61,8 @@ export default defineComponent({
|
|
|
59
61
|
displayMenu: false as boolean,
|
|
60
62
|
reload: false as boolean,
|
|
61
63
|
isInit: false as boolean,
|
|
62
|
-
pageFullyLoad: false as boolean
|
|
64
|
+
pageFullyLoad: false as boolean,
|
|
65
|
+
firstDisplayCategoryFilter: false as boolean,
|
|
63
66
|
};
|
|
64
67
|
},
|
|
65
68
|
|
|
@@ -69,6 +72,17 @@ export default defineComponent({
|
|
|
69
72
|
},
|
|
70
73
|
|
|
71
74
|
watch: {
|
|
75
|
+
$route: {
|
|
76
|
+
deep: true,
|
|
77
|
+
immediate: true,
|
|
78
|
+
async handler() {
|
|
79
|
+
if(this.firstDisplayCategoryFilter){
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const namesRouteWithCategoryFilter = ["homePriv", "home", "podcasts", "emissions", "participants", "playlists"];
|
|
83
|
+
this.firstDisplayCategoryFilter = namesRouteWithCategoryFilter.includes(this.$route.name?.toString()?? "");
|
|
84
|
+
},
|
|
85
|
+
},
|
|
72
86
|
"$i18n.locale"() {
|
|
73
87
|
this.$forceUpdate();
|
|
74
88
|
this.reload = !this.reload;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div class="module-box">
|
|
3
3
|
<div class="d-flex align-items-center">
|
|
4
4
|
<h2 class="mb-0 me-2" data-selenium="episode-comment-counter">
|
|
5
5
|
{{ commentTitle }}
|
|
@@ -29,15 +29,15 @@
|
|
|
29
29
|
</template>
|
|
30
30
|
|
|
31
31
|
<script lang="ts">
|
|
32
|
-
import CommentList from "./CommentList.vue";
|
|
33
|
-
import CommentInput from "./CommentInput.vue";
|
|
34
32
|
import cookies from "../../mixins/cookies";
|
|
35
33
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
36
34
|
import { Conference } from "@/stores/class/conference/conference";
|
|
37
35
|
import { useCommentStore } from "@/stores/CommentStore";
|
|
38
36
|
import { mapState, mapActions } from "pinia";
|
|
39
|
-
import { defineComponent } from "vue";
|
|
37
|
+
import { defineAsyncComponent, defineComponent } from "vue";
|
|
40
38
|
import { CommentPodcast } from "@/stores/class/general/comment";
|
|
39
|
+
const CommentList = defineAsyncComponent(() => import("./CommentList.vue"));
|
|
40
|
+
const CommentInput = defineAsyncComponent(() => import("./CommentInput.vue"));
|
|
41
41
|
export default defineComponent({
|
|
42
42
|
name: "CommentSection",
|
|
43
43
|
components: {
|
|
@@ -65,27 +65,6 @@ export default defineComponent({
|
|
|
65
65
|
: "";
|
|
66
66
|
return this.$t("Podcast's comments") + count;
|
|
67
67
|
},
|
|
68
|
-
isComments(): boolean {
|
|
69
|
-
if (!this.podcast) return true;
|
|
70
|
-
let podcastComment = "INHERIT";
|
|
71
|
-
if (this.podcast.annotations && this.podcast.annotations.COMMENTS) {
|
|
72
|
-
podcastComment = this.podcast.annotations.COMMENTS as string;
|
|
73
|
-
}
|
|
74
|
-
let organisationComment = "LIVE_ONLY";
|
|
75
|
-
if (this.podcast.organisation.comments) {
|
|
76
|
-
organisationComment = this.podcast.organisation.comments;
|
|
77
|
-
}
|
|
78
|
-
return !(
|
|
79
|
-
"NO" === podcastComment ||
|
|
80
|
-
("INHERIT" === podcastComment && "NO" === organisationComment) ||
|
|
81
|
-
("LIVE_RECORD" === podcastComment &&
|
|
82
|
-
"READY_TO_RECORD" !== this.podcast.processingStatus) ||
|
|
83
|
-
("INHERIT" === podcastComment &&
|
|
84
|
-
"LIVE_ONLY" === organisationComment &&
|
|
85
|
-
!this.podcast.conferenceId &&
|
|
86
|
-
0 !== this.podcast.conferenceId)
|
|
87
|
-
);
|
|
88
|
-
},
|
|
89
68
|
knownIdentity: {
|
|
90
69
|
get(): string | null {
|
|
91
70
|
return this.commentKnownIdentity;
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
<ClassicLoading
|
|
4
4
|
:loading-text="loading ? $t('Loading emissions ...') : undefined"
|
|
5
5
|
/>
|
|
6
|
-
<SwiperList
|
|
6
|
+
<SwiperList
|
|
7
|
+
v-if="(displayRubriquage && rubriques) || !(displayRubriquage && loaded)"
|
|
8
|
+
:size-item-overload="itemSize"
|
|
9
|
+
:list-object="allEmissions"
|
|
10
|
+
>
|
|
7
11
|
<template #octopusSlide="{ option }">
|
|
8
12
|
<EmissionPlayerItem
|
|
9
13
|
class="flex-shrink-0 item-phone-margin"
|
|
@@ -43,7 +47,7 @@ export default defineComponent({
|
|
|
43
47
|
components: {
|
|
44
48
|
EmissionPlayerItem,
|
|
45
49
|
ClassicLoading,
|
|
46
|
-
SwiperList
|
|
50
|
+
SwiperList,
|
|
47
51
|
},
|
|
48
52
|
|
|
49
53
|
mixins: [handle403, imageProxy, resizePhone],
|
|
@@ -19,13 +19,18 @@
|
|
|
19
19
|
class="emission-list"
|
|
20
20
|
:class="smallItems ? 'three-emissions' : 'two-emissions'"
|
|
21
21
|
>
|
|
22
|
-
<ClassicLazy
|
|
22
|
+
<ClassicLazy
|
|
23
|
+
v-for="e in displayArray"
|
|
24
|
+
:key="e.emissionId"
|
|
25
|
+
:min-height="250"
|
|
26
|
+
:unrender="true"
|
|
27
|
+
>
|
|
23
28
|
<EmissionItem v-if="0 !== e.emissionId" :emission="e" />
|
|
24
29
|
<template #preview>
|
|
25
30
|
<router-link
|
|
26
31
|
:to="{
|
|
27
32
|
name: 'emission',
|
|
28
|
-
params: { emissionId: e.emissionId }
|
|
33
|
+
params: { emissionId: e.emissionId },
|
|
29
34
|
}"
|
|
30
35
|
>
|
|
31
36
|
{{ e.name }}
|
|
@@ -78,7 +83,7 @@ export default defineComponent({
|
|
|
78
83
|
EmissionItem,
|
|
79
84
|
EmissionPlayerItem,
|
|
80
85
|
ListPaginate,
|
|
81
|
-
ClassicLazy
|
|
86
|
+
ClassicLazy,
|
|
82
87
|
},
|
|
83
88
|
|
|
84
89
|
mixins: [handle403],
|
|
@@ -13,7 +13,10 @@ import crudApi from "@/api/classicCrud";
|
|
|
13
13
|
import displayMethods from "../../mixins/displayMethods";
|
|
14
14
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
15
15
|
import { defineComponent } from "vue";
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
Conference,
|
|
18
|
+
ConferencePublicInfo,
|
|
19
|
+
} from "@/stores/class/conference/conference";
|
|
17
20
|
export default defineComponent({
|
|
18
21
|
name: "LiveItem",
|
|
19
22
|
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
v-if="displayLiveList"
|
|
4
|
-
class="d-flex flex-column align-items-start mt-3"
|
|
5
|
-
>
|
|
2
|
+
<div v-if="displayLiveList" class="d-flex flex-column align-items-start mt-3">
|
|
6
3
|
<div
|
|
7
4
|
class="d-flex justify-content-between flex-grow-1 mb-3 w-100 align-items-center"
|
|
8
5
|
>
|
|
@@ -90,9 +87,12 @@ export default defineComponent({
|
|
|
90
87
|
computed: {
|
|
91
88
|
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
92
89
|
...mapState(useAuthStore, ["authOrganisation"]),
|
|
93
|
-
displayLiveList(): boolean{
|
|
94
|
-
return (
|
|
95
|
-
(
|
|
90
|
+
displayLiveList(): boolean {
|
|
91
|
+
return (
|
|
92
|
+
(undefined !== this.filterOrgaId ||
|
|
93
|
+
undefined !== this.organisationId) &&
|
|
94
|
+
(!this.hideIfEmpty || (this.hideIfEmpty && 0 !== this.lives.length))
|
|
95
|
+
);
|
|
96
96
|
},
|
|
97
97
|
filterOrgaUsed(): string | undefined {
|
|
98
98
|
return this.filterOrgaId ? this.filterOrgaId : this.organisationId;
|
|
@@ -17,7 +17,12 @@
|
|
|
17
17
|
>
|
|
18
18
|
<template #list>
|
|
19
19
|
<div class="podcast-list">
|
|
20
|
-
<ClassicLazy
|
|
20
|
+
<ClassicLazy
|
|
21
|
+
v-for="p in displayArray"
|
|
22
|
+
:key="p.participantId"
|
|
23
|
+
:min-height="360"
|
|
24
|
+
:unrender="true"
|
|
25
|
+
>
|
|
21
26
|
<ParticipantItem v-if="0 !== p.participantId" :participant="p" />
|
|
22
27
|
<template #preview>
|
|
23
28
|
<router-link
|
|
@@ -55,7 +60,7 @@ export default defineComponent({
|
|
|
55
60
|
components: {
|
|
56
61
|
ParticipantItem,
|
|
57
62
|
ListPaginate,
|
|
58
|
-
ClassicLazy
|
|
63
|
+
ClassicLazy,
|
|
59
64
|
},
|
|
60
65
|
|
|
61
66
|
mixins: [handle403],
|
|
@@ -15,7 +15,12 @@
|
|
|
15
15
|
>
|
|
16
16
|
<template #list>
|
|
17
17
|
<div class="emission-list two-emissions">
|
|
18
|
-
<ClassicLazy
|
|
18
|
+
<ClassicLazy
|
|
19
|
+
v-for="p in displayArray"
|
|
20
|
+
:key="p.playlistId"
|
|
21
|
+
:min-height="250"
|
|
22
|
+
:unrender="true"
|
|
23
|
+
>
|
|
19
24
|
<PlaylistItem v-if="0 !== p.playlistId" :playlist="p" />
|
|
20
25
|
<template #preview>
|
|
21
26
|
<router-link
|
|
@@ -50,7 +55,7 @@ export default defineComponent({
|
|
|
50
55
|
components: {
|
|
51
56
|
PlaylistItem,
|
|
52
57
|
ListPaginate,
|
|
53
|
-
ClassicLazy
|
|
58
|
+
ClassicLazy,
|
|
54
59
|
},
|
|
55
60
|
|
|
56
61
|
mixins: [handle403],
|
|
@@ -31,13 +31,18 @@
|
|
|
31
31
|
>
|
|
32
32
|
<template #list>
|
|
33
33
|
<div class="podcast-list">
|
|
34
|
-
<ClassicLazy
|
|
34
|
+
<ClassicLazy
|
|
35
|
+
v-for="p in podcastsDisplay"
|
|
36
|
+
:key="p.podcastId"
|
|
37
|
+
:min-height="410"
|
|
38
|
+
:unrender="true"
|
|
39
|
+
>
|
|
35
40
|
<PodcastItem v-if="0 !== p.podcastId" :podcast="p" />
|
|
36
41
|
<template #preview>
|
|
37
42
|
<router-link
|
|
38
43
|
:to="{
|
|
39
44
|
name: 'podcast',
|
|
40
|
-
params: { podcastId: p.podcastId }
|
|
45
|
+
params: { podcastId: p.podcastId },
|
|
41
46
|
}"
|
|
42
47
|
>
|
|
43
48
|
{{ p.title }}
|
|
@@ -70,7 +75,7 @@ export default defineComponent({
|
|
|
70
75
|
PodcastItem,
|
|
71
76
|
ClassicSearch,
|
|
72
77
|
ListPaginate,
|
|
73
|
-
ClassicLazy
|
|
78
|
+
ClassicLazy,
|
|
74
79
|
},
|
|
75
80
|
|
|
76
81
|
mixins: [handle403, orgaComputed],
|
|
@@ -39,9 +39,6 @@ export default defineComponent({
|
|
|
39
39
|
|
|
40
40
|
computed: {
|
|
41
41
|
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
42
|
-
idPopover(): string {
|
|
43
|
-
return this.isGuest ? "popover-guests-help" : "popover-animators-help";
|
|
44
|
-
},
|
|
45
42
|
title(): string {
|
|
46
43
|
return this.isGuest ? this.$t("Guests") : this.$t("Animated by");
|
|
47
44
|
},
|
|
@@ -13,7 +13,12 @@
|
|
|
13
13
|
>
|
|
14
14
|
{{ title }}
|
|
15
15
|
</router-link>
|
|
16
|
-
<PodcastPlayBar
|
|
16
|
+
<PodcastPlayBar
|
|
17
|
+
v-if="isProgressBar"
|
|
18
|
+
:podcast-id="podcastId"
|
|
19
|
+
:duration="duration"
|
|
20
|
+
class="mx-2"
|
|
21
|
+
/>
|
|
17
22
|
|
|
18
23
|
<div class="mx-2 d-flex align-items-center justify-content-between mt-2">
|
|
19
24
|
<div v-if="isPodcastmaker" class="useless-div-for-podcastmaker" />
|
|
@@ -21,13 +21,18 @@
|
|
|
21
21
|
>
|
|
22
22
|
<template #list>
|
|
23
23
|
<div class="podcast-list">
|
|
24
|
-
<ClassicLazy
|
|
24
|
+
<ClassicLazy
|
|
25
|
+
v-for="p in displayArray"
|
|
26
|
+
:key="p.podcastId"
|
|
27
|
+
:min-height="410"
|
|
28
|
+
:unrender="true"
|
|
29
|
+
>
|
|
25
30
|
<PodcastItem v-if="0 !== p.podcastId" :podcast="p" />
|
|
26
31
|
<template #preview>
|
|
27
32
|
<router-link
|
|
28
33
|
:to="{
|
|
29
34
|
name: 'podcast',
|
|
30
|
-
params: { podcastId: p.podcastId }
|
|
35
|
+
params: { podcastId: p.podcastId },
|
|
31
36
|
}"
|
|
32
37
|
>
|
|
33
38
|
{{ p.title }}
|
|
@@ -59,7 +64,7 @@ export default defineComponent({
|
|
|
59
64
|
components: {
|
|
60
65
|
PodcastItem,
|
|
61
66
|
ListPaginate,
|
|
62
|
-
ClassicLazy
|
|
67
|
+
ClassicLazy,
|
|
63
68
|
},
|
|
64
69
|
|
|
65
70
|
mixins: [handle403],
|
|
@@ -125,14 +125,16 @@
|
|
|
125
125
|
:display-studio-access="isDebriefing"
|
|
126
126
|
@validate-podcast="$emit('updatePodcast', $event)"
|
|
127
127
|
/>
|
|
128
|
-
<TagList
|
|
128
|
+
<TagList
|
|
129
|
+
v-if="undefined !== podcast.tags && 0 !== podcast.tags.length"
|
|
130
|
+
:tag-list="podcast.tags"
|
|
131
|
+
/>
|
|
129
132
|
</div>
|
|
130
133
|
</template>
|
|
131
134
|
|
|
132
135
|
<script lang="ts">
|
|
133
136
|
import PodcastImage from "./PodcastImage.vue";
|
|
134
137
|
import ParticipantDescription from "./ParticipantDescription.vue";
|
|
135
|
-
import TagList from "./TagList.vue";
|
|
136
138
|
import { state } from "../../../stores/ParamSdkStore";
|
|
137
139
|
import dayjs from "dayjs";
|
|
138
140
|
// @ts-ignore
|
|
@@ -155,6 +157,7 @@ const EditBox = defineAsyncComponent(
|
|
|
155
157
|
const PodcastPlayBar = defineAsyncComponent(
|
|
156
158
|
() => import("./PodcastPlayBar.vue"),
|
|
157
159
|
);
|
|
160
|
+
const TagList = defineAsyncComponent(() => import("./TagList.vue"));
|
|
158
161
|
export default defineComponent({
|
|
159
162
|
name: "PodcastModuleBox",
|
|
160
163
|
components: {
|
|
@@ -42,43 +42,43 @@
|
|
|
42
42
|
</div>
|
|
43
43
|
<ClassicCheckbox
|
|
44
44
|
:text-init="proceedReading"
|
|
45
|
-
@update:text-init="$emit('update:proceedReading', $event)"
|
|
46
45
|
id-checkbox="proceed-reading-checkbox"
|
|
47
46
|
:label="$t('Proceed reading')"
|
|
47
|
+
@update:text-init="$emit('update:proceedReading', $event)"
|
|
48
48
|
/>
|
|
49
49
|
<ClassicCheckbox
|
|
50
50
|
:text-init="isVisible"
|
|
51
|
-
@update:text-init="$emit('update:isVisible', $event)"
|
|
52
51
|
id-checkbox="is-visible-checkbox"
|
|
53
52
|
:label="$t('Podcasts still available')"
|
|
53
|
+
@update:text-init="$emit('update:isVisible', $event)"
|
|
54
54
|
/>
|
|
55
55
|
</template>
|
|
56
56
|
<ClassicCheckbox
|
|
57
57
|
v-if="displayArticleParam"
|
|
58
58
|
:text-init="displayArticle"
|
|
59
|
-
@update:text-init="$emit('update:displayArticle', $event)"
|
|
60
59
|
id-checkbox="display-article-checkbox"
|
|
61
60
|
:label="$t('Display associated article')"
|
|
61
|
+
@update:text-init="$emit('update:displayArticle', $event)"
|
|
62
62
|
/>
|
|
63
63
|
<ClassicCheckbox
|
|
64
64
|
v-if="displayTranscriptParam"
|
|
65
65
|
:text-init="displayTranscript"
|
|
66
|
-
@update:text-init="$emit('update:displayTranscript', $event)"
|
|
67
66
|
id-checkbox="display-transcript-checkbox"
|
|
68
67
|
:label="$t('If the transcript is available, show it')"
|
|
68
|
+
@update:text-init="$emit('update:displayTranscript', $event)"
|
|
69
69
|
/>
|
|
70
70
|
<ClassicCheckbox
|
|
71
71
|
v-if="displayWaveParam"
|
|
72
72
|
:text-init="displayWave"
|
|
73
|
-
@update:text-init="$emit('update:displayWave', $event)"
|
|
74
73
|
id-checkbox="display-wave-checkbox"
|
|
75
74
|
:label="$t('Show animated wave')"
|
|
75
|
+
@update:text-init="$emit('update:displayWave', $event)"
|
|
76
76
|
/>
|
|
77
77
|
<ClassicCheckbox
|
|
78
78
|
:text-init="playerAutoPlay"
|
|
79
|
-
@update:text-init="$emit('update:playerAutoPlay', $event)"
|
|
80
79
|
id-checkbox="player-autoplay-checkbox"
|
|
81
80
|
:label="$t('Trigger automatic reading if this is possible')"
|
|
81
|
+
@update:text-init="$emit('update:playerAutoPlay', $event)"
|
|
82
82
|
/>
|
|
83
83
|
</template>
|
|
84
84
|
|
|
@@ -110,7 +110,7 @@ export default defineComponent({
|
|
|
110
110
|
"update:displayArticle",
|
|
111
111
|
"update:displayTranscript",
|
|
112
112
|
"update:displayWave",
|
|
113
|
-
"update:playerAutoPlay"
|
|
113
|
+
"update:playerAutoPlay",
|
|
114
114
|
],
|
|
115
115
|
|
|
116
116
|
data() {
|
|
@@ -100,7 +100,11 @@
|
|
|
100
100
|
:url-page="urlPage"
|
|
101
101
|
@close="qrCode = false"
|
|
102
102
|
/>
|
|
103
|
-
<SnackBar
|
|
103
|
+
<SnackBar
|
|
104
|
+
v-if="lazyLoadingSnackbar"
|
|
105
|
+
ref="snackbar"
|
|
106
|
+
position="bottom-left"
|
|
107
|
+
/>
|
|
104
108
|
</div>
|
|
105
109
|
</template>
|
|
106
110
|
|
|
@@ -123,9 +127,7 @@ const NewsletterModal = defineAsyncComponent(
|
|
|
123
127
|
const QrCodeModal = defineAsyncComponent(
|
|
124
128
|
() => import("../../misc/modal/QrCodeModal.vue"),
|
|
125
129
|
);
|
|
126
|
-
const SnackBar = defineAsyncComponent(
|
|
127
|
-
() => import("../../misc/SnackBar.vue"),
|
|
128
|
-
);
|
|
130
|
+
const SnackBar = defineAsyncComponent(() => import("../../misc/SnackBar.vue"));
|
|
129
131
|
export default defineComponent({
|
|
130
132
|
components: {
|
|
131
133
|
ClipboardModal,
|
|
@@ -240,12 +242,12 @@ export default defineComponent({
|
|
|
240
242
|
this.dataRSSSave = !this.dataRSSSave;
|
|
241
243
|
},
|
|
242
244
|
afterCopy(): void {
|
|
243
|
-
if(!this.lazyLoadingSnackbar){
|
|
245
|
+
if (!this.lazyLoadingSnackbar) {
|
|
244
246
|
this.lazyLoadingSnackbar = true;
|
|
245
247
|
setTimeout(() => {
|
|
246
248
|
this.afterCopy();
|
|
247
249
|
}, 500);
|
|
248
|
-
}else{
|
|
250
|
+
} else {
|
|
249
251
|
(this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
|
|
250
252
|
this.$t("Link in clipboard"),
|
|
251
253
|
);
|
|
@@ -27,7 +27,11 @@
|
|
|
27
27
|
<span :class="platform.icon" />{{ platform.title }}
|
|
28
28
|
</router-link>
|
|
29
29
|
</div>
|
|
30
|
-
<SnackBar
|
|
30
|
+
<SnackBar
|
|
31
|
+
v-if="lazyLoadingSnackbar"
|
|
32
|
+
ref="snackbar"
|
|
33
|
+
position="bottom-left"
|
|
34
|
+
/>
|
|
31
35
|
</div>
|
|
32
36
|
</template>
|
|
33
37
|
|
|
@@ -129,12 +133,12 @@ export default defineComponent({
|
|
|
129
133
|
this.rss = `${state.octopusApi.url}rss/emission/${this.emissionId}.rss`;
|
|
130
134
|
},
|
|
131
135
|
afterCopy(): void {
|
|
132
|
-
if(!this.lazyLoadingSnackbar){
|
|
136
|
+
if (!this.lazyLoadingSnackbar) {
|
|
133
137
|
this.lazyLoadingSnackbar = true;
|
|
134
138
|
setTimeout(() => {
|
|
135
139
|
this.afterCopy();
|
|
136
140
|
}, 500);
|
|
137
|
-
}else{
|
|
141
|
+
} else {
|
|
138
142
|
(this.$refs.snackbar as InstanceType<typeof SnackBar>).open(
|
|
139
143
|
this.$t("Link in clipboard"),
|
|
140
144
|
);
|
|
@@ -46,18 +46,20 @@
|
|
|
46
46
|
:label="titleStillAvailable"
|
|
47
47
|
/>
|
|
48
48
|
<PlayerParameters
|
|
49
|
-
:is-visible="isVisible"
|
|
50
|
-
:chose-number-episode="displayChoiceAllEpisodes || isLargeSuggestion"
|
|
51
|
-
:display-choice-all-episodes="displayChoiceAllEpisodes"
|
|
52
|
-
:display-transcript-param="displayTranscriptParam"
|
|
53
|
-
:display-article-param="displayArticleParam"
|
|
54
|
-
:display-wave-param="displayWaveParam"
|
|
55
49
|
v-model:display-article="displayArticle"
|
|
56
50
|
v-model:display-transcript="displayTranscript"
|
|
57
51
|
v-model:display-wave="displayWave"
|
|
58
52
|
v-model:proceed-reading="proceedReading"
|
|
59
53
|
v-model:is-visible="isVisible"
|
|
54
|
+
:is-visible="isVisible"
|
|
60
55
|
v-model:player-auto-play="playerAutoPlay"
|
|
56
|
+
:chose-number-episode="
|
|
57
|
+
displayChoiceAllEpisodes || isLargeSuggestion
|
|
58
|
+
"
|
|
59
|
+
:display-choice-all-episodes="displayChoiceAllEpisodes"
|
|
60
|
+
:display-transcript-param="displayTranscriptParam"
|
|
61
|
+
:display-article-param="displayArticleParam"
|
|
62
|
+
:display-wave-param="displayWaveParam"
|
|
61
63
|
@i-frame-number="iFrameNumber = $event"
|
|
62
64
|
@episode-numbers="episodeNumbers = $event"
|
|
63
65
|
/>
|
|
@@ -153,7 +155,7 @@ export default defineComponent({
|
|
|
153
155
|
computed: {
|
|
154
156
|
...mapState(useAuthStore, ["authOrganisation"]),
|
|
155
157
|
displayWaveParam(): boolean {
|
|
156
|
-
return
|
|
158
|
+
return "default" === this.iFrameModel || "emission" === this.iFrameModel;
|
|
157
159
|
},
|
|
158
160
|
displayArticleParam(): boolean {
|
|
159
161
|
return (
|
|
@@ -360,8 +362,8 @@ export default defineComponent({
|
|
|
360
362
|
if (!this.displayWave) {
|
|
361
363
|
url.push("&wave=false");
|
|
362
364
|
}
|
|
363
|
-
if(this.playerAutoPlay){
|
|
364
|
-
url.push(
|
|
365
|
+
if (this.playerAutoPlay) {
|
|
366
|
+
url.push("&autoplay=true");
|
|
365
367
|
}
|
|
366
368
|
if (this.isVisible) {
|
|
367
369
|
url.push("&key=" + window.btoa(this.dataTitle.toString()));
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
:month-picker="monthPicker"
|
|
23
23
|
@update:model-value="$emit('updateDate', $event)"
|
|
24
24
|
>
|
|
25
|
-
|
|
26
|
-
<div class="ms-2 saooti-clock"/>
|
|
25
|
+
<template v-if="time" #input-icon>
|
|
26
|
+
<div class="ms-2 saooti-clock" />
|
|
27
27
|
</template>
|
|
28
28
|
</VueDatePicker>
|
|
29
29
|
</template>
|
|
@@ -61,7 +61,7 @@ export default defineComponent({
|
|
|
61
61
|
seconds?: number | string;
|
|
62
62
|
},
|
|
63
63
|
},
|
|
64
|
-
monthPicker:{ default: false, type: Boolean },
|
|
64
|
+
monthPicker: { default: false, type: Boolean },
|
|
65
65
|
},
|
|
66
66
|
|
|
67
67
|
emits: ["updateDate", "update:date"],
|
|
@@ -78,16 +78,16 @@ export default defineComponent({
|
|
|
78
78
|
};
|
|
79
79
|
},
|
|
80
80
|
modelVal() {
|
|
81
|
-
if(this.time){
|
|
81
|
+
if (this.time) {
|
|
82
82
|
return this.time;
|
|
83
83
|
}
|
|
84
|
-
if(this.range){
|
|
84
|
+
if (this.range) {
|
|
85
85
|
return this.range;
|
|
86
86
|
}
|
|
87
|
-
if(this.date && this.monthPicker){
|
|
87
|
+
if (this.date && this.monthPicker) {
|
|
88
88
|
return {
|
|
89
89
|
month: this.date.getMonth(),
|
|
90
|
-
year: this.date.getFullYear()
|
|
90
|
+
year: this.date.getFullYear(),
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
return this.date;
|
|
@@ -97,7 +97,7 @@ export default defineComponent({
|
|
|
97
97
|
},
|
|
98
98
|
format() {
|
|
99
99
|
let timeString = "";
|
|
100
|
-
if(this.monthPicker){
|
|
100
|
+
if (this.monthPicker) {
|
|
101
101
|
return "MM/yyyy";
|
|
102
102
|
}
|
|
103
103
|
if (this.displayTimePicker || this.isTimePicker) {
|
|
@@ -35,8 +35,8 @@ export default {
|
|
|
35
35
|
const shouldRender = ref(false);
|
|
36
36
|
const targetEl = ref();
|
|
37
37
|
const fixedMinHeight = ref(0);
|
|
38
|
-
let unrenderTimer;
|
|
39
|
-
let renderTimer;
|
|
38
|
+
let unrenderTimer: ReturnType<typeof setTimeout> | undefined;
|
|
39
|
+
let renderTimer: ReturnType<typeof setTimeout> | undefined;
|
|
40
40
|
|
|
41
41
|
const { stop } = useIntersectionObserver(
|
|
42
42
|
targetEl,
|
|
@@ -47,7 +47,7 @@ export default {
|
|
|
47
47
|
// if we're dealing underndering lets add a waiting period of 200ms before rendering. If a component enters the viewport and also leaves it within 200ms it will not render at all. This saves work and improves performance when user scrolls very fast
|
|
48
48
|
renderTimer = setTimeout(
|
|
49
49
|
() => (shouldRender.value = true),
|
|
50
|
-
props.unrender ? 200 : 0
|
|
50
|
+
props.unrender ? 200 : 0,
|
|
51
51
|
);
|
|
52
52
|
shouldRender.value = true;
|
|
53
53
|
if (!props.unrender) {
|
|
@@ -57,14 +57,14 @@ export default {
|
|
|
57
57
|
// if the component was set to render, cancel that
|
|
58
58
|
clearTimeout(renderTimer);
|
|
59
59
|
unrenderTimer = setTimeout(() => {
|
|
60
|
-
fixedMinHeight.value = targetEl.value
|
|
60
|
+
fixedMinHeight.value = targetEl.value?.clientHeight ?? 0;
|
|
61
61
|
shouldRender.value = false;
|
|
62
62
|
}, props.unrenderDelay);
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
rootMargin: "600px",
|
|
67
|
-
}
|
|
67
|
+
},
|
|
68
68
|
);
|
|
69
69
|
|
|
70
70
|
if (props.renderOnIdle) {
|
|
@@ -153,7 +153,12 @@ export default defineComponent({
|
|
|
153
153
|
},
|
|
154
154
|
changeLanguage(): void {
|
|
155
155
|
this.setCookie("octopus-language", this.language);
|
|
156
|
-
loadLocaleMessages(
|
|
156
|
+
loadLocaleMessages(
|
|
157
|
+
this.$i18n,
|
|
158
|
+
this.language,
|
|
159
|
+
this.authenticated,
|
|
160
|
+
this.platformEducation,
|
|
161
|
+
);
|
|
157
162
|
octopusApi
|
|
158
163
|
.fetchDataWithParams<Array<Category>>(
|
|
159
164
|
0,
|
|
@@ -51,12 +51,16 @@
|
|
|
51
51
|
<script lang="ts">
|
|
52
52
|
import { CommentPodcast } from "@/stores/class/general/comment";
|
|
53
53
|
import { playerLogic } from "../../mixins/player/playerLogic";
|
|
54
|
-
import PlayerCompact from "../player/PlayerCompact.vue";
|
|
55
|
-
import PlayerLarge from "../player/PlayerLarge.vue";
|
|
56
54
|
import { usePlayerStore } from "@/stores/PlayerStore";
|
|
57
55
|
import { mapState, mapActions } from "pinia";
|
|
58
56
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
59
57
|
const PlayerVideo = defineAsyncComponent(() => import("./PlayerVideo.vue"));
|
|
58
|
+
const PlayerCompact = defineAsyncComponent(
|
|
59
|
+
() => import("../player/PlayerCompact.vue"),
|
|
60
|
+
);
|
|
61
|
+
const PlayerLarge = defineAsyncComponent(
|
|
62
|
+
() => import("../player/PlayerLarge.vue"),
|
|
63
|
+
);
|
|
60
64
|
export default defineComponent({
|
|
61
65
|
name: "PlayerComponent",
|
|
62
66
|
|
|
@@ -116,7 +116,7 @@ export default defineComponent({
|
|
|
116
116
|
EditBox,
|
|
117
117
|
SubscribeButtons,
|
|
118
118
|
LiveHorizontalList,
|
|
119
|
-
ClassicLoading
|
|
119
|
+
ClassicLoading,
|
|
120
120
|
},
|
|
121
121
|
mixins: [displayMethods, handle403, orgaComputed, imageProxy],
|
|
122
122
|
props: {
|
|
@@ -193,7 +193,10 @@ export default defineComponent({
|
|
|
193
193
|
if (!this.emission) {
|
|
194
194
|
return "";
|
|
195
195
|
}
|
|
196
|
-
return `background-image: url('${this.proxyImageUrl(
|
|
196
|
+
return `background-image: url('${this.proxyImageUrl(
|
|
197
|
+
this.emission.imageUrl,
|
|
198
|
+
"250",
|
|
199
|
+
)}');`;
|
|
197
200
|
},
|
|
198
201
|
},
|
|
199
202
|
watch: {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="page-box">
|
|
3
3
|
<template v-if="0 === rubriquageFilter.length">
|
|
4
|
-
<ClassicLazy
|
|
4
|
+
<ClassicLazy
|
|
5
5
|
v-for="c in categories"
|
|
6
6
|
:key="c.id"
|
|
7
|
-
:
|
|
7
|
+
:min-height="650"
|
|
8
8
|
:unrender="true"
|
|
9
9
|
>
|
|
10
10
|
<PodcastInlineList
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
</ClassicLazy>
|
|
16
16
|
</template>
|
|
17
17
|
<template v-else>
|
|
18
|
-
<ClassicLazy
|
|
18
|
+
<ClassicLazy
|
|
19
19
|
v-for="r in rubriqueToShow"
|
|
20
20
|
:key="r.rubriqueId"
|
|
21
|
-
:
|
|
21
|
+
:min-height="650"
|
|
22
22
|
:unrender="true"
|
|
23
23
|
>
|
|
24
24
|
<PodcastInlineList
|
|
@@ -72,7 +72,7 @@ export default defineComponent({
|
|
|
72
72
|
name: "HomePage",
|
|
73
73
|
components: {
|
|
74
74
|
PodcastInlineList,
|
|
75
|
-
ClassicLazy
|
|
75
|
+
ClassicLazy,
|
|
76
76
|
},
|
|
77
77
|
data() {
|
|
78
78
|
return {
|
|
@@ -128,7 +128,10 @@ export default defineComponent({
|
|
|
128
128
|
if (!this.playlist) {
|
|
129
129
|
return "";
|
|
130
130
|
}
|
|
131
|
-
return `background-image: url('${this.proxyImageUrl(
|
|
131
|
+
return `background-image: url('${this.proxyImageUrl(
|
|
132
|
+
this.playlist.imageUrl,
|
|
133
|
+
"250",
|
|
134
|
+
)}');`;
|
|
132
135
|
},
|
|
133
136
|
},
|
|
134
137
|
watch: {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
:emission="podcast.emission"
|
|
35
35
|
/>
|
|
36
36
|
<CommentSection
|
|
37
|
-
v-if="!isPodcastmaker"
|
|
37
|
+
v-if="!isPodcastmaker && isComments"
|
|
38
38
|
ref="commentSection"
|
|
39
39
|
:podcast="podcast"
|
|
40
40
|
:fetch-conference="fetchConference"
|
|
@@ -46,10 +46,7 @@
|
|
|
46
46
|
:title="$t('More episodes of this emission')"
|
|
47
47
|
:button-text="$t('All podcast emission button')"
|
|
48
48
|
/>
|
|
49
|
-
<ClassicLazy
|
|
50
|
-
:min-height="550"
|
|
51
|
-
:unrender="true"
|
|
52
|
-
>
|
|
49
|
+
<ClassicLazy :min-height="550" :unrender="true">
|
|
53
50
|
<PodcastInlineList
|
|
54
51
|
:podcast-id="podcastId"
|
|
55
52
|
:title="$t('Suggested listening')"
|
|
@@ -93,7 +90,10 @@ import crudApi from "@/api/classicCrud";
|
|
|
93
90
|
import { state } from "../../stores/ParamSdkStore";
|
|
94
91
|
import dayjs from "dayjs";
|
|
95
92
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
96
|
-
import {
|
|
93
|
+
import {
|
|
94
|
+
Conference,
|
|
95
|
+
ConferencePublicInfo,
|
|
96
|
+
} from "@/stores/class/conference/conference";
|
|
97
97
|
import { handle403 } from "../mixins/handle403";
|
|
98
98
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
99
99
|
import { CommentPodcast } from "@/stores/class/general/comment";
|
|
@@ -154,11 +154,35 @@ export default defineComponent({
|
|
|
154
154
|
|
|
155
155
|
computed: {
|
|
156
156
|
...mapState(useGeneralStore, ["storedCategories"]),
|
|
157
|
+
isComments(): boolean {
|
|
158
|
+
if (!this.podcast) return true;
|
|
159
|
+
let podcastComment = "INHERIT";
|
|
160
|
+
if (this.podcast.annotations && this.podcast.annotations.COMMENTS) {
|
|
161
|
+
podcastComment = this.podcast.annotations.COMMENTS as string;
|
|
162
|
+
}
|
|
163
|
+
let organisationComment = "LIVE_ONLY";
|
|
164
|
+
if (this.podcast.organisation.comments) {
|
|
165
|
+
organisationComment = this.podcast.organisation.comments;
|
|
166
|
+
}
|
|
167
|
+
return !(
|
|
168
|
+
"NO" === podcastComment ||
|
|
169
|
+
("INHERIT" === podcastComment && "NO" === organisationComment) ||
|
|
170
|
+
("LIVE_RECORD" === podcastComment &&
|
|
171
|
+
"READY_TO_RECORD" !== this.podcast.processingStatus) ||
|
|
172
|
+
("INHERIT" === podcastComment &&
|
|
173
|
+
"LIVE_ONLY" === organisationComment &&
|
|
174
|
+
!this.podcast.conferenceId &&
|
|
175
|
+
0 !== this.podcast.conferenceId)
|
|
176
|
+
);
|
|
177
|
+
},
|
|
157
178
|
backgroundDisplay(): string {
|
|
158
179
|
if (!this.podcast) {
|
|
159
180
|
return "";
|
|
160
181
|
}
|
|
161
|
-
return `background-image: url('${this.proxyImageUrl(
|
|
182
|
+
return `background-image: url('${this.proxyImageUrl(
|
|
183
|
+
this.podcast.imageUrl,
|
|
184
|
+
"270",
|
|
185
|
+
)}');`;
|
|
162
186
|
},
|
|
163
187
|
isPodcastmaker(): boolean {
|
|
164
188
|
return state.generalParameters.podcastmaker as boolean;
|
|
@@ -285,9 +309,9 @@ export default defineComponent({
|
|
|
285
309
|
this.fetchConference = {
|
|
286
310
|
...data,
|
|
287
311
|
...{
|
|
288
|
-
conferenceId: this.podcast?.conferenceId??0,
|
|
289
|
-
title: ""
|
|
290
|
-
}
|
|
312
|
+
conferenceId: this.podcast?.conferenceId ?? 0,
|
|
313
|
+
title: "",
|
|
314
|
+
},
|
|
291
315
|
};
|
|
292
316
|
},
|
|
293
317
|
async initConference() {
|
|
@@ -99,7 +99,10 @@ export default defineComponent({
|
|
|
99
99
|
backgroundDisplay(): string {
|
|
100
100
|
return !this.radio
|
|
101
101
|
? ""
|
|
102
|
-
: `background-image: url('${this.proxyImageUrl(
|
|
102
|
+
: `background-image: url('${this.proxyImageUrl(
|
|
103
|
+
this.radio.imageUrl,
|
|
104
|
+
"270",
|
|
105
|
+
)}');`;
|
|
103
106
|
},
|
|
104
107
|
},
|
|
105
108
|
watch: {
|