@saooti/octopus-sdk 32.0.15 → 32.0.18
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/README.md +4 -1
- package/index.ts +14 -15
- package/package.json +1 -1
- package/src/components/display/filter/AdvancedSearch.vue +25 -119
- package/src/components/display/filter/{CategoryFilter.vue → CategorySearchFilter.vue} +0 -0
- package/src/components/display/filter/DateFilter.vue +143 -0
- package/src/components/display/filter/RubriqueChoice.vue +13 -2
- package/src/components/display/filter/RubriqueFilter.vue +16 -5
- package/src/components/display/filter/SearchOrder.vue +41 -0
- package/src/components/display/playlist/PlaylistItem.vue +1 -1
- package/src/components/misc/Footer.vue +6 -2
- package/src/store/class/general/playlist.ts +21 -1
- package/src/store/paramStore.ts +1 -1
package/README.md
CHANGED
|
@@ -658,4 +658,7 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
|
|
|
658
658
|
* 32.0.12 Merge 31
|
|
659
659
|
* 32.0.13 Test Vite au lieu de Webpack
|
|
660
660
|
* 32.0.14 Mise en place Vite au lieu de Webpack
|
|
661
|
-
* 32.0.15 Pb lié refactor
|
|
661
|
+
* 32.0.15 Pb lié refactor
|
|
662
|
+
* 32.0.16 Pb lié refactor
|
|
663
|
+
* 32.0.17 AdvancedSearch components
|
|
664
|
+
* 32.0.18 AdvancedSearch components
|
package/index.ts
CHANGED
|
@@ -27,31 +27,25 @@ import Popover from "./src/components/misc/Popover.vue";
|
|
|
27
27
|
import CategoryChooser from "./src/components/display/categories/CategoryChooser.vue";
|
|
28
28
|
import CategoryList from "./src/components/display/categories/CategoryList.vue";
|
|
29
29
|
import CategoryFilter from "./src/components/display/categories/CategoryFilter.vue";
|
|
30
|
-
/*import EditBox from "./src/components/display/edit/EditBox.vue"; */
|
|
31
30
|
import EmissionChooser from "./src/components/display/emission/EmissionChooser.vue";
|
|
32
|
-
/* import EmissionItem from "./src/components/display/emission/EmissionItem.vue"; */
|
|
33
31
|
import EmissionList from "./src/components/display/emission/EmissionList.vue";
|
|
34
|
-
/*import MonetizableFilter from "./src/components/display/filter/MonetizableFilter.vue";
|
|
35
|
-
import ProductorSearch from "./src/components/display/filter/ProductorSearch.vue";*/
|
|
36
|
-
import AdvancedSearch from "./src/components/display/filter/AdvancedSearch.vue";
|
|
37
32
|
import OrganisationChooser from "./src/components/display/organisation/OrganisationChooser.vue";
|
|
38
|
-
/*import ParticipantItem from "./src/components/display/participant/ParticipantItem.vue";
|
|
39
|
-
import ParticipantList from "./src/components/display/participant/ParticipantList.vue";
|
|
40
|
-
import AnimatorsItem from "./src/components/display/podcasts/AnimatorsItem.vue";*/
|
|
41
33
|
import PodcastFilterList from "./src/components/display/podcasts/PodcastFilterList.vue";
|
|
42
|
-
/*import PodcastImage from "./src/components/display/podcasts/PodcastImage.vue";*/
|
|
43
34
|
import PodcastInlineList from "./src/components/display/podcasts/PodcastInlineList.vue";
|
|
44
|
-
/*import PodcastItem from "./src/components/display/podcasts/PodcastItem.vue";*/
|
|
45
35
|
import PodcastList from "./src/components/display/podcasts/PodcastList.vue";
|
|
46
36
|
import ShareButtons from "./src/components/display/sharing/ShareButtons.vue";
|
|
47
|
-
/*import ShareDistribution from "./src/components/display/sharing/ShareDistribution.vue";
|
|
48
|
-
import SharePlayer from "./src/components/display/sharing/SharePlayer.vue"; */
|
|
49
37
|
import EmissionInlineList from "./src/components/display/emission/EmissionInlineList.vue";
|
|
50
38
|
import RubriqueChooser from "./src/components/display/rubriques/RubriqueChooser.vue";
|
|
51
39
|
import CommentList from "./src/components/display/comments/CommentList.vue";
|
|
52
40
|
import CommentInput from "./src/components/display/comments/CommentInput.vue";
|
|
53
41
|
import PodcastPlaylistInlineList from "./src/components/display/playlist/PodcastPlaylistInlineList.vue";
|
|
54
42
|
|
|
43
|
+
//AdvancedSearch
|
|
44
|
+
import AdvancedSearch from "./src/components/display/filter/AdvancedSearch.vue";
|
|
45
|
+
import RubriqueFilter from "./src/components/display/filter/RubriqueFilter.vue";
|
|
46
|
+
import DateFilter from "./src/components/display/filter/DateFilter.vue";
|
|
47
|
+
import SearchOrder from "./src/components/display/filter/SearchOrder.vue";
|
|
48
|
+
|
|
55
49
|
//form
|
|
56
50
|
import ClassicSearch from "./src/components/form/ClassicSearch.vue";
|
|
57
51
|
import ClassicCheckbox from "./src/components/form/ClassicCheckbox.vue";
|
|
@@ -122,9 +116,11 @@ const components = {
|
|
|
122
116
|
ClassicSelect,
|
|
123
117
|
Error403Page,
|
|
124
118
|
Paginate,
|
|
125
|
-
ListPaginate
|
|
119
|
+
ListPaginate,
|
|
120
|
+
RubriqueFilter,
|
|
121
|
+
DateFilter,
|
|
122
|
+
SearchOrder
|
|
126
123
|
}
|
|
127
|
-
|
|
128
124
|
export default components;
|
|
129
125
|
|
|
130
126
|
export {
|
|
@@ -180,5 +176,8 @@ export {
|
|
|
180
176
|
ClassicSelect,
|
|
181
177
|
Error403Page,
|
|
182
178
|
Paginate,
|
|
183
|
-
ListPaginate
|
|
179
|
+
ListPaginate,
|
|
180
|
+
RubriqueFilter,
|
|
181
|
+
DateFilter,
|
|
182
|
+
SearchOrder
|
|
184
183
|
};
|
package/package.json
CHANGED
|
@@ -23,68 +23,17 @@
|
|
|
23
23
|
:is-emission="isEmission"
|
|
24
24
|
@updateMonetization="updateMonetization"
|
|
25
25
|
/>
|
|
26
|
-
<
|
|
26
|
+
<CategorySearchFilter @updateCategory="updateCategory" />
|
|
27
27
|
<RubriqueFilter
|
|
28
28
|
:reset-rubriquage="resetRubriquage"
|
|
29
29
|
:organisation-id="organisationId"
|
|
30
30
|
@updateRubriquageFilter="updateRubriquageFilter"
|
|
31
31
|
/>
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
{{ $t('Emission with episode published :') }}
|
|
38
|
-
</div>
|
|
39
|
-
<div class="d-flex align-items-center">
|
|
40
|
-
<ClassicCheckbox
|
|
41
|
-
v-model:textInit="isFrom"
|
|
42
|
-
class="flex-shrink-0"
|
|
43
|
-
id-checkbox="search-from-checkbox"
|
|
44
|
-
:label="$t('From the :')"
|
|
45
|
-
/>
|
|
46
|
-
<DatePicker
|
|
47
|
-
v-model="fromDate"
|
|
48
|
-
class="ps-3 pe-3"
|
|
49
|
-
mode="dateTime"
|
|
50
|
-
color="green"
|
|
51
|
-
is24hr
|
|
52
|
-
@update:modelValue="updateFromDate()"
|
|
53
|
-
>
|
|
54
|
-
<template #default="{ inputValue, inputEvents }">
|
|
55
|
-
<input
|
|
56
|
-
class="px-2 py-1 border rounded focus:border-blue-300"
|
|
57
|
-
:value="inputValue"
|
|
58
|
-
v-on="inputEvents"
|
|
59
|
-
>
|
|
60
|
-
</template>
|
|
61
|
-
</DatePicker>
|
|
62
|
-
</div>
|
|
63
|
-
<div class="d-flex align-items-center">
|
|
64
|
-
<ClassicCheckbox
|
|
65
|
-
v-model:textInit="isTo"
|
|
66
|
-
class="flex-shrink-0"
|
|
67
|
-
id-checkbox="search-to-checkbox"
|
|
68
|
-
:label="$t('To the :')"
|
|
69
|
-
/>
|
|
70
|
-
<DatePicker
|
|
71
|
-
v-model="toDate"
|
|
72
|
-
class="ps-3"
|
|
73
|
-
mode="dateTime"
|
|
74
|
-
color="green"
|
|
75
|
-
is24hr
|
|
76
|
-
@update:modelValue="updateToDate()"
|
|
77
|
-
>
|
|
78
|
-
<template #default="{ inputValue, inputEvents }">
|
|
79
|
-
<input
|
|
80
|
-
class="px-2 py-1 border rounded focus:border-blue-300"
|
|
81
|
-
:value="inputValue"
|
|
82
|
-
v-on="inputEvents"
|
|
83
|
-
>
|
|
84
|
-
</template>
|
|
85
|
-
</DatePicker>
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
32
|
+
<DateFilter
|
|
33
|
+
:isEmission="isEmission"
|
|
34
|
+
@updateToDate="updateToDate"
|
|
35
|
+
@updateFromDate="updateFromDate"
|
|
36
|
+
/>
|
|
88
37
|
<div
|
|
89
38
|
v-if="organisation && organisationRight && !isPodcastmaker"
|
|
90
39
|
class="d-flex flex-column mt-3"
|
|
@@ -113,14 +62,11 @@
|
|
|
113
62
|
<div class="primary-darker mb-2">
|
|
114
63
|
{{ $t('Sort') }}
|
|
115
64
|
</div>
|
|
116
|
-
<
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
:
|
|
120
|
-
|
|
121
|
-
{title:$t('Sort name'), value:'NAME'}]:
|
|
122
|
-
[{title:$t('Sort last'), value:isEmission?'LAST_PODCAST_DESC':'DATE'},
|
|
123
|
-
{title:$t('Sort name'), value:'NAME'}]"
|
|
65
|
+
<SearchOrder
|
|
66
|
+
:isEmission="isEmission"
|
|
67
|
+
:isSearchBar="isSearchBar"
|
|
68
|
+
:sortCriteria="sortCriteria"
|
|
69
|
+
@updateSortCriteria="updateSortCriteria"
|
|
124
70
|
/>
|
|
125
71
|
</div>
|
|
126
72
|
</div>
|
|
@@ -130,23 +76,24 @@
|
|
|
130
76
|
<script lang="ts">
|
|
131
77
|
import { state } from '../../../store/paramStore';
|
|
132
78
|
import { orgaComputed } from '../../mixins/orgaComputed';
|
|
133
|
-
import
|
|
134
|
-
import
|
|
79
|
+
import CategorySearchFilter from './CategorySearchFilter.vue';
|
|
80
|
+
import DateFilter from './DateFilter.vue';
|
|
81
|
+
import SearchOrder from './SearchOrder.vue';
|
|
135
82
|
import RubriqueFilter from './RubriqueFilter.vue';
|
|
136
83
|
import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
|
|
137
84
|
import ClassicRadio from '../../form/ClassicRadio.vue';
|
|
138
85
|
import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
|
|
139
|
-
import { DatePicker } from 'v-calendar';
|
|
140
86
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
141
87
|
const MonetizableFilter = defineAsyncComponent(() => import('./MonetizableFilter.vue'));
|
|
142
88
|
export default defineComponent({
|
|
143
89
|
components: {
|
|
144
90
|
MonetizableFilter,
|
|
145
|
-
|
|
146
|
-
CategoryFilter,
|
|
91
|
+
CategorySearchFilter,
|
|
147
92
|
RubriqueFilter,
|
|
148
93
|
ClassicCheckbox,
|
|
149
|
-
ClassicRadio
|
|
94
|
+
ClassicRadio,
|
|
95
|
+
DateFilter,
|
|
96
|
+
SearchOrder
|
|
150
97
|
},
|
|
151
98
|
mixins: [orgaComputed],
|
|
152
99
|
props: {
|
|
@@ -169,14 +116,9 @@ export default defineComponent({
|
|
|
169
116
|
'updateRubriquageFilter'],
|
|
170
117
|
data() {
|
|
171
118
|
return {
|
|
172
|
-
isFrom: false as boolean,
|
|
173
|
-
isTo: false as boolean,
|
|
174
|
-
fromDate: moment().subtract(10, 'days').toISOString() as string,
|
|
175
|
-
toDate: moment().toISOString() as string,
|
|
176
119
|
isNotVisible: this.includeHidden as boolean,
|
|
177
120
|
isNotValidate: false as boolean,
|
|
178
121
|
showFilters: false as boolean,
|
|
179
|
-
sort: this.sortCriteria as string,
|
|
180
122
|
};
|
|
181
123
|
},
|
|
182
124
|
|
|
@@ -219,58 +161,19 @@ export default defineComponent({
|
|
|
219
161
|
organisation(): void {
|
|
220
162
|
this.isNotVisible = undefined!==this.organisation && this.organisationRight && !this.isEmission;
|
|
221
163
|
},
|
|
222
|
-
isFrom(): void {
|
|
223
|
-
this.$emit('updateFromDate', this.isFrom ? moment(this.fromDate).toISOString(true) : undefined);
|
|
224
|
-
},
|
|
225
|
-
isTo(): void {
|
|
226
|
-
this.$emit('updateToDate', this.isTo ? moment(this.toDate).toISOString(true) : undefined);
|
|
227
|
-
},
|
|
228
|
-
sort(): void {
|
|
229
|
-
this.$emit('updateSortCriteria', this.sort);
|
|
230
|
-
},
|
|
231
164
|
isNotVisible(): void{
|
|
232
165
|
this.$emit('includeHidden', this.isNotVisible);
|
|
233
166
|
},
|
|
234
167
|
isNotValidate(): void {
|
|
235
168
|
this.$emit('notValid', this.isNotValidate);
|
|
236
169
|
},
|
|
237
|
-
sortCriteria(): void {
|
|
238
|
-
this.sort = this.sortCriteria;
|
|
239
|
-
},
|
|
240
170
|
},
|
|
241
171
|
methods: {
|
|
242
|
-
updateFromDate(): void {
|
|
243
|
-
|
|
244
|
-
moment(this.fromDate)
|
|
245
|
-
.startOf('minute')
|
|
246
|
-
.toISOString() ===
|
|
247
|
-
moment()
|
|
248
|
-
.subtract(10, 'days')
|
|
249
|
-
.startOf('minute')
|
|
250
|
-
.toISOString()
|
|
251
|
-
)
|
|
252
|
-
return;
|
|
253
|
-
if (this.isFrom) {
|
|
254
|
-
this.$emit('updateFromDate', moment(this.fromDate).toISOString(true));
|
|
255
|
-
} else {
|
|
256
|
-
this.isFrom = true;
|
|
257
|
-
}
|
|
172
|
+
updateFromDate(value: string): void {
|
|
173
|
+
this.$emit('updateFromDate', value);
|
|
258
174
|
},
|
|
259
|
-
updateToDate(): void {
|
|
260
|
-
|
|
261
|
-
moment(this.toDate)
|
|
262
|
-
.startOf('minute')
|
|
263
|
-
.toISOString() ===
|
|
264
|
-
moment()
|
|
265
|
-
.startOf('minute')
|
|
266
|
-
.toISOString()
|
|
267
|
-
)
|
|
268
|
-
return;
|
|
269
|
-
if (this.isTo) {
|
|
270
|
-
this.$emit('updateToDate', moment(this.toDate).toISOString(true));
|
|
271
|
-
} else {
|
|
272
|
-
this.isTo = true;
|
|
273
|
-
}
|
|
175
|
+
updateToDate(value: string): void {
|
|
176
|
+
this.$emit('updateToDate', value);
|
|
274
177
|
},
|
|
275
178
|
updateMonetization(value: string): void {
|
|
276
179
|
this.$emit('updateMonetization', value);
|
|
@@ -281,6 +184,9 @@ export default defineComponent({
|
|
|
281
184
|
updateRubriquageFilter(value: Array<RubriquageFilter>){
|
|
282
185
|
this.$emit('updateRubriquageFilter', value);
|
|
283
186
|
},
|
|
187
|
+
updateSortCriteria(value: string){
|
|
188
|
+
this.$emit('updateSortCriteria', value);
|
|
189
|
+
}
|
|
284
190
|
},
|
|
285
191
|
})
|
|
286
192
|
</script>
|
|
File without changes
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="d-flex mt-3 align-items-center flex-wrap">
|
|
3
|
+
<div
|
|
4
|
+
v-if="isEmission"
|
|
5
|
+
class="me-2"
|
|
6
|
+
>
|
|
7
|
+
{{ $t('Emission with episode published :') }}
|
|
8
|
+
</div>
|
|
9
|
+
<div class="d-flex align-items-center">
|
|
10
|
+
<ClassicCheckbox
|
|
11
|
+
v-model:textInit="isFrom"
|
|
12
|
+
class="flex-shrink-0"
|
|
13
|
+
id-checkbox="search-from-checkbox"
|
|
14
|
+
:label="$t('From the :')"
|
|
15
|
+
/>
|
|
16
|
+
<DatePicker
|
|
17
|
+
v-model="fromDate"
|
|
18
|
+
class="ps-3 pe-3"
|
|
19
|
+
mode="dateTime"
|
|
20
|
+
color="green"
|
|
21
|
+
is24hr
|
|
22
|
+
@update:modelValue="updateFromDate()"
|
|
23
|
+
>
|
|
24
|
+
<template #default="{ inputValue, inputEvents }">
|
|
25
|
+
<input
|
|
26
|
+
class="px-2 py-1 border rounded focus:border-blue-300"
|
|
27
|
+
:value="inputValue"
|
|
28
|
+
v-on="inputEvents"
|
|
29
|
+
>
|
|
30
|
+
</template>
|
|
31
|
+
</DatePicker>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="d-flex align-items-center">
|
|
34
|
+
<ClassicCheckbox
|
|
35
|
+
v-model:textInit="isTo"
|
|
36
|
+
class="flex-shrink-0"
|
|
37
|
+
id-checkbox="search-to-checkbox"
|
|
38
|
+
:label="$t('To the :')"
|
|
39
|
+
/>
|
|
40
|
+
<DatePicker
|
|
41
|
+
v-model="toDate"
|
|
42
|
+
class="ps-3"
|
|
43
|
+
mode="dateTime"
|
|
44
|
+
color="green"
|
|
45
|
+
is24hr
|
|
46
|
+
@update:modelValue="updateToDate()"
|
|
47
|
+
>
|
|
48
|
+
<template #default="{ inputValue, inputEvents }">
|
|
49
|
+
<input
|
|
50
|
+
class="px-2 py-1 border rounded focus:border-blue-300"
|
|
51
|
+
:value="inputValue"
|
|
52
|
+
v-on="inputEvents"
|
|
53
|
+
>
|
|
54
|
+
</template>
|
|
55
|
+
</DatePicker>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
</template>
|
|
60
|
+
|
|
61
|
+
<script lang="ts">
|
|
62
|
+
import moment from 'moment';
|
|
63
|
+
import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
|
|
64
|
+
import { DatePicker } from 'v-calendar';
|
|
65
|
+
import { defineComponent } from 'vue';
|
|
66
|
+
export default defineComponent({
|
|
67
|
+
components: {
|
|
68
|
+
DatePicker,
|
|
69
|
+
ClassicCheckbox,
|
|
70
|
+
},
|
|
71
|
+
props: {
|
|
72
|
+
isEmission: { default: false, type: Boolean},
|
|
73
|
+
initToDate: { default: undefined, type: String},
|
|
74
|
+
initFromDate: { default: undefined, type: String},
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
emits: ['updateToDate', 'updateFromDate'],
|
|
78
|
+
|
|
79
|
+
data() {
|
|
80
|
+
return {
|
|
81
|
+
isFrom: false as boolean,
|
|
82
|
+
isTo: false as boolean,
|
|
83
|
+
fromDate: moment().subtract(10, 'days').toISOString() as string,
|
|
84
|
+
toDate: moment().toISOString() as string,
|
|
85
|
+
};
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
watch: {
|
|
89
|
+
isFrom(): void {
|
|
90
|
+
this.$emit('updateFromDate', this.isFrom ? moment(this.fromDate).toISOString(true) : undefined);
|
|
91
|
+
},
|
|
92
|
+
isTo(): void {
|
|
93
|
+
this.$emit('updateToDate', this.isTo ? moment(this.toDate).toISOString(true) : undefined);
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
created(){
|
|
98
|
+
if(this.initToDate){
|
|
99
|
+
this.toDate = this.initToDate;
|
|
100
|
+
this.isTo = true;
|
|
101
|
+
}
|
|
102
|
+
if(this.initFromDate){
|
|
103
|
+
this.fromDate = this.initFromDate;
|
|
104
|
+
this.isFrom = true;
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
methods: {
|
|
108
|
+
updateFromDate(): void {
|
|
109
|
+
if (
|
|
110
|
+
moment(this.fromDate)
|
|
111
|
+
.startOf('minute')
|
|
112
|
+
.toISOString() ===
|
|
113
|
+
moment()
|
|
114
|
+
.subtract(10, 'days')
|
|
115
|
+
.startOf('minute')
|
|
116
|
+
.toISOString()
|
|
117
|
+
)
|
|
118
|
+
return;
|
|
119
|
+
if (this.isFrom) {
|
|
120
|
+
this.$emit('updateFromDate', moment(this.fromDate).toISOString(true));
|
|
121
|
+
} else {
|
|
122
|
+
this.isFrom = true;
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
updateToDate(): void {
|
|
126
|
+
if (
|
|
127
|
+
moment(this.toDate)
|
|
128
|
+
.startOf('minute')
|
|
129
|
+
.toISOString() ===
|
|
130
|
+
moment()
|
|
131
|
+
.startOf('minute')
|
|
132
|
+
.toISOString()
|
|
133
|
+
)
|
|
134
|
+
return;
|
|
135
|
+
if (this.isTo) {
|
|
136
|
+
this.$emit('updateToDate', moment(this.toDate).toISOString(true));
|
|
137
|
+
} else {
|
|
138
|
+
this.isTo = true;
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
})
|
|
143
|
+
</script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
class="ms-2"
|
|
26
26
|
:multiple="false"
|
|
27
27
|
:rubriquage-id="rubriquageId"
|
|
28
|
-
:rubrique-selected="0
|
|
28
|
+
:rubrique-selected="0 !== rubriqueIdSelected? rubriqueIdSelected : undefined"
|
|
29
29
|
:all-rubriques="getRubriques(rubriquageId)"
|
|
30
30
|
:defaultanswer="$t('No rubric filter')"
|
|
31
31
|
:reset="reset"
|
|
@@ -67,12 +67,23 @@ export default defineComponent({
|
|
|
67
67
|
reset: false as boolean,
|
|
68
68
|
};
|
|
69
69
|
},
|
|
70
|
+
watch:{
|
|
71
|
+
rubriquageIdSelected(){
|
|
72
|
+
this.initRubriquage();
|
|
73
|
+
},
|
|
74
|
+
rubriqueIdSelected(){
|
|
75
|
+
this.initRubriquage();
|
|
76
|
+
}
|
|
77
|
+
},
|
|
70
78
|
|
|
71
79
|
created(){
|
|
72
|
-
this.
|
|
80
|
+
this.initRubriquage();
|
|
73
81
|
},
|
|
74
82
|
|
|
75
83
|
methods: {
|
|
84
|
+
initRubriquage(){
|
|
85
|
+
this.rubriquageId = this.rubriquageIdSelected;
|
|
86
|
+
},
|
|
76
87
|
deleteRubriquage(){
|
|
77
88
|
this.$emit('deleteRubriqueChoice');
|
|
78
89
|
},
|
|
@@ -51,6 +51,8 @@ export default defineComponent({
|
|
|
51
51
|
props: {
|
|
52
52
|
organisationId: { default: undefined, type: String},
|
|
53
53
|
resetRubriquage: { default: false, type: Boolean},
|
|
54
|
+
modifyFilter:{ default: true, type: Boolean},
|
|
55
|
+
initRubriqueFilter:{ default: undefined, type: Array as ()=> Array<RubriquageFilter>},
|
|
54
56
|
},
|
|
55
57
|
emits: ['updateRubriquageFilter'],
|
|
56
58
|
|
|
@@ -111,7 +113,9 @@ export default defineComponent({
|
|
|
111
113
|
}else{
|
|
112
114
|
this.$emit('updateRubriquageFilter', []);
|
|
113
115
|
}
|
|
114
|
-
this.
|
|
116
|
+
if(this.modifyFilter){
|
|
117
|
+
this.resetRubriqueFilter();
|
|
118
|
+
}
|
|
115
119
|
this.$nextTick(() => {
|
|
116
120
|
this.isInternChanged = false;
|
|
117
121
|
});
|
|
@@ -123,7 +127,9 @@ export default defineComponent({
|
|
|
123
127
|
return;
|
|
124
128
|
}
|
|
125
129
|
this.isInternChanged = true;
|
|
126
|
-
this.
|
|
130
|
+
if(this.modifyFilter){
|
|
131
|
+
this.resetRubriqueFilter();
|
|
132
|
+
}
|
|
127
133
|
if(this.isRubriquage){
|
|
128
134
|
this.$emit('updateRubriquageFilter', this.arrayFilter);
|
|
129
135
|
}
|
|
@@ -135,7 +141,7 @@ export default defineComponent({
|
|
|
135
141
|
rubriqueFilter:{
|
|
136
142
|
deep: true,
|
|
137
143
|
async handler(){
|
|
138
|
-
if(this.isInternChanged){
|
|
144
|
+
if(this.isInternChanged || !this.modifyFilter){
|
|
139
145
|
return;
|
|
140
146
|
}
|
|
141
147
|
this.isInternChanged = true;
|
|
@@ -161,7 +167,12 @@ export default defineComponent({
|
|
|
161
167
|
},
|
|
162
168
|
|
|
163
169
|
created() {
|
|
164
|
-
if(this.
|
|
170
|
+
if(!this.modifyFilter){
|
|
171
|
+
if(this.initRubriqueFilter){
|
|
172
|
+
this.arrayFilter = Array.from(this.initRubriqueFilter);
|
|
173
|
+
this.isRubriquage = true;
|
|
174
|
+
}
|
|
175
|
+
}else if(this.rubriqueFilter.length){
|
|
165
176
|
this.arrayFilter = Array.from(this.rubriqueFilter);
|
|
166
177
|
this.isRubriquage = true;
|
|
167
178
|
}
|
|
@@ -218,7 +229,7 @@ export default defineComponent({
|
|
|
218
229
|
}
|
|
219
230
|
},
|
|
220
231
|
resetRubriqueFilter(): void{
|
|
221
|
-
if(0===this.rubriqueFilter.length || this.isInit){
|
|
232
|
+
if(0===this.rubriqueFilter.length || this.isInit || !this.modifyFilter){
|
|
222
233
|
return;
|
|
223
234
|
}
|
|
224
235
|
const queries = this.$route.query;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ClassicRadio
|
|
3
|
+
v-model:textInit="sort"
|
|
4
|
+
id-radio="sort-radio"
|
|
5
|
+
:options="isSearchBar? [{title:$t('Sort score'), value:'SCORE'},
|
|
6
|
+
{title:$t('Sort last'), value:isEmission?'LAST_PODCAST_DESC':'DATE'},
|
|
7
|
+
{title:$t('Sort name'), value:'NAME'}]:
|
|
8
|
+
[{title:$t('Sort last'), value:isEmission?'LAST_PODCAST_DESC':'DATE'},
|
|
9
|
+
{title:$t('Sort name'), value:'NAME'}]"
|
|
10
|
+
/>
|
|
11
|
+
</template>
|
|
12
|
+
|
|
13
|
+
<script lang="ts">
|
|
14
|
+
import ClassicRadio from '../../form/ClassicRadio.vue';
|
|
15
|
+
import { defineComponent } from 'vue';
|
|
16
|
+
export default defineComponent({
|
|
17
|
+
components: {
|
|
18
|
+
ClassicRadio,
|
|
19
|
+
},
|
|
20
|
+
props: {
|
|
21
|
+
isEmission: { default: false, type: Boolean},
|
|
22
|
+
isSearchBar: { default: false, type: Boolean},
|
|
23
|
+
sortCriteria: { default: 'DATE', type: String},
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
emits: ['updateSortCriteria'],
|
|
27
|
+
data() {
|
|
28
|
+
return {
|
|
29
|
+
sort: this.sortCriteria as string,
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
watch: {
|
|
33
|
+
sort(): void {
|
|
34
|
+
this.$emit('updateSortCriteria', this.sort);
|
|
35
|
+
},
|
|
36
|
+
sortCriteria(): void {
|
|
37
|
+
this.sort = this.sortCriteria;
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
</script>
|
|
@@ -100,7 +100,7 @@ export default defineComponent({
|
|
|
100
100
|
true == state.generalParameters.isAdmin;
|
|
101
101
|
},
|
|
102
102
|
activePlaylist(): boolean {
|
|
103
|
-
return 0 !== Object.keys(this.playlist.
|
|
103
|
+
return 0 !== Object.keys(this.playlist.samplingViews).length;
|
|
104
104
|
},
|
|
105
105
|
},
|
|
106
106
|
mounted() {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
id="footer"
|
|
5
5
|
ref="footer"
|
|
6
6
|
class="d-flex-column p-3 secondary-bg border-top"
|
|
7
|
+
v-if="displayFooter"
|
|
7
8
|
>
|
|
8
9
|
<div class="d-flex flex-column flex-grow-1 align-items-end">
|
|
9
10
|
<div class="d-flex flex-column">
|
|
@@ -97,7 +98,6 @@ import Player from './player/Player.vue';
|
|
|
97
98
|
import { state } from '../../store/paramStore';
|
|
98
99
|
import {loadLocaleMessages} from '@/i18n';
|
|
99
100
|
import octopusApi from '@saooti/octopus-api';
|
|
100
|
-
import moment from 'moment';
|
|
101
101
|
import { Category } from '@/store/class/general/category';
|
|
102
102
|
import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
|
|
103
103
|
import { defineComponent } from 'vue'
|
|
@@ -107,6 +107,10 @@ export default defineComponent({
|
|
|
107
107
|
Player,
|
|
108
108
|
ClassicSelect
|
|
109
109
|
},
|
|
110
|
+
props: {
|
|
111
|
+
displayFooter: { default: true, type: Boolean},
|
|
112
|
+
},
|
|
113
|
+
|
|
110
114
|
mixins:[cookies],
|
|
111
115
|
data() {
|
|
112
116
|
return {
|
|
@@ -158,7 +162,7 @@ export default defineComponent({
|
|
|
158
162
|
},
|
|
159
163
|
showBlackBorder(hide: boolean): void {
|
|
160
164
|
const footerElement = (this.$refs.footer as HTMLElement);
|
|
161
|
-
if(
|
|
165
|
+
if(!footerElement){return;}
|
|
162
166
|
if (hide) {
|
|
163
167
|
footerElement.classList.remove('border-round');
|
|
164
168
|
} else {
|
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
import { Organisation } from '../general/organisation';
|
|
2
2
|
import { Person } from '../user/person';
|
|
3
|
+
import { FetchParam } from './fetchParam';
|
|
4
|
+
|
|
3
5
|
|
|
4
6
|
export interface Playlist {
|
|
5
7
|
imageUrl?: string;
|
|
6
8
|
description: string;
|
|
7
9
|
organisation?: Organisation;
|
|
8
10
|
playlistId: number;
|
|
9
|
-
podcasts
|
|
11
|
+
podcasts?: Array<number | undefined>;
|
|
10
12
|
score: number;
|
|
11
13
|
title: string;
|
|
14
|
+
type: string;
|
|
15
|
+
samplingViews?: Array<PlaylistRule>;
|
|
12
16
|
publisher?: Person;
|
|
13
17
|
}
|
|
18
|
+
|
|
19
|
+
export interface PlaylistRule {
|
|
20
|
+
maxSize: number,
|
|
21
|
+
podcastId?: number,
|
|
22
|
+
query?: FetchParam,
|
|
23
|
+
type?:string,
|
|
24
|
+
title?: string,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function emptyPlaylistRule(): PlaylistRule{
|
|
28
|
+
return {
|
|
29
|
+
maxSize: 1,
|
|
30
|
+
query: {},
|
|
31
|
+
title: undefined,
|
|
32
|
+
}
|
|
33
|
+
}
|