@saooti/octopus-sdk 41.0.9-SNAPSHOT → 41.0.9
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 +3 -1
- package/plateform.conf +1 -1
- package/src/App.vue +3 -7
- package/src/api/classicApi.ts +1 -1
- package/src/components/composable/player/usePlayerLive.ts +2 -2
- package/src/components/composable/radio/usefetchRadioData.ts +29 -12
- package/src/components/composable/route/useAdvancedParamInit.ts +1 -1
- package/src/components/composable/route/useSimplePageParam.ts +11 -5
- package/src/components/display/categories/CategoryChooser.vue +4 -0
- package/src/components/display/comments/CommentList.vue +1 -1
- package/src/components/display/emission/EmissionList.vue +5 -8
- package/src/components/display/filter/AdvancedSearch.vue +0 -3
- package/src/components/display/list/ListPaginate.vue +1 -10
- package/src/components/display/live/RadioCurrently.vue +2 -5
- package/src/components/display/participant/ParticipantList.vue +6 -9
- package/src/components/display/playlist/PlaylistList.vue +5 -8
- package/src/components/display/playlist/PodcastList.vue +1 -1
- package/src/components/display/podcasts/PodcastFilterList.vue +4 -2
- package/src/components/display/podcasts/PodcastList.vue +7 -10
- package/src/components/display/podcasts/PodcastPlayButton.vue +4 -1
- package/src/components/display/sharing/PlayerParameters.vue +0 -8
- package/src/components/display/sharing/SharePlayer.vue +0 -5
- package/src/components/display/sharing/SubscribeButtons.vue +4 -2
- package/src/components/form/ClassicInputText.vue +3 -0
- package/src/components/form/ClassicMultiselect.vue +33 -8
- package/src/components/misc/ClassicAccordion.vue +4 -4
- package/src/components/misc/ClassicSpinner.vue +1 -1
- package/src/components/misc/HomeDropdown.vue +3 -110
- package/src/components/misc/MobileMenu.vue +59 -64
- package/src/components/misc/TopBar.vue +4 -11
- package/src/components/misc/TopBarMainContent.vue +1 -2
- package/src/components/misc/UserButtonContent.vue +159 -0
- package/src/components/misc/player/elements/PlayerImage.vue +0 -1
- package/src/components/misc/player/elements/PlayerTitle.vue +3 -3
- package/src/components/misc/player/radio/RadioHistory.vue +3 -2
- package/src/components/misc/player/video/PlayerVideo.vue +2 -2
- package/src/components/pages/EmissionPage.vue +2 -2
- package/src/components/pages/PageLogout.vue +1 -6
- package/src/components/pages/ParticipantPage.vue +2 -2
- package/src/components/pages/PlaylistPage.vue +1 -1
- package/src/components/pages/PodcastPage.vue +0 -1
- package/src/components/pages/VideoPage.vue +5 -2
- package/src/locale/de.ts +3 -3
- package/src/locale/en.ts +3 -3
- package/src/locale/es.ts +3 -3
- package/src/locale/fr.ts +3 -3
- package/src/locale/it.ts +3 -3
- package/src/locale/sl.ts +3 -3
- package/src/stores/FilterStore.ts +1 -1
- package/src/stores/PlayerStore.ts +6 -1
- package/src/stores/class/conference/conference.ts +2 -0
- package/src/stores/class/general/player.ts +2 -2
- package/src/style/_variables.scss +3 -0
- package/src/style/general.scss +12 -0
- package/src/helper/radio/radioHelper.ts +0 -15
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saooti/octopus-sdk",
|
|
3
|
-
"version": "41.0.9
|
|
3
|
+
"version": "41.0.9",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Javascript SDK for using octopus",
|
|
6
6
|
"author": "Saooti",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"serve": "vite preview",
|
|
9
9
|
"build": "vite build",
|
|
10
10
|
"dev": "vite",
|
|
11
|
+
"bundle":"vite-bundle-visualizer",
|
|
11
12
|
"proxy_authentifié": "node proxy.ts",
|
|
12
13
|
"proxy_non_authentifié": "node proxy.ts false",
|
|
13
14
|
"lint": "eslint --fix src",
|
|
@@ -53,6 +54,7 @@
|
|
|
53
54
|
"video.js": "^8.23.3",
|
|
54
55
|
"videojs-quality-selector-hls": "^1.1.1",
|
|
55
56
|
"vite": "^6.3.5",
|
|
57
|
+
"vite-bundle-visualizer": "^1.2.1",
|
|
56
58
|
"vue": "^3.5.16",
|
|
57
59
|
"vue-i18n": "^11.1.5",
|
|
58
60
|
"vue-material-design-icons": "^5.3.1",
|
package/plateform.conf
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
preprod.saooti.org
|
package/src/App.vue
CHANGED
|
@@ -8,16 +8,14 @@
|
|
|
8
8
|
<router-view />
|
|
9
9
|
<PlayerComponent />
|
|
10
10
|
</main>
|
|
11
|
-
<
|
|
12
|
-
<FooterOctopus />
|
|
13
|
-
</ClassicLazy>
|
|
11
|
+
<FooterOctopus />
|
|
14
12
|
</template>
|
|
15
13
|
</div>
|
|
16
14
|
</template>
|
|
17
15
|
<script setup lang="ts">
|
|
18
16
|
import TopBar from "@/components/misc/TopBar.vue";
|
|
17
|
+
import FooterOctopus from "@/components/misc/FooterSection.vue";
|
|
19
18
|
import PlayerComponent from "@/components/misc/player/PlayerComponent.vue";
|
|
20
|
-
import ClassicLazy from "@/components/misc/ClassicLazy.vue";
|
|
21
19
|
import {useInit} from "./components/composable/useInit";
|
|
22
20
|
import {useMetaTitle} from "./components/composable/useMetaTitle";
|
|
23
21
|
import {useOrganisationFilter} from "./components/composable/useOrganisationFilter";
|
|
@@ -25,9 +23,7 @@ import { useAuthStore } from "./stores/AuthStore";
|
|
|
25
23
|
import { defineAsyncComponent, getCurrentInstance, onBeforeMount, ref, watch } from "vue";
|
|
26
24
|
import { useRoute } from "vue-router";
|
|
27
25
|
import { useI18n } from "vue-i18n";
|
|
28
|
-
|
|
29
|
-
() => import("@/components/misc/FooterSection.vue"),
|
|
30
|
-
);
|
|
26
|
+
|
|
31
27
|
const CategoryFilter = defineAsyncComponent(
|
|
32
28
|
() => import("@/components/display/categories/CategoryFilter.vue"),
|
|
33
29
|
);
|
package/src/api/classicApi.ts
CHANGED
|
@@ -51,8 +51,8 @@ export const usePlayerLive = (hlsReady: Ref<boolean>)=>{
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
function playLive() {
|
|
54
|
-
if (!playerStore.
|
|
55
|
-
playerStore.playerUpdatePlayerHlsUrl(`${apiStore.hlsUrl}live
|
|
54
|
+
if (!playerStore.playerHlsIdentifier) return;
|
|
55
|
+
playerStore.playerUpdatePlayerHlsUrl(`${apiStore.hlsUrl}live/${playerStore.playerHlsIdentifier}/index.m3u8`);
|
|
56
56
|
playHls();
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -2,17 +2,19 @@ import classicApi from "../../../api/classicApi";
|
|
|
2
2
|
import { MediaRadio, MetadataRadio, NextAdvertising } from '@/stores/class/general/player';
|
|
3
3
|
import { Podcast } from '@/stores/class/general/podcast';
|
|
4
4
|
import dayjs from 'dayjs';
|
|
5
|
-
import radioHelper from "../../../helper/radio/radioHelper";
|
|
6
5
|
import {onBeforeUnmount, Ref, ref} from 'vue';
|
|
6
|
+
import { useI18n } from "vue-i18n";
|
|
7
7
|
export const useFetchRadio = ()=>{
|
|
8
8
|
|
|
9
9
|
const radioInterval : Ref<ReturnType<typeof setTimeout> | undefined> = ref(undefined);
|
|
10
|
+
|
|
11
|
+
const {t} = useI18n();
|
|
10
12
|
|
|
11
13
|
async function fetchRadioMetadata(
|
|
12
14
|
canalId: number,
|
|
13
15
|
previousTitle: string,
|
|
14
16
|
callbackMetadata: (
|
|
15
|
-
metadata: MediaRadio,
|
|
17
|
+
metadata: MediaRadio|undefined,
|
|
16
18
|
podcast: Podcast | undefined,
|
|
17
19
|
history: Array<MediaRadio>
|
|
18
20
|
) => void,
|
|
@@ -33,15 +35,19 @@ export const useFetchRadio = ()=>{
|
|
|
33
35
|
callbackAdvertising(metadata.nextAdvertising);
|
|
34
36
|
}
|
|
35
37
|
const arrayMetadata = metadata.previously;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
if(null!==metadata.currently){
|
|
39
|
+
arrayMetadata.unshift(metadata.currently);
|
|
40
|
+
for (let index = 0, len = arrayMetadata.length; index < len; index++) {
|
|
41
|
+
if (
|
|
42
|
+
dayjs().valueOf() - 18000 >
|
|
43
|
+
dayjs(arrayMetadata[index].startDate).valueOf()
|
|
44
|
+
) {
|
|
45
|
+
await useCallbackIfNewMetadata(previousTitle, arrayMetadata, index, len,callbackMetadata);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
44
48
|
}
|
|
49
|
+
}else{
|
|
50
|
+
callbackMetadata(undefined, undefined, arrayMetadata);
|
|
45
51
|
}
|
|
46
52
|
}
|
|
47
53
|
async function useCallbackIfNewMetadata(previousTitle: string, arrayMetadata: Array<MediaRadio>, index:number, len: number, callbackMetadata: (
|
|
@@ -63,11 +69,22 @@ export const useFetchRadio = ()=>{
|
|
|
63
69
|
}
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
|
-
function displayTitle(metadata: MediaRadio): string {
|
|
67
|
-
|
|
72
|
+
function displayTitle(metadata: MediaRadio|undefined): string {
|
|
73
|
+
if(!metadata){
|
|
74
|
+
return t("Silent stream");
|
|
75
|
+
}
|
|
76
|
+
let title = "";
|
|
77
|
+
if (metadata?.title) {
|
|
78
|
+
title += metadata.title;
|
|
79
|
+
}
|
|
80
|
+
if (metadata?.artist) {
|
|
81
|
+
title += " - " + metadata.artist;
|
|
82
|
+
}
|
|
83
|
+
return title;
|
|
68
84
|
}
|
|
69
85
|
|
|
70
86
|
|
|
87
|
+
|
|
71
88
|
onBeforeUnmount(() => {
|
|
72
89
|
clearInterval(radioInterval.value as unknown as number);
|
|
73
90
|
})
|
|
@@ -9,7 +9,7 @@ import dayjs from "dayjs";
|
|
|
9
9
|
|
|
10
10
|
export const useAdvancedParamInit = (props: any, isEmission: boolean)=>{
|
|
11
11
|
|
|
12
|
-
const { searchPattern,organisationId, searchMinSize, paginateFirst, initSearchPattern, initOrga} = useSimplePageParam(props);
|
|
12
|
+
const { searchPattern,organisationId, searchMinSize, paginateFirst, initSearchPattern, initOrga} = useSimplePageParam(props, false, true);
|
|
13
13
|
const { isEditRights, isPodcastmaker } = useOrgaComputed();
|
|
14
14
|
const { stringifyRubriquesFilter } = useRubriquesFilterParam();
|
|
15
15
|
|
|
@@ -2,7 +2,7 @@ import { useFilterStore } from '../../../stores/FilterStore';
|
|
|
2
2
|
import { useRouteUpdateParams } from './useRouteUpdateParams';
|
|
3
3
|
import { computed, onMounted, Ref, ref, watch } from "vue";
|
|
4
4
|
|
|
5
|
-
export const useSimplePageParam = (props: {readonly [key:string]: string|number}, force=false)=>{
|
|
5
|
+
export const useSimplePageParam = (props: {readonly [key:string]: string|number}, force=false, advancedSearch=false)=>{
|
|
6
6
|
|
|
7
7
|
const { updateRouteParam } = useRouteUpdateParams();
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ export const useSimplePageParam = (props: {readonly [key:string]: string|number}
|
|
|
12
12
|
const searchPattern = ref("");
|
|
13
13
|
const organisationId: Ref<string|undefined> = ref(undefined);
|
|
14
14
|
|
|
15
|
-
const searchMinSize = computed(() =>
|
|
15
|
+
const searchMinSize = computed(() => getMinSize((props.routeQuery as string)));
|
|
16
16
|
const paginateFirst = computed(() => {
|
|
17
17
|
if(!props.pr){
|
|
18
18
|
return 0;
|
|
@@ -21,9 +21,12 @@ export const useSimplePageParam = (props: {readonly [key:string]: string|number}
|
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
watch(searchPattern, () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
if(!advancedSearch){
|
|
25
|
+
const query = getMinSize(searchPattern.value);
|
|
26
|
+
updateRouteParam({
|
|
27
|
+
q: query.length ? query : undefined,
|
|
28
|
+
}, force);
|
|
29
|
+
}
|
|
27
30
|
});
|
|
28
31
|
|
|
29
32
|
onMounted(() => {
|
|
@@ -32,6 +35,9 @@ export const useSimplePageParam = (props: {readonly [key:string]: string|number}
|
|
|
32
35
|
isInit.value = true;
|
|
33
36
|
})
|
|
34
37
|
|
|
38
|
+
function getMinSize(param:string){
|
|
39
|
+
return param.length>3 ?param : ""
|
|
40
|
+
}
|
|
35
41
|
function initSearchPattern(){
|
|
36
42
|
searchPattern.value = (props.routeQuery as string) ?? "";
|
|
37
43
|
}
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
:is-disabled="isDisabled"
|
|
18
18
|
:no-deselect="noDeselect"
|
|
19
19
|
:display-required="displayRequired"
|
|
20
|
+
:popover="popover"
|
|
21
|
+
:popover-relative-class="popoverRelativeClass"
|
|
20
22
|
@on-search="onSearchCategory"
|
|
21
23
|
@selected="onCategorySelected"
|
|
22
24
|
/>
|
|
@@ -52,6 +54,8 @@ const props = defineProps({
|
|
|
52
54
|
displayLabel: { default: false, type: Boolean },
|
|
53
55
|
textDanger :{ default: undefined, type: String },
|
|
54
56
|
displayRequired: { default: false, type: Boolean },
|
|
57
|
+
popover: { default: undefined, type: String },
|
|
58
|
+
popoverRelativeClass: { default: undefined, type: String },
|
|
55
59
|
})
|
|
56
60
|
|
|
57
61
|
//Emits
|
|
@@ -116,8 +116,8 @@ const { t } = useI18n();
|
|
|
116
116
|
const {handle403} = useErrorHandler();
|
|
117
117
|
|
|
118
118
|
//Computed
|
|
119
|
-
const changed = computed(() => `${props.size}|${props.reload}|${dsize.value}|${props.stateFilter}|${props.podcast?.podcastId}|${props.organisationId}`);
|
|
120
119
|
const isNotAnAnswerList = computed(() => undefined === props.answerToComment);
|
|
120
|
+
const changed = computed(() => `${props.size}|${props.reload}|${dsize.value}|${props.stateFilter}|${props.podcast?.podcastId}|${props.organisationId}`);
|
|
121
121
|
const sortChoice = computed(() =>{
|
|
122
122
|
return [
|
|
123
123
|
{ title: t("The most recent"), value: "DATE_DESC" },
|
|
@@ -152,8 +152,8 @@ watch(changePaginate, () => {
|
|
|
152
152
|
dfirst.value = props.first;
|
|
153
153
|
dsize.value = props.size;
|
|
154
154
|
});
|
|
155
|
-
watch(changed, () =>
|
|
156
|
-
watch(dsize, () =>
|
|
155
|
+
watch(changed, () =>fetchContent(true));
|
|
156
|
+
watch(dsize, () =>fetchContent(true));
|
|
157
157
|
watch(dfirst, () =>{
|
|
158
158
|
if (
|
|
159
159
|
!emissions.value[dfirst.value] ||
|
|
@@ -165,21 +165,17 @@ watch(dfirst, () =>{
|
|
|
165
165
|
|
|
166
166
|
|
|
167
167
|
onMounted(()=>{
|
|
168
|
-
fetchContent(
|
|
168
|
+
fetchContent(false);
|
|
169
169
|
if (displayRubriquage.value) {
|
|
170
170
|
fetchRubriques();
|
|
171
171
|
}
|
|
172
172
|
})
|
|
173
173
|
|
|
174
174
|
//Methods
|
|
175
|
-
function reloadList() {
|
|
176
|
-
dfirst.value = 0;
|
|
177
|
-
fetchContent(true);
|
|
178
|
-
}
|
|
179
175
|
async function fetchContent(reset: boolean): Promise<void> {
|
|
180
176
|
loading.value = true;
|
|
181
177
|
const param: FetchParam = {
|
|
182
|
-
first: dfirst.value,
|
|
178
|
+
first: reset? 0: dfirst.value,
|
|
183
179
|
size: dsize.value,
|
|
184
180
|
query: props.query,
|
|
185
181
|
organisationId: organisation.value,
|
|
@@ -212,6 +208,7 @@ function afterFetching(
|
|
|
212
208
|
data: { count: number; result: Array<Emission>; sort: string },
|
|
213
209
|
): void {
|
|
214
210
|
if (reset) {
|
|
211
|
+
dfirst.value = 0;
|
|
215
212
|
emissions.value.length = 0;
|
|
216
213
|
}
|
|
217
214
|
if (dfirst.value > emissions.value.length) {
|
|
@@ -184,9 +184,6 @@ watch(()=>props.searchPattern, (value: string) => {
|
|
|
184
184
|
if(search.length <= 3){
|
|
185
185
|
valSort = props.isEmission? "LAST_PODCAST_DESC" : "DATE";
|
|
186
186
|
}
|
|
187
|
-
if (valSort !== props.sort) {
|
|
188
|
-
emit("update:sort", valSort);
|
|
189
|
-
}
|
|
190
187
|
updateRouteParamAdvanced({
|
|
191
188
|
q: search.length ? search : undefined,
|
|
192
189
|
s: valSort,
|
|
@@ -54,7 +54,7 @@ import PaginateParams from "./PaginateParams.vue";
|
|
|
54
54
|
import PaginateSection from "./PaginateSection.vue";
|
|
55
55
|
import {useResizePhone} from "../../composable/useResizePhone";
|
|
56
56
|
import { useRouteUpdateParams } from "../../composable/route/useRouteUpdateParams";
|
|
57
|
-
import { computed,
|
|
57
|
+
import { computed, watch } from "vue";
|
|
58
58
|
import { usePlayerStore } from "../../../stores/PlayerStore";
|
|
59
59
|
import { useI18n } from "vue-i18n";
|
|
60
60
|
|
|
@@ -78,8 +78,6 @@ const props = defineProps({
|
|
|
78
78
|
//Emits
|
|
79
79
|
const emit = defineEmits(["update:first", "update:rowsPerPage", "update:isMobile"]);
|
|
80
80
|
|
|
81
|
-
//Data
|
|
82
|
-
const internSizeChange = ref(false);
|
|
83
81
|
|
|
84
82
|
//Composables
|
|
85
83
|
const { t } = useI18n();
|
|
@@ -101,10 +99,6 @@ const rangeSize = computed(() => {
|
|
|
101
99
|
//Watch
|
|
102
100
|
watch(isPhone, () => {emit("update:isMobile", isPhone.value);}, {immediate: true});
|
|
103
101
|
watch(()=>props.first, () => {
|
|
104
|
-
if (internSizeChange.value) {
|
|
105
|
-
internSizeChange.value = false;
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
102
|
updateRouteParam({pr:(Math.floor(props.first / props.rowsPerPage) + 1).toString()}, props.forceUpdateParameters);
|
|
109
103
|
});
|
|
110
104
|
|
|
@@ -118,9 +112,6 @@ function changeFirst(firstValue: number) {
|
|
|
118
112
|
}
|
|
119
113
|
function changeSize(sizeValue: number) {
|
|
120
114
|
scrollToTop();
|
|
121
|
-
if (0 !== props.first) {
|
|
122
|
-
internSizeChange.value = true;
|
|
123
|
-
}
|
|
124
115
|
emit("update:rowsPerPage", sizeValue);
|
|
125
116
|
updatePaginateSize(sizeValue, props.forceUpdateParameters);
|
|
126
117
|
}
|
|
@@ -72,10 +72,7 @@ const currentlyPlayingString = computed(() => {
|
|
|
72
72
|
if (playingRadio.value && playerStore.playerRadio) {
|
|
73
73
|
return displayTitle(playerStore.playerRadio.metadata);
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
return displayTitle(currentMetadata.value);
|
|
77
|
-
}
|
|
78
|
-
return "";
|
|
75
|
+
return displayTitle(currentMetadata.value);
|
|
79
76
|
});
|
|
80
77
|
|
|
81
78
|
onMounted(()=>{
|
|
@@ -102,7 +99,7 @@ async function fetchCurrentlyPlaying(): Promise<void> {
|
|
|
102
99
|
updateMetadata,
|
|
103
100
|
);
|
|
104
101
|
}
|
|
105
|
-
function updateMetadata(metadata: MediaRadio, podcast?: Podcast): void {
|
|
102
|
+
function updateMetadata(metadata: MediaRadio|undefined, podcast?: Podcast): void {
|
|
106
103
|
currentMetadata.value = metadata;
|
|
107
104
|
currentPodcast.value = podcast;
|
|
108
105
|
}
|
|
@@ -103,9 +103,9 @@ watch(changePaginate, () => {
|
|
|
103
103
|
dfirst.value = props.first;
|
|
104
104
|
dsize.value = props.size;
|
|
105
105
|
});
|
|
106
|
-
watch(()=>props.query, () =>
|
|
107
|
-
watch(organisation, () =>
|
|
108
|
-
watch(dsize, () =>
|
|
106
|
+
watch(()=>props.query, () => fetchContent(true));
|
|
107
|
+
watch(organisation, () => fetchContent(true));
|
|
108
|
+
watch(dsize, () => fetchContent(true));
|
|
109
109
|
watch(dfirst, () => {
|
|
110
110
|
if (
|
|
111
111
|
!participants.value[dfirst.value] ||
|
|
@@ -115,14 +115,10 @@ watch(dfirst, () => {
|
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
-
onBeforeMount(()=>fetchContent(
|
|
118
|
+
onBeforeMount(()=>fetchContent(false))
|
|
119
119
|
|
|
120
120
|
|
|
121
121
|
//Methods
|
|
122
|
-
function reloadList() {
|
|
123
|
-
dfirst.value = 0;
|
|
124
|
-
fetchContent(true);
|
|
125
|
-
}
|
|
126
122
|
async function fetchContent(reset: boolean): Promise<void> {
|
|
127
123
|
loading.value = true;
|
|
128
124
|
try {
|
|
@@ -131,7 +127,7 @@ async function fetchContent(reset: boolean): Promise<void> {
|
|
|
131
127
|
api: 0,
|
|
132
128
|
path: "participant/search",
|
|
133
129
|
parameters: {
|
|
134
|
-
first: dfirst.value,
|
|
130
|
+
first: reset? 0: dfirst.value,
|
|
135
131
|
size: dsize.value,
|
|
136
132
|
query: props.query,
|
|
137
133
|
organisationId: organisation.value,
|
|
@@ -141,6 +137,7 @@ async function fetchContent(reset: boolean): Promise<void> {
|
|
|
141
137
|
},
|
|
142
138
|
);
|
|
143
139
|
if (reset) {
|
|
140
|
+
dfirst.value = 0;
|
|
144
141
|
participants.value.length = 0;
|
|
145
142
|
}
|
|
146
143
|
displayCount.value = data.count;
|
|
@@ -98,8 +98,8 @@ watch(changePaginate, () => {
|
|
|
98
98
|
dfirst.value = props.first;
|
|
99
99
|
dsize.value = props.size;
|
|
100
100
|
});
|
|
101
|
-
watch(changed, () =>
|
|
102
|
-
watch(dsize, () =>
|
|
101
|
+
watch(changed, () => fetchContent(true));
|
|
102
|
+
watch(dsize, () =>fetchContent(true));
|
|
103
103
|
watch(dfirst, () => {
|
|
104
104
|
if (
|
|
105
105
|
!playlists.value[dfirst.value] ||
|
|
@@ -109,18 +109,14 @@ watch(dfirst, () => {
|
|
|
109
109
|
}
|
|
110
110
|
});
|
|
111
111
|
|
|
112
|
-
onMounted(()=>fetchContent(
|
|
112
|
+
onMounted(()=>fetchContent(false))
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
//Methods
|
|
116
|
-
function reloadList() {
|
|
117
|
-
dfirst.value = 0;
|
|
118
|
-
fetchContent(true);
|
|
119
|
-
}
|
|
120
116
|
async function fetchContent(reset: boolean): Promise<void> {
|
|
121
117
|
loading.value = true;
|
|
122
118
|
const param = {
|
|
123
|
-
first: dfirst.value,
|
|
119
|
+
first: reset ? 0 : dfirst.value,
|
|
124
120
|
size: dsize.value,
|
|
125
121
|
query: props.query,
|
|
126
122
|
organisationId: organisation.value,
|
|
@@ -144,6 +140,7 @@ function afterFetching(
|
|
|
144
140
|
data: { count: number; result: Array<Playlist>; sort: string },
|
|
145
141
|
): void {
|
|
146
142
|
if (reset) {
|
|
143
|
+
dfirst.value = 0;
|
|
147
144
|
playlists.value.length = 0;
|
|
148
145
|
}
|
|
149
146
|
if (dfirst.value > playlists.value.length) {
|
|
@@ -26,11 +26,12 @@
|
|
|
26
26
|
:participant-id="participantId"
|
|
27
27
|
:emission-id="emissionId"
|
|
28
28
|
:organisation-id="productorId"
|
|
29
|
+
:sort-criteria="sort"
|
|
29
30
|
:reload="reloadList"
|
|
30
31
|
:include-hidden="editRight"
|
|
31
32
|
:show-count="showCount"
|
|
32
33
|
:display-sort-text="false"
|
|
33
|
-
:
|
|
34
|
+
:force-update-parameters="forceUpdateParameters"
|
|
34
35
|
@fetch="fetch"
|
|
35
36
|
/>
|
|
36
37
|
</section>
|
|
@@ -82,7 +83,8 @@ const titleFilter = computed(() => {
|
|
|
82
83
|
? t("All podcast button", { name: props.name })
|
|
83
84
|
: t("All podcast emission button");
|
|
84
85
|
});
|
|
85
|
-
const query = computed(() => searchPattern.value.length
|
|
86
|
+
const query = computed(() => searchPattern.value.length > 3 ? searchPattern.value : "");
|
|
87
|
+
const sort = computed(() => !query.value.length ? "DATE" : "SCORE");
|
|
86
88
|
|
|
87
89
|
//Watch
|
|
88
90
|
watch(()=>props.reload, () => {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"
|
|
20
20
|
:just-size-chosen="justSizeChosen"
|
|
21
21
|
:player-responsive="true"
|
|
22
|
-
:
|
|
22
|
+
:force-update-parameters="forceUpdateParameters"
|
|
23
23
|
>
|
|
24
24
|
<template #list>
|
|
25
25
|
<div class="octopus-element-list">
|
|
@@ -150,9 +150,9 @@ watch(changePaginate, () => {
|
|
|
150
150
|
dfirst.value = props.first;
|
|
151
151
|
dsize.value = props.size;
|
|
152
152
|
});
|
|
153
|
-
watch(changed, () =>
|
|
154
|
-
watch(()=>props.reload, () =>
|
|
155
|
-
watch(dsize, () =>
|
|
153
|
+
watch(changed, () => fetchContent(true));
|
|
154
|
+
watch(()=>props.reload, () => fetchContent(true));
|
|
155
|
+
watch(dsize, () => fetchContent(true));
|
|
156
156
|
watch(dfirst, () => {
|
|
157
157
|
if (
|
|
158
158
|
!podcasts.value[dfirst.value] ||
|
|
@@ -162,17 +162,13 @@ watch(dfirst, () => {
|
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
164
|
|
|
165
|
-
onBeforeMount(()=>fetchContent(
|
|
165
|
+
onBeforeMount(()=>fetchContent(false))
|
|
166
166
|
|
|
167
167
|
//Methods
|
|
168
|
-
function reloadList() {
|
|
169
|
-
dfirst.value = 0;
|
|
170
|
-
fetchContent(true);
|
|
171
|
-
}
|
|
172
168
|
async function fetchContent(reset: boolean): Promise<void> {
|
|
173
169
|
loading.value = true;
|
|
174
170
|
const param: FetchParam = {
|
|
175
|
-
first: dfirst.value,
|
|
171
|
+
first: reset ? 0 : dfirst.value,
|
|
176
172
|
size: dsize.value,
|
|
177
173
|
organisationId: organisation.value,
|
|
178
174
|
emissionId: props.emissionId,
|
|
@@ -215,6 +211,7 @@ function afterFetching(
|
|
|
215
211
|
data: { count: number; result: Array<Podcast>; sort: string },
|
|
216
212
|
): void {
|
|
217
213
|
if (reset) {
|
|
214
|
+
dfirst.value = 0;
|
|
218
215
|
podcasts.value.length = 0;
|
|
219
216
|
}
|
|
220
217
|
if (dfirst.value > podcasts.value.length) {
|
|
@@ -211,7 +211,10 @@ function play(isVideo: boolean): void {
|
|
|
211
211
|
playerStore.playerPlay(
|
|
212
212
|
{
|
|
213
213
|
...props.podcast,
|
|
214
|
-
...{
|
|
214
|
+
...{
|
|
215
|
+
conferenceId: props.fetchConference?.conferenceId,
|
|
216
|
+
hlsIdentifier: props.fetchConference?.hlsIdentifier,
|
|
217
|
+
},
|
|
215
218
|
},
|
|
216
219
|
isVideo,
|
|
217
220
|
);
|
|
@@ -36,12 +36,6 @@
|
|
|
36
36
|
</div>
|
|
37
37
|
</div>
|
|
38
38
|
<ChooseEpisodesNumber v-else :episodes-number="episodesNumber" @update-number="emit('update:episodesNumber', $event)"/>
|
|
39
|
-
<ClassicCheckbox
|
|
40
|
-
:text-init="proceedReading"
|
|
41
|
-
id-checkbox="proceed-reading-checkbox"
|
|
42
|
-
:label="t('Proceed reading')"
|
|
43
|
-
@update:text-init="emit('update:proceedReading', $event)"
|
|
44
|
-
/>
|
|
45
39
|
</template>
|
|
46
40
|
<ClassicCheckbox
|
|
47
41
|
v-if="displayIsVisible"
|
|
@@ -104,7 +98,6 @@ const props = defineProps({
|
|
|
104
98
|
displayArticleParam: { default: false, type: Boolean },
|
|
105
99
|
displayIsVisible: { default: false, type: Boolean },
|
|
106
100
|
displayInsertCode: { default: false, type: Boolean },
|
|
107
|
-
proceedReading: { default: true, type: Boolean },
|
|
108
101
|
displayArticle: { default: true, type: Boolean },
|
|
109
102
|
displayTranscript: { default: true, type: Boolean },
|
|
110
103
|
displayWave: { default: true, type: Boolean },
|
|
@@ -118,7 +111,6 @@ const props = defineProps({
|
|
|
118
111
|
//Emits
|
|
119
112
|
const emit = defineEmits([
|
|
120
113
|
"episodeChoiceDisplay",
|
|
121
|
-
"update:proceedReading",
|
|
122
114
|
"update:isVisible",
|
|
123
115
|
"update:episodesNumber",
|
|
124
116
|
"update:displayArticle",
|
|
@@ -44,7 +44,6 @@
|
|
|
44
44
|
v-model:display-article="displayArticle"
|
|
45
45
|
v-model:display-transcript="displayTranscript"
|
|
46
46
|
v-model:display-wave="displayWave"
|
|
47
|
-
v-model:proceed-reading="proceedReading"
|
|
48
47
|
v-model:is-visible="isVisible"
|
|
49
48
|
v-model:player-auto-play="playerAutoPlay"
|
|
50
49
|
v-model:episodes-number="episodesNumber"
|
|
@@ -125,7 +124,6 @@ const iFrameModel = ref("default");
|
|
|
125
124
|
const isShareModal = ref(false);
|
|
126
125
|
const color = ref("#40a372");
|
|
127
126
|
const theme = ref("#000000");
|
|
128
|
-
const proceedReading = ref(true);
|
|
129
127
|
const episodeChoiceDisplay = ref("number");
|
|
130
128
|
const episodesNumber = ref(3);
|
|
131
129
|
const isVisible = ref(false);
|
|
@@ -341,9 +339,6 @@ function addUrlParameters(url: Array<string>) {
|
|
|
341
339
|
url.push(
|
|
342
340
|
`&color=${color.value.substring(1)}&theme=${theme.value.substring(1)}`,
|
|
343
341
|
);
|
|
344
|
-
if (!proceedReading.value) {
|
|
345
|
-
url.push("&proceed=false");
|
|
346
|
-
}
|
|
347
342
|
if (!displayArticle.value && displayArticleParam.value) {
|
|
348
343
|
url.push("&article=false");
|
|
349
344
|
}
|
|
@@ -78,7 +78,7 @@ import RssIcon from "vue-material-design-icons/Rss.vue";
|
|
|
78
78
|
import { useApiStore } from "../../../stores/ApiStore";
|
|
79
79
|
import ClassicPopover from "../../misc/ClassicPopover.vue";
|
|
80
80
|
import { Emission } from "@/stores/class/general/emission";
|
|
81
|
-
import { computed, Ref, ref, useTemplateRef, watch } from "vue";
|
|
81
|
+
import { computed, onMounted, Ref, ref, useTemplateRef, watch } from "vue";
|
|
82
82
|
import { useI18n } from "vue-i18n";
|
|
83
83
|
type Link = {
|
|
84
84
|
name: string;
|
|
@@ -204,7 +204,9 @@ const rssUrl = computed(() => {
|
|
|
204
204
|
|
|
205
205
|
|
|
206
206
|
//Watch
|
|
207
|
-
watch(()=>props.windowWidth, () =>resizeWindow()
|
|
207
|
+
watch(()=>props.windowWidth, () =>resizeWindow());
|
|
208
|
+
|
|
209
|
+
onMounted(()=>resizeWindow());
|
|
208
210
|
|
|
209
211
|
|
|
210
212
|
//Methods
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
>{{ label }}
|
|
13
13
|
<AsteriskIcon v-if="displayRequired" :size="10" class="ms-1 mb-2" :title="t('Mandatory input')"/>
|
|
14
14
|
</component>
|
|
15
|
+
<slot name="afterTitle"/>
|
|
15
16
|
<template v-if="popover">
|
|
16
17
|
<button
|
|
17
18
|
:id="'popover' + inputId"
|
|
@@ -31,7 +32,9 @@
|
|
|
31
32
|
<!-- eslint-enable -->
|
|
32
33
|
</ClassicPopover>
|
|
33
34
|
</template>
|
|
35
|
+
<slot name="afterHelp"/>
|
|
34
36
|
</div>
|
|
37
|
+
<slot name="betweenTitleInput"/>
|
|
35
38
|
<input
|
|
36
39
|
v-if="!isWysiwyg && !isTextarea"
|
|
37
40
|
v-show="showField"
|