@saooti/octopus-sdk 30.0.8 → 30.0.12

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.
Files changed (67) hide show
  1. package/README.md +5 -1
  2. package/index.ts +5 -2
  3. package/package.json +1 -1
  4. package/src/assets/bootstrap-diff.scss +16 -27
  5. package/src/assets/form.scss +9 -38
  6. package/src/assets/general.scss +50 -154
  7. package/src/assets/live.scss +39 -0
  8. package/src/assets/modal.scss +14 -18
  9. package/src/assets/multiselect.scss +4 -85
  10. package/src/assets/octopus-library.scss +1 -0
  11. package/src/assets/share.scss +149 -256
  12. package/src/assets/transition.scss +95 -1
  13. package/src/components/display/categories/CategoryChooser.vue +1 -1
  14. package/src/components/display/categories/CategoryList.vue +2 -4
  15. package/src/components/display/comments/CommentInput.vue +2 -2
  16. package/src/components/display/comments/CommentItem.vue +6 -7
  17. package/src/components/display/comments/CommentParentInfo.vue +1 -1
  18. package/src/components/display/edit/EditCommentBox.vue +8 -16
  19. package/src/components/display/emission/EmissionChooser.vue +1 -3
  20. package/src/components/display/emission/EmissionInlineList.vue +11 -2
  21. package/src/components/display/emission/EmissionItem.vue +22 -64
  22. package/src/components/display/emission/EmissionList.vue +59 -68
  23. package/src/components/display/emission/EmissionPlayerItem.vue +9 -8
  24. package/src/components/display/filter/AdvancedSearch.vue +11 -45
  25. package/src/components/display/filter/MonetizableFilter.vue +2 -4
  26. package/src/components/display/filter/ProductorSearch.vue +0 -1
  27. package/src/components/display/filter/RubriqueChoice.vue +4 -6
  28. package/src/components/display/filter/RubriqueFilter.vue +0 -1
  29. package/src/components/display/live/CountDown.vue +4 -2
  30. package/src/components/display/live/LiveHorizontalList.vue +1 -1
  31. package/src/components/display/live/LiveItem.vue +4 -4
  32. package/src/components/display/live/LiveList.vue +84 -214
  33. package/src/components/display/organisation/OrganisationChooser.vue +5 -26
  34. package/src/components/display/participant/ParticipantItem.vue +7 -19
  35. package/src/components/display/participant/ParticipantList.vue +39 -52
  36. package/src/components/display/playlist/PlaylistItem.vue +1 -1
  37. package/src/components/display/playlist/PlaylistList.vue +8 -14
  38. package/src/components/display/playlist/PodcastList.vue +14 -22
  39. package/src/components/display/podcasts/AnimatorsItem.vue +0 -1
  40. package/src/components/display/podcasts/ParticipantDescription.vue +4 -16
  41. package/src/components/display/podcasts/PodcastFilterList.vue +13 -47
  42. package/src/components/display/podcasts/PodcastImage.vue +26 -83
  43. package/src/components/display/podcasts/PodcastInlineList.vue +13 -35
  44. package/src/components/display/podcasts/PodcastItem.vue +4 -4
  45. package/src/components/display/podcasts/PodcastList.vue +7 -14
  46. package/src/components/display/podcasts/PodcastModuleBox.vue +9 -28
  47. package/src/components/display/podcasts/TagList.vue +2 -3
  48. package/src/components/display/rubriques/RubriqueChooser.vue +2 -2
  49. package/src/components/display/rubriques/RubriqueList.vue +5 -25
  50. package/src/components/display/sharing/PlayerParameters.vue +6 -26
  51. package/src/components/display/sharing/ShareButtons.vue +21 -45
  52. package/src/components/display/sharing/ShareDistribution.vue +1 -7
  53. package/src/components/display/sharing/SharePlayer.vue +2 -2
  54. package/src/components/display/sharing/SharePlayerColors.vue +3 -7
  55. package/src/components/display/sharing/SharePlayerTypes.vue +1 -2
  56. package/src/components/display/sharing/SubscribeButtons.vue +1 -3
  57. package/src/components/misc/ErrorMessage.vue +3 -0
  58. package/src/components/misc/HomeDropdown.vue +2 -2
  59. package/src/components/misc/LeftMenu.vue +1 -2
  60. package/src/components/misc/Player.vue +1 -1
  61. package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
  62. package/src/components/misc/PlayerProgressBar.vue +1 -1
  63. package/src/components/misc/TopBar.vue +1 -2
  64. package/src/components/pages/Lives.vue +0 -1
  65. package/src/components/pages/Participant.vue +1 -1
  66. package/src/sass/_variables.scss +0 -1
  67. 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 class="text-secondary c-hand">
8
- {{ $t('Advanced filters') }}
9
- </div>
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 padding-left-custom-radio">
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
- .vdatetime {
370
- padding: 0.5em 0 !important;
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="wrap">
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-2 classic-select" />
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
 
@@ -7,7 +7,6 @@
7
7
  <OrganisationChooser
8
8
  :defaultanswer="$t('No organisation filter')"
9
9
  :value="organisationId"
10
- :all="true"
11
10
  @selected="onOrganisationSelected"
12
11
  />
13
12
  <ClassicCheckbox
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="d-flex align-items-center">
3
- <label class="wrap">
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-2 classic-select"
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 btn-circle primary-color ms-1"
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 as unknown as number));
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;
@@ -16,7 +16,7 @@
16
16
  <button
17
17
  v-show="!allFetched"
18
18
  class="btn"
19
- :class="buttonPlus ? 'btn-linkPlus mt-3' : 'btn-more'"
19
+ :class="buttonPlus ? 'btn-link-plus mt-3' : 'btn-more'"
20
20
  :disabled="inFetching"
21
21
  :aria-label="$t('See more')"
22
22
  @click="displayMore"
@@ -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 link-info text-truncate"
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="link-info text-truncate"
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="link-info"
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="link-info"
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 live-list-container"
4
+ class="d-flex flex-column align-items-center"
5
5
  >
6
- <div
7
- v-if="loading"
8
- class="d-flex justify-content-center"
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
- <template v-if="lives.length">
28
- <div class="horizontal-separator" />
29
- <p class="live-list-category">
30
- {{ $t('In live') }}
31
- </p>
32
- <LiveItem
33
- v-for="(l, index) in lives"
34
- :key="l.podcastId"
35
- class="mt-3"
36
- :fetch-conference="l"
37
- :index="index"
38
- @deleteItem="deleteLive"
39
- />
40
- </template>
41
- <template v-if="livesNotStarted.length">
42
- <div class="horizontal-separator" />
43
- <p class="live-list-category">
44
- {{ $t('This live is not started yet') }}
45
- </p>
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
- lives: [] as Array<Conference>,
138
- livesNotStarted: [] as Array<Conference>,
139
- livesToBe: [] as Array<Conference>,
140
- livesTerminated: [] as Array<Conference>,
141
- livesError: [] as Array<Conference>,
142
- livesPublishing: [] as Array<Conference>,
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.livesNotStarted.length > 0)
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.livesToBe.length > 0)
88
+ if (this.livesArray[2].lives.length > 0)
160
89
  return this.$t('Next live date', {
161
- date: moment(this.livesToBe[0].date).format('LLLL'),
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.lives.length = 0;
223
- this.livesNotStarted.length = 0;
224
- this.livesToBe.length = 0;
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
- for (let index = 0, len = dataLivesToBe.length; index < len; index++) {
253
- if (moment(dataLivesToBe[index].date).isBefore(moment())) {
254
- this.livesNotStarted.push(dataLivesToBe[index]);
255
- indexPast = index + 1;
256
- } else {
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
- 'ERROR'
174
+ this.livesArray[i].status
284
175
  );
285
- this.livesError = dataLivesError.filter((p: Conference | null) => {
286
- return null !== p;
287
- });
288
- const dataLivesPublishing = await octopusApi.listConferences(
289
- this.filterOrgaUsed,
290
- true,
291
- 'PUBLISHING'
292
- );
293
- this.livesPublishing = dataLivesPublishing.filter((p: Conference | null) => {
294
- return null !== p;
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.livesToBe)
299
- .concat(this.livesNotStarted);
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.livesToBe.findIndex(
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.livesTerminated.push(newConf);
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.livesToBe[indexLivesToBe];
229
+ const newConf = this.livesArray[1].lives[indexLivesToBe];
345
230
  newConf.status = element.status;
346
- this.livesToBe.splice(indexLivesToBe, 1);
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>