@saooti/octopus-sdk 30.0.5 → 30.0.9
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 -0
- package/index.ts +13 -2
- package/package.json +1 -1
- package/src/assets/bootstrap-diff.scss +17 -25
- package/src/assets/form.scss +7 -52
- package/src/assets/general.scss +56 -170
- package/src/assets/live.scss +39 -0
- package/src/assets/modal.scss +14 -18
- package/src/assets/multiselect.scss +30 -77
- 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 +7 -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 -150
- package/src/components/display/filter/CategoryFilter.vue +9 -13
- package/src/components/display/filter/MonetizableFilter.vue +3 -5
- package/src/components/display/filter/ProductorSearch.vue +20 -40
- package/src/components/display/filter/RubriqueChoice.vue +6 -8
- 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 -23
- package/src/components/display/organisation/OrganisationChooserLight.vue +8 -2
- 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 +5 -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 +22 -46
- 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 +108 -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/Popover.vue +8 -2
- package/src/components/misc/TopBar.vue +140 -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'"
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
<template v-else>
|
|
19
19
|
<b
|
|
20
20
|
:id="'popover-comment' + comment.comId"
|
|
21
|
+
tabindex="-1"
|
|
21
22
|
class="mr-2 text-danger"
|
|
22
23
|
>{{
|
|
23
24
|
comment.name
|
|
@@ -91,7 +92,7 @@
|
|
|
91
92
|
>
|
|
92
93
|
<button
|
|
93
94
|
v-if="null === comment.commentIdReferer && 'Valid' === comment.status"
|
|
94
|
-
class="btn
|
|
95
|
+
class="btn py-1 px-3 primary-color me-2"
|
|
95
96
|
:data-selenium="'answer-button-comment-' + seleniumFormat(comment.name)"
|
|
96
97
|
@click="answerComment"
|
|
97
98
|
>
|
|
@@ -103,7 +104,7 @@
|
|
|
103
104
|
(isFlat && comment.commentIdReferer)
|
|
104
105
|
"
|
|
105
106
|
:id="'commentItem'+comment.comId"
|
|
106
|
-
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"
|
|
107
108
|
type="button"
|
|
108
109
|
data-bs-toggle="collapse"
|
|
109
110
|
:data-bs-target="'#commentItemDetail'+comment.comId"
|
|
@@ -123,7 +124,7 @@
|
|
|
123
124
|
<div v-else>
|
|
124
125
|
{{ $t('In response to') }}
|
|
125
126
|
</div>
|
|
126
|
-
<span class="saooti-arrow_down
|
|
127
|
+
<span class="saooti-arrow_down" />
|
|
127
128
|
</div>
|
|
128
129
|
<div class="d-flex align-items-center when-opened">
|
|
129
130
|
<div v-if="comment.relatedComments">
|
|
@@ -133,7 +134,7 @@
|
|
|
133
134
|
{{ $t('In response to') }}
|
|
134
135
|
</div>
|
|
135
136
|
<span
|
|
136
|
-
class="saooti-arrow_down
|
|
137
|
+
class="saooti-arrow_down arrow-transform me-2"
|
|
137
138
|
/>
|
|
138
139
|
</div>
|
|
139
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);
|