@saooti/octopus-sdk 39.0.47 → 39.0.48
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/components/display/emission/EmissionPresentationItem.vue +12 -10
- package/src/components/display/emission/EmissionPresentationList.vue +45 -29
- package/src/components/display/list/SwiperList.vue +1 -1
- package/src/components/display/podcasts/PodcastModuleBox.vue +15 -12
- package/src/components/display/podcasts/PodcastRawTranscript.vue +158 -0
- package/src/components/display/podcasts/PodcastSwiperList.vue +4 -2
- package/src/components/display/sharing/SharePlayer.vue +11 -4
- package/src/components/display/sharing/SharePlayerTypes.vue +25 -14
- package/src/components/form/ClassicMultiselect.vue +8 -4
- package/src/components/misc/player/PlayerCompact.vue +2 -2
- package/src/components/misc/player/elements/PlayerPlayButton.vue +1 -1
- package/src/components/misc/player/elements/PlayerSpeedButton.vue +6 -9
- package/src/components/misc/player/video/PlayerVideoHls.vue +2 -2
- package/src/locale/de.ts +2 -0
- package/src/locale/en.ts +2 -0
- package/src/locale/es.ts +2 -0
- package/src/locale/fr.ts +2 -0
- package/src/locale/it.ts +2 -0
- package/src/locale/sl.ts +2 -0
package/package.json
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div
|
|
3
|
+
class="emission-item-container emission-presentation-container mt-3"
|
|
4
|
+
:class="isVertical ? 'emission-vertical-item' : ''"
|
|
5
|
+
>
|
|
3
6
|
<router-link
|
|
4
7
|
:to="{
|
|
5
8
|
name: 'emission',
|
|
@@ -8,13 +11,13 @@
|
|
|
8
11
|
}"
|
|
9
12
|
:title="$t('Emission')"
|
|
10
13
|
class="d-flex-column flex-grow-1 text-dark"
|
|
11
|
-
:class="isVertical? 'flex-column':''"
|
|
14
|
+
:class="isVertical ? 'flex-column' : ''"
|
|
12
15
|
>
|
|
13
16
|
<img
|
|
14
|
-
v-lazy="proxyImageUrl(emission.imageUrl, isVertical?'400':'250')"
|
|
15
|
-
:width="isVertical?'400':'250'"
|
|
16
|
-
:height="isVertical?'400':'250'"
|
|
17
|
-
:class="isVertical?'img-box-bigger':''"
|
|
17
|
+
v-lazy="proxyImageUrl(emission.imageUrl, isVertical ? '400' : '250')"
|
|
18
|
+
:width="isVertical ? '400' : '250'"
|
|
19
|
+
:height="isVertical ? '400' : '250'"
|
|
20
|
+
:class="isVertical ? 'img-box-bigger' : ''"
|
|
18
21
|
class="img-box"
|
|
19
22
|
:title="$t('Emission name image', { name: emission.name })"
|
|
20
23
|
:alt="$t('Emission name image', { name: emission.name })"
|
|
@@ -43,23 +46,22 @@ export default defineComponent({
|
|
|
43
46
|
emission: { default: () => ({}), type: Object as () => Emission },
|
|
44
47
|
isVertical: { default: false, type: Boolean },
|
|
45
48
|
},
|
|
46
|
-
|
|
47
49
|
});
|
|
48
50
|
</script>
|
|
49
51
|
<style lang="scss">
|
|
50
52
|
.octopus-app {
|
|
51
|
-
.emission-presentation-container{
|
|
53
|
+
.emission-presentation-container {
|
|
52
54
|
@media (max-width: 960px) {
|
|
53
55
|
width: 250px !important;
|
|
54
56
|
margin-right: 0.5rem;
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
|
-
.emission-item-container.emission-vertical-item{
|
|
59
|
+
.emission-item-container.emission-vertical-item {
|
|
58
60
|
flex-grow: 0;
|
|
59
61
|
width: 400px;
|
|
60
62
|
flex-shrink: 0;
|
|
61
63
|
}
|
|
62
|
-
.img-box-bigger{
|
|
64
|
+
.img-box-bigger {
|
|
63
65
|
width: 400px;
|
|
64
66
|
height: 400px;
|
|
65
67
|
}
|
|
@@ -7,20 +7,38 @@
|
|
|
7
7
|
/>
|
|
8
8
|
<template v-if="!loading && !error">
|
|
9
9
|
<div class="d-flex flex-nowrap align-items-stretch overflow-phone-auto">
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
<EmissionItemPresentation
|
|
11
|
+
v-if="allEmissions[0]"
|
|
12
|
+
:class="!isPhone ? 'me-3' : ''"
|
|
13
|
+
:emission="allEmissions[0]"
|
|
14
|
+
:is-vertical="!isPhone"
|
|
15
|
+
/>
|
|
16
|
+
<div
|
|
17
|
+
v-if="allEmissions.length > 1"
|
|
18
|
+
class="emission-column emission-column-margin d-flex-row flex-nowrap"
|
|
19
|
+
>
|
|
20
|
+
<EmissionItemPresentation
|
|
21
|
+
v-if="allEmissions[1]"
|
|
22
|
+
:emission="allEmissions[1]"
|
|
15
23
|
/>
|
|
16
|
-
<
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
<EmissionItemPresentation
|
|
25
|
+
v-if="allEmissions[2]"
|
|
26
|
+
:emission="allEmissions[2]"
|
|
27
|
+
/>
|
|
28
|
+
</div>
|
|
29
|
+
<div
|
|
30
|
+
v-if="allEmissions.length > 3"
|
|
31
|
+
class="emission-column d-flex-row flex-nowrap show-emission-column"
|
|
32
|
+
>
|
|
33
|
+
<EmissionItemPresentation
|
|
34
|
+
v-if="allEmissions[3]"
|
|
35
|
+
:emission="allEmissions[3]"
|
|
36
|
+
/>
|
|
37
|
+
<EmissionItemPresentation
|
|
38
|
+
v-if="allEmissions[4]"
|
|
39
|
+
:emission="allEmissions[4]"
|
|
40
|
+
/>
|
|
41
|
+
</div>
|
|
24
42
|
</div>
|
|
25
43
|
<router-link
|
|
26
44
|
v-if="buttonText && href"
|
|
@@ -34,9 +52,7 @@
|
|
|
34
52
|
</template>
|
|
35
53
|
|
|
36
54
|
<script lang="ts">
|
|
37
|
-
import SwiperList from "../list/SwiperList.vue";
|
|
38
55
|
import octopusApi from "@saooti/octopus-api";
|
|
39
|
-
import EmissionPlayerItem from "./EmissionPlayerItem.vue";
|
|
40
56
|
import { handle403 } from "../../mixins/handle403";
|
|
41
57
|
import ClassicLoading from "../../form/ClassicLoading.vue";
|
|
42
58
|
import { Emission } from "@/stores/class/general/emission";
|
|
@@ -44,14 +60,14 @@ import { defineAsyncComponent, defineComponent } from "vue";
|
|
|
44
60
|
import { AxiosError } from "axios";
|
|
45
61
|
import imageProxy from "../../mixins/imageProxy";
|
|
46
62
|
import resizePhone from "../../mixins/resizePhone";
|
|
47
|
-
const EmissionItemPresentation = defineAsyncComponent(
|
|
63
|
+
const EmissionItemPresentation = defineAsyncComponent(
|
|
64
|
+
() => import("./EmissionPresentationItem.vue"),
|
|
65
|
+
);
|
|
48
66
|
export default defineComponent({
|
|
49
67
|
name: "EmissionPresentationList",
|
|
50
68
|
components: {
|
|
51
|
-
EmissionPlayerItem,
|
|
52
69
|
ClassicLoading,
|
|
53
|
-
|
|
54
|
-
EmissionItemPresentation
|
|
70
|
+
EmissionItemPresentation,
|
|
55
71
|
},
|
|
56
72
|
|
|
57
73
|
mixins: [handle403, imageProxy, resizePhone],
|
|
@@ -102,36 +118,36 @@ export default defineComponent({
|
|
|
102
118
|
this.handle403(error as AxiosError);
|
|
103
119
|
this.error = true;
|
|
104
120
|
}
|
|
105
|
-
this.loading= false;
|
|
121
|
+
this.loading = false;
|
|
106
122
|
},
|
|
107
123
|
},
|
|
108
124
|
});
|
|
109
125
|
</script>
|
|
110
126
|
<style lang="scss">
|
|
111
127
|
.octopus-app {
|
|
112
|
-
.overflow-phone-auto{
|
|
128
|
+
.overflow-phone-auto {
|
|
113
129
|
@media (max-width: 960px) {
|
|
114
130
|
overflow-y: auto;
|
|
115
131
|
}
|
|
116
132
|
}
|
|
117
|
-
.emission-column{
|
|
133
|
+
.emission-column {
|
|
118
134
|
flex-shrink: 0;
|
|
119
135
|
width: calc((100% - 420px) / 2);
|
|
120
136
|
@media (max-width: 1550px) {
|
|
121
|
-
width: calc((100% - 420px))
|
|
137
|
+
width: calc((100% - 420px));
|
|
122
138
|
}
|
|
123
139
|
@media (max-width: 960px) {
|
|
124
140
|
width: auto;
|
|
125
141
|
flex-direction: row !important;
|
|
126
142
|
}
|
|
127
143
|
}
|
|
128
|
-
.emission-column-margin{
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
144
|
+
.emission-column-margin {
|
|
145
|
+
margin-right: 1rem;
|
|
146
|
+
@media (max-width: 960px) {
|
|
147
|
+
margin-right: 0;
|
|
133
148
|
}
|
|
134
|
-
|
|
149
|
+
}
|
|
150
|
+
.show-emission-column {
|
|
135
151
|
display: flex;
|
|
136
152
|
@media (max-width: 1550px) {
|
|
137
153
|
display: none !important;
|
|
@@ -116,6 +116,19 @@
|
|
|
116
116
|
</div>
|
|
117
117
|
</div>
|
|
118
118
|
</div>
|
|
119
|
+
<TagList
|
|
120
|
+
v-if="undefined !== podcast.tags && 0 !== podcast.tags.length && !isPhone"
|
|
121
|
+
:tag-list="podcast.tags"
|
|
122
|
+
:podcast-annotations="podcast.annotations"
|
|
123
|
+
/>
|
|
124
|
+
<PodcastRawTranscript :podcast-id="podcast.podcastId" />
|
|
125
|
+
<SubscribeButtons
|
|
126
|
+
v-if="isPodcastmaker"
|
|
127
|
+
class="mt-4"
|
|
128
|
+
:emission="podcast.emission"
|
|
129
|
+
:window-width="1000"
|
|
130
|
+
:justify-center="false"
|
|
131
|
+
/>
|
|
119
132
|
<RecordingItemButton
|
|
120
133
|
v-if="!!fetchConference && isLiveReadyToRecord && isOctopusAndAnimator"
|
|
121
134
|
:podcast="podcast"
|
|
@@ -130,24 +143,13 @@
|
|
|
130
143
|
:display-studio-access="isDebriefing"
|
|
131
144
|
@validate-podcast="$emit('updatePodcast', $event)"
|
|
132
145
|
/>
|
|
133
|
-
<TagList
|
|
134
|
-
v-if="undefined !== podcast.tags && 0 !== podcast.tags.length && !isPhone"
|
|
135
|
-
:tag-list="podcast.tags"
|
|
136
|
-
:podcast-annotations="podcast.annotations"
|
|
137
|
-
/>
|
|
138
|
-
<SubscribeButtons
|
|
139
|
-
v-if="isPodcastmaker"
|
|
140
|
-
class="mt-4"
|
|
141
|
-
:emission="podcast.emission"
|
|
142
|
-
:window-width="1000"
|
|
143
|
-
:justify-center="false"
|
|
144
|
-
/>
|
|
145
146
|
</div>
|
|
146
147
|
</template>
|
|
147
148
|
|
|
148
149
|
<script lang="ts">
|
|
149
150
|
import PodcastImage from "./PodcastImage.vue";
|
|
150
151
|
import ParticipantDescription from "./ParticipantDescription.vue";
|
|
152
|
+
import PodcastRawTranscript from "./PodcastRawTranscript.vue";
|
|
151
153
|
import { state } from "../../../stores/ParamSdkStore";
|
|
152
154
|
import dayjs from "dayjs";
|
|
153
155
|
// @ts-ignore
|
|
@@ -188,6 +190,7 @@ export default defineComponent({
|
|
|
188
190
|
RecordingItemButton,
|
|
189
191
|
SubscribeButtons,
|
|
190
192
|
Countdown,
|
|
193
|
+
PodcastRawTranscript,
|
|
191
194
|
},
|
|
192
195
|
|
|
193
196
|
mixins: [displayMethods, orgaComputed, resizePhone],
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<button
|
|
4
|
+
class="btn btn-transcript"
|
|
5
|
+
:class="{ open: isOpen }"
|
|
6
|
+
@click="isOpen = !isOpen"
|
|
7
|
+
>
|
|
8
|
+
{{ buttonText }}
|
|
9
|
+
</button>
|
|
10
|
+
<div v-if="isOpen" class="transcription-body">
|
|
11
|
+
<ClassicLoading
|
|
12
|
+
:loading-text="!firstLoaded ? $t('Loading content ...') : undefined"
|
|
13
|
+
/>
|
|
14
|
+
<div class="transcription-text">
|
|
15
|
+
<template v-if="firstLoaded && transcript?.length">{{
|
|
16
|
+
transcript
|
|
17
|
+
}}</template>
|
|
18
|
+
<template v-if="firstLoaded && !transcript?.length">{{
|
|
19
|
+
$t("Transcript does not yet exist for this episode")
|
|
20
|
+
}}</template>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</template>
|
|
25
|
+
|
|
26
|
+
<script lang="ts">
|
|
27
|
+
import octopusApi from "@saooti/octopus-api";
|
|
28
|
+
import ClassicLoading from "../../form/ClassicLoading.vue";
|
|
29
|
+
import { defineComponent } from "vue";
|
|
30
|
+
export default defineComponent({
|
|
31
|
+
name: "PodcastRawTranscript",
|
|
32
|
+
|
|
33
|
+
components: {
|
|
34
|
+
ClassicLoading,
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
props: {
|
|
38
|
+
podcastId: { default: undefined, type: Number },
|
|
39
|
+
},
|
|
40
|
+
data() {
|
|
41
|
+
return {
|
|
42
|
+
isOpen: false as boolean,
|
|
43
|
+
firstLoaded: false as boolean,
|
|
44
|
+
transcript: undefined as string | undefined,
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
computed: {
|
|
49
|
+
buttonText() {
|
|
50
|
+
return this.isOpen
|
|
51
|
+
? this.$t("Hide transcript")
|
|
52
|
+
: this.$t("View transcript");
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
watch: {
|
|
56
|
+
async isOpen() {
|
|
57
|
+
if (this.isOpen && !this.firstLoaded) {
|
|
58
|
+
this.fetchTranscript();
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
methods: {
|
|
63
|
+
async fetchTranscript() {
|
|
64
|
+
if (!this.podcastId) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
this.transcript = await octopusApi.fetchData(
|
|
69
|
+
11,
|
|
70
|
+
`transcription/text/${this.podcastId}`,
|
|
71
|
+
);
|
|
72
|
+
} catch {
|
|
73
|
+
//Do nothing
|
|
74
|
+
}
|
|
75
|
+
this.firstLoaded = true;
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
</script>
|
|
80
|
+
<style lang="scss">
|
|
81
|
+
@import "@scss/_variables.scss";
|
|
82
|
+
.octopus-app {
|
|
83
|
+
.btn-transcript {
|
|
84
|
+
position: relative;
|
|
85
|
+
border-radius: $octopus-borderradius;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
background: $octopus-secondary-color;
|
|
88
|
+
transition: all 0.2s linear 0s;
|
|
89
|
+
|
|
90
|
+
&:not(.open):before,
|
|
91
|
+
&.open:after {
|
|
92
|
+
content: "➤";
|
|
93
|
+
display: flex;
|
|
94
|
+
align-items: center;
|
|
95
|
+
justify-content: center;
|
|
96
|
+
position: absolute;
|
|
97
|
+
top: 0;
|
|
98
|
+
height: 100%;
|
|
99
|
+
width: 30px;
|
|
100
|
+
border-radius: 0 50% 50% 0;
|
|
101
|
+
background-color: rgba(#fff, 0.4);
|
|
102
|
+
transform: scale(0, 1);
|
|
103
|
+
transition: all 0.2s linear 0s;
|
|
104
|
+
}
|
|
105
|
+
&:not(.open):before {
|
|
106
|
+
left: 0px;
|
|
107
|
+
transform-origin: left center;
|
|
108
|
+
}
|
|
109
|
+
&.open:after {
|
|
110
|
+
right: -30px;
|
|
111
|
+
transform-origin: center left;
|
|
112
|
+
}
|
|
113
|
+
&.open {
|
|
114
|
+
direction: rtl;
|
|
115
|
+
}
|
|
116
|
+
&:hover {
|
|
117
|
+
text-indent: 30px;
|
|
118
|
+
}
|
|
119
|
+
&:not(.open):hover:before,
|
|
120
|
+
&.open:hover:after {
|
|
121
|
+
text-indent: 0;
|
|
122
|
+
}
|
|
123
|
+
&:not(.open):hover:before {
|
|
124
|
+
transform: scale(1, 1);
|
|
125
|
+
}
|
|
126
|
+
&.open:hover:after {
|
|
127
|
+
transform: scale(-1, 1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
.transcription-body {
|
|
131
|
+
position: relative;
|
|
132
|
+
padding: 1rem;
|
|
133
|
+
max-height: 250px;
|
|
134
|
+
display: flex;
|
|
135
|
+
justify-content: center;
|
|
136
|
+
.transcription-text {
|
|
137
|
+
overflow-y: auto;
|
|
138
|
+
}
|
|
139
|
+
&::before {
|
|
140
|
+
content: "";
|
|
141
|
+
position: absolute;
|
|
142
|
+
inset: 0;
|
|
143
|
+
padding: 3px;
|
|
144
|
+
background: repeating-conic-gradient(
|
|
145
|
+
$octopus-secondary-color 0 25%,
|
|
146
|
+
$octopus-primary-color 0 50%
|
|
147
|
+
)
|
|
148
|
+
0 0/30px 30px round;
|
|
149
|
+
-webkit-mask:
|
|
150
|
+
linear-gradient(#000 0 0) content-box,
|
|
151
|
+
linear-gradient(#000 0 0);
|
|
152
|
+
-webkit-mask-composite: xor;
|
|
153
|
+
mask-composite: exclude;
|
|
154
|
+
pointer-events: none;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
</style>
|
|
@@ -138,7 +138,9 @@ export default defineComponent({
|
|
|
138
138
|
true,
|
|
139
139
|
);
|
|
140
140
|
this.loading = true;
|
|
141
|
-
this.allPodcasts = data.result.filter(
|
|
141
|
+
this.allPodcasts = data.result.filter(
|
|
142
|
+
(pod: Podcast | null) => null !== pod,
|
|
143
|
+
);
|
|
142
144
|
this.loading = false;
|
|
143
145
|
},
|
|
144
146
|
sortPopular(): void {
|
|
@@ -150,7 +152,7 @@ export default defineComponent({
|
|
|
150
152
|
if (!this.popularSort) return;
|
|
151
153
|
this.popularSort = false;
|
|
152
154
|
this.fetchNext();
|
|
153
|
-
}
|
|
155
|
+
},
|
|
154
156
|
},
|
|
155
157
|
});
|
|
156
158
|
</script>
|
|
@@ -166,7 +166,7 @@ export default defineComponent({
|
|
|
166
166
|
displayWaveParam(): boolean {
|
|
167
167
|
return "default" === this.iFrameModel || "emission" === this.iFrameModel;
|
|
168
168
|
},
|
|
169
|
-
choseNumberEpisodes():boolean{
|
|
169
|
+
choseNumberEpisodes(): boolean {
|
|
170
170
|
return this.displayChoiceAllEpisodes || this.isTypeSuggestion;
|
|
171
171
|
},
|
|
172
172
|
displayArticleParam(): boolean {
|
|
@@ -222,10 +222,17 @@ export default defineComponent({
|
|
|
222
222
|
return "emissionLarge" === this.iFrameModel;
|
|
223
223
|
},
|
|
224
224
|
isTypeSuggestion(): boolean {
|
|
225
|
-
return
|
|
225
|
+
return (
|
|
226
|
+
"largeSuggestion" === this.iFrameModel ||
|
|
227
|
+
"SUGGESTION" === this.typeCustomPlayer
|
|
228
|
+
);
|
|
226
229
|
},
|
|
227
|
-
isTypeEmission():boolean{
|
|
228
|
-
return
|
|
230
|
+
isTypeEmission(): boolean {
|
|
231
|
+
return (
|
|
232
|
+
this.isEmission ||
|
|
233
|
+
this.isLargeEmission ||
|
|
234
|
+
"EMISSION" === this.typeCustomPlayer
|
|
235
|
+
);
|
|
229
236
|
},
|
|
230
237
|
titleStillAvailable(): string {
|
|
231
238
|
return this.isPodcastNotVisible
|
|
@@ -120,24 +120,26 @@ export default defineComponent({
|
|
|
120
120
|
this.initCustomPlayers();
|
|
121
121
|
},
|
|
122
122
|
methods: {
|
|
123
|
-
isNumeric(value: string):boolean {
|
|
123
|
+
isNumeric(value: string): boolean {
|
|
124
124
|
return /^-?\d+$/.test(value);
|
|
125
125
|
},
|
|
126
|
-
selectChange($event: any){
|
|
126
|
+
selectChange($event: any) {
|
|
127
127
|
const val = $event.target.value;
|
|
128
|
-
if(!val){
|
|
128
|
+
if (!val) {
|
|
129
129
|
return;
|
|
130
130
|
}
|
|
131
|
-
if(this.isNumeric(val)){
|
|
132
|
-
var customPlayer = this.customPlayersDisplay.find((p) => {
|
|
133
|
-
|
|
131
|
+
if (this.isNumeric(val)) {
|
|
132
|
+
var customPlayer = this.customPlayersDisplay.find((p) => {
|
|
133
|
+
return p.customId.toString() === val;
|
|
134
|
+
});
|
|
135
|
+
if (customPlayer) {
|
|
134
136
|
this.selectCustomPlayer(customPlayer);
|
|
135
137
|
}
|
|
136
|
-
}else{
|
|
137
|
-
this.$emit(
|
|
138
|
+
} else {
|
|
139
|
+
this.$emit("update:iFrameModel", val);
|
|
138
140
|
}
|
|
139
141
|
},
|
|
140
|
-
async fetchPlayerPaginate(type: string): Promise<CustomPlayer[]>{
|
|
142
|
+
async fetchPlayerPaginate(type: string): Promise<CustomPlayer[]> {
|
|
141
143
|
let players = await octopusApi.fetchDataPublic<
|
|
142
144
|
InterfacePageable<CustomPlayer>
|
|
143
145
|
>(6, "customPlayer/type/" + this.organisationId + "/" + type);
|
|
@@ -161,11 +163,14 @@ export default defineComponent({
|
|
|
161
163
|
}
|
|
162
164
|
return playersContent;
|
|
163
165
|
},
|
|
164
|
-
selectCustomPlayer(customPlayer: CustomPlayer){
|
|
166
|
+
selectCustomPlayer(customPlayer: CustomPlayer) {
|
|
165
167
|
this.$emit("update:typeCustomPlayer", customPlayer.typePlayer);
|
|
166
|
-
this.$emit("update:iFrameModel",customPlayer.customId.toString());
|
|
168
|
+
this.$emit("update:iFrameModel", customPlayer.customId.toString());
|
|
167
169
|
},
|
|
168
|
-
async fetchCustomPlayers(
|
|
170
|
+
async fetchCustomPlayers(
|
|
171
|
+
type: string,
|
|
172
|
+
selectIfPossible = true,
|
|
173
|
+
): Promise<boolean> {
|
|
169
174
|
let customPlayersForType = await this.fetchPlayerPaginate(type);
|
|
170
175
|
this.customPlayers = this.customPlayers.concat(customPlayersForType);
|
|
171
176
|
if (
|
|
@@ -186,8 +191,14 @@ export default defineComponent({
|
|
|
186
191
|
this.fetchCustomPlayers("EMISSION");
|
|
187
192
|
} else {
|
|
188
193
|
const episodeSelected = await this.fetchCustomPlayers("EPISODE");
|
|
189
|
-
const emissionSelected = await this.fetchCustomPlayers(
|
|
190
|
-
|
|
194
|
+
const emissionSelected = await this.fetchCustomPlayers(
|
|
195
|
+
"EMISSION",
|
|
196
|
+
!episodeSelected,
|
|
197
|
+
);
|
|
198
|
+
await this.fetchCustomPlayers(
|
|
199
|
+
"SUGGESTION",
|
|
200
|
+
!episodeSelected && !emissionSelected,
|
|
201
|
+
);
|
|
191
202
|
}
|
|
192
203
|
},
|
|
193
204
|
},
|
|
@@ -20,7 +20,11 @@
|
|
|
20
20
|
:disabled="isDisabled"
|
|
21
21
|
:loading="isLoading"
|
|
22
22
|
:placeholder="placeholder"
|
|
23
|
-
:
|
|
23
|
+
:clear-search-on-blur="
|
|
24
|
+
() => {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
"
|
|
24
28
|
:filter="fakeSearch"
|
|
25
29
|
:selectable="() => !maxOptionsSelected"
|
|
26
30
|
@open="onSearch"
|
|
@@ -101,7 +105,7 @@ export default {
|
|
|
101
105
|
remainingElements: 0 as number,
|
|
102
106
|
isLoading: false as boolean,
|
|
103
107
|
nbOptionsSelected: 0 as number,
|
|
104
|
-
searchInput: "" as string
|
|
108
|
+
searchInput: "" as string,
|
|
105
109
|
};
|
|
106
110
|
},
|
|
107
111
|
computed: {
|
|
@@ -141,13 +145,13 @@ export default {
|
|
|
141
145
|
onSearch(search?: string): void {
|
|
142
146
|
if (search && search.length < this.minSearchLength) {
|
|
143
147
|
return;
|
|
144
|
-
}else if(search){
|
|
148
|
+
} else if (search) {
|
|
145
149
|
this.searchInput = search;
|
|
146
150
|
}
|
|
147
151
|
this.isLoading = true;
|
|
148
152
|
this.$emit("onSearch", search);
|
|
149
153
|
},
|
|
150
|
-
onClose(){
|
|
154
|
+
onClose() {
|
|
151
155
|
this.$emit("onClose", this.searchInput);
|
|
152
156
|
this.searchInput = "";
|
|
153
157
|
},
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
/>
|
|
29
29
|
</div>
|
|
30
30
|
<!-- <AdsSkipButton/> -->
|
|
31
|
-
<PlayerSpeedButton/>
|
|
31
|
+
<PlayerSpeedButton />
|
|
32
32
|
<button
|
|
33
33
|
:title="'' != transcriptText ? $t('View transcript') : $t('Enlarge')"
|
|
34
34
|
class="btn play-button-box btn-transparent text-light saooti-up me-0"
|
|
@@ -71,7 +71,7 @@ export default defineComponent({
|
|
|
71
71
|
PlayerImage,
|
|
72
72
|
PlayerPlayButton,
|
|
73
73
|
PlayerTitle,
|
|
74
|
-
PlayerSpeedButton
|
|
74
|
+
PlayerSpeedButton,
|
|
75
75
|
/* AdsSkipButton */
|
|
76
76
|
},
|
|
77
77
|
mixins: [playerDisplayTime, imageProxy],
|
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
class="btn play-button-box small-font btn-transparent text-light me-0"
|
|
5
5
|
@click="changeSpeed"
|
|
6
6
|
>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}}</button>
|
|
7
|
+
{{ "×" + speedArray[speedIndex] }}
|
|
8
|
+
</button>
|
|
10
9
|
</template>
|
|
11
10
|
<script lang="ts">
|
|
12
|
-
|
|
13
11
|
import { defineComponent } from "vue";
|
|
14
12
|
export default defineComponent({
|
|
15
13
|
name: "PlayerSpeedButton",
|
|
@@ -18,11 +16,11 @@ export default defineComponent({
|
|
|
18
16
|
return {
|
|
19
17
|
audioPlayer: null as HTMLAudioElement | null,
|
|
20
18
|
speedIndex: 2 as number,
|
|
21
|
-
speedArray: [0.5,0.75, 1, 1.25, 1.5,1.75],
|
|
19
|
+
speedArray: [0.5, 0.75, 1, 1.25, 1.5, 1.75],
|
|
22
20
|
};
|
|
23
21
|
},
|
|
24
|
-
mounted(){
|
|
25
|
-
this.audioPlayer =document.querySelector("#audio-player");
|
|
22
|
+
mounted() {
|
|
23
|
+
this.audioPlayer = document.querySelector("#audio-player");
|
|
26
24
|
},
|
|
27
25
|
methods: {
|
|
28
26
|
changeSpeed() {
|
|
@@ -30,7 +28,7 @@ export default defineComponent({
|
|
|
30
28
|
if (this.speedIndex > this.speedArray.length - 1) {
|
|
31
29
|
this.speedIndex = 0;
|
|
32
30
|
}
|
|
33
|
-
if(this.audioPlayer){
|
|
31
|
+
if (this.audioPlayer) {
|
|
34
32
|
this.audioPlayer.playbackRate = this.speedArray[this.speedIndex];
|
|
35
33
|
}
|
|
36
34
|
},
|
|
@@ -41,6 +39,5 @@ export default defineComponent({
|
|
|
41
39
|
<style lang="scss">
|
|
42
40
|
@import "@scss/_variables.scss";
|
|
43
41
|
.octopus-app {
|
|
44
|
-
|
|
45
42
|
}
|
|
46
43
|
</style>
|
|
@@ -15,7 +15,7 @@ import { mapActions } from "pinia";
|
|
|
15
15
|
import { playerLogicProgress } from "../../../mixins/player/playerLogicProgress";
|
|
16
16
|
import videojs, { VideoJsPlayer } from "video.js";
|
|
17
17
|
import qualitySelectorHls from "videojs-quality-selector-hls";
|
|
18
|
-
if (undefined===videojs.getPlugin("qualitySelectorHls")) {
|
|
18
|
+
if (undefined === videojs.getPlugin("qualitySelectorHls")) {
|
|
19
19
|
videojs.registerPlugin("qualitySelectorHls", qualitySelectorHls);
|
|
20
20
|
}
|
|
21
21
|
import { defineComponent } from "vue";
|
|
@@ -104,7 +104,7 @@ export default defineComponent({
|
|
|
104
104
|
document.getElementById("video-element-hls") as Element,
|
|
105
105
|
this.videoOptions,
|
|
106
106
|
() => {
|
|
107
|
-
this.player.qualitySelectorHls(
|
|
107
|
+
this.player.qualitySelectorHls({ displayCurrentQuality: true });
|
|
108
108
|
/*console.log(this.player.tech(true).vhs.playlistController_); */
|
|
109
109
|
this.errorPlay = "";
|
|
110
110
|
this.playing = true;
|
package/src/locale/de.ts
CHANGED
|
@@ -364,4 +364,6 @@ export default {
|
|
|
364
364
|
"Evening":"Abend",
|
|
365
365
|
"Now":"Jetzt",
|
|
366
366
|
"Change speed":"Geschwindigkeit ändern",
|
|
367
|
+
"Hide transcript":"Transkript ausblenden",
|
|
368
|
+
"Transcript does not yet exist for this episode":"Für diese Episode existiert noch kein Transkript",
|
|
367
369
|
}
|
package/src/locale/en.ts
CHANGED
package/src/locale/es.ts
CHANGED
package/src/locale/fr.ts
CHANGED
|
@@ -372,4 +372,6 @@ export default {
|
|
|
372
372
|
"Evening":"Soirée",
|
|
373
373
|
"Now":"Maintenant",
|
|
374
374
|
"Change speed":"Changer la vitesse",
|
|
375
|
+
"Hide transcript":"Cacher la transcription",
|
|
376
|
+
"Transcript does not yet exist for this episode":"La transcription n'existe pas encore pour cet épisode",
|
|
375
377
|
};
|
package/src/locale/it.ts
CHANGED
package/src/locale/sl.ts
CHANGED