@saooti/octopus-sdk 41.0.18 → 41.0.20
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/CHANGELOG.md +29 -1
- package/index.ts +4 -0
- package/package.json +31 -31
- package/src/components/composable/route/types.ts +47 -0
- package/src/components/composable/route/useAdvancedParamInit.ts +29 -4
- package/src/components/composable/route/useRouteUpdateParams.ts +9 -19
- package/src/components/composable/route/useSimplePageParam.ts +6 -4
- package/src/components/display/emission/EmissionList.vue +6 -2
- package/src/components/display/filter/AdvancedSearch.vue +237 -170
- package/src/components/display/list/SwiperList.vue +15 -2
- package/src/components/display/playlist/PodcastList.vue +0 -1
- package/src/components/display/podcasts/PodcastImage.vue +4 -4
- package/src/components/display/podcasts/PodcastItem.vue +1 -4
- package/src/components/display/podcasts/PodcastList.vue +4 -2
- package/src/components/display/podcasts/PodcastModuleBox.vue +24 -6
- package/src/components/display/podcasts/PodcastPlayButton.vue +3 -5
- package/src/components/display/podcasts/TagList.vue +2 -2
- package/src/components/form/ClassicInputText.vue +1 -0
- package/src/components/form/ClassicMultiselect.vue +1 -0
- package/src/components/form/ClassicRadio.vue +29 -6
- package/src/components/form/ClassicTagInput.vue +155 -0
- package/src/components/misc/ClassicPopover.vue +1 -1
- package/src/components/pages/EmissionPage.vue +10 -0
- package/src/components/pages/EmissionsPage.vue +66 -61
- package/src/components/pages/PodcastsPage.vue +71 -66
- package/src/helper/durationHelper.ts +37 -19
- package/src/locale/de.ts +1 -0
- package/src/locale/en.ts +1 -0
- package/src/locale/es.ts +1 -0
- package/src/locale/fr.ts +2 -1
- package/src/locale/it.ts +1 -0
- package/src/locale/sl.ts +1 -0
- package/src/router/router.ts +4 -0
- package/src/stores/AuthStore.ts +4 -0
- package/src/stores/class/general/emission.ts +2 -0
- package/src/stores/class/general/podcast.ts +2 -0
- package/src/style/general.scss +18 -14
|
@@ -1,32 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
|
|
2
|
+
const TIMESTAMP_REGEX = /(?:(\d{1,2}):)?([0-5]?\d):([0-5]\d)(?:.(\d{3}))?$/;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Convert a timestamp to seconds
|
|
6
|
+
*/
|
|
7
|
+
function convertTimestamptoSeconds(timestamp: string): number|null {
|
|
8
|
+
const matches = timestamp.match(TIMESTAMP_REGEX);
|
|
9
|
+
if (matches) {
|
|
10
|
+
const [, hours, minutes, seconds, nanoseconds] = matches;
|
|
11
|
+
return Number(hours ?? 0) * 60 * 60 + Number(minutes ?? 0) * 60 + Number(seconds ?? 0) + Number(nanoseconds ?? 0) / 1000;
|
|
12
|
+
} else {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function formatToString(value: number) {
|
|
8
18
|
if (value < 10) {
|
|
9
|
-
|
|
19
|
+
return "0" + value;
|
|
10
20
|
}
|
|
11
21
|
return value.toString();
|
|
12
|
-
|
|
13
|
-
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function formatDuration(
|
|
14
25
|
totalSeconds: number | null,
|
|
15
26
|
separator = ":",
|
|
16
27
|
isLast = false,
|
|
17
|
-
|
|
28
|
+
): string {
|
|
18
29
|
if (null === totalSeconds) {
|
|
19
|
-
|
|
30
|
+
return "00:00";
|
|
20
31
|
}
|
|
21
32
|
const hours = Math.floor(totalSeconds / 3600);
|
|
22
33
|
const minutes = Math.floor((totalSeconds - hours * 3600) / 60);
|
|
23
34
|
const seconds = totalSeconds - hours * 3600 - minutes * 60;
|
|
24
35
|
return (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
36
|
+
(hours > 0 ? this.formatToString(hours) + separator : "") +
|
|
37
|
+
this.formatToString(minutes) +
|
|
38
|
+
separator +
|
|
39
|
+
this.formatToString(seconds.toFixed(2)) +
|
|
40
|
+
(isLast ? separator : "")
|
|
30
41
|
);
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default {
|
|
45
|
+
TIMESTAMP_REGEX,
|
|
46
|
+
|
|
47
|
+
convertTimestamptoSeconds,
|
|
48
|
+
formatDuration,
|
|
49
|
+
formatToString
|
|
50
|
+
}
|
package/src/locale/de.ts
CHANGED
|
@@ -417,4 +417,5 @@ export default {
|
|
|
417
417
|
"Silent stream":"Stiller Fluss",
|
|
418
418
|
"Emission - Not available for listeners": "Sendung für Hörer nicht sichtbar",
|
|
419
419
|
"Emission - Not available explanation": "Diese Sendung ist für Hörer nicht sichtbar, da sie so konfiguriert wurde, dass ihre Episoden nicht veröffentlicht werden. Diese Konfiguration ist in den erweiterten Einstellungen der Show verfügbar.",
|
|
420
|
+
"Filters - Beneficiaries": "Nach Referenzen der Rechteinhaber",
|
|
420
421
|
}
|
package/src/locale/en.ts
CHANGED
|
@@ -420,4 +420,5 @@ export default {
|
|
|
420
420
|
"Silent stream":"Silent stream",
|
|
421
421
|
"Emission - Not available for listeners": "Broadcast not visible to listeners",
|
|
422
422
|
"Emission - Not available explanation": "This show is not visible to listeners because it has been configured so that its episodes are not published. This configuration is available in the advanced settings of the show.",
|
|
423
|
+
"Filters - Beneficiaries": "By rights holder references",
|
|
423
424
|
};
|
package/src/locale/es.ts
CHANGED
|
@@ -418,4 +418,5 @@ export default {
|
|
|
418
418
|
"Silent stream":"Flujo silencioso",
|
|
419
419
|
"Emission - Not available for listeners": "Transmisión no visible para los oyentes",
|
|
420
420
|
"Emission - Not available explanation": "Este programa no es visible para los oyentes porque ha sido configurado para que sus episodios no se publiquen. Esta configuración está disponible en la configuración avanzada del programa.",
|
|
421
|
+
"Filters - Beneficiaries": "Por referencias de titulares de derechos",
|
|
421
422
|
}
|
package/src/locale/fr.ts
CHANGED
|
@@ -426,5 +426,6 @@ export default {
|
|
|
426
426
|
"Color of the QR Code": "Couleur du Qr Code",
|
|
427
427
|
"Silent stream":"Flux silencieux",
|
|
428
428
|
"Emission - Not available for listeners": "Émission non visible pour les auditeurs",
|
|
429
|
-
"Emission - Not available explanation": "Cette émission n'est pas visible pour les auditeurs car elle a été configurée pour que ses épisodes ne soient pas publiés. Cette configuration est disponible dans les paramètres avancés de l'émission."
|
|
429
|
+
"Emission - Not available explanation": "Cette émission n'est pas visible pour les auditeurs car elle a été configurée pour que ses épisodes ne soient pas publiés. Cette configuration est disponible dans les paramètres avancés de l'émission.",
|
|
430
|
+
"Filters - Beneficiaries": "Par références ayants-droit"
|
|
430
431
|
};
|
package/src/locale/it.ts
CHANGED
|
@@ -414,4 +414,5 @@ export default{
|
|
|
414
414
|
"Silent stream":"Flusso silenzioso",
|
|
415
415
|
"Emission - Not available for listeners": "Trasmissione non visibile agli ascoltatori",
|
|
416
416
|
"Emission - Not available explanation": "Questo programma non è visibile agli ascoltatori perché è stato configurato in modo che i suoi episodi non vengano pubblicati. Questa configurazione è disponibile nelle impostazioni avanzate dello spettacolo.",
|
|
417
|
+
"Filters - Beneficiaries": "Per riferimenti del titolare dei diritti",
|
|
417
418
|
};
|
package/src/locale/sl.ts
CHANGED
|
@@ -409,4 +409,5 @@ export default {
|
|
|
409
409
|
"Silent stream":"Tihi tok",
|
|
410
410
|
"Emission - Not available for listeners": "Oddaja ni vidna poslušalcem",
|
|
411
411
|
"Emission - Not available explanation": "Ta oddaja ni vidna poslušalcem, ker je bila konfigurirana tako, da njene epizode niso objavljene. Ta konfiguracija je na voljo v naprednih nastavitvah oddaje.",
|
|
412
|
+
"Filters - Beneficiaries": "Po referencah imetnikov pravic",
|
|
412
413
|
}
|
package/src/router/router.ts
CHANGED
|
@@ -9,6 +9,8 @@ import { AuthStore } from "../stores/AuthStore";
|
|
|
9
9
|
import fetchHelper from "@/helper/fetchHelper";
|
|
10
10
|
import { setupRouter } from "./utils";
|
|
11
11
|
|
|
12
|
+
import { ROUTE_PARAMS } from "../components/composable/route/useRouteUpdateParams";
|
|
13
|
+
|
|
12
14
|
/*--------------------------------------------------------------------------
|
|
13
15
|
Composants publics
|
|
14
16
|
--------------------------------------------------------------------------*/
|
|
@@ -96,6 +98,7 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
96
98
|
routeOnlyVideo:route.query.v ?? "",
|
|
97
99
|
routeOrga:route.query.o,
|
|
98
100
|
routeRubriques :route.query.r ?? route.query.rubriquesId,
|
|
101
|
+
routeBeneficiaries: route.query[ROUTE_PARAMS.Beneficiaries],
|
|
99
102
|
}),
|
|
100
103
|
meta:{
|
|
101
104
|
title: "Podcasts",
|
|
@@ -117,6 +120,7 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
117
120
|
routeTo: route.query.to,
|
|
118
121
|
routeOrga:route.query.o,
|
|
119
122
|
routeRubriques :route.query.r ?? route.query.rubriquesId,
|
|
123
|
+
routeBeneficiaries: route.query[ROUTE_PARAMS.Beneficiaries],
|
|
120
124
|
}),
|
|
121
125
|
meta:{
|
|
122
126
|
title: "Emissions",
|
package/src/stores/AuthStore.ts
CHANGED
|
@@ -50,6 +50,10 @@ export const useAuthStore = defineStore("AuthStore", {
|
|
|
50
50
|
authVideoConfig: { active: false },
|
|
51
51
|
}),
|
|
52
52
|
getters: {
|
|
53
|
+
/** Indicates that the user is authenticated */
|
|
54
|
+
isAuthenticated(): boolean {
|
|
55
|
+
return this.authParam.accessToken !== undefined;
|
|
56
|
+
},
|
|
53
57
|
isRoleAdmin(): boolean {
|
|
54
58
|
return this.authRole.includes("ADMIN");
|
|
55
59
|
},
|
|
@@ -37,7 +37,9 @@ export interface Podcast {
|
|
|
37
37
|
rssEpisode?:string;
|
|
38
38
|
score?: number;
|
|
39
39
|
size?: number;
|
|
40
|
+
/** An optional list of tags */
|
|
40
41
|
tags?: Array<string>;
|
|
42
|
+
/** An optional list of tags for OuestFrance */
|
|
41
43
|
ofTags?: Array<string>;
|
|
42
44
|
title: string;
|
|
43
45
|
weekDownloadCount?: number;
|
package/src/style/general.scss
CHANGED
|
@@ -62,26 +62,30 @@ main, #app{
|
|
|
62
62
|
|
|
63
63
|
/** Flex style */
|
|
64
64
|
.d-flex-low-importance{
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
display: flex;
|
|
66
|
+
}
|
|
67
67
|
|
|
68
68
|
.d-flex-column{
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
display: flex;
|
|
70
|
+
flex-direction: row;
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
@media (width <= 960px) {
|
|
73
|
+
flex-direction: column;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
76
|
|
|
77
77
|
.d-flex-row{
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-direction: column;
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
@media (width <= 960px) {
|
|
82
|
+
flex-flow: row wrap;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.justify-space-between {
|
|
87
|
+
justify-content: space-between;
|
|
88
|
+
}
|
|
85
89
|
|
|
86
90
|
|
|
87
91
|
@media (width <= 960px) {
|