@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.
Files changed (55) hide show
  1. package/package.json +3 -1
  2. package/plateform.conf +1 -1
  3. package/src/App.vue +3 -7
  4. package/src/api/classicApi.ts +1 -1
  5. package/src/components/composable/player/usePlayerLive.ts +2 -2
  6. package/src/components/composable/radio/usefetchRadioData.ts +29 -12
  7. package/src/components/composable/route/useAdvancedParamInit.ts +1 -1
  8. package/src/components/composable/route/useSimplePageParam.ts +11 -5
  9. package/src/components/display/categories/CategoryChooser.vue +4 -0
  10. package/src/components/display/comments/CommentList.vue +1 -1
  11. package/src/components/display/emission/EmissionList.vue +5 -8
  12. package/src/components/display/filter/AdvancedSearch.vue +0 -3
  13. package/src/components/display/list/ListPaginate.vue +1 -10
  14. package/src/components/display/live/RadioCurrently.vue +2 -5
  15. package/src/components/display/participant/ParticipantList.vue +6 -9
  16. package/src/components/display/playlist/PlaylistList.vue +5 -8
  17. package/src/components/display/playlist/PodcastList.vue +1 -1
  18. package/src/components/display/podcasts/PodcastFilterList.vue +4 -2
  19. package/src/components/display/podcasts/PodcastList.vue +7 -10
  20. package/src/components/display/podcasts/PodcastPlayButton.vue +4 -1
  21. package/src/components/display/sharing/PlayerParameters.vue +0 -8
  22. package/src/components/display/sharing/SharePlayer.vue +0 -5
  23. package/src/components/display/sharing/SubscribeButtons.vue +4 -2
  24. package/src/components/form/ClassicInputText.vue +3 -0
  25. package/src/components/form/ClassicMultiselect.vue +33 -8
  26. package/src/components/misc/ClassicAccordion.vue +4 -4
  27. package/src/components/misc/ClassicSpinner.vue +1 -1
  28. package/src/components/misc/HomeDropdown.vue +3 -110
  29. package/src/components/misc/MobileMenu.vue +59 -64
  30. package/src/components/misc/TopBar.vue +4 -11
  31. package/src/components/misc/TopBarMainContent.vue +1 -2
  32. package/src/components/misc/UserButtonContent.vue +159 -0
  33. package/src/components/misc/player/elements/PlayerImage.vue +0 -1
  34. package/src/components/misc/player/elements/PlayerTitle.vue +3 -3
  35. package/src/components/misc/player/radio/RadioHistory.vue +3 -2
  36. package/src/components/misc/player/video/PlayerVideo.vue +2 -2
  37. package/src/components/pages/EmissionPage.vue +2 -2
  38. package/src/components/pages/PageLogout.vue +1 -6
  39. package/src/components/pages/ParticipantPage.vue +2 -2
  40. package/src/components/pages/PlaylistPage.vue +1 -1
  41. package/src/components/pages/PodcastPage.vue +0 -1
  42. package/src/components/pages/VideoPage.vue +5 -2
  43. package/src/locale/de.ts +3 -3
  44. package/src/locale/en.ts +3 -3
  45. package/src/locale/es.ts +3 -3
  46. package/src/locale/fr.ts +3 -3
  47. package/src/locale/it.ts +3 -3
  48. package/src/locale/sl.ts +3 -3
  49. package/src/stores/FilterStore.ts +1 -1
  50. package/src/stores/PlayerStore.ts +6 -1
  51. package/src/stores/class/conference/conference.ts +2 -0
  52. package/src/stores/class/general/player.ts +2 -2
  53. package/src/style/_variables.scss +3 -0
  54. package/src/style/general.scss +12 -0
  55. 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-SNAPSHOT",
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
- dev2.saooti.org
1
+ preprod.saooti.org
package/src/App.vue CHANGED
@@ -8,16 +8,14 @@
8
8
  <router-view />
9
9
  <PlayerComponent />
10
10
  </main>
11
- <ClassicLazy :min-height="123">
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
- const FooterOctopus = defineAsyncComponent(
29
- () => import("@/components/misc/FooterSection.vue"),
30
- );
26
+
31
27
  const CategoryFilter = defineAsyncComponent(
32
28
  () => import("@/components/display/categories/CategoryFilter.vue"),
33
29
  );
@@ -78,7 +78,7 @@ export default {
78
78
  params.catchFunction();
79
79
  }else{
80
80
  const axiosError= error as AxiosError;
81
- return Promise.reject(new Error(axiosError.message));
81
+ return Promise.reject(axiosError);
82
82
  }
83
83
  });
84
84
  return response?.data;
@@ -51,8 +51,8 @@ export const usePlayerLive = (hlsReady: Ref<boolean>)=>{
51
51
  }
52
52
 
53
53
  function playLive() {
54
- if (!playerStore.playerLive) return;
55
- playerStore.playerUpdatePlayerHlsUrl(`${apiStore.hlsUrl}live/dev.${playerStore.playerLive.conferenceId}/index.m3u8`);
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
- arrayMetadata.unshift(metadata.currently);
37
- for (let index = 0, len = arrayMetadata.length; index < len; index++) {
38
- if (
39
- dayjs().valueOf() - 18000 >
40
- dayjs(arrayMetadata[index].startDate).valueOf()
41
- ) {
42
- await useCallbackIfNewMetadata(previousTitle, arrayMetadata, index, len,callbackMetadata);
43
- return;
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
- return radioHelper.displayTitle(metadata);
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(() => searchPattern.value.length>3 ? searchPattern.value : "");
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
- updateRouteParam({
25
- q: searchMinSize.value.length ? searchMinSize.value : undefined,
26
- }, force);
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, () =>reloadList());
156
- watch(dsize, () =>reloadList());
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(true);
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, ref, watch } from "vue";
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
- if (currentMetadata.value) {
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, () => reloadList());
107
- watch(organisation, () => reloadList());
108
- watch(dsize, () => reloadList());
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(true))
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, () => reloadList());
102
- watch(dsize, () => reloadList());
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(true))
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) {
@@ -29,7 +29,7 @@
29
29
  : undefined
30
30
  "
31
31
  :player-responsive="true"
32
- :forceUpdateParameters="true"
32
+ :force-update-parameters="true"
33
33
  >
34
34
  <template #list>
35
35
  <div class="octopus-element-list">
@@ -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
- :forceUpdateParameters="forceUpdateParameters"
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 >= 3 ? searchPattern.value : "");
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
- :forceUpdateParameters="forceUpdateParameters"
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, () => reloadList());
154
- watch(()=>props.reload, () => reloadList());
155
- watch(dsize, () => reloadList());
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(true))
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
- ...{ conferenceId: props.fetchConference?.conferenceId },
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(), {immediate: true});
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"