@saooti/octopus-sdk 40.0.0 → 40.0.2
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/filter/AdvancedSearch.vue +34 -29
- package/src/components/display/list/ListPaginate.vue +1 -1
- package/src/components/display/participant/ParticipantList.vue +4 -0
- package/src/components/display/podcasts/PodcastList.vue +6 -6
- package/src/components/display/podcasts/PodcastRubriqueList.vue +14 -3
- package/src/components/form/ClassicSearch.vue +4 -0
- package/src/components/mixins/routeParam/advancedParamInit.ts +17 -2
- package/src/components/mixins/routeParam/paginateParamInit.ts +29 -2
- package/src/components/mixins/routeParam/routeParams.ts +4 -4
- package/src/components/pages/ParticipantsPage.vue +3 -10
- package/src/components/pages/PlaylistsPage.vue +3 -8
- package/src/components/pages/PodcastsPage.vue +3 -13
- package/src/components/pages/RubriquePage.vue +35 -8
- package/src/locale/de.ts +4 -4
- package/src/locale/en.ts +4 -2
- package/src/locale/es.ts +4 -4
- package/src/locale/fr.ts +4 -2
- package/src/locale/it.ts +4 -2
- package/src/locale/sl.ts +4 -3
- package/src/router/router.ts +10 -9
- package/src/style/_variables.scss +0 -19
package/package.json
CHANGED
|
@@ -42,19 +42,25 @@
|
|
|
42
42
|
class="flex-shrink-0"
|
|
43
43
|
id-checkbox="search-future-checkbox"
|
|
44
44
|
:label="textNotVisible"
|
|
45
|
-
:is-disabled="
|
|
45
|
+
:is-disabled="isSelectValidity && 'true'!==validity"
|
|
46
46
|
@update:text-init="updateIncludeHidden"
|
|
47
47
|
/>
|
|
48
48
|
</div>
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
49
|
+
<ClassicSelect
|
|
50
|
+
v-if="isSelectValidity"
|
|
51
|
+
:text-init="validity"
|
|
52
|
+
id-select="valid-episodes-select"
|
|
53
|
+
:label="$t('Episodes to validate')+' :'"
|
|
54
|
+
:display-label="true"
|
|
55
|
+
class-label="flex-shrink-0 me-1"
|
|
56
|
+
class="d-flex align-items-center mt-3 mb-0"
|
|
57
|
+
:options="[
|
|
58
|
+
{ title: $t('Display only episodes to validate'), value: 'false' },
|
|
59
|
+
{ title: $t('Display episodes to validate'), value: '' },
|
|
60
|
+
{ title: $t('Do not display episodes to validate'), value: 'true' },
|
|
61
|
+
]"
|
|
62
|
+
@update:text-init="updateValidity"
|
|
63
|
+
/>
|
|
58
64
|
<ClassicCheckbox
|
|
59
65
|
v-if="!isEmission"
|
|
60
66
|
:text-init="onlyVideo"
|
|
@@ -92,6 +98,9 @@ const CategorySearchFilter = defineAsyncComponent(
|
|
|
92
98
|
const RubriqueFilter = defineAsyncComponent(
|
|
93
99
|
() => import("./RubriqueFilter.vue"),
|
|
94
100
|
);
|
|
101
|
+
const ClassicSelect = defineAsyncComponent(
|
|
102
|
+
() => import("../../form/ClassicSelect.vue"),
|
|
103
|
+
);
|
|
95
104
|
const ClassicCheckbox = defineAsyncComponent(
|
|
96
105
|
() => import("../../form/ClassicCheckbox.vue"),
|
|
97
106
|
);
|
|
@@ -106,6 +115,7 @@ export default defineComponent({
|
|
|
106
115
|
DateFilter,
|
|
107
116
|
SearchOrder,
|
|
108
117
|
ChevronDownIcon,
|
|
118
|
+
ClassicSelect
|
|
109
119
|
},
|
|
110
120
|
mixins: [orgaComputed, rubriquesFilterParam],
|
|
111
121
|
props: {
|
|
@@ -119,7 +129,7 @@ export default defineComponent({
|
|
|
119
129
|
searchPattern: { default: "", type: String },
|
|
120
130
|
fromDate: { default: undefined, type: String },
|
|
121
131
|
toDate: { default: undefined, type: String },
|
|
122
|
-
|
|
132
|
+
validity: { default: 'true', type: String },
|
|
123
133
|
rubriqueFilter: {
|
|
124
134
|
default: () => [],
|
|
125
135
|
type: Array as () => Array<RubriquageFilter>,
|
|
@@ -133,7 +143,7 @@ export default defineComponent({
|
|
|
133
143
|
"update:iabId",
|
|
134
144
|
"update:sort",
|
|
135
145
|
"update:includeHidden",
|
|
136
|
-
"update:
|
|
146
|
+
"update:validity",
|
|
137
147
|
"update:rubriqueFilter",
|
|
138
148
|
"update:onlyVideo",
|
|
139
149
|
],
|
|
@@ -163,7 +173,7 @@ export default defineComponent({
|
|
|
163
173
|
? this.$t("Consider podcasts no visible")
|
|
164
174
|
: this.$t("See podcasts no visible");
|
|
165
175
|
},
|
|
166
|
-
|
|
176
|
+
isSelectValidity(): boolean {
|
|
167
177
|
return (
|
|
168
178
|
undefined !== this.organisation &&
|
|
169
179
|
this.organisationRight &&
|
|
@@ -173,11 +183,6 @@ export default defineComponent({
|
|
|
173
183
|
this.includeHidden
|
|
174
184
|
);
|
|
175
185
|
},
|
|
176
|
-
textNotValidate(): string {
|
|
177
|
-
return this.isRoleProduction
|
|
178
|
-
? this.$t("Display all podcasts to validate")
|
|
179
|
-
: this.$t("Display my podcasts to validate");
|
|
180
|
-
},
|
|
181
186
|
},
|
|
182
187
|
watch: {
|
|
183
188
|
organisation(): void {
|
|
@@ -198,7 +203,7 @@ export default defineComponent({
|
|
|
198
203
|
if (valSort !== this.sort) {
|
|
199
204
|
this.$emit("update:sort", valSort);
|
|
200
205
|
}
|
|
201
|
-
this.
|
|
206
|
+
this.updateRouteParamAdvanced({
|
|
202
207
|
q: search.length ? search : undefined,
|
|
203
208
|
s: valSort,
|
|
204
209
|
});
|
|
@@ -207,7 +212,7 @@ export default defineComponent({
|
|
|
207
212
|
methods: {
|
|
208
213
|
updateMonetisable(value: string): void {
|
|
209
214
|
this.$emit("update:monetisable", value);
|
|
210
|
-
this.
|
|
215
|
+
this.updateRouteParamAdvanced({ m: "UNDEFINED" !== value ? value : undefined });
|
|
211
216
|
},
|
|
212
217
|
updateIab(value: number | undefined) {
|
|
213
218
|
this.$emit("update:iabId", 0 !== value ? value : undefined);
|
|
@@ -215,26 +220,26 @@ export default defineComponent({
|
|
|
215
220
|
if (this.filterIab && this.filterIab.id !== value) {
|
|
216
221
|
filterIab = { iabId: undefined };
|
|
217
222
|
}
|
|
218
|
-
this.
|
|
223
|
+
this.updateRouteParamAdvanced({
|
|
219
224
|
...{ i: value ? value.toString() : undefined },
|
|
220
225
|
...filterIab,
|
|
221
226
|
});
|
|
222
227
|
},
|
|
223
228
|
updateSort(value: string) {
|
|
224
229
|
this.$emit("update:sort", value);
|
|
225
|
-
this.
|
|
230
|
+
this.updateRouteParamAdvanced({ s: value });
|
|
226
231
|
},
|
|
227
232
|
updateIncludeHidden(value: boolean) {
|
|
228
233
|
this.$emit("update:includeHidden", value);
|
|
229
|
-
this.
|
|
234
|
+
this.updateRouteParamAdvanced({ h: value.toString() });
|
|
230
235
|
},
|
|
231
|
-
|
|
232
|
-
this.$emit("update:
|
|
233
|
-
this.
|
|
236
|
+
updateValidity(value: boolean) {
|
|
237
|
+
this.$emit("update:validity", value);
|
|
238
|
+
this.updateRouteParamAdvanced({ vl: value.toString() });
|
|
234
239
|
},
|
|
235
240
|
updateOnlyVideo(value: boolean) {
|
|
236
241
|
this.$emit("update:onlyVideo", value);
|
|
237
|
-
this.
|
|
242
|
+
this.updateRouteParamAdvanced({ v: value ? "true" : undefined });
|
|
238
243
|
},
|
|
239
244
|
updateDates(value: {
|
|
240
245
|
from: string | undefined;
|
|
@@ -242,7 +247,7 @@ export default defineComponent({
|
|
|
242
247
|
}): void {
|
|
243
248
|
this.$emit("update:fromDate", value.from);
|
|
244
249
|
this.$emit("update:toDate", value.to);
|
|
245
|
-
this.
|
|
250
|
+
this.updateRouteParamAdvanced({ from: value.from, to: value.to });
|
|
246
251
|
},
|
|
247
252
|
updateRubriquageFilter(value: Array<RubriquageFilter>) {
|
|
248
253
|
this.$emit("update:rubriqueFilter", value);
|
|
@@ -254,7 +259,7 @@ export default defineComponent({
|
|
|
254
259
|
) {
|
|
255
260
|
filterRubriques = { rubriquesId: undefined };
|
|
256
261
|
}
|
|
257
|
-
this.
|
|
262
|
+
this.updateRouteParamAdvanced({
|
|
258
263
|
...{ r: valueString.length ? valueString : undefined },
|
|
259
264
|
...filterRubriques,
|
|
260
265
|
});
|
|
@@ -112,7 +112,7 @@ export default defineComponent({
|
|
|
112
112
|
this.internSizeChange = false;
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
|
-
this.
|
|
115
|
+
this.updateRouteParam({pr:(Math.floor(this.first / this.rowsPerPage) + 1).toString()});
|
|
116
116
|
},
|
|
117
117
|
},
|
|
118
118
|
methods: {
|
|
@@ -104,6 +104,9 @@ export default defineComponent({
|
|
|
104
104
|
changePaginate(): string {
|
|
105
105
|
return `${this.first}|${this.size}`;
|
|
106
106
|
},
|
|
107
|
+
sort(): string {
|
|
108
|
+
return !this.query ? "NAME" : "SCORE";
|
|
109
|
+
},
|
|
107
110
|
},
|
|
108
111
|
watch: {
|
|
109
112
|
changePaginate() {
|
|
@@ -149,6 +152,7 @@ export default defineComponent({
|
|
|
149
152
|
size: this.dsize,
|
|
150
153
|
query: this.query,
|
|
151
154
|
organisationId: this.organisation,
|
|
155
|
+
sort: this.sort
|
|
152
156
|
},
|
|
153
157
|
specialTreatement: true,
|
|
154
158
|
},
|
|
@@ -87,7 +87,7 @@ export default defineComponent({
|
|
|
87
87
|
showCount: { default: false, type: Boolean },
|
|
88
88
|
displaySortText: { default: true, type: Boolean },
|
|
89
89
|
sortCriteria: { default: undefined, type: String },
|
|
90
|
-
|
|
90
|
+
validity: { default: 'true', type: String },
|
|
91
91
|
rubriqueId: { default: () => [], type: Array as () => Array<number> },
|
|
92
92
|
rubriquageId: { default: () => [], type: Array as () => Array<number> },
|
|
93
93
|
noRubriquageId: { default: () => [], type: Array as () => Array<number> },
|
|
@@ -125,7 +125,7 @@ export default defineComponent({
|
|
|
125
125
|
changed(): string {
|
|
126
126
|
return `${this.organisation}|${this.emissionId}|${this.sortCriteria}|${this.sort}
|
|
127
127
|
${this.iabId}|${this.participantId}|${this.query}|${this.monetisable}|${this.popularSort}|
|
|
128
|
-
${this.rubriqueId}|${this.rubriquageId}|${this.before}|${this.after}|${this.includeHidden}|${this.noRubriquageId}|${this.
|
|
128
|
+
${this.rubriqueId}|${this.rubriquageId}|${this.before}|${this.after}|${this.includeHidden}|${this.noRubriquageId}|${this.validity}|
|
|
129
129
|
${this.withVideo}`;
|
|
130
130
|
},
|
|
131
131
|
organisation(): Array<string> {
|
|
@@ -204,11 +204,11 @@ export default defineComponent({
|
|
|
204
204
|
rubriqueId: this.rubriqueId.length ? this.rubriqueId : undefined,
|
|
205
205
|
rubriquageId: this.rubriquageId.length ? this.rubriquageId : undefined,
|
|
206
206
|
includeHidden: this.includeHidden,
|
|
207
|
-
validity:
|
|
208
|
-
publisherId:
|
|
209
|
-
this.
|
|
207
|
+
validity: this.validity,
|
|
208
|
+
/* publisherId:
|
|
209
|
+
!this.onlyValid && !this.isRoleProduction
|
|
210
210
|
? this.authProfile?.userId
|
|
211
|
-
: undefined,
|
|
211
|
+
: undefined, */
|
|
212
212
|
includeStatus: ["READY", "PROCESSING"],
|
|
213
213
|
withVideo: this.withVideo,
|
|
214
214
|
};
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
class="d-flex align-items-center border p-1 m-1 text-dark"
|
|
13
13
|
:to="{
|
|
14
14
|
name: 'rubrique',
|
|
15
|
-
params: { rubriqueId: rubriqueId
|
|
15
|
+
params: { rubriqueId: rubriqueId},
|
|
16
|
+
query: organisationQuery
|
|
16
17
|
}"
|
|
17
18
|
>
|
|
18
19
|
{{ rubriquagesOrga[rubriqueId]?.name ?? rubriqueId}}
|
|
@@ -21,10 +22,11 @@
|
|
|
21
22
|
</template>
|
|
22
23
|
|
|
23
24
|
<script lang="ts">
|
|
24
|
-
import { mapActions } from "pinia";
|
|
25
|
+
import { mapActions, mapState } from "pinia";
|
|
25
26
|
import { useSaveFetchStore } from "../../../stores/SaveFetchStore";
|
|
26
27
|
import {defineComponent } from "vue";
|
|
27
|
-
import { Rubrique } from "
|
|
28
|
+
import { Rubrique } from "../../../stores/class/rubrique/rubrique";
|
|
29
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
28
30
|
export default defineComponent({
|
|
29
31
|
name: "TagList",
|
|
30
32
|
components: {
|
|
@@ -42,6 +44,15 @@ export default defineComponent({
|
|
|
42
44
|
created() {
|
|
43
45
|
this.fetchRubriquages();
|
|
44
46
|
},
|
|
47
|
+
computed:{
|
|
48
|
+
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
49
|
+
organisationQuery(){
|
|
50
|
+
if(this.filterOrgaId){
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return { o: this.orgaId};
|
|
54
|
+
}
|
|
55
|
+
},
|
|
45
56
|
methods:{
|
|
46
57
|
...mapActions(useSaveFetchStore, ["getOrgaRubriques"]),
|
|
47
58
|
async fetchRubriquages(){
|
|
@@ -4,8 +4,9 @@ import { paginateParamInit } from "./paginateParamInit";
|
|
|
4
4
|
import { rubriquesFilterParam } from "./rubriquesFilterParam";
|
|
5
5
|
import { defineComponent } from 'vue';
|
|
6
6
|
import { mapState } from "pinia";
|
|
7
|
-
import { RubriquageFilter } from "
|
|
7
|
+
import { RubriquageFilter } from "../../../stores/class/rubrique/rubriquageFilter";
|
|
8
8
|
import dayjs from "dayjs";
|
|
9
|
+
import { useAuthStore } from "../../../stores/AuthStore";
|
|
9
10
|
export const advancedParamInit = defineComponent({
|
|
10
11
|
mixins: [orgaComputed, paginateParamInit, rubriquesFilterParam],
|
|
11
12
|
props: {
|
|
@@ -19,6 +20,7 @@ export const advancedParamInit = defineComponent({
|
|
|
19
20
|
routeTo: { default: undefined, type: String },
|
|
20
21
|
routeOrga: { default: undefined, type: String },
|
|
21
22
|
routeRubriques: { default: "", type: String },
|
|
23
|
+
routeValidity: { default: "", type: String },
|
|
22
24
|
},
|
|
23
25
|
data() {
|
|
24
26
|
return {
|
|
@@ -30,7 +32,7 @@ export const advancedParamInit = defineComponent({
|
|
|
30
32
|
toDate: undefined as string | undefined,
|
|
31
33
|
includeHidden: false as boolean,
|
|
32
34
|
sort: "DATE" as string, // SCORE, DATE, POPULARITY, NAME, LAST_PODCAST_DESC
|
|
33
|
-
|
|
35
|
+
validity: 'true' as string,
|
|
34
36
|
iabId: undefined as number | undefined,
|
|
35
37
|
noRubriquageId: [] as Array<number>,
|
|
36
38
|
rubriquageId: [] as Array<number>,
|
|
@@ -40,6 +42,7 @@ export const advancedParamInit = defineComponent({
|
|
|
40
42
|
};
|
|
41
43
|
},
|
|
42
44
|
computed:{
|
|
45
|
+
...mapState(useAuthStore, ["isRoleContribution",]),
|
|
43
46
|
...mapState(useFilterStore, ["filterRubrique", "filterIab"]),
|
|
44
47
|
organisationRight(): boolean {
|
|
45
48
|
return this.isEditRights(this.organisationId);
|
|
@@ -91,6 +94,9 @@ export const advancedParamInit = defineComponent({
|
|
|
91
94
|
routeIncludeHidden(){
|
|
92
95
|
this.initIncludeHidden();
|
|
93
96
|
},
|
|
97
|
+
routeValidity(){
|
|
98
|
+
this.initValidity();
|
|
99
|
+
},
|
|
94
100
|
routeFrom(){
|
|
95
101
|
this.initFromDate();
|
|
96
102
|
},
|
|
@@ -118,6 +124,7 @@ export const advancedParamInit = defineComponent({
|
|
|
118
124
|
this.iabId = this.filterIab?.id ?? this.routeIab;
|
|
119
125
|
this.initRubriquageFilter();
|
|
120
126
|
this.initIncludeHidden();
|
|
127
|
+
this.initValidity();
|
|
121
128
|
this.initMonetisable();
|
|
122
129
|
this.initSort();
|
|
123
130
|
this.initFromDate();
|
|
@@ -163,6 +170,14 @@ export const advancedParamInit = defineComponent({
|
|
|
163
170
|
initIncludeHidden(){
|
|
164
171
|
this.includeHidden = undefined !== this.organisation && this.organisationRight && "false"!==this.routeIncludeHidden;
|
|
165
172
|
},
|
|
173
|
+
initValidity(){
|
|
174
|
+
const cantDisplay = this.isPodcastmaker || this.isEmission || !this.includeHidden || !this.isRoleContribution || !this.organisationRight;
|
|
175
|
+
if(cantDisplay){
|
|
176
|
+
this.validity = "true";
|
|
177
|
+
}else{
|
|
178
|
+
this.validity = this.routeValidity;
|
|
179
|
+
}
|
|
180
|
+
},
|
|
166
181
|
initRubriquageFilter(){
|
|
167
182
|
if(this.routeRubriques === this.stringifyRubriquesFilter(this.rubriqueFilter)){
|
|
168
183
|
return
|
|
@@ -1,16 +1,43 @@
|
|
|
1
|
+
import { useFilterStore } from '../../../stores/FilterStore';
|
|
2
|
+
import { routeParams } from "../../mixins/routeParam/routeParams";
|
|
3
|
+
import { mapState } from 'pinia';
|
|
1
4
|
import { defineComponent } from 'vue';
|
|
2
5
|
export const paginateParamInit = defineComponent({
|
|
6
|
+
mixins: [ routeParams],
|
|
3
7
|
props: {
|
|
4
8
|
pr: { default: 0, type: Number },
|
|
5
9
|
ps: { default: 30, type: Number },
|
|
10
|
+
routeOrga: { default: undefined, type: String },
|
|
11
|
+
routeQuery: { default: "", type: String },
|
|
12
|
+
},
|
|
13
|
+
data() {
|
|
14
|
+
return {
|
|
15
|
+
organisationId: undefined as string | undefined,
|
|
16
|
+
searchPattern: "" as string,
|
|
17
|
+
};
|
|
6
18
|
},
|
|
7
19
|
computed:{
|
|
20
|
+
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
8
21
|
paginateFirst(){
|
|
9
22
|
if(!this.pr){
|
|
10
23
|
return 0;
|
|
11
24
|
}
|
|
12
25
|
return Math.max((this.pr - 1 ) * this.ps, 0);
|
|
13
|
-
}
|
|
14
|
-
|
|
26
|
+
},
|
|
27
|
+
searchMinSize(): string{
|
|
28
|
+
return this.searchPattern.length>3 ? this.searchPattern : "";
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
watch: {
|
|
32
|
+
searchPattern(value: string): void {
|
|
33
|
+
this.updateRouteParam({
|
|
34
|
+
q: this.searchMinSize.length ? this.searchMinSize : undefined,
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
created() {
|
|
39
|
+
this.organisationId = this.filterOrgaId ?? this.routeOrga;
|
|
40
|
+
this.searchPattern = this.routeQuery ?? "";
|
|
41
|
+
},
|
|
15
42
|
});
|
|
16
43
|
|
|
@@ -2,7 +2,7 @@ import { defineComponent } from 'vue';
|
|
|
2
2
|
export const routeParams = defineComponent({
|
|
3
3
|
methods: {
|
|
4
4
|
checkPage(): boolean{
|
|
5
|
-
return ['podcasts', 'emissions', 'participants', 'playlists', 'productors'].includes(this.$route.name?.toString()??"");
|
|
5
|
+
return ['podcasts', 'emissions', 'participants', 'playlists', 'productors', 'rubrique'].includes(this.$route.name?.toString()??"");
|
|
6
6
|
},
|
|
7
7
|
checkPageAdvanced(): boolean{
|
|
8
8
|
return ['podcasts', 'emissions'].includes(this.$route.name?.toString()??"");
|
|
@@ -12,12 +12,12 @@ export const routeParams = defineComponent({
|
|
|
12
12
|
this.$router.push({query: {...this.$route.query, ...{ps:ps, pr:1}}});
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
|
-
|
|
15
|
+
updateRouteParam(update: {[key:string]: string|undefined}){
|
|
16
16
|
if(this.checkPage()){
|
|
17
|
-
this.$router.push({query: {...this.$route.query, ...
|
|
17
|
+
this.$router.push({query: {...this.$route.query, ...update}});
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
|
-
|
|
20
|
+
updateRouteParamAdvanced(update: {[key:string]: string|undefined}){
|
|
21
21
|
if(this.checkPageAdvanced()){
|
|
22
22
|
this.$router.push({query: {...this.$route.query, ...update}});
|
|
23
23
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
:show-count="true"
|
|
10
10
|
:first="paginateFirst"
|
|
11
11
|
:size="ps"
|
|
12
|
-
:query="
|
|
12
|
+
:query="searchMinSize"
|
|
13
13
|
:organisation-id="organisationId"
|
|
14
14
|
/>
|
|
15
15
|
</section>
|
|
@@ -17,11 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
<script lang="ts">
|
|
19
19
|
import { paginateParamInit } from "../mixins/routeParam/paginateParamInit";
|
|
20
|
-
import { useFilterStore } from "../../stores/FilterStore";
|
|
21
20
|
import ParticipantList from "../display/participant/ParticipantList.vue";
|
|
22
21
|
import ProductorSearch from "../display/filter/ProductorSearch.vue";
|
|
23
22
|
import { defineComponent } from "vue";
|
|
24
|
-
import { mapState } from "pinia";
|
|
25
23
|
export default defineComponent({
|
|
26
24
|
components: {
|
|
27
25
|
ProductorSearch,
|
|
@@ -29,9 +27,10 @@ export default defineComponent({
|
|
|
29
27
|
},
|
|
30
28
|
mixins: [paginateParamInit],
|
|
31
29
|
props: {
|
|
32
|
-
productor: { default: undefined, type: String },
|
|
33
30
|
pr: { default: 0, type: Number },
|
|
34
31
|
ps: { default: 30, type: Number },
|
|
32
|
+
routeOrga: { default: undefined, type: String },
|
|
33
|
+
routeQuery: { default: "", type: String },
|
|
35
34
|
},
|
|
36
35
|
data() {
|
|
37
36
|
return {
|
|
@@ -39,11 +38,5 @@ export default defineComponent({
|
|
|
39
38
|
organisationId: undefined as string | undefined,
|
|
40
39
|
};
|
|
41
40
|
},
|
|
42
|
-
computed: {
|
|
43
|
-
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
44
|
-
},
|
|
45
|
-
created() {
|
|
46
|
-
this.organisationId = this.productor ? this.productor : this.filterOrgaId;
|
|
47
|
-
},
|
|
48
41
|
});
|
|
49
42
|
</script>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
:show-count="true"
|
|
19
19
|
:first="paginateFirst"
|
|
20
20
|
:size="ps"
|
|
21
|
-
:query="
|
|
21
|
+
:query="searchMinSize"
|
|
22
22
|
:organisation-id="organisationId"
|
|
23
23
|
/>
|
|
24
24
|
</section>
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
import { paginateParamInit } from "../mixins/routeParam/paginateParamInit";
|
|
29
29
|
import PlaylistList from "../display/playlist/PlaylistList.vue";
|
|
30
30
|
import { useAuthStore } from "../../stores/AuthStore";
|
|
31
|
-
import { useFilterStore } from "../../stores/FilterStore";
|
|
32
31
|
import { state } from "../../stores/ParamSdkStore";
|
|
33
32
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
34
33
|
import { mapState } from "pinia";
|
|
@@ -42,9 +41,10 @@ export default defineComponent({
|
|
|
42
41
|
},
|
|
43
42
|
mixins: [paginateParamInit],
|
|
44
43
|
props: {
|
|
45
|
-
productor: { default: undefined, type: String },
|
|
46
44
|
pr: { default: 0, type: Number },
|
|
47
45
|
ps: { default: 30, type: Number },
|
|
46
|
+
routeOrga: { default: undefined, type: String },
|
|
47
|
+
routeQuery: { default: "", type: String },
|
|
48
48
|
},
|
|
49
49
|
|
|
50
50
|
data() {
|
|
@@ -55,15 +55,10 @@ export default defineComponent({
|
|
|
55
55
|
},
|
|
56
56
|
|
|
57
57
|
computed: {
|
|
58
|
-
...mapState(useFilterStore, ["filterOrgaId"]),
|
|
59
58
|
...mapState(useAuthStore, ["isRolePlaylists"]),
|
|
60
59
|
isPodcastmaker(): boolean {
|
|
61
60
|
return state.generalParameters.podcastmaker as boolean;
|
|
62
61
|
},
|
|
63
62
|
},
|
|
64
|
-
|
|
65
|
-
created() {
|
|
66
|
-
this.organisationId = this.productor ? this.productor : this.filterOrgaId;
|
|
67
|
-
},
|
|
68
63
|
});
|
|
69
64
|
</script>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
v-model:include-hidden="includeHidden"
|
|
13
13
|
v-model:from-date="fromDate"
|
|
14
14
|
v-model:to-date="toDate"
|
|
15
|
-
v-model:
|
|
15
|
+
v-model:validity="validity"
|
|
16
16
|
v-model:rubrique-filter="rubriqueFilter"
|
|
17
17
|
:search-pattern="searchPattern"
|
|
18
18
|
:is-emission="false"
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
:after="fromDate"
|
|
30
30
|
:sort-criteria="sort"
|
|
31
31
|
:include-hidden="includeHidden"
|
|
32
|
-
:not-valid="notValid"
|
|
33
32
|
:iab-id="iabId"
|
|
34
33
|
:rubrique-id="rubriquesFilterArrayIds.rubriqueId"
|
|
35
34
|
:rubriquage-id="rubriquesFilterArrayIds.rubriquageId"
|
|
36
35
|
:no-rubriquage-id="rubriquesFilterArrayIds.noRubriquageId"
|
|
37
36
|
:with-video="withVideo"
|
|
37
|
+
:validity="validity"
|
|
38
38
|
/>
|
|
39
39
|
</section>
|
|
40
40
|
</template>
|
|
@@ -63,14 +63,13 @@ export default defineComponent({
|
|
|
63
63
|
routeIncludeHidden: { default: "", type: String },
|
|
64
64
|
routeFrom: { default: undefined, type: String },
|
|
65
65
|
routeTo: { default: undefined, type: String },
|
|
66
|
-
|
|
66
|
+
routeValidity: { default: "", type: String },
|
|
67
67
|
routeOnlyVideo: { default: "", type: String },
|
|
68
68
|
routeOrga: { default: undefined, type: String },
|
|
69
69
|
routeRubriques: { default: "", type: String },
|
|
70
70
|
},
|
|
71
71
|
data() {
|
|
72
72
|
return {
|
|
73
|
-
notValid: false as boolean,
|
|
74
73
|
onlyVideo: false as boolean,
|
|
75
74
|
};
|
|
76
75
|
},
|
|
@@ -83,15 +82,6 @@ export default defineComponent({
|
|
|
83
82
|
},
|
|
84
83
|
},
|
|
85
84
|
watch: {
|
|
86
|
-
routeNotValid: {
|
|
87
|
-
immediate: true,
|
|
88
|
-
handler() {
|
|
89
|
-
this.notValid =
|
|
90
|
-
undefined !== this.organisation &&
|
|
91
|
-
this.organisationRight &&
|
|
92
|
-
"true" === this.routeNotValid;
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
85
|
routeOnlyVideo: {
|
|
96
86
|
immediate: true,
|
|
97
87
|
handler() {
|
|
@@ -1,38 +1,65 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="page-box">
|
|
3
3
|
<h1>{{ title }}</h1>
|
|
4
|
+
<ProductorSearch
|
|
5
|
+
v-model:organisation-id="organisationId"
|
|
6
|
+
v-model:search-pattern="searchPattern"
|
|
7
|
+
/>
|
|
4
8
|
<PodcastList
|
|
5
|
-
:first="
|
|
6
|
-
:size="
|
|
7
|
-
:rubrique-id="rubriqueId"
|
|
9
|
+
:first="paginateFirst"
|
|
10
|
+
:size="ps"
|
|
11
|
+
:rubrique-id="[rubriqueId]"
|
|
12
|
+
:organisation-id="orgaArray"
|
|
13
|
+
:query="searchMinSize"
|
|
14
|
+
:sort-criteria="sortOrder ?? 'DATE'"
|
|
8
15
|
/>
|
|
9
16
|
</section>
|
|
10
17
|
</template>
|
|
11
18
|
|
|
12
19
|
<script lang="ts">
|
|
20
|
+
import { paginateParamInit } from "../mixins/routeParam/paginateParamInit";
|
|
21
|
+
import { seoTitleUrl } from "../mixins/seoTitleUrl";
|
|
13
22
|
import classicApi from "../../api/classicApi";
|
|
14
23
|
import PodcastList from "../display/podcasts/PodcastList.vue";
|
|
15
|
-
import { defineComponent } from "vue";
|
|
24
|
+
import { defineAsyncComponent, defineComponent } from "vue";
|
|
16
25
|
import { Rubrique } from "@/stores/class/rubrique/rubrique";
|
|
17
26
|
import { useGeneralStore } from "../../stores/GeneralStore";
|
|
18
27
|
import { mapState } from "pinia";
|
|
28
|
+
const ProductorSearch = defineAsyncComponent(
|
|
29
|
+
() => import("../display/filter/ProductorSearch.vue"),
|
|
30
|
+
);
|
|
19
31
|
export default defineComponent({
|
|
20
32
|
name: "RubriquePage",
|
|
21
33
|
components: {
|
|
22
34
|
PodcastList,
|
|
35
|
+
ProductorSearch
|
|
23
36
|
},
|
|
37
|
+
mixins: [paginateParamInit, seoTitleUrl],
|
|
24
38
|
props: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
rubriqueId: { default: undefined, type:
|
|
39
|
+
pr: { default: 0, type: Number },
|
|
40
|
+
ps: { default: 30, type: Number },
|
|
41
|
+
rubriqueId: { default: undefined, type: Number },
|
|
42
|
+
routeOrga: { default: undefined, type: String },
|
|
43
|
+
routeQuery: { default: "", type: String },
|
|
28
44
|
},
|
|
29
45
|
data() {
|
|
30
46
|
return {
|
|
31
47
|
title: "" as string,
|
|
48
|
+
organisationId: undefined as string | undefined,
|
|
49
|
+
searchPattern: "" as string,
|
|
32
50
|
};
|
|
33
51
|
},
|
|
34
52
|
computed:{
|
|
35
53
|
...mapState(useGeneralStore, ["metaTitle"]),
|
|
54
|
+
orgaArray(): Array<string> {
|
|
55
|
+
return this.organisationId ? [this.organisationId] : [];
|
|
56
|
+
},
|
|
57
|
+
sortOrder(){
|
|
58
|
+
if(this.searchMinSize.length){
|
|
59
|
+
return "SCORE";
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
36
63
|
},
|
|
37
64
|
watch: {
|
|
38
65
|
rubriqueId: {
|
|
@@ -42,8 +69,8 @@ export default defineComponent({
|
|
|
42
69
|
api: 0,
|
|
43
70
|
path: "rubrique/" + this.rubriqueId,
|
|
44
71
|
});
|
|
72
|
+
this.updatePathParams(data.name);
|
|
45
73
|
this.title = data.name;
|
|
46
|
-
document.title = this.title + ' - ' + this.metaTitle;
|
|
47
74
|
},
|
|
48
75
|
},
|
|
49
76
|
},
|
package/src/locale/de.ts
CHANGED
|
@@ -264,10 +264,10 @@ export default {
|
|
|
264
264
|
"Recaptcha not active": "Google CAPTCHA ist deaktiviert",
|
|
265
265
|
"Comment waiting":
|
|
266
266
|
"Der Kommentar ist für andere Besucher erst sichtbar, nachdem er validiert wurde.",
|
|
267
|
-
"
|
|
268
|
-
|
|
269
|
-
"Display
|
|
270
|
-
|
|
267
|
+
"Episodes to validate":"Episoden zur Validierung",
|
|
268
|
+
"Display only episodes to validate": "Nur Episoden zur Validierung anzeigen",
|
|
269
|
+
"Display episodes to validate": "Zeigen Sie Episoden zur Validierung an",
|
|
270
|
+
"Do not display episodes to validate": "Episoden zur Validierung nicht anzeigen",
|
|
271
271
|
"Podcast not validated": "Nicht validierter Podcast",
|
|
272
272
|
"Podcast to validate": "Podcast noch nicht validiert",
|
|
273
273
|
"Change locale": "Ändere die Sprache",
|
package/src/locale/en.ts
CHANGED
|
@@ -259,8 +259,10 @@ export default {
|
|
|
259
259
|
"Recaptcha not active": "The captcha google is deactivated",
|
|
260
260
|
"Comment waiting":
|
|
261
261
|
"The comment will not be visible to other users until it has been validated",
|
|
262
|
-
"
|
|
263
|
-
"Display
|
|
262
|
+
"Episodes to validate":"Episodes to validate",
|
|
263
|
+
"Display only episodes to validate": "Display only episodes to validate",
|
|
264
|
+
"Display episodes to validate": "Display episodes to validate",
|
|
265
|
+
"Do not display episodes to validate": "Do not display episodes to validate",
|
|
264
266
|
"Podcast not validated": "Podcast not validated",
|
|
265
267
|
"Podcast to validate": "Podcast to validate",
|
|
266
268
|
"Change locale": "Change the language",
|
package/src/locale/es.ts
CHANGED
|
@@ -264,10 +264,10 @@ export default {
|
|
|
264
264
|
"Recaptcha not active": "El Captcha de Google está desactivado",
|
|
265
265
|
"Comment waiting":
|
|
266
266
|
"Los demás usuarios podrán ver el comentario tras su validación",
|
|
267
|
-
"
|
|
268
|
-
|
|
269
|
-
"Display
|
|
270
|
-
|
|
267
|
+
"Episodes to validate":"Episodios para validar",
|
|
268
|
+
"Display only episodes to validate": "Mostrar solo episodios para validar",
|
|
269
|
+
"Display episodes to validate": "Mostrar episodios para validar",
|
|
270
|
+
"Do not display episodes to validate": "No mostrar episodios para validar",
|
|
271
271
|
"Podcast not validated": "Pódcast no validado",
|
|
272
272
|
"Podcast to validate": "Pódcast pendiente de validación",
|
|
273
273
|
"Change locale": "Cambiar el idioma",
|
package/src/locale/fr.ts
CHANGED
|
@@ -266,8 +266,10 @@ export default {
|
|
|
266
266
|
"Recaptcha not active": "Attention le captcha google est désactivé",
|
|
267
267
|
"Comment waiting":
|
|
268
268
|
"Le commentaire ne sera pas visible par les autres utilisateurs tant qu'il n'aura pas été validé.",
|
|
269
|
-
"
|
|
270
|
-
"Display
|
|
269
|
+
"Episodes to validate":"Épisodes à valider",
|
|
270
|
+
"Display only episodes to validate": "Afficher uniquement les épisodes à valider",
|
|
271
|
+
"Display episodes to validate": "Afficher les épisodes à valider",
|
|
272
|
+
"Do not display episodes to validate": "Ne pas afficher les épisodes à valider",
|
|
271
273
|
"Podcast not validated": "L'épisode n'est pas validé",
|
|
272
274
|
"Podcast to validate": "Épisode à valider",
|
|
273
275
|
"Change locale": "Changer la langue",
|
package/src/locale/it.ts
CHANGED
|
@@ -261,8 +261,10 @@ export default{
|
|
|
261
261
|
'Recaptcha not active': 'Google captcha disattivato',
|
|
262
262
|
'Comment waiting':
|
|
263
263
|
"Questo commento non sarà visibile ad altri utenti fino a quando non sarà validato",
|
|
264
|
-
|
|
265
|
-
|
|
264
|
+
"Episodes to validate":"Episodi da convalidare",
|
|
265
|
+
"Display only episodes to validate": "Mostra solo gli episodi da convalidare",
|
|
266
|
+
"Display episodes to validate": "Mostra episodi da convalidare",
|
|
267
|
+
"Do not display episodes to validate": "Non visualizzare gli episodi per convalidarli",
|
|
266
268
|
'Podcast not validated': "Podcast non validato",
|
|
267
269
|
'Podcast to validate': 'Podcast da validare',
|
|
268
270
|
'Change locale': 'Cambia la lingua',
|
package/src/locale/sl.ts
CHANGED
|
@@ -256,9 +256,10 @@ export default {
|
|
|
256
256
|
"Recaptcha error": "Google Recaptcha meni, da niste človek",
|
|
257
257
|
"Recaptcha not active": "Captcha google je deaktiviran",
|
|
258
258
|
"Comment waiting": "Komentar je do potrditve skrit za druge uporabnike",
|
|
259
|
-
"
|
|
260
|
-
|
|
261
|
-
"Display
|
|
259
|
+
"Episodes to validate":"Epizode za potrditev",
|
|
260
|
+
"Display only episodes to validate": "Pokaži samo epizode za potrditev",
|
|
261
|
+
"Display episodes to validate": "Prikaži epizode za potrditev",
|
|
262
|
+
"Do not display episodes to validate": "Ne prikazuj epizod za preverjanje",
|
|
262
263
|
"Podcast not validated": "Podkasti niso potrjeni",
|
|
263
264
|
"Podcast to validate": "Podkasti, ki jih je treba potrditi",
|
|
264
265
|
"Change locale": "Spremenite jezik",
|
package/src/router/router.ts
CHANGED
|
@@ -91,7 +91,7 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
91
91
|
routeIncludeHidden: route.query.h ?? "",
|
|
92
92
|
routeFrom: route.query.from,
|
|
93
93
|
routeTo: route.query.to,
|
|
94
|
-
|
|
94
|
+
routeValidity:route.query.vl ?? "",
|
|
95
95
|
routeOnlyVideo:route.query.v ?? "",
|
|
96
96
|
routeOrga:route.query.o,
|
|
97
97
|
routeRubriques :route.query.r,
|
|
@@ -128,6 +128,8 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
128
128
|
props: (route: RouteLocationNormalized) => ({
|
|
129
129
|
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
130
130
|
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
131
|
+
routeOrga:route.query.o,
|
|
132
|
+
routeQuery: route.query.q ?? "",
|
|
131
133
|
}),
|
|
132
134
|
meta:{
|
|
133
135
|
title: "Speakers",
|
|
@@ -190,18 +192,15 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
190
192
|
}
|
|
191
193
|
},
|
|
192
194
|
{
|
|
193
|
-
path: "/main/pub/rubrique/:rubriqueId
|
|
195
|
+
path: "/main/pub/rubrique/:rubriqueId(\\d+):title([^?]*)?:productor?",
|
|
194
196
|
name: "rubrique",
|
|
195
197
|
component: RubriquePage,
|
|
196
198
|
props: (route: RouteLocationNormalized) => ({
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
: 0,
|
|
200
|
-
sizeRoute: route.query.size
|
|
201
|
-
? parseInt(route.query.size.toString(), 10)
|
|
202
|
-
: 12,
|
|
199
|
+
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
200
|
+
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
203
201
|
rubriqueId: parseInt(route.params.rubriqueId.toString(), 10),
|
|
204
|
-
|
|
202
|
+
routeOrga:route.query.o,
|
|
203
|
+
routeQuery: route.query.q ?? "",
|
|
205
204
|
}),
|
|
206
205
|
meta:{
|
|
207
206
|
title: "",
|
|
@@ -236,6 +235,8 @@ const routes: Array<RouteRecordRaw> = [
|
|
|
236
235
|
props: (route: RouteLocationNormalized) => ({
|
|
237
236
|
pr: route.query.pr ? parseInt(route.query.pr.toString(), 10) : undefined,
|
|
238
237
|
ps: route.query.ps ? parseInt(route.query.ps.toString(), 10) : undefined,
|
|
238
|
+
routeOrga:route.query.o,
|
|
239
|
+
routeQuery: route.query.q ?? "",
|
|
239
240
|
}),
|
|
240
241
|
meta:{
|
|
241
242
|
title: "Playlists"
|
|
@@ -34,22 +34,3 @@
|
|
|
34
34
|
--octopus-line-clamp:2;
|
|
35
35
|
--octopus-max-height-description: 7rem;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
:root.dark-theme{
|
|
39
|
-
// Colors
|
|
40
|
-
--octopus-background: oklch(100% 0 0deg);
|
|
41
|
-
--octopus-primary: oklch(55% 0.118 159.16deg);
|
|
42
|
-
--octopus-secondary: oklch(90% 0 0deg);
|
|
43
|
-
--octopus-tertiary: oklch(45.74% 0.0822 222.06deg);
|
|
44
|
-
--octopus-danger: oklab(50% 0.18 0.105);
|
|
45
|
-
--octopus-warning:oklch(55% 0.1647 42.35deg);
|
|
46
|
-
--octopus-gray-text: oklch(44.75% 0.0121 229.13deg);
|
|
47
|
-
--octopus-color-text: oklch(30% 0 0deg);
|
|
48
|
-
--octopus-color-on-primary: oklch(100% 0 0deg);
|
|
49
|
-
--octopus-border-default: oklch(91% 0.007 248deg);
|
|
50
|
-
--octopus-shadow: oklch(0% 0 0deg / 40%);
|
|
51
|
-
--octopus-player-color:oklch(27% 0 0deg);
|
|
52
|
-
--octopus-gray: oklch(50% 0 0deg);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|