@saooti/octopus-sdk 30.0.7 → 30.0.11
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 +5 -1
- package/index.ts +13 -2
- package/package.json +1 -1
- package/src/assets/bootstrap-diff.scss +17 -25
- package/src/assets/form.scss +7 -37
- package/src/assets/general.scss +62 -171
- package/src/assets/live.scss +39 -0
- package/src/assets/modal.scss +14 -18
- package/src/assets/multiselect.scss +4 -85
- package/src/assets/octopus-library.scss +1 -0
- package/src/assets/share.scss +149 -267
- package/src/assets/transition.scss +95 -1
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryList.vue +2 -4
- package/src/components/display/comments/CommentInput.vue +2 -2
- package/src/components/display/comments/CommentItem.vue +6 -6
- package/src/components/display/comments/CommentParentInfo.vue +1 -1
- package/src/components/display/comments/CommentPlayer.vue +1 -1
- package/src/components/display/edit/EditCommentBox.vue +8 -16
- package/src/components/display/emission/EmissionChooser.vue +1 -3
- package/src/components/display/emission/EmissionInlineList.vue +12 -3
- package/src/components/display/emission/EmissionItem.vue +22 -64
- package/src/components/display/emission/EmissionList.vue +59 -68
- package/src/components/display/emission/EmissionPlayerItem.vue +10 -9
- package/src/components/display/filter/AdvancedSearch.vue +50 -146
- package/src/components/display/filter/CategoryFilter.vue +9 -13
- package/src/components/display/filter/MonetizableFilter.vue +2 -4
- package/src/components/display/filter/ProductorSearch.vue +20 -40
- package/src/components/display/filter/RubriqueChoice.vue +5 -7
- package/src/components/display/filter/RubriqueFilter.vue +8 -13
- package/src/components/display/live/CountDown.vue +4 -2
- package/src/components/display/live/LiveHorizontalList.vue +1 -1
- package/src/components/display/live/LiveItem.vue +4 -4
- package/src/components/display/live/LiveList.vue +84 -214
- package/src/components/display/organisation/OrganisationChooser.vue +5 -26
- package/src/components/display/organisation/OrganisationChooserLight.vue +7 -1
- package/src/components/display/participant/ParticipantItem.vue +7 -19
- package/src/components/display/participant/ParticipantList.vue +39 -52
- package/src/components/display/playlist/PlaylistItem.vue +2 -2
- package/src/components/display/playlist/PlaylistList.vue +8 -14
- package/src/components/display/playlist/PodcastList.vue +21 -40
- package/src/components/display/podcasts/AnimatorsItem.vue +0 -1
- package/src/components/display/podcasts/ParticipantDescription.vue +4 -16
- package/src/components/display/podcasts/PodcastFilterList.vue +20 -63
- package/src/components/display/podcasts/PodcastImage.vue +27 -84
- package/src/components/display/podcasts/PodcastInlineList.vue +14 -36
- package/src/components/display/podcasts/PodcastItem.vue +5 -5
- package/src/components/display/podcasts/PodcastList.vue +7 -14
- package/src/components/display/podcasts/PodcastModuleBox.vue +9 -28
- package/src/components/display/podcasts/TagList.vue +2 -3
- package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
- package/src/components/display/rubriques/RubriqueList.vue +5 -25
- package/src/components/display/sharing/PlayerParameters.vue +30 -71
- package/src/components/display/sharing/ShareButtons.vue +21 -45
- package/src/components/display/sharing/ShareDistribution.vue +1 -7
- package/src/components/display/sharing/SharePlayer.vue +10 -19
- package/src/components/display/sharing/SharePlayerColors.vue +4 -8
- package/src/components/display/sharing/SharePlayerTypes.vue +1 -2
- package/src/components/display/sharing/SubscribeButtons.vue +2 -4
- package/src/components/form/ClassicCheckbox.vue +61 -0
- package/src/components/form/ClassicLoading.vue +28 -0
- package/src/components/form/ClassicRadio.vue +61 -0
- package/src/components/form/ClassicSearch.vue +82 -0
- package/src/components/misc/ErrorMessage.vue +4 -1
- package/src/components/misc/Footer.vue +26 -35
- package/src/components/misc/HomeDropdown.vue +42 -91
- package/src/components/misc/LeftMenu.vue +107 -141
- package/src/components/misc/Player.vue +15 -29
- package/src/components/misc/PlayerButtons.vue +14 -37
- package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
- package/src/components/misc/PlayerProgressBar.vue +15 -50
- package/src/components/misc/TopBar.vue +139 -222
- package/src/components/misc/modal/NewsletterModal.vue +13 -27
- package/src/components/pages/Category.vue +3 -8
- package/src/components/pages/Emission.vue +12 -24
- package/src/components/pages/Emissions.vue +8 -17
- package/src/components/pages/Home.vue +1 -3
- package/src/components/pages/Lives.vue +1 -4
- package/src/components/pages/Participant.vue +19 -27
- package/src/components/pages/Participants.vue +7 -15
- package/src/components/pages/Playlist.vue +16 -29
- package/src/components/pages/Playlists.vue +1 -11
- package/src/components/pages/Podcast.vue +16 -30
- package/src/components/pages/Podcasts.vue +9 -23
- package/src/components/pages/Search.vue +26 -64
- package/src/sass/_variables.scss +0 -1
- package/src/store/class/general/media.ts +1 -1
|
@@ -17,36 +17,20 @@
|
|
|
17
17
|
<!-- eslint-disable vue/no-v-html -->
|
|
18
18
|
<div v-html="newsletterHtml" />
|
|
19
19
|
<!-- eslint-enable -->
|
|
20
|
-
<div class="d-flex flex-column flex-grow ms-4">
|
|
20
|
+
<div class="d-flex flex-column flex-grow-1 ms-4">
|
|
21
21
|
<h4 class="mb-3">
|
|
22
22
|
{{ $t('Configuration') }}
|
|
23
23
|
</h4>
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
>{{
|
|
35
|
-
$t('Display emission name')
|
|
36
|
-
}}</label>
|
|
37
|
-
</div>
|
|
38
|
-
<div>
|
|
39
|
-
<input
|
|
40
|
-
id="display-participants-names"
|
|
41
|
-
v-model="displayParticipantsNames"
|
|
42
|
-
type="checkbox"
|
|
43
|
-
class="form-check-input"
|
|
44
|
-
>
|
|
45
|
-
<label
|
|
46
|
-
class="form-check-label"
|
|
47
|
-
for="display-participants-names"
|
|
48
|
-
>{{ $t('Display participants list') }}</label>
|
|
49
|
-
</div>
|
|
24
|
+
<ClassicCheckbox
|
|
25
|
+
v-model:textInit="displayEmissionName"
|
|
26
|
+
id-checkbox="display-emission-name"
|
|
27
|
+
:label="$t('Display emission name')"
|
|
28
|
+
/>
|
|
29
|
+
<ClassicCheckbox
|
|
30
|
+
v-model:textInit="displayParticipantsNames"
|
|
31
|
+
id-checkbox="display-participants-names"
|
|
32
|
+
:label="$t('Display participants list')"
|
|
33
|
+
/>
|
|
50
34
|
<div class="d-flex align-items-center mt-2">
|
|
51
35
|
<VSwatches
|
|
52
36
|
v-model="color"
|
|
@@ -104,6 +88,7 @@
|
|
|
104
88
|
</template>
|
|
105
89
|
|
|
106
90
|
<script lang="ts">
|
|
91
|
+
import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
|
|
107
92
|
import Snackbar from '../../misc/Snackbar.vue';
|
|
108
93
|
import moment from 'moment';
|
|
109
94
|
import VSwatches from 'vue3-swatches';
|
|
@@ -121,6 +106,7 @@ export default defineComponent({
|
|
|
121
106
|
components: {
|
|
122
107
|
Snackbar,
|
|
123
108
|
VSwatches,
|
|
109
|
+
ClassicCheckbox
|
|
124
110
|
},
|
|
125
111
|
|
|
126
112
|
mixins: [displayMethods],
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<div class="page-box">
|
|
3
3
|
<h1>{{ title }}</h1>
|
|
4
4
|
<PodcastList
|
|
5
|
-
:first="
|
|
6
|
-
:size="
|
|
5
|
+
:first="0"
|
|
6
|
+
:size="12"
|
|
7
7
|
:iab-id="iabId"
|
|
8
8
|
:organisation-id="filterOrga"
|
|
9
9
|
/>
|
|
@@ -20,8 +20,6 @@ export default defineComponent({
|
|
|
20
20
|
PodcastList,
|
|
21
21
|
},
|
|
22
22
|
props: {
|
|
23
|
-
firstRoute: { default: 0, type: Number},
|
|
24
|
-
sizeRoute: { default: 12, type: Number},
|
|
25
23
|
iabId: { default: undefined, type: Number},
|
|
26
24
|
},
|
|
27
25
|
|
|
@@ -53,10 +51,7 @@ export default defineComponent({
|
|
|
53
51
|
const matchCategories = this.categories.filter((c: Category) => c.id === this.iabId);
|
|
54
52
|
if (1 !== matchCategories.length) return;
|
|
55
53
|
this.title = matchCategories[0]['name'];
|
|
56
|
-
|
|
57
54
|
},
|
|
58
55
|
},
|
|
59
56
|
})
|
|
60
|
-
</script>
|
|
61
|
-
|
|
62
|
-
<style lang="scss"></style>
|
|
57
|
+
</script>
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
2
|
+
<div class="page-box">
|
|
3
3
|
<div
|
|
4
4
|
v-if="loaded && !error"
|
|
5
|
-
class="page-box"
|
|
6
5
|
>
|
|
7
6
|
<h1 v-if="!isOuestFrance">
|
|
8
7
|
{{ $t('Emission') }}
|
|
9
8
|
</h1>
|
|
10
9
|
<div class="d-flex">
|
|
11
|
-
<div class="d-flex flex-column flex-grow">
|
|
10
|
+
<div class="d-flex flex-column flex-grow-1">
|
|
12
11
|
<EditBox
|
|
13
12
|
v-if="editRight && isEditBox"
|
|
14
13
|
:emission="emission"
|
|
@@ -48,7 +47,7 @@
|
|
|
48
47
|
:emission="emission"
|
|
49
48
|
/>
|
|
50
49
|
</div>
|
|
51
|
-
<div class="d-flex flex-column
|
|
50
|
+
<div class="d-flex flex-column flex-grow-mobile">
|
|
52
51
|
<SharePlayer
|
|
53
52
|
v-if="isSharePlayer && (authenticated || notExclusive)"
|
|
54
53
|
:emission="emission"
|
|
@@ -90,21 +89,10 @@
|
|
|
90
89
|
@fetch="fetch"
|
|
91
90
|
/>
|
|
92
91
|
</div>
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<div class="spinner-border me-3" />
|
|
98
|
-
<h3 class="mt-2">
|
|
99
|
-
{{ $t('Loading content ...') }}
|
|
100
|
-
</h3>
|
|
101
|
-
</div>
|
|
102
|
-
<div
|
|
103
|
-
v-if="error"
|
|
104
|
-
class="text-center"
|
|
105
|
-
>
|
|
106
|
-
<h3>{{ $t("Emission doesn't exist") }}</h3>
|
|
107
|
-
</div>
|
|
92
|
+
<ClassicLoading
|
|
93
|
+
:loading-text="!loaded?$t('Loading content ...'):undefined"
|
|
94
|
+
:error-text="error?$t(`Emission doesn't exist`):undefined"
|
|
95
|
+
/>
|
|
108
96
|
</div>
|
|
109
97
|
</template>
|
|
110
98
|
|
|
@@ -113,7 +101,7 @@ import octopusApi from '@saooti/octopus-api';
|
|
|
113
101
|
import { state } from '../../store/paramStore';
|
|
114
102
|
import { displayMethods } from '../mixins/functions';
|
|
115
103
|
import { Emission } from '@/store/class/general/emission';
|
|
116
|
-
|
|
104
|
+
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
117
105
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
118
106
|
const PodcastFilterList = defineAsyncComponent(() => import('../display/podcasts/PodcastFilterList.vue'));
|
|
119
107
|
const SharePlayer = defineAsyncComponent(() => import('../display/sharing/SharePlayer.vue'));
|
|
@@ -133,6 +121,7 @@ export default defineComponent({
|
|
|
133
121
|
PodcastList,
|
|
134
122
|
SubscribeButtons,
|
|
135
123
|
LiveHorizontalList,
|
|
124
|
+
ClassicLoading
|
|
136
125
|
},
|
|
137
126
|
mixins: [displayMethods],
|
|
138
127
|
props: {
|
|
@@ -203,8 +192,9 @@ export default defineComponent({
|
|
|
203
192
|
if (
|
|
204
193
|
(this.authenticated && this.emission && this.organisationId === this.emission.orga.id) ||
|
|
205
194
|
state.generalParameters.isAdmin
|
|
206
|
-
)
|
|
195
|
+
){
|
|
207
196
|
return true;
|
|
197
|
+
}
|
|
208
198
|
return false;
|
|
209
199
|
},
|
|
210
200
|
countLink(): number {
|
|
@@ -272,6 +262,4 @@ export default defineComponent({
|
|
|
272
262
|
},
|
|
273
263
|
},
|
|
274
264
|
})
|
|
275
|
-
</script>
|
|
276
|
-
|
|
277
|
-
<style lang="scss"></style>
|
|
265
|
+
</script>
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="page-box">
|
|
3
|
-
<h1
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
<h1>
|
|
4
|
+
<template v-if="undefined === titlePage">
|
|
5
|
+
{{ $t('All emissions') }}
|
|
6
|
+
</template>
|
|
7
|
+
<template v-else>
|
|
8
|
+
{{ titlePage }}
|
|
9
|
+
</template>
|
|
8
10
|
</h1>
|
|
9
11
|
<ProductorSearch
|
|
10
12
|
v-if="isProductorSearch"
|
|
@@ -53,7 +55,6 @@
|
|
|
53
55
|
import EmissionList from '../display/emission/EmissionList.vue';
|
|
54
56
|
import AdvancedSearch from '../display/filter/AdvancedSearch.vue';
|
|
55
57
|
import { state } from '../../store/paramStore';
|
|
56
|
-
|
|
57
58
|
import { Category } from '@/store/class/general/category';
|
|
58
59
|
import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
|
|
59
60
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
@@ -65,8 +66,6 @@ export default defineComponent({
|
|
|
65
66
|
AdvancedSearch,
|
|
66
67
|
},
|
|
67
68
|
props: {
|
|
68
|
-
firstRoute: { default: 0, type: Number},
|
|
69
|
-
sizeRoute: { default: 12, type: Number},
|
|
70
69
|
productor: { default: undefined, type: String},
|
|
71
70
|
isEducation: { default: false, type: Boolean},
|
|
72
71
|
},
|
|
@@ -110,12 +109,6 @@ export default defineComponent({
|
|
|
110
109
|
},
|
|
111
110
|
|
|
112
111
|
created() {
|
|
113
|
-
if (this.firstRoute) {
|
|
114
|
-
this.first = this.firstRoute;
|
|
115
|
-
}
|
|
116
|
-
if (this.sizeRoute) {
|
|
117
|
-
this.size = this.sizeRoute;
|
|
118
|
-
}
|
|
119
112
|
if(this.categoryFilter){
|
|
120
113
|
this.iabId = this.categoryFilter.id;
|
|
121
114
|
}
|
|
@@ -182,6 +175,4 @@ export default defineComponent({
|
|
|
182
175
|
},
|
|
183
176
|
},
|
|
184
177
|
})
|
|
185
|
-
</script>
|
|
186
|
-
|
|
187
|
-
<style lang="scss"></style>
|
|
178
|
+
</script>
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
</div>
|
|
18
18
|
<OrganisationChooser
|
|
19
19
|
:defaultanswer="$t('Please chose a productor')"
|
|
20
|
-
:all="true"
|
|
21
20
|
@selected="onOrganisationSelected"
|
|
22
21
|
/>
|
|
23
22
|
</template>
|
|
@@ -99,6 +98,4 @@ export default defineComponent({
|
|
|
99
98
|
},
|
|
100
99
|
},
|
|
101
100
|
})
|
|
102
|
-
</script>
|
|
103
|
-
|
|
104
|
-
<style lang="scss"></style>
|
|
101
|
+
</script>
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
2
|
+
<div class="page-box">
|
|
3
3
|
<div
|
|
4
4
|
v-if="loaded && !error"
|
|
5
|
-
class="page-box intervenant-page"
|
|
6
5
|
>
|
|
7
|
-
<h1
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
<h1>
|
|
7
|
+
<template v-if="undefined === titlePage ||!lightStyle">
|
|
8
|
+
{{ $t('Animator') }}
|
|
9
|
+
</template>
|
|
10
|
+
<template v-else>
|
|
11
|
+
{{ titlePage }}
|
|
12
|
+
</template>
|
|
12
13
|
</h1>
|
|
13
14
|
<div
|
|
14
|
-
class="d-flex
|
|
15
|
+
class="d-flex flex-column align-items-center"
|
|
15
16
|
>
|
|
16
17
|
<div
|
|
17
18
|
class="img-box-circle mb-3"
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
</h2>
|
|
25
26
|
<!-- eslint-disable vue/no-v-html -->
|
|
26
27
|
<div
|
|
27
|
-
class="
|
|
28
|
+
class="participant-desc html-wysiwyg-content"
|
|
28
29
|
v-html="urlify(description)"
|
|
29
30
|
/>
|
|
30
31
|
<!-- eslint-enable -->
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
class="d-flex justify-content-center"
|
|
34
35
|
>
|
|
35
36
|
<a
|
|
36
|
-
class="btn btn-
|
|
37
|
+
class="btn btn-big-round"
|
|
37
38
|
:title="$t('Subscribe to this participant')"
|
|
38
39
|
:aria-label="$t('Subscribe to this participant')"
|
|
39
40
|
:href="rssUrl"
|
|
@@ -71,21 +72,10 @@
|
|
|
71
72
|
:reload="reload"
|
|
72
73
|
/>
|
|
73
74
|
</div>
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<div class="spinner-border me-3" />
|
|
79
|
-
<h3 class="mt-2">
|
|
80
|
-
{{ $t('Loading content ...') }}
|
|
81
|
-
</h3>
|
|
82
|
-
</div>
|
|
83
|
-
<div
|
|
84
|
-
v-if="error"
|
|
85
|
-
class="text-center"
|
|
86
|
-
>
|
|
87
|
-
<h3>{{ $t("Animator doesn't exist") }}</h3>
|
|
88
|
-
</div>
|
|
75
|
+
<ClassicLoading
|
|
76
|
+
:loading-text="!loaded?$t('Loading content ...'):undefined"
|
|
77
|
+
:error-text="error?$t(`Animator doesn't exist`):undefined"
|
|
78
|
+
/>
|
|
89
79
|
</div>
|
|
90
80
|
</template>
|
|
91
81
|
|
|
@@ -94,7 +84,7 @@ import octopusApi from '@saooti/octopus-api';
|
|
|
94
84
|
import { state } from '../../store/paramStore';
|
|
95
85
|
import { displayMethods } from '../mixins/functions';
|
|
96
86
|
import { Participant } from '@/store/class/general/participant';
|
|
97
|
-
|
|
87
|
+
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
98
88
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
99
89
|
const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
|
|
100
90
|
const PodcastFilterList = defineAsyncComponent(() => import('../display/podcasts/PodcastFilterList.vue'));
|
|
@@ -106,6 +96,7 @@ export default defineComponent({
|
|
|
106
96
|
PodcastFilterList,
|
|
107
97
|
EditBox,
|
|
108
98
|
PodcastList,
|
|
99
|
+
ClassicLoading
|
|
109
100
|
},
|
|
110
101
|
mixins: [displayMethods],
|
|
111
102
|
props: {
|
|
@@ -165,8 +156,9 @@ export default defineComponent({
|
|
|
165
156
|
(this.authenticated &&
|
|
166
157
|
this.organisationId === this.participant.orga.id) ||
|
|
167
158
|
state.generalParameters.isAdmin
|
|
168
|
-
)
|
|
159
|
+
){
|
|
169
160
|
return true;
|
|
161
|
+
}
|
|
170
162
|
return false;
|
|
171
163
|
},
|
|
172
164
|
},
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="page-box">
|
|
3
3
|
<h1 v-if="undefined === titlePage">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
<template v-if="undefined === titlePage">
|
|
5
|
+
{{ $t('All participants') }}
|
|
6
|
+
</template>
|
|
7
|
+
<template v-else>
|
|
8
|
+
{{ titlePage }}
|
|
9
|
+
</template>
|
|
8
10
|
</h1>
|
|
9
11
|
<ProductorSearch
|
|
10
12
|
:organisation-id="organisationId"
|
|
@@ -34,8 +36,6 @@ export default defineComponent({
|
|
|
34
36
|
ParticipantList,
|
|
35
37
|
},
|
|
36
38
|
props: {
|
|
37
|
-
firstRoute: { default: 0, type: Number},
|
|
38
|
-
sizeRoute: { default: 12, type: Number},
|
|
39
39
|
productor: { default: undefined, type: String},
|
|
40
40
|
},
|
|
41
41
|
|
|
@@ -55,12 +55,6 @@ export default defineComponent({
|
|
|
55
55
|
},
|
|
56
56
|
|
|
57
57
|
created() {
|
|
58
|
-
if (this.firstRoute) {
|
|
59
|
-
this.first = this.firstRoute;
|
|
60
|
-
}
|
|
61
|
-
if (this.sizeRoute) {
|
|
62
|
-
this.size = this.sizeRoute;
|
|
63
|
-
}
|
|
64
58
|
if (this.productor) {
|
|
65
59
|
this.organisationId = this.productor;
|
|
66
60
|
} else if (this.$store.state.filter.organisationId) {
|
|
@@ -77,6 +71,4 @@ export default defineComponent({
|
|
|
77
71
|
},
|
|
78
72
|
},
|
|
79
73
|
})
|
|
80
|
-
</script>
|
|
81
|
-
|
|
82
|
-
<style lang="scss"></style>
|
|
74
|
+
</script>
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
2
|
+
<div class="page-box">
|
|
3
3
|
<div
|
|
4
4
|
v-if="loaded && !error"
|
|
5
|
-
class="page-box"
|
|
6
5
|
>
|
|
7
6
|
<h1>{{ $t('Playlist') }}</h1>
|
|
8
7
|
<div class="d-flex">
|
|
9
|
-
<div class="d-flex flex-column flex-grow">
|
|
8
|
+
<div class="d-flex flex-column flex-grow-1">
|
|
10
9
|
<EditBox
|
|
11
10
|
v-if="editRight && isEditBox"
|
|
12
11
|
:playlist="playlist"
|
|
13
|
-
:is-ready="
|
|
12
|
+
:is-ready="true"
|
|
14
13
|
/>
|
|
15
14
|
<div class="module-box">
|
|
16
15
|
<h2>{{ name }}</h2>
|
|
@@ -29,7 +28,7 @@
|
|
|
29
28
|
</div>
|
|
30
29
|
</div>
|
|
31
30
|
</div>
|
|
32
|
-
<div class="d-flex flex-column
|
|
31
|
+
<div class="d-flex flex-column flex-grow-mobile">
|
|
33
32
|
<SharePlayer
|
|
34
33
|
v-if="isSharePlayer && authenticated"
|
|
35
34
|
:playlist="playlist"
|
|
@@ -41,25 +40,15 @@
|
|
|
41
40
|
</div>
|
|
42
41
|
<PodcastList :playlist="playlist" />
|
|
43
42
|
</div>
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<div class="spinner-border me-3" />
|
|
49
|
-
<h3 class="mt-2">
|
|
50
|
-
{{ $t('Loading content ...') }}
|
|
51
|
-
</h3>
|
|
52
|
-
</div>
|
|
53
|
-
<div
|
|
54
|
-
v-if="error"
|
|
55
|
-
class="text-center"
|
|
56
|
-
>
|
|
57
|
-
<h3>{{ $t("Playlist doesn't exist") }}</h3>
|
|
58
|
-
</div>
|
|
43
|
+
<ClassicLoading
|
|
44
|
+
:loading-text="!loaded?$t('Loading content ...'):undefined"
|
|
45
|
+
:error-text="error?$t(`Playlist doesn't exist`):undefined"
|
|
46
|
+
/>
|
|
59
47
|
</div>
|
|
60
48
|
</template>
|
|
61
49
|
|
|
62
50
|
<script lang="ts">
|
|
51
|
+
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
63
52
|
import PodcastList from '../display/playlist/PodcastList.vue';
|
|
64
53
|
import octopusApi from '@saooti/octopus-api';
|
|
65
54
|
import { state } from '../../store/paramStore';
|
|
@@ -75,6 +64,7 @@ export default defineComponent({
|
|
|
75
64
|
EditBox,
|
|
76
65
|
PodcastList,
|
|
77
66
|
SharePlayer,
|
|
67
|
+
ClassicLoading
|
|
78
68
|
},
|
|
79
69
|
mixins:[displayMethods],
|
|
80
70
|
props: {
|
|
@@ -88,7 +78,6 @@ export default defineComponent({
|
|
|
88
78
|
loaded: false as boolean,
|
|
89
79
|
playlist: undefined as Playlist | undefined,
|
|
90
80
|
error: false as boolean,
|
|
91
|
-
isReady: true as boolean,
|
|
92
81
|
};
|
|
93
82
|
},
|
|
94
83
|
|
|
@@ -123,15 +112,14 @@ export default defineComponent({
|
|
|
123
112
|
(state.generalParameters.isPlaylist && this.playlist &&
|
|
124
113
|
this.organisationId === this.playlist.organisation.id) ||
|
|
125
114
|
state.generalParameters.isAdmin
|
|
126
|
-
)
|
|
115
|
+
){
|
|
127
116
|
return true;
|
|
117
|
+
}
|
|
128
118
|
return false;
|
|
129
119
|
},
|
|
130
120
|
},
|
|
131
121
|
watch: {
|
|
132
122
|
playlistId() {
|
|
133
|
-
this.loaded = false;
|
|
134
|
-
this.error = false;
|
|
135
123
|
this.getPlaylistDetails();
|
|
136
124
|
},
|
|
137
125
|
},
|
|
@@ -142,17 +130,16 @@ export default defineComponent({
|
|
|
142
130
|
methods: {
|
|
143
131
|
async getPlaylistDetails(): Promise<void> {
|
|
144
132
|
try {
|
|
133
|
+
this.loaded = false;
|
|
134
|
+
this.error = false;
|
|
145
135
|
const data: Playlist = await octopusApi.fetchPlaylist(this.playlistId ? this.playlistId.toString(): "");
|
|
146
136
|
this.playlist = data;
|
|
147
137
|
this.$emit('playlistTitle', this.playlist.title);
|
|
148
|
-
this.loaded = true;
|
|
149
138
|
} catch {
|
|
150
139
|
this.error = true;
|
|
151
|
-
this.loaded = true;
|
|
152
140
|
}
|
|
141
|
+
this.loaded = true;
|
|
153
142
|
},
|
|
154
143
|
},
|
|
155
144
|
})
|
|
156
|
-
</script>
|
|
157
|
-
|
|
158
|
-
<style lang="scss"></style>
|
|
145
|
+
</script>
|
|
@@ -39,8 +39,6 @@ export default defineComponent({
|
|
|
39
39
|
PlaylistList,
|
|
40
40
|
},
|
|
41
41
|
props: {
|
|
42
|
-
firstRoute: { default: 0, type: Number},
|
|
43
|
-
sizeRoute: { default: 12, type: Number},
|
|
44
42
|
productor: { default: undefined, type: String},
|
|
45
43
|
},
|
|
46
44
|
|
|
@@ -67,12 +65,6 @@ export default defineComponent({
|
|
|
67
65
|
},
|
|
68
66
|
|
|
69
67
|
created() {
|
|
70
|
-
if (this.firstRoute) {
|
|
71
|
-
this.first = this.firstRoute;
|
|
72
|
-
}
|
|
73
|
-
if (this.sizeRoute) {
|
|
74
|
-
this.size = this.sizeRoute;
|
|
75
|
-
}
|
|
76
68
|
if (this.productor) {
|
|
77
69
|
this.organisationId = this.productor;
|
|
78
70
|
} else if (this.$store.state.filter.organisationId) {
|
|
@@ -88,6 +80,4 @@ export default defineComponent({
|
|
|
88
80
|
},
|
|
89
81
|
},
|
|
90
82
|
})
|
|
91
|
-
</script>
|
|
92
|
-
|
|
93
|
-
<style lang="scss"></style>
|
|
83
|
+
</script>
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<
|
|
4
|
-
v-if="loaded && !error"
|
|
5
|
-
class="page-box"
|
|
6
|
-
>
|
|
2
|
+
<div class="page-box">
|
|
3
|
+
<template v-if="loaded && !error">
|
|
7
4
|
<h1 v-if="!isOuestFrance">
|
|
8
5
|
{{ titlePage }}
|
|
9
6
|
</h1>
|
|
@@ -20,7 +17,7 @@
|
|
|
20
17
|
!isNotRecorded &&
|
|
21
18
|
isOctopusAndAnimator
|
|
22
19
|
"
|
|
23
|
-
class="module-box text-center-mobile flex-
|
|
20
|
+
class="module-box text-center-mobile flex-grow-0"
|
|
24
21
|
:podcast="podcast"
|
|
25
22
|
:live="true"
|
|
26
23
|
:recording="fetchConference"
|
|
@@ -30,7 +27,7 @@
|
|
|
30
27
|
<EditBox
|
|
31
28
|
v-else-if="editRight && isEditBox"
|
|
32
29
|
:podcast="podcast"
|
|
33
|
-
:is-ready="
|
|
30
|
+
:is-ready="true"
|
|
34
31
|
@validatePodcast="updatePodcast"
|
|
35
32
|
/>
|
|
36
33
|
<PodcastModuleBox
|
|
@@ -44,8 +41,8 @@
|
|
|
44
41
|
/>
|
|
45
42
|
</div>
|
|
46
43
|
<div
|
|
47
|
-
class="d-flex flex-column
|
|
48
|
-
:class="authenticated || notExclusive ? 'flex-grow' : ''"
|
|
44
|
+
class="d-flex flex-column flex-grow-mobile"
|
|
45
|
+
:class="authenticated || notExclusive ? 'flex-grow-1' : ''"
|
|
49
46
|
>
|
|
50
47
|
<SharePlayer
|
|
51
48
|
v-if="isSharePlayer && (authenticated || notExclusive)"
|
|
@@ -85,28 +82,18 @@
|
|
|
85
82
|
:button-text="$t('All podcast button', { name: c.name })"
|
|
86
83
|
/>
|
|
87
84
|
</template>
|
|
88
|
-
</
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
<div class="spinner-border me-3" />
|
|
94
|
-
<h3 class="mt-2">
|
|
95
|
-
{{ $t('Loading content ...') }}
|
|
96
|
-
</h3>
|
|
97
|
-
</div>
|
|
98
|
-
<div
|
|
99
|
-
v-if="error"
|
|
100
|
-
class="text-center"
|
|
101
|
-
>
|
|
102
|
-
<h3>{{ $t("Podcast doesn't exist") }}</h3>
|
|
103
|
-
</div>
|
|
85
|
+
</template>
|
|
86
|
+
<ClassicLoading
|
|
87
|
+
:loading-text="!loaded?$t('Loading content ...'):undefined"
|
|
88
|
+
:error-text="error?$t(`Podcast doesn't exist`):undefined"
|
|
89
|
+
/>
|
|
104
90
|
</div>
|
|
105
91
|
</template>
|
|
106
92
|
|
|
107
93
|
<script lang="ts">
|
|
108
94
|
import PodcastInlineList from '../display/podcasts/PodcastInlineList.vue';
|
|
109
95
|
import PodcastModuleBox from '../display/podcasts/PodcastModuleBox.vue';
|
|
96
|
+
import ClassicLoading from '../form/ClassicLoading.vue';
|
|
110
97
|
import octopusApi from '@saooti/octopus-api';
|
|
111
98
|
import studioApi from '@/api/studio';
|
|
112
99
|
import { state } from '../../store/paramStore';
|
|
@@ -136,7 +123,8 @@ export default defineComponent({
|
|
|
136
123
|
RecordingItemButton,
|
|
137
124
|
Countdown,
|
|
138
125
|
CommentSection,
|
|
139
|
-
PodcastModuleBox
|
|
126
|
+
PodcastModuleBox,
|
|
127
|
+
ClassicLoading
|
|
140
128
|
},
|
|
141
129
|
|
|
142
130
|
props: {
|
|
@@ -219,13 +207,11 @@ export default defineComponent({
|
|
|
219
207
|
(this.authenticated &&
|
|
220
208
|
this.organisationId === this.podcast.organisation.id) ||
|
|
221
209
|
state.generalParameters.isAdmin
|
|
222
|
-
)
|
|
210
|
+
){
|
|
223
211
|
return true;
|
|
212
|
+
}
|
|
224
213
|
return false;
|
|
225
214
|
},
|
|
226
|
-
isReady(): boolean {
|
|
227
|
-
return true;
|
|
228
|
-
},
|
|
229
215
|
countLink(): number {
|
|
230
216
|
let count = 0;
|
|
231
217
|
if (this.podcast && this.podcast.emission && this.podcast.emission.annotations) {
|