@saooti/octopus-sdk 30.0.8 → 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 +2 -1
- package/package.json +1 -1
- package/src/assets/bootstrap-diff.scss +15 -24
- package/src/assets/form.scss +0 -37
- package/src/assets/general.scss +44 -152
- 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 -256
- 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/edit/EditCommentBox.vue +8 -16
- package/src/components/display/emission/EmissionChooser.vue +1 -3
- package/src/components/display/emission/EmissionInlineList.vue +11 -2
- 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 +9 -8
- package/src/components/display/filter/AdvancedSearch.vue +11 -45
- package/src/components/display/filter/MonetizableFilter.vue +2 -4
- package/src/components/display/filter/ProductorSearch.vue +0 -1
- package/src/components/display/filter/RubriqueChoice.vue +4 -6
- package/src/components/display/filter/RubriqueFilter.vue +0 -1
- 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/participant/ParticipantItem.vue +7 -19
- package/src/components/display/participant/ParticipantList.vue +39 -52
- package/src/components/display/playlist/PlaylistItem.vue +1 -1
- package/src/components/display/playlist/PlaylistList.vue +8 -14
- package/src/components/display/playlist/PodcastList.vue +14 -22
- 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 +13 -47
- package/src/components/display/podcasts/PodcastImage.vue +26 -83
- package/src/components/display/podcasts/PodcastInlineList.vue +13 -35
- package/src/components/display/podcasts/PodcastItem.vue +4 -4
- 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 +6 -26
- 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 +2 -2
- package/src/components/display/sharing/SharePlayerColors.vue +3 -7
- package/src/components/display/sharing/SharePlayerTypes.vue +1 -2
- package/src/components/display/sharing/SubscribeButtons.vue +1 -3
- package/src/components/misc/ErrorMessage.vue +3 -0
- package/src/components/misc/HomeDropdown.vue +2 -2
- package/src/components/misc/LeftMenu.vue +1 -1
- package/src/components/misc/Player.vue +1 -1
- package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
- package/src/components/misc/PlayerProgressBar.vue +1 -1
- package/src/components/misc/TopBar.vue +1 -1
- package/src/components/pages/Lives.vue +0 -1
- package/src/components/pages/Participant.vue +1 -1
- package/src/sass/_variables.scss +0 -1
- package/src/store/class/general/media.ts +1 -1
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<div
|
|
4
|
-
class="d-flex justify-content-center mb-3"
|
|
4
|
+
class="d-flex justify-content-center mb-3 text-secondary c-hand"
|
|
5
5
|
@click="showFilters = !showFilters"
|
|
6
6
|
>
|
|
7
|
-
<div
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<div
|
|
11
|
-
class="text-secondary c-hand align-self-center large-font-size"
|
|
7
|
+
<div>{{ $t('Advanced filters') }}</div>
|
|
8
|
+
<div
|
|
9
|
+
class="h3 saooti-arrow_down m-0"
|
|
12
10
|
:class="{ 'arrow-transform': showFilters }"
|
|
13
|
-
|
|
14
|
-
<div class="saooti-arrow_down saooti-arrow_down-margin" />
|
|
15
|
-
</div>
|
|
11
|
+
/>
|
|
16
12
|
</div>
|
|
17
13
|
<div
|
|
18
14
|
v-show="showFilters"
|
|
@@ -23,8 +19,7 @@
|
|
|
23
19
|
{{ $t('Filter') }}
|
|
24
20
|
</div>
|
|
25
21
|
<MonetizableFilter
|
|
26
|
-
v-if="isMonetizableFilter"
|
|
27
|
-
:is-education="isEducation"
|
|
22
|
+
v-if="isMonetizableFilter && !isEducation"
|
|
28
23
|
:is-emission="isEmission"
|
|
29
24
|
@updateMonetization="updateMonetization"
|
|
30
25
|
/>
|
|
@@ -116,7 +111,7 @@
|
|
|
116
111
|
</div>
|
|
117
112
|
</div>
|
|
118
113
|
<div class="d-flex flex-column">
|
|
119
|
-
<div class="primary-color mb-2
|
|
114
|
+
<div class="primary-color mb-2">
|
|
120
115
|
{{ $t('Sort') }}
|
|
121
116
|
</div>
|
|
122
117
|
<ClassicRadio
|
|
@@ -175,10 +170,6 @@ export default defineComponent({
|
|
|
175
170
|
return {
|
|
176
171
|
isFrom: false as boolean,
|
|
177
172
|
isTo: false as boolean,
|
|
178
|
-
lang: {
|
|
179
|
-
ok: this.$t('Validate') as string,
|
|
180
|
-
cancel: this.$t('Cancel') as string,
|
|
181
|
-
},
|
|
182
173
|
fromDate: moment().subtract(10, 'days').toISOString() as string,
|
|
183
174
|
toDate: moment().toISOString() as string,
|
|
184
175
|
isNotVisible: false as boolean,
|
|
@@ -339,18 +330,6 @@ export default defineComponent({
|
|
|
339
330
|
</script>
|
|
340
331
|
|
|
341
332
|
<style lang="scss">
|
|
342
|
-
|
|
343
|
-
.padding-left-custom-radio {
|
|
344
|
-
padding-left: 1.5rem;
|
|
345
|
-
@media (max-width: 720px) {
|
|
346
|
-
padding-left: 0;
|
|
347
|
-
margin-top: 1rem;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
.large-font-size {
|
|
351
|
-
font-size: 1.3rem;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
333
|
.advanced-search-container {
|
|
355
334
|
background: #fff;
|
|
356
335
|
border-radius: 0.8rem;
|
|
@@ -363,35 +342,22 @@ export default defineComponent({
|
|
|
363
342
|
flex-wrap: wrap;
|
|
364
343
|
justify-content: flex-start;
|
|
365
344
|
}
|
|
366
|
-
|
|
367
345
|
@media (max-width: 450px) {
|
|
368
346
|
flex-direction: column;
|
|
369
|
-
|
|
370
|
-
|
|
347
|
+
padding: 1rem;
|
|
348
|
+
.vdatetime, label {
|
|
349
|
+
padding: 0.5rem 0 !important;
|
|
371
350
|
width: 100%;
|
|
372
351
|
input {
|
|
373
352
|
width: 100%;
|
|
374
353
|
}
|
|
375
354
|
}
|
|
376
|
-
padding: 1rem;
|
|
377
|
-
|
|
378
|
-
label.wrap {
|
|
379
|
-
width: 100%;
|
|
380
|
-
margin: 0.5em 0;
|
|
381
|
-
position: relative;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
@media (min-width: 401px) {
|
|
386
|
-
label.wrap {
|
|
387
|
-
position: relative;
|
|
388
|
-
margin: 0;
|
|
389
|
-
}
|
|
390
355
|
}
|
|
391
356
|
select {
|
|
392
357
|
-webkit-appearance: none;
|
|
393
358
|
-moz-appearance: none;
|
|
394
359
|
appearance: none;
|
|
360
|
+
padding-right: 40px;
|
|
395
361
|
}
|
|
396
362
|
}
|
|
397
363
|
</style>
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
|
-
v-if="!isEducation"
|
|
4
3
|
class="d-flex align-items-center"
|
|
5
4
|
>
|
|
6
5
|
<div>{{ $t('Advertising') + ' :' }}</div>
|
|
7
|
-
<label class="
|
|
6
|
+
<label class="position-relative">
|
|
8
7
|
<select
|
|
9
8
|
ref="select"
|
|
10
9
|
v-model="monetization"
|
|
@@ -24,7 +23,7 @@
|
|
|
24
23
|
<option value="YES">{{ $t('Authorized advertising') }}</option>
|
|
25
24
|
<option value="NO">{{ $t('Prohibited advertising') }}</option>
|
|
26
25
|
</select>
|
|
27
|
-
<div class="saooti-arrow_down octopus-arrow-down
|
|
26
|
+
<div class="saooti-arrow_down octopus-arrow-down" />
|
|
28
27
|
</label>
|
|
29
28
|
</div>
|
|
30
29
|
</template>
|
|
@@ -34,7 +33,6 @@ import { defineComponent } from 'vue'
|
|
|
34
33
|
export default defineComponent({
|
|
35
34
|
props: {
|
|
36
35
|
isEmission: { default: false, type: Boolean},
|
|
37
|
-
isEducation: { default: false, type: Boolean},
|
|
38
36
|
},
|
|
39
37
|
emits: ['updateMonetization'],
|
|
40
38
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="d-flex align-items-center">
|
|
3
|
-
<label class="
|
|
3
|
+
<label class="position-relative">
|
|
4
4
|
<select
|
|
5
5
|
v-model="rubriquageId"
|
|
6
6
|
class="ms-2 mb-0 c-hand"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
>{{ rubriquage.title }}</option>
|
|
14
14
|
</select>
|
|
15
15
|
<div
|
|
16
|
-
class="saooti-arrow_down octopus-arrow-down
|
|
16
|
+
class="saooti-arrow_down octopus-arrow-down"
|
|
17
17
|
/>
|
|
18
18
|
</label>
|
|
19
19
|
<template v-if="rubriquageId">
|
|
@@ -36,12 +36,10 @@
|
|
|
36
36
|
</template>
|
|
37
37
|
<button
|
|
38
38
|
v-if="index"
|
|
39
|
-
class="btn
|
|
39
|
+
class="btn admin-button ms-1 saooti-bin"
|
|
40
40
|
aria-label="delete"
|
|
41
41
|
@click="deleteRubriquage"
|
|
42
|
-
|
|
43
|
-
<span class="saooti-bin" />
|
|
44
|
-
</button>
|
|
42
|
+
/>
|
|
45
43
|
</div>
|
|
46
44
|
</template>
|
|
47
45
|
|
|
@@ -61,7 +61,6 @@ export default defineComponent({
|
|
|
61
61
|
rubriqueId: [] as Array<number>,
|
|
62
62
|
arrayFilter: [] as Array<RubriquageFilter>,
|
|
63
63
|
rubriquageData: [] as Array<Rubriquage>,
|
|
64
|
-
reset: false as boolean,
|
|
65
64
|
saveOrganisation: "" as string,
|
|
66
65
|
isInit: true as boolean,
|
|
67
66
|
isInternChanged: false as boolean,
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
<h3>{{ $t('This live will start') }}</h3>
|
|
4
4
|
<h3
|
|
5
5
|
v-if="countdownTimer"
|
|
6
|
-
ref="countdown"
|
|
7
6
|
>
|
|
8
7
|
{{
|
|
9
8
|
$t('In days hours minutes seconds', {
|
|
@@ -44,6 +43,10 @@ export default defineComponent({
|
|
|
44
43
|
this.timer();
|
|
45
44
|
}, 1000);
|
|
46
45
|
},
|
|
46
|
+
unmounted() {
|
|
47
|
+
clearInterval(this.countdownTimer);
|
|
48
|
+
},
|
|
49
|
+
|
|
47
50
|
methods: {
|
|
48
51
|
timer(): void {
|
|
49
52
|
this.days = Math.floor(this.seconds / 24 / 60 / 60);
|
|
@@ -52,7 +55,6 @@ export default defineComponent({
|
|
|
52
55
|
const minutesLeft = Math.floor(hoursLeft - this.hours * 3600);
|
|
53
56
|
this.minutes = Math.floor(minutesLeft / 60);
|
|
54
57
|
this.remainingSeconds = this.seconds % 60;
|
|
55
|
-
/* this.$refs.countdown.innerHTML = this.pad(days) + ":" + this.pad(hours) + ":" + this.pad(minutes) + ":" + this.pad(remainingSeconds); */
|
|
56
58
|
if (0 === this.seconds) {
|
|
57
59
|
clearInterval((this.countdownTimer as unknown as number));
|
|
58
60
|
this.countdownTimer = undefined;
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</router-link>
|
|
47
47
|
<div class="d-flex flex-column live-special-width">
|
|
48
48
|
<router-link
|
|
49
|
-
class="text-uppercase
|
|
49
|
+
class="text-uppercase fw-bold text-truncate"
|
|
50
50
|
:to="{
|
|
51
51
|
name: 'podcast',
|
|
52
52
|
params: { podcastId: live.podcastId },
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
{{ live.title }}
|
|
57
57
|
</router-link>
|
|
58
58
|
<router-link
|
|
59
|
-
class="
|
|
59
|
+
class="fw-bold text-truncate"
|
|
60
60
|
:to="{
|
|
61
61
|
name: 'emission',
|
|
62
62
|
params: { emissionId: live.emission.emissionId },
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
v-for="animator in live.animators"
|
|
88
88
|
:key="animator.participantId"
|
|
89
89
|
:aria-label="$t('Participant')"
|
|
90
|
-
class="
|
|
90
|
+
class="fw-bold"
|
|
91
91
|
:to="{
|
|
92
92
|
name: 'participant',
|
|
93
93
|
params: { participantId: animator.participantId },
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
<div v-if="!isPodcastmaker">
|
|
101
101
|
{{ $t('Producted by : ') }}
|
|
102
102
|
<router-link
|
|
103
|
-
class="
|
|
103
|
+
class="fw-bold"
|
|
104
104
|
:to="{
|
|
105
105
|
name: 'productor',
|
|
106
106
|
params: { productorId: live.organisation.id },
|
|
@@ -1,117 +1,41 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="filterOrga || organisationId"
|
|
4
|
-
class="d-flex flex-column align-items-center
|
|
4
|
+
class="d-flex flex-column align-items-center"
|
|
5
5
|
>
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<div class="spinner-border me-3" />
|
|
11
|
-
<h3 class="mt-2">
|
|
12
|
-
{{ $t('Loading lives...') }}
|
|
13
|
-
</h3>
|
|
14
|
-
</div>
|
|
15
|
-
<div
|
|
16
|
-
v-if="
|
|
17
|
-
loaded && !lives.length && !livesToBe.length && !livesTerminated.length
|
|
18
|
-
"
|
|
19
|
-
>
|
|
20
|
-
<p>{{ $t('No live currently') }}</p>
|
|
21
|
-
</div>
|
|
6
|
+
<ClassicLoading
|
|
7
|
+
:loading-text="loading?$t('Loading lives...'):undefined"
|
|
8
|
+
:error-text="isNoLive?$t('No live currently'):undefined"
|
|
9
|
+
/>
|
|
22
10
|
<div v-if="loaded && displayNextLiveMessage">
|
|
23
11
|
<h3 class="text-danger">
|
|
24
12
|
{{ displayNextLiveMessage }}
|
|
25
13
|
</h3>
|
|
26
14
|
</div>
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<LiveItem
|
|
47
|
-
v-for="(l, index) in livesNotStarted"
|
|
48
|
-
:key="l.podcastId"
|
|
49
|
-
class="mt-3"
|
|
50
|
-
:fetch-conference="l"
|
|
51
|
-
:index="index"
|
|
52
|
-
@deleteItem="deleteLiveNotStarted"
|
|
53
|
-
/>
|
|
54
|
-
</template>
|
|
55
|
-
<template v-if="livesToBe.length">
|
|
56
|
-
<div class="horizontal-separator" />
|
|
57
|
-
<p class="live-list-category">
|
|
58
|
-
{{ $t('Live to be') }}
|
|
59
|
-
</p>
|
|
60
|
-
<LiveItem
|
|
61
|
-
v-for="(l, index) in livesToBe"
|
|
62
|
-
:key="l.podcastId"
|
|
63
|
-
class="mt-3"
|
|
64
|
-
:fetch-conference="l"
|
|
65
|
-
:index="index"
|
|
66
|
-
@deleteItem="deleteLiveToBe"
|
|
67
|
-
/>
|
|
68
|
-
</template>
|
|
69
|
-
<template v-if="livesTerminated.length">
|
|
70
|
-
<div class="horizontal-separator" />
|
|
71
|
-
<p class="live-list-category">
|
|
72
|
-
{{ $t('Live terminated') }}
|
|
73
|
-
</p>
|
|
74
|
-
<LiveItem
|
|
75
|
-
v-for="(l, index) in livesTerminated"
|
|
76
|
-
:key="l.podcastId"
|
|
77
|
-
class="mt-3"
|
|
78
|
-
:fetch-conference="l"
|
|
79
|
-
:index="index"
|
|
80
|
-
@deleteItem="deleteLiveTerminated"
|
|
81
|
-
/>
|
|
82
|
-
</template>
|
|
83
|
-
<template v-if="livesPublishing.length">
|
|
84
|
-
<div class="horizontal-separator" />
|
|
85
|
-
<p class="live-list-category">
|
|
86
|
-
{{ $t('Publishing') }}
|
|
87
|
-
</p>
|
|
88
|
-
<LiveItem
|
|
89
|
-
v-for="(l, index) in livesPublishing"
|
|
90
|
-
:key="l.podcastId"
|
|
91
|
-
class="mt-3"
|
|
92
|
-
:fetch-conference="l"
|
|
93
|
-
:index="index"
|
|
94
|
-
@deleteItem="deleteLivePublishing"
|
|
95
|
-
/>
|
|
96
|
-
</template>
|
|
97
|
-
<template v-if="livesError.length">
|
|
98
|
-
<div class="horizontal-separator" />
|
|
99
|
-
<p class="live-list-category">
|
|
100
|
-
{{ $t('In error') }}
|
|
101
|
-
</p>
|
|
102
|
-
<LiveItem
|
|
103
|
-
v-for="(l, index) in livesError"
|
|
104
|
-
:key="l.podcastId"
|
|
105
|
-
class="mt-3"
|
|
106
|
-
:fetch-conference="l"
|
|
107
|
-
:index="index"
|
|
108
|
-
@deleteItem="deleteLiveError"
|
|
109
|
-
/>
|
|
110
|
-
</template>
|
|
15
|
+
<div
|
|
16
|
+
v-for="(live, indexLive) in livesArray"
|
|
17
|
+
:key="live.status"
|
|
18
|
+
>
|
|
19
|
+
<template v-if="live.lives.length">
|
|
20
|
+
<hr>
|
|
21
|
+
<p class="live-list-category">
|
|
22
|
+
{{ live.title }}
|
|
23
|
+
</p>
|
|
24
|
+
<LiveItem
|
|
25
|
+
v-for="(l, index) in live.lives"
|
|
26
|
+
:key="l.podcastId"
|
|
27
|
+
class="mt-3"
|
|
28
|
+
:fetch-conference="l"
|
|
29
|
+
:index="index"
|
|
30
|
+
@deleteItem="deleteLive(indexLive, $event)"
|
|
31
|
+
/>
|
|
32
|
+
</template>
|
|
33
|
+
</div>
|
|
111
34
|
</div>
|
|
112
35
|
</template>
|
|
113
36
|
|
|
114
37
|
<script lang="ts">
|
|
38
|
+
import ClassicLoading from '../../form/ClassicLoading.vue';
|
|
115
39
|
import LiveItem from './LiveItem.vue';
|
|
116
40
|
import octopusApi from '@saooti/octopus-api';
|
|
117
41
|
import moment from 'moment';
|
|
@@ -122,6 +46,7 @@ export default defineComponent({
|
|
|
122
46
|
name: 'LiveList',
|
|
123
47
|
components: {
|
|
124
48
|
LiveItem,
|
|
49
|
+
ClassicLoading
|
|
125
50
|
},
|
|
126
51
|
|
|
127
52
|
props: {
|
|
@@ -129,21 +54,25 @@ export default defineComponent({
|
|
|
129
54
|
organisationId: { default: undefined, type: String},
|
|
130
55
|
},
|
|
131
56
|
emits: ['initConferenceIds'],
|
|
132
|
-
|
|
133
57
|
data() {
|
|
134
58
|
return {
|
|
135
59
|
loading: true as boolean,
|
|
136
60
|
loaded: true as boolean,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
61
|
+
livesArray: [
|
|
62
|
+
{status: "RECORDING", title:this.$t('In live'), lives:[]},
|
|
63
|
+
{status: "PENDING", title:this.$t('This live is not started yet'), lives:[]},
|
|
64
|
+
{status: "PLANNED", title:this.$t('Live to be'), lives:[]},
|
|
65
|
+
{status: "DEBRIEFING", title:this.$t('Live terminated'), lives:[]},
|
|
66
|
+
{status: "PUBLISHING", title:this.$t('Publishing'), lives:[]},
|
|
67
|
+
{status: "ERROR", title:this.$t('In error'), lives:[]}
|
|
68
|
+
] as Array<{status:string, title:string, lives:Array<Conference>}>
|
|
143
69
|
};
|
|
144
70
|
},
|
|
145
71
|
|
|
146
72
|
computed: {
|
|
73
|
+
isNoLive(): boolean{
|
|
74
|
+
return this.loaded && !this.livesArray[0].lives.length && !this.livesArray[2].lives.length && !this.livesArray[3].lives.length;
|
|
75
|
+
},
|
|
147
76
|
filterOrgaUsed(): string|undefined {
|
|
148
77
|
if (this.filterOrga) return this.filterOrga;
|
|
149
78
|
if (this.organisationId) return this.organisationId;
|
|
@@ -153,12 +82,12 @@ export default defineComponent({
|
|
|
153
82
|
return this.$store.state.filter.organisationId;
|
|
154
83
|
},
|
|
155
84
|
displayNextLiveMessage(): string {
|
|
156
|
-
if (0 !== this.lives.length) return '';
|
|
157
|
-
if (this.
|
|
85
|
+
if (0 !== this.livesArray[0].lives.length) return '';
|
|
86
|
+
if (this.livesArray[1].lives.length > 0)
|
|
158
87
|
return this.$t('A live can start any moment').toString();
|
|
159
|
-
if (this.
|
|
88
|
+
if (this.livesArray[2].lives.length > 0)
|
|
160
89
|
return this.$t('Next live date', {
|
|
161
|
-
date: moment(this.
|
|
90
|
+
date: moment(this.livesArray[2].lives[0].date).format('LLLL'),
|
|
162
91
|
}).toString();
|
|
163
92
|
return '';
|
|
164
93
|
},
|
|
@@ -219,12 +148,9 @@ export default defineComponent({
|
|
|
219
148
|
},
|
|
220
149
|
methods: {
|
|
221
150
|
initArrays(): void {
|
|
222
|
-
this.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
this.livesTerminated.length = 0;
|
|
226
|
-
this.livesError.length = 0;
|
|
227
|
-
this.livesPublishing.length = 0;
|
|
151
|
+
for (let i = 0, len = this.livesArray.length; i < len; i++) {
|
|
152
|
+
this.livesArray[i].lives.length = 0;
|
|
153
|
+
}
|
|
228
154
|
},
|
|
229
155
|
async fetchContent(): Promise<void> {
|
|
230
156
|
this.initArrays();
|
|
@@ -235,89 +161,48 @@ export default defineComponent({
|
|
|
235
161
|
}
|
|
236
162
|
this.loading = true;
|
|
237
163
|
this.loaded = false;
|
|
238
|
-
const dataLives = await octopusApi.listConferences(
|
|
239
|
-
this.filterOrgaUsed,
|
|
240
|
-
true,
|
|
241
|
-
'RECORDING'
|
|
242
|
-
);
|
|
243
|
-
this.lives = dataLives.filter((p: Conference | null) => {
|
|
244
|
-
return null !== p;
|
|
245
|
-
});
|
|
246
|
-
const dataLivesToBe = await octopusApi.listConferences(
|
|
247
|
-
this.filterOrgaUsed,
|
|
248
|
-
true,
|
|
249
|
-
'PENDING'
|
|
250
|
-
);
|
|
251
164
|
let indexPast = 0;
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
break;
|
|
165
|
+
let dataLivesToBe: Array<Conference> = [];
|
|
166
|
+
for (let i = 0, len = this.livesArray.length; i < len; i++) {
|
|
167
|
+
if (!this.organisationRight &&
|
|
168
|
+
("DEBRIEFING"===this.livesArray[i].status ||"ERROR"===this.livesArray[i].status ||"PUBLISHING"===this.livesArray[i].status)) {
|
|
169
|
+
continue;
|
|
258
170
|
}
|
|
259
|
-
|
|
260
|
-
const dataLivesPlanned = await octopusApi.listConferences(
|
|
261
|
-
this.filterOrgaUsed,
|
|
262
|
-
true,
|
|
263
|
-
'PLANNED'
|
|
264
|
-
);
|
|
265
|
-
this.livesToBe = dataLivesToBe
|
|
266
|
-
.slice(indexPast)
|
|
267
|
-
.concat(dataLivesPlanned)
|
|
268
|
-
.filter((p: Conference | null) => {
|
|
269
|
-
return null !== p;
|
|
270
|
-
});
|
|
271
|
-
if (this.organisationRight) {
|
|
272
|
-
const dataLivesTerminated = await octopusApi.listConferences(
|
|
273
|
-
this.filterOrgaUsed,
|
|
274
|
-
true,
|
|
275
|
-
'DEBRIEFING'
|
|
276
|
-
);
|
|
277
|
-
this.livesTerminated = dataLivesTerminated.filter((p: Conference | null) => {
|
|
278
|
-
return null !== p;
|
|
279
|
-
});
|
|
280
|
-
const dataLivesError = await octopusApi.listConferences(
|
|
171
|
+
const dataLives = await octopusApi.listConferences(
|
|
281
172
|
this.filterOrgaUsed,
|
|
282
173
|
true,
|
|
283
|
-
|
|
174
|
+
this.livesArray[i].status
|
|
284
175
|
);
|
|
285
|
-
this.
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
176
|
+
if("PLANNED"!==this.livesArray[i].status && "PENDING"!==this.livesArray[i].status){
|
|
177
|
+
this.livesArray[i].lives = dataLives.filter((p: Conference | null) => {
|
|
178
|
+
return null !== p;
|
|
179
|
+
});
|
|
180
|
+
}else if("PENDING"===this.livesArray[i].status){
|
|
181
|
+
dataLivesToBe = dataLives;
|
|
182
|
+
for (let index = 0, len = this.livesArray[i].lives.length; index < len; index++) {
|
|
183
|
+
if (moment(dataLives[index].date).isBefore(moment())) {
|
|
184
|
+
this.livesArray[i].lives.push(dataLives[index]);
|
|
185
|
+
indexPast = index + 1;
|
|
186
|
+
} else {break;}
|
|
187
|
+
}
|
|
188
|
+
}else{
|
|
189
|
+
this.livesArray[i].lives = dataLivesToBe
|
|
190
|
+
.slice(indexPast)
|
|
191
|
+
.concat(dataLives)
|
|
192
|
+
.filter((p: Conference | null) => {
|
|
193
|
+
return null !== p;
|
|
194
|
+
});
|
|
195
|
+
}
|
|
296
196
|
}
|
|
297
|
-
const listIds = this.lives
|
|
298
|
-
.concat(this.
|
|
299
|
-
.concat(this.
|
|
197
|
+
const listIds = this.livesArray[0].lives
|
|
198
|
+
.concat(this.livesArray[1].lives)
|
|
199
|
+
.concat(this.livesArray[2].lives);
|
|
300
200
|
this.$emit('initConferenceIds', listIds);
|
|
301
201
|
this.loading = false;
|
|
302
202
|
this.loaded = true;
|
|
303
203
|
},
|
|
304
|
-
deleteLive(index: number): void {
|
|
305
|
-
this.lives.splice(index, 1);
|
|
306
|
-
},
|
|
307
|
-
deleteLiveToBe(index: number): void {
|
|
308
|
-
this.livesToBe.splice(index, 1);
|
|
309
|
-
},
|
|
310
|
-
deleteLiveTerminated(index: number): void {
|
|
311
|
-
this.livesTerminated.splice(index, 1);
|
|
312
|
-
},
|
|
313
|
-
deleteLiveError(index: number): void {
|
|
314
|
-
this.livesError.splice(index, 1);
|
|
315
|
-
},
|
|
316
|
-
deleteLiveNotStarted(index: number): void {
|
|
317
|
-
this.livesNotStarted.splice(index, 1);
|
|
318
|
-
},
|
|
319
|
-
deleteLivePublishing(index: number): void {
|
|
320
|
-
this.livesPublishing.splice(index, 1);
|
|
204
|
+
deleteLive(indexLives: number, index: number): void {
|
|
205
|
+
this.livesArray[indexLives].lives.splice(index, 1);
|
|
321
206
|
},
|
|
322
207
|
updateLiveLocal(): void {
|
|
323
208
|
for (
|
|
@@ -326,25 +211,25 @@ export default defineComponent({
|
|
|
326
211
|
index++
|
|
327
212
|
) {
|
|
328
213
|
const element = this.conferenceWatched[index];
|
|
329
|
-
const indexLivesToBe = this.
|
|
214
|
+
const indexLivesToBe = this.livesArray[1].lives.findIndex(
|
|
330
215
|
(el: Conference) => el.conferenceId === element.conferenceId
|
|
331
216
|
);
|
|
332
217
|
if (-1 === indexLivesToBe) {
|
|
333
|
-
const indexLives = this.lives.findIndex(
|
|
218
|
+
const indexLives = this.livesArray[0].lives.findIndex(
|
|
334
219
|
(el: Conference) => el.conferenceId === element.conferenceId
|
|
335
220
|
);
|
|
336
221
|
if (-1 === indexLives || 'DEBRIEFING' !== element.status) continue;
|
|
337
|
-
const newConf = this.lives[indexLives];
|
|
222
|
+
const newConf = this.livesArray[0].lives[indexLives];
|
|
338
223
|
newConf.status = element.status;
|
|
339
|
-
this.lives.splice(indexLives, 1);
|
|
340
|
-
this.
|
|
224
|
+
this.livesArray[0].lives.splice(indexLives, 1);
|
|
225
|
+
this.livesArray[3].lives.push(newConf);
|
|
341
226
|
break;
|
|
342
227
|
}
|
|
343
228
|
if ('RECORDING' !== element.status) continue;
|
|
344
|
-
const newConf = this.
|
|
229
|
+
const newConf = this.livesArray[1].lives[indexLivesToBe];
|
|
345
230
|
newConf.status = element.status;
|
|
346
|
-
this.
|
|
347
|
-
this.lives.push(newConf);
|
|
231
|
+
this.livesArray[1].lives.splice(indexLivesToBe, 1);
|
|
232
|
+
this.livesArray[0].lives.push(newConf);
|
|
348
233
|
break;
|
|
349
234
|
}
|
|
350
235
|
},
|
|
@@ -353,24 +238,9 @@ export default defineComponent({
|
|
|
353
238
|
</script>
|
|
354
239
|
|
|
355
240
|
<style lang="scss">
|
|
356
|
-
.live-list-container .horizontal-separator {
|
|
357
|
-
border-top: 1px solid #cccccc;
|
|
358
|
-
width: 100%;
|
|
359
|
-
margin: 2rem;
|
|
360
|
-
}
|
|
361
241
|
.live-list-category {
|
|
362
242
|
align-self: flex-start;
|
|
363
243
|
text-transform: uppercase;
|
|
364
244
|
font-weight: bold;
|
|
365
245
|
}
|
|
366
|
-
|
|
367
|
-
@media (max-width: 450px) {
|
|
368
|
-
.live-list-container h3 {
|
|
369
|
-
text-align: center;
|
|
370
|
-
font-size: 1rem;
|
|
371
|
-
}
|
|
372
|
-
.live-list-container .horizontal-separator {
|
|
373
|
-
margin: 1rem;
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
246
|
</style>
|