@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
|
@@ -1,5 +1,99 @@
|
|
|
1
1
|
.octopus-app{
|
|
2
2
|
.transition-height {
|
|
3
|
-
|
|
3
|
+
transition: height 1s;
|
|
4
4
|
}
|
|
5
|
+
.arrow-transform {
|
|
6
|
+
transform: rotate(180deg);
|
|
7
|
+
}
|
|
8
|
+
.bloc-paddle {
|
|
9
|
+
align-items: flex-end;
|
|
10
|
+
display: flex;
|
|
11
|
+
width: 2rem;
|
|
12
|
+
height: 2.6rem;
|
|
13
|
+
padding: 0.7rem;
|
|
14
|
+
justify-content: space-around;
|
|
15
|
+
align-content: flex-start;
|
|
16
|
+
border-radius: 50%;
|
|
17
|
+
background: transparent !important;
|
|
18
|
+
|
|
19
|
+
> span {
|
|
20
|
+
width: 0.1rem;
|
|
21
|
+
margin: 0.05rem;
|
|
22
|
+
background: #fff;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.paddle1 {
|
|
26
|
+
animation-duration: 0.6s;
|
|
27
|
+
animation-name: slidein;
|
|
28
|
+
animation-iteration-count: infinite;
|
|
29
|
+
animation-direction: alternate;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.paddle2 {
|
|
33
|
+
animation-duration: 0.3s;
|
|
34
|
+
animation-name: slidein2;
|
|
35
|
+
animation-iteration-count: infinite;
|
|
36
|
+
animation-direction: alternate;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.paddle3 {
|
|
40
|
+
animation-duration: 0.5s;
|
|
41
|
+
animation-name: slidein3;
|
|
42
|
+
animation-iteration-count: infinite;
|
|
43
|
+
animation-direction: alternate;
|
|
44
|
+
}
|
|
45
|
+
@keyframes slidein {
|
|
46
|
+
0% {
|
|
47
|
+
height: 0;
|
|
48
|
+
}
|
|
49
|
+
100% {
|
|
50
|
+
height: 1rem;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@keyframes slidein2 {
|
|
55
|
+
0% {
|
|
56
|
+
height: 0.3rem;
|
|
57
|
+
}
|
|
58
|
+
100% {
|
|
59
|
+
height: 1.2rem;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@keyframes slidein3 {
|
|
64
|
+
0% {
|
|
65
|
+
height: 1.2rem;
|
|
66
|
+
}
|
|
67
|
+
100% {
|
|
68
|
+
height: 0;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
.out-left-enter-active,
|
|
73
|
+
.out-left-leave-active,
|
|
74
|
+
.out-right-enter-active,
|
|
75
|
+
.out-right-leave-active {
|
|
76
|
+
transition: all 0.3s ease;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.out-left-leave-to,
|
|
80
|
+
.out-right-enter {
|
|
81
|
+
transform: translateX(-110%);
|
|
82
|
+
opacity: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.out-left-enter,
|
|
86
|
+
.out-right-leave-to {
|
|
87
|
+
transform: translateX(110%);
|
|
88
|
+
opacity: 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.out-left-leave-to,
|
|
92
|
+
.out-right-leave-to {
|
|
93
|
+
position: absolute;
|
|
94
|
+
}
|
|
95
|
+
.out-right-leave-to {
|
|
96
|
+
right: 5rem;
|
|
97
|
+
z-index: -1;
|
|
98
|
+
}
|
|
5
99
|
}
|
|
@@ -19,13 +19,11 @@
|
|
|
19
19
|
class="dropdown btn-group"
|
|
20
20
|
>
|
|
21
21
|
<button
|
|
22
|
-
class="btn dropdown-toggle
|
|
22
|
+
class="btn dropdown-toggle category-rubrique-item-plus dropdown-toggle-no-caret saooti-plus"
|
|
23
23
|
data-bs-toggle="dropdown"
|
|
24
24
|
aria-expanded="false"
|
|
25
25
|
:aria-label="$t('See more')"
|
|
26
|
-
|
|
27
|
-
<i class="saooti-plus" />
|
|
28
|
-
</button>
|
|
26
|
+
/>
|
|
29
27
|
<ul class="dropdown-menu dropdown-menu-right px-4">
|
|
30
28
|
<div
|
|
31
29
|
v-for="category in hidenCategories"
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
>
|
|
6
6
|
<b
|
|
7
7
|
v-if="knownIdentity && !editName"
|
|
8
|
-
class="small-
|
|
8
|
+
class="small-text mt-1 c-hand"
|
|
9
9
|
@click="changeIdentity"
|
|
10
10
|
>{{ knownIdentity }}</b>
|
|
11
11
|
<div
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
>
|
|
15
15
|
<input
|
|
16
16
|
v-model="temporaryName"
|
|
17
|
-
class="small-
|
|
17
|
+
class="small-text mt-1"
|
|
18
18
|
type="text"
|
|
19
19
|
:class="{ 'border border-danger': temporaryName.length < 2 }"
|
|
20
20
|
>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="d-flex flex-column mt-2 mb-1 item-comment">
|
|
3
|
-
<div class="d-flex small-
|
|
3
|
+
<div class="d-flex small-text">
|
|
4
4
|
<template v-if="!isEditing">
|
|
5
5
|
<b
|
|
6
6
|
v-if="
|
|
7
7
|
recordingInLive &&
|
|
8
8
|
('Live' === comment.phase || 'Prelive' === comment.phase)
|
|
9
9
|
"
|
|
10
|
-
class="recording-bg me-1 text-light p-
|
|
10
|
+
class="recording-bg me-1 text-light p-1"
|
|
11
11
|
>{{ $t('Live') }}</b>
|
|
12
12
|
<b
|
|
13
13
|
v-if="editRight || comment.status == 'Valid'"
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
>
|
|
93
93
|
<button
|
|
94
94
|
v-if="null === comment.commentIdReferer && 'Valid' === comment.status"
|
|
95
|
-
class="btn
|
|
95
|
+
class="btn py-1 px-3 primary-color me-2"
|
|
96
96
|
:data-selenium="'answer-button-comment-' + seleniumFormat(comment.name)"
|
|
97
97
|
@click="answerComment"
|
|
98
98
|
>
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
(isFlat && comment.commentIdReferer)
|
|
105
105
|
"
|
|
106
106
|
:id="'commentItem'+comment.comId"
|
|
107
|
-
class="primary-color c-hand d-flex align-items-center small-
|
|
107
|
+
class="primary-color c-hand d-flex align-items-center small-text input-no-outline"
|
|
108
108
|
type="button"
|
|
109
109
|
data-bs-toggle="collapse"
|
|
110
110
|
:data-bs-target="'#commentItemDetail'+comment.comId"
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
<div v-else>
|
|
125
125
|
{{ $t('In response to') }}
|
|
126
126
|
</div>
|
|
127
|
-
<span class="saooti-arrow_down
|
|
127
|
+
<span class="saooti-arrow_down" />
|
|
128
128
|
</div>
|
|
129
129
|
<div class="d-flex align-items-center when-opened">
|
|
130
130
|
<div v-if="comment.relatedComments">
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
{{ $t('In response to') }}
|
|
135
135
|
</div>
|
|
136
136
|
<span
|
|
137
|
-
class="saooti-arrow_down
|
|
137
|
+
class="saooti-arrow_down arrow-transform me-2"
|
|
138
138
|
/>
|
|
139
139
|
</div>
|
|
140
140
|
</div>
|
|
@@ -1,35 +1,27 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="d-flex">
|
|
3
3
|
<button
|
|
4
|
-
class="btn btn-
|
|
4
|
+
class="btn btn-comment-edit saooti-edit-bounty"
|
|
5
5
|
aria-label="edit"
|
|
6
6
|
@click="editComment"
|
|
7
|
-
|
|
8
|
-
<span class="saooti-edit-bounty" />
|
|
9
|
-
</button>
|
|
7
|
+
/>
|
|
10
8
|
<button
|
|
11
9
|
v-if="'Pending' === comment.status || 'Invalid' === comment.status"
|
|
12
|
-
class="btn btn-
|
|
10
|
+
class="btn btn-comment-edit saooti-valid-stud"
|
|
13
11
|
aria-label="valid"
|
|
14
12
|
@click="validComment"
|
|
15
|
-
|
|
16
|
-
<span class="saooti-valid-stud" />
|
|
17
|
-
</button>
|
|
13
|
+
/>
|
|
18
14
|
<button
|
|
19
15
|
v-if="'Pending' === comment.status || 'Valid' === comment.status"
|
|
20
|
-
class="btn btn-
|
|
16
|
+
class="btn btn-comment-edit saooti-cross"
|
|
21
17
|
aria-label="invalid"
|
|
22
18
|
@click="invalidComment"
|
|
23
|
-
|
|
24
|
-
<span class="saooti-cross" />
|
|
25
|
-
</button>
|
|
19
|
+
/>
|
|
26
20
|
<button
|
|
27
|
-
class="btn btn-
|
|
21
|
+
class="btn btn-comment-edit saooti-bin"
|
|
28
22
|
aria-label="delete"
|
|
29
23
|
@click="deleteComment"
|
|
30
|
-
|
|
31
|
-
<span class="saooti-bin" />
|
|
32
|
-
</button>
|
|
24
|
+
/>
|
|
33
25
|
</div>
|
|
34
26
|
</template>
|
|
35
27
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
class="default-multiselect-width"
|
|
4
|
-
:class="{ 'multiselect-hide-arrow': !displayArrow }"
|
|
5
4
|
:style="{ width: width }"
|
|
6
5
|
>
|
|
7
6
|
<label
|
|
@@ -72,7 +71,7 @@
|
|
|
72
71
|
<template #caret="">
|
|
73
72
|
<div class="position-relative">
|
|
74
73
|
<span
|
|
75
|
-
class="saooti-arrow_down octopus-arrow-down
|
|
74
|
+
class="saooti-arrow_down octopus-arrow-down"
|
|
76
75
|
/>
|
|
77
76
|
</div>
|
|
78
77
|
</template>
|
|
@@ -120,7 +119,6 @@ export default defineComponent({
|
|
|
120
119
|
defaultanswer: { default: '', type: String },
|
|
121
120
|
organisationId: { default: undefined, type: String},
|
|
122
121
|
emissionChosen: { default: undefined, type: Object as ()=>Emission},
|
|
123
|
-
displayArrow: { default: true, type: Boolean },
|
|
124
122
|
distributedBy: { default: undefined, type: String},
|
|
125
123
|
organisationDistributedBy: { default: undefined, type: String},
|
|
126
124
|
reset: { default: false, type: Boolean },
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
(displayRubriquage && rubriques) || !(displayRubriquage && loaded)
|
|
38
38
|
"
|
|
39
39
|
:name="transitionName"
|
|
40
|
-
class="
|
|
40
|
+
class="element-list-inline"
|
|
41
41
|
tag="ul"
|
|
42
42
|
:class="[
|
|
43
43
|
alignLeft ? 'justify-content-start' : '',
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
<EmissionPlayerItem
|
|
48
48
|
v-for="e in emissions"
|
|
49
49
|
:key="e.emissionId"
|
|
50
|
-
class="flex-shrink item-phone-margin"
|
|
50
|
+
class="flex-shrink-0 item-phone-margin"
|
|
51
51
|
:emission="e"
|
|
52
52
|
:class="[alignLeft ? 'me-3' : '', mainRubriquage(e)]"
|
|
53
53
|
:nb-podcasts="nbPodcasts"
|
|
@@ -257,7 +257,16 @@ export default defineComponent({
|
|
|
257
257
|
</script>
|
|
258
258
|
|
|
259
259
|
<style lang="scss">
|
|
260
|
-
.
|
|
260
|
+
.list-episode {
|
|
261
|
+
padding: 2rem 0rem 1rem !important;
|
|
262
|
+
@media (max-width: 450px) {
|
|
263
|
+
padding: 0.5rem 0rem 1rem !important;
|
|
264
|
+
}
|
|
265
|
+
h2 {
|
|
266
|
+
margin-bottom: 1rem;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
.element-list-inline.overflowScroll {
|
|
261
270
|
display: flex;
|
|
262
271
|
flex-wrap: wrap;
|
|
263
272
|
-webkit-overflow-scrolling: touch;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<li
|
|
3
|
-
class="mt-3"
|
|
4
|
-
:class="
|
|
5
|
-
lightItems
|
|
6
|
-
? 'noList emission-light-max-size'
|
|
7
|
-
: 'emission-item-container shadow-element'
|
|
8
|
-
"
|
|
3
|
+
class="mt-3 emission-item-container shadow-element"
|
|
9
4
|
>
|
|
10
5
|
<router-link
|
|
11
6
|
:to="{
|
|
@@ -14,40 +9,14 @@
|
|
|
14
9
|
query: { productor: $store.state.filter.organisationId },
|
|
15
10
|
}"
|
|
16
11
|
:aria-label="$t('Emission')"
|
|
17
|
-
class="text-dark"
|
|
12
|
+
class="d-flex text-dark"
|
|
18
13
|
>
|
|
19
14
|
<div
|
|
20
|
-
v-if="!lightItems"
|
|
21
15
|
class="img-box"
|
|
22
16
|
:style="{ 'background-image': 'url(\'' + emission.imageUrl + '\')' }"
|
|
23
17
|
/>
|
|
24
|
-
<div
|
|
25
|
-
v-else
|
|
26
|
-
class="d-flex"
|
|
27
|
-
>
|
|
18
|
+
<div class="emission-item-text">
|
|
28
19
|
<div
|
|
29
|
-
class="img-box-light flex-shrink"
|
|
30
|
-
:style="{ 'background-image': 'url(\'' + emission.imageUrl + '\')' }"
|
|
31
|
-
/>
|
|
32
|
-
<div class="emission-light-title">
|
|
33
|
-
{{ name }}
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</router-link>
|
|
37
|
-
<div
|
|
38
|
-
class="emission-item-text"
|
|
39
|
-
:class="lightItems ? 'p-0' : ''"
|
|
40
|
-
>
|
|
41
|
-
<router-link
|
|
42
|
-
:to="{
|
|
43
|
-
name: 'emission',
|
|
44
|
-
params: { emissionId: emission.emissionId },
|
|
45
|
-
query: { productor: $store.state.filter.organisationId },
|
|
46
|
-
}"
|
|
47
|
-
class="text-dark"
|
|
48
|
-
>
|
|
49
|
-
<div
|
|
50
|
-
v-if="!lightItems"
|
|
51
20
|
class="emission-name"
|
|
52
21
|
>
|
|
53
22
|
<img
|
|
@@ -55,36 +24,34 @@
|
|
|
55
24
|
class="icon-caution"
|
|
56
25
|
src="/img/caution.png"
|
|
57
26
|
:title="$t('Emission have not podcasts')"
|
|
58
|
-
>{{ name }}
|
|
27
|
+
>{{ emission.name }}
|
|
59
28
|
</div>
|
|
60
29
|
<div
|
|
61
30
|
:id="'description-emission-container-' + emission.emissionId"
|
|
62
31
|
class="emission-description htms-wysiwyg-content"
|
|
63
|
-
:class="lightItems ? 'emission-small-description' : ''"
|
|
64
32
|
>
|
|
65
33
|
<!-- eslint-disable vue/no-v-html -->
|
|
66
34
|
<div
|
|
67
35
|
:id="'description-emission-' + emission.emissionId"
|
|
68
|
-
v-html="urlify(description)"
|
|
36
|
+
v-html="urlify(emission.description|| '')"
|
|
69
37
|
/>
|
|
70
|
-
|
|
71
|
-
</div>
|
|
72
|
-
</router-link>
|
|
73
|
-
<div class="flex-grow" />
|
|
74
|
-
<router-link
|
|
75
|
-
v-if="!isPodcastmaker"
|
|
76
|
-
:to="{
|
|
77
|
-
name: 'productor',
|
|
78
|
-
params: { productorId: emission.orga.id },
|
|
79
|
-
query: { productor: $store.state.filter.organisationId },
|
|
80
|
-
}"
|
|
81
|
-
class="text-dark"
|
|
82
|
-
>
|
|
83
|
-
<div class="emission-producer primary-color">
|
|
84
|
-
© {{ emission.orga.name }}
|
|
38
|
+
<!-- eslint-enable -->
|
|
85
39
|
</div>
|
|
86
|
-
|
|
87
|
-
|
|
40
|
+
<div class="flex-grow-1" />
|
|
41
|
+
<router-link
|
|
42
|
+
v-if="!isPodcastmaker"
|
|
43
|
+
:to="{
|
|
44
|
+
name: 'productor',
|
|
45
|
+
params: { productorId: emission.orga.id },
|
|
46
|
+
query: { productor: $store.state.filter.organisationId },
|
|
47
|
+
}"
|
|
48
|
+
>
|
|
49
|
+
<div class="emission-producer">
|
|
50
|
+
© {{ emission.orga.name }}
|
|
51
|
+
</div>
|
|
52
|
+
</router-link>
|
|
53
|
+
</div>
|
|
54
|
+
</router-link>
|
|
88
55
|
</li>
|
|
89
56
|
</template>
|
|
90
57
|
|
|
@@ -115,19 +82,10 @@ export default defineComponent({
|
|
|
115
82
|
},
|
|
116
83
|
organisation(): string {
|
|
117
84
|
if(this.emission && this.emission.publisher && this.emission.publisher.organisation){
|
|
118
|
-
return
|
|
85
|
+
return this.emission.publisher.organisation.name;
|
|
119
86
|
}
|
|
120
87
|
return '';
|
|
121
88
|
},
|
|
122
|
-
lightItems(): boolean {
|
|
123
|
-
return (state.emissionsPage.lightItems as boolean);
|
|
124
|
-
},
|
|
125
|
-
description(): string {
|
|
126
|
-
return this.emission.description || '';
|
|
127
|
-
},
|
|
128
|
-
name(): string {
|
|
129
|
-
return this.emission.name;
|
|
130
|
-
},
|
|
131
89
|
organisationId(): string|undefined {
|
|
132
90
|
return state.generalParameters.organisationId;
|
|
133
91
|
},
|
|
@@ -1,68 +1,64 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="d-flex flex-column align-items-center">
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
>
|
|
7
|
-
<div
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
{{ $t('See more') }}
|
|
56
|
-
</template>
|
|
57
|
-
<div class="saooti-plus" />
|
|
58
|
-
</button>
|
|
3
|
+
<ClassicLoading
|
|
4
|
+
:loading-text="loading?$t('Loading emissions ...'):undefined"
|
|
5
|
+
/>
|
|
6
|
+
<template v-if="isLoadingMoreOrFinished">
|
|
7
|
+
<div
|
|
8
|
+
v-if="showCount && emissions.length > 1"
|
|
9
|
+
class="text-secondary mb-2"
|
|
10
|
+
>
|
|
11
|
+
{{ $t('Number emissions', { nb: displayCount }) + sortText }}
|
|
12
|
+
</div>
|
|
13
|
+
<ul
|
|
14
|
+
v-if="!itemPlayer"
|
|
15
|
+
class="emission-list"
|
|
16
|
+
:class="smallItems ? 'three-emissions' : 'two-emissions'"
|
|
17
|
+
>
|
|
18
|
+
<EmissionItem
|
|
19
|
+
v-for="e in emissions"
|
|
20
|
+
:key="e.emissionId"
|
|
21
|
+
:emission="e"
|
|
22
|
+
/>
|
|
23
|
+
</ul>
|
|
24
|
+
<div
|
|
25
|
+
v-show="
|
|
26
|
+
(displayRubriquage && rubriques) || !(displayRubriquage)
|
|
27
|
+
"
|
|
28
|
+
v-else
|
|
29
|
+
class="d-flex flex-wrap justify-content-around"
|
|
30
|
+
>
|
|
31
|
+
<EmissionPlayerItem
|
|
32
|
+
v-for="e in emissions"
|
|
33
|
+
:key="e.emissionId"
|
|
34
|
+
:emission="e"
|
|
35
|
+
class="m-3 flex-shrink-0"
|
|
36
|
+
:class="mainRubriquage(e)"
|
|
37
|
+
:rubrique-name="rubriquesId(e)"
|
|
38
|
+
@emissionNotVisible="displayCount--"
|
|
39
|
+
/>
|
|
40
|
+
</div>
|
|
41
|
+
<button
|
|
42
|
+
v-show="!allFetched"
|
|
43
|
+
class="btn"
|
|
44
|
+
:class="buttonPlus ? 'btn-link-plus' : 'btn-more'"
|
|
45
|
+
:disabled="loading"
|
|
46
|
+
:aria-label="$t('See more')"
|
|
47
|
+
@click="fetchContent(false)"
|
|
48
|
+
>
|
|
49
|
+
<template v-if="buttonPlus">
|
|
50
|
+
{{ $t('See more') }}
|
|
51
|
+
</template>
|
|
52
|
+
<div class="saooti-plus" />
|
|
53
|
+
</button>
|
|
54
|
+
</template>
|
|
59
55
|
</div>
|
|
60
56
|
</template>
|
|
61
57
|
|
|
62
58
|
<script lang="ts">
|
|
63
59
|
import octopusApi from '@saooti/octopus-api';
|
|
64
60
|
import { state } from '../../../store/paramStore';
|
|
65
|
-
|
|
61
|
+
import ClassicLoading from '../../form/ClassicLoading.vue';
|
|
66
62
|
import { Emission } from '@/store/class/general/emission';
|
|
67
63
|
import { Rubrique } from '@/store/class/rubrique/rubrique';
|
|
68
64
|
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
@@ -75,6 +71,7 @@ export default defineComponent({
|
|
|
75
71
|
components: {
|
|
76
72
|
EmissionItem,
|
|
77
73
|
EmissionPlayerItem,
|
|
74
|
+
ClassicLoading
|
|
78
75
|
},
|
|
79
76
|
|
|
80
77
|
props: {
|
|
@@ -97,18 +94,19 @@ export default defineComponent({
|
|
|
97
94
|
data() {
|
|
98
95
|
return {
|
|
99
96
|
loading: true as boolean,
|
|
100
|
-
loaded: false as boolean,
|
|
101
97
|
dfirst: this.first as number,
|
|
102
98
|
dsize: this.size as number,
|
|
103
99
|
totalCount: 0 as number,
|
|
104
100
|
displayCount: 0 as number,
|
|
105
101
|
emissions: [] as Array<Emission>,
|
|
106
102
|
rubriques: undefined as Array<Rubrique>|undefined,
|
|
107
|
-
inFetching: false as boolean,
|
|
108
103
|
};
|
|
109
104
|
},
|
|
110
105
|
|
|
111
106
|
computed: {
|
|
107
|
+
isLoadingMoreOrFinished():boolean{
|
|
108
|
+
return !this.loading || this.emissions.length > 1;
|
|
109
|
+
},
|
|
112
110
|
allFetched(): boolean {
|
|
113
111
|
return this.dfirst >= this.totalCount;
|
|
114
112
|
},
|
|
@@ -165,12 +163,10 @@ export default defineComponent({
|
|
|
165
163
|
},
|
|
166
164
|
methods: {
|
|
167
165
|
async fetchContent(reset: boolean): Promise<void> {
|
|
168
|
-
this.
|
|
166
|
+
this.loading = true;
|
|
169
167
|
if (reset) {
|
|
170
168
|
this.emissions.length = 0;
|
|
171
169
|
this.dfirst = 0;
|
|
172
|
-
this.loading = true;
|
|
173
|
-
this.loaded = false;
|
|
174
170
|
}
|
|
175
171
|
const param: FetchParam = {
|
|
176
172
|
first: this.dfirst,
|
|
@@ -196,7 +192,6 @@ export default defineComponent({
|
|
|
196
192
|
this.dfirst = 0;
|
|
197
193
|
}
|
|
198
194
|
this.loading = false;
|
|
199
|
-
this.loaded = true;
|
|
200
195
|
this.displayCount = data.count;
|
|
201
196
|
this.emissions = this.emissions.concat(data.result).filter((e: Emission|null) => {
|
|
202
197
|
if (null === e) {
|
|
@@ -206,11 +201,7 @@ export default defineComponent({
|
|
|
206
201
|
});
|
|
207
202
|
this.dfirst += this.dsize;
|
|
208
203
|
this.totalCount = data.count;
|
|
209
|
-
this.
|
|
210
|
-
},
|
|
211
|
-
displayMore(event: { preventDefault: () => void }): void {
|
|
212
|
-
event.preventDefault();
|
|
213
|
-
this.fetchContent(false);
|
|
204
|
+
this.loading = false;
|
|
214
205
|
},
|
|
215
206
|
async fetchRubriques(): Promise<void> {
|
|
216
207
|
const data = await octopusApi.fetchTopic(this.displayRubriquage);
|