@saooti/octopus-sdk 41.1.15 → 41.2.0
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 +32 -0
- package/index.ts +24 -1
- package/package.json +1 -1
- package/src/api/groupsApi.ts +214 -0
- package/src/api/podcastApi.ts +47 -9
- package/src/components/buttons/ActionButton.vue +99 -0
- package/src/components/buttons/index.ts +5 -0
- package/src/components/composable/route/types.ts +11 -3
- package/src/components/composable/route/useAdvancedParamInit.ts +38 -13
- package/src/components/composable/useErrorHandler.ts +3 -2
- package/src/components/composable/useNotifications.ts +50 -0
- package/src/components/display/emission/EmissionGroupChooser.vue +56 -0
- package/src/components/display/emission/EmissionList.vue +8 -2
- package/src/components/display/filter/AdvancedSearch.vue +82 -23
- package/src/components/display/list/ListPaginate.vue +4 -1
- package/src/components/display/podcasts/PodcastList.vue +12 -5
- package/src/components/display/podcasts/PodcastPlayButton.vue +2 -2
- package/src/components/display/podcasts/TagList.vue +4 -1
- package/src/components/form/ClassicMultiselect.vue +43 -37
- package/src/components/icons.ts +13 -0
- package/src/components/misc/ClassicAlert.vue +8 -1
- package/src/components/misc/ClassicBigChip.vue +84 -0
- package/src/components/misc/ClassicDataTable.vue +98 -0
- package/src/components/misc/ClassicDataTable_Internal.vue +132 -0
- package/src/components/misc/ClassicHelpButton.vue +3 -3
- package/src/components/misc/ClassicNotifications.vue +23 -0
- package/src/components/misc/ClassicPopover.vue +1 -0
- package/src/components/pages/EmissionPage.vue +2 -2
- package/src/components/pages/EmissionsPage.vue +10 -15
- package/src/components/pages/PodcastPage.vue +1 -1
- package/src/components/pages/PodcastsPage.vue +8 -20
- package/src/helper/fetchHelper.ts +1 -0
- 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 +5 -3
- package/src/locale/it.ts +2 -0
- package/src/locale/sl.ts +2 -0
- package/src/router/router.ts +38 -53
- package/src/stores/class/general/emission.ts +8 -2
- package/src/style/_variables.scss +3 -0
- package/src/style/bootstrap.scss +5 -0
package/src/router/router.ts
CHANGED
|
@@ -9,7 +9,7 @@ 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/
|
|
12
|
+
import { ROUTE_PARAMS, RouteProps } from "../components/composable/route/types";
|
|
13
13
|
|
|
14
14
|
/*--------------------------------------------------------------------------
|
|
15
15
|
Composants publics
|
|
@@ -36,6 +36,33 @@ const RadioPage = () => import("@/components/pages/RadioPage.vue");
|
|
|
36
36
|
const VideoPage = () => import("@/components/pages/VideoPage.vue");
|
|
37
37
|
const PageLogout = () => import("@/components/pages/PageLogout.vue");
|
|
38
38
|
|
|
39
|
+
function getSimpleRouteProps(route:RouteLocationNormalized): RouteProps {
|
|
40
|
+
return {
|
|
41
|
+
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
42
|
+
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
43
|
+
routeQuery: route.query.q as string ?? ""
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Return route props used for filtering
|
|
49
|
+
*/
|
|
50
|
+
function getRouteProps(route: RouteLocationNormalized): RouteProps {
|
|
51
|
+
return {
|
|
52
|
+
...getSimpleRouteProps(route),
|
|
53
|
+
routeMonetisable: route.query.m as string ?? "",
|
|
54
|
+
routeIab: route.query.i ? parseInt(route.query.i.toString(), 10) : undefined,
|
|
55
|
+
routeSort: route.query.s as string ?? "",
|
|
56
|
+
routeIncludeHidden: route.query.h as string ?? "",
|
|
57
|
+
routeFrom: route.query.from as string|undefined,
|
|
58
|
+
routeTo: route.query.to as string|undefined,
|
|
59
|
+
routeOrga:route.query.o as string|undefined,
|
|
60
|
+
routeRubriques :route.query.r as string ?? route.query.rubriquesId as string|undefined,
|
|
61
|
+
routeBeneficiaries: route.query[ROUTE_PARAMS.Beneficiaries] as string[]|undefined,
|
|
62
|
+
routeEmissionGroups: (route.query[ROUTE_PARAMS.EmissionGroups] as string[]|undefined)?.map(g => parseInt(g, 10))
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
39
66
|
const routes: Array<RouteRecordRaw> = [
|
|
40
67
|
/*--------------------------------------------------------------------------
|
|
41
68
|
Liens publics
|
|
@@ -84,22 +111,7 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
84
111
|
path: "/main/pub/podcasts/",
|
|
85
112
|
name: "podcasts",
|
|
86
113
|
component: PodcastsPage,
|
|
87
|
-
props:
|
|
88
|
-
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
89
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
90
|
-
routeQuery: route.query.q ?? "",
|
|
91
|
-
routeMonetisable: route.query.m ?? "",
|
|
92
|
-
routeIab: route.query.i ? parseInt(route.query.i.toString(), 10) : undefined,
|
|
93
|
-
routeSort: route.query.s ?? "",
|
|
94
|
-
routeIncludeHidden: route.query.h ?? "",
|
|
95
|
-
routeFrom: route.query.from,
|
|
96
|
-
routeTo: route.query.to,
|
|
97
|
-
routeValidity:route.query.vl ?? "",
|
|
98
|
-
routeOnlyVideo:route.query.v ?? "",
|
|
99
|
-
routeOrga:route.query.o,
|
|
100
|
-
routeRubriques :route.query.r ?? route.query.rubriquesId,
|
|
101
|
-
routeBeneficiaries: route.query[ROUTE_PARAMS.Beneficiaries],
|
|
102
|
-
}),
|
|
114
|
+
props: getRouteProps,
|
|
103
115
|
meta:{
|
|
104
116
|
title: "Podcasts",
|
|
105
117
|
}
|
|
@@ -108,20 +120,7 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
108
120
|
path: "/main/pub/emissions/",
|
|
109
121
|
name: "emissions",
|
|
110
122
|
component: EmissionsPage,
|
|
111
|
-
props:
|
|
112
|
-
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
113
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
114
|
-
routeQuery: route.query.q ?? "",
|
|
115
|
-
routeMonetisable: route.query.m ?? "",
|
|
116
|
-
routeIab: route.query.i ? parseInt(route.query.i.toString(), 10) : undefined,
|
|
117
|
-
routeSort: route.query.s ?? "",
|
|
118
|
-
routeIncludeHidden: route.query.h ?? "",
|
|
119
|
-
routeFrom: route.query.from,
|
|
120
|
-
routeTo: route.query.to,
|
|
121
|
-
routeOrga:route.query.o,
|
|
122
|
-
routeRubriques :route.query.r ?? route.query.rubriquesId,
|
|
123
|
-
routeBeneficiaries: route.query[ROUTE_PARAMS.Beneficiaries],
|
|
124
|
-
}),
|
|
123
|
+
props: getRouteProps,
|
|
125
124
|
meta:{
|
|
126
125
|
title: "Emissions",
|
|
127
126
|
}
|
|
@@ -131,10 +130,8 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
131
130
|
name: "participants",
|
|
132
131
|
component: ParticpantsPage,
|
|
133
132
|
props: (route: RouteLocationNormalized) => ({
|
|
134
|
-
|
|
135
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
133
|
+
...getSimpleRouteProps(route),
|
|
136
134
|
routeOrga:route.query.o,
|
|
137
|
-
routeQuery: route.query.q ?? "",
|
|
138
135
|
}),
|
|
139
136
|
meta:{
|
|
140
137
|
title: "Speakers",
|
|
@@ -145,10 +142,8 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
145
142
|
name: "emission",
|
|
146
143
|
component: EmissionPage,
|
|
147
144
|
props: (route: RouteLocationNormalized) => ({
|
|
145
|
+
...getSimpleRouteProps(route),
|
|
148
146
|
emissionId: parseInt(route.params.emissionId.toString(), 10),
|
|
149
|
-
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
150
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
151
|
-
routeQuery: route.query.q ?? "",
|
|
152
147
|
}),
|
|
153
148
|
meta:{
|
|
154
149
|
title: "",
|
|
@@ -182,10 +177,8 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
182
177
|
name: "participant",
|
|
183
178
|
component: ParticipantPage,
|
|
184
179
|
props: (route: RouteLocationNormalized) => ({
|
|
180
|
+
...getSimpleRouteProps(route),
|
|
185
181
|
participantId: parseInt(route.params.participantId.toString(), 10),
|
|
186
|
-
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
187
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
188
|
-
routeQuery: route.query.q ?? "",
|
|
189
182
|
}),
|
|
190
183
|
meta:{
|
|
191
184
|
title: "",
|
|
@@ -209,11 +202,9 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
209
202
|
name: "rubrique",
|
|
210
203
|
component: RubriquePage,
|
|
211
204
|
props: (route: RouteLocationNormalized) => ({
|
|
212
|
-
|
|
213
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
205
|
+
...getSimpleRouteProps(route),
|
|
214
206
|
rubriqueId: parseInt(route.params.rubriqueId.toString(), 10),
|
|
215
207
|
routeOrga:route.query.o,
|
|
216
|
-
routeQuery: route.query.q ?? "",
|
|
217
208
|
}),
|
|
218
209
|
meta:{
|
|
219
210
|
title: "",
|
|
@@ -224,11 +215,9 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
224
215
|
name: "tag",
|
|
225
216
|
component: TagPage,
|
|
226
217
|
props: (route: RouteLocationNormalized) => ({
|
|
227
|
-
|
|
228
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
218
|
+
...getSimpleRouteProps(route),
|
|
229
219
|
tag: route.params.tag,
|
|
230
220
|
routeOrga:route.query.o,
|
|
231
|
-
routeQuery: route.query.q ?? "",
|
|
232
221
|
}),
|
|
233
222
|
meta:{
|
|
234
223
|
title: "",
|
|
@@ -261,10 +250,8 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
261
250
|
name: "playlists",
|
|
262
251
|
component: PlaylistsPage,
|
|
263
252
|
props: (route: RouteLocationNormalized) => ({
|
|
264
|
-
|
|
265
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
253
|
+
...getSimpleRouteProps(route),
|
|
266
254
|
routeOrga:route.query.o,
|
|
267
|
-
routeQuery: route.query.q ?? "",
|
|
268
255
|
}),
|
|
269
256
|
meta:{
|
|
270
257
|
title: "Playlists"
|
|
@@ -275,10 +262,8 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
275
262
|
name: "playlist",
|
|
276
263
|
component: PlaylistPage,
|
|
277
264
|
props: (route: RouteLocationNormalized) => ({
|
|
265
|
+
...getSimpleRouteProps(route),
|
|
278
266
|
playlistId: parseInt(route.params.playlistId.toString(), 10),
|
|
279
|
-
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
280
|
-
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
281
|
-
routeQuery: route.query.q ?? "",
|
|
282
267
|
}),
|
|
283
268
|
meta:{
|
|
284
269
|
title: "",
|
|
@@ -360,4 +345,4 @@ async function getMyOrgaActive(authStore: AuthStore): Promise<string>{
|
|
|
360
345
|
|
|
361
346
|
setupRouter(router, getMyOrgaActive);
|
|
362
347
|
|
|
363
|
-
export default router;
|
|
348
|
+
export default router;
|
|
@@ -3,6 +3,9 @@ import { Organisation } from "./organisation";
|
|
|
3
3
|
import { Person } from "../user/person";
|
|
4
4
|
import { ItuneCategory } from "./ituneCategory";
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* An emission
|
|
8
|
+
*/
|
|
6
9
|
export interface Emission {
|
|
7
10
|
imageUrl?: string;
|
|
8
11
|
annotations?: { [key: string]: string | number | boolean | undefined };
|
|
@@ -34,20 +37,23 @@ export interface Emission {
|
|
|
34
37
|
visible?: boolean;
|
|
35
38
|
/** An optional list of tags */
|
|
36
39
|
tags?: string[];
|
|
40
|
+
/** The ids of groups this emission belongs to */
|
|
41
|
+
groupIds?: Array<number>
|
|
37
42
|
}
|
|
38
43
|
|
|
39
|
-
export function emptyEmissionData(): Emission {
|
|
44
|
+
export function emptyEmissionData(orga?: Organisation): Emission {
|
|
40
45
|
return {
|
|
41
46
|
emissionId: 0,
|
|
42
47
|
name: "",
|
|
43
48
|
description: "",
|
|
44
49
|
imageUrl: "",
|
|
45
50
|
iabIds: undefined,
|
|
46
|
-
orga: {
|
|
51
|
+
orga: orga ?? {
|
|
47
52
|
id: "",
|
|
48
53
|
name: "",
|
|
49
54
|
imageUrl: "",
|
|
50
55
|
},
|
|
56
|
+
beneficiaries: [],
|
|
51
57
|
rubriqueIds: [],
|
|
52
58
|
monetisable: "UNDEFINED",
|
|
53
59
|
limits: {},
|
package/src/style/bootstrap.scss
CHANGED