@saooti/octopus-sdk 1.0.0 → 29.0.2

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 (230) hide show
  1. package/README.md +73 -0
  2. package/index.d.ts +4 -0
  3. package/index.ts +12 -0
  4. package/package.json +61 -39
  5. package/public/css/fonts/saooti-ui.eot +0 -0
  6. package/public/css/fonts/saooti-ui.svg +30 -19
  7. package/public/css/fonts/saooti-ui.ttf +0 -0
  8. package/public/css/fonts/saooti-ui.woff +0 -0
  9. package/public/css/fonts/style.css +48 -5
  10. package/public/img/ACPM.png +0 -0
  11. package/public/img/article.png +0 -0
  12. package/src/App.vue +97 -31
  13. package/src/api/comments.ts +3 -1
  14. package/src/api/emissions.ts +5 -2
  15. package/src/api/initialize.ts +3 -2
  16. package/src/api/podcasts.ts +5 -2
  17. package/src/api/profile.ts +4 -2
  18. package/src/api/studio.ts +12 -1
  19. package/src/assets/bootstrap-diff.scss +265 -0
  20. package/src/assets/form.scss +23 -0
  21. package/src/assets/general.scss +47 -20
  22. package/src/assets/modal.scss +9 -10
  23. package/src/assets/multiselect.scss +19 -2
  24. package/src/assets/octopus-library.scss +16 -4
  25. package/src/assets/share.scss +343 -0
  26. package/src/components/display/aggregator/RssSection.vue +4 -4
  27. package/src/components/display/categories/CategoryChooser.vue +152 -105
  28. package/src/components/display/categories/CategoryFilter.vue +108 -0
  29. package/src/components/display/categories/CategoryList.vue +138 -109
  30. package/src/components/display/comments/AddCommentModal.vue +104 -87
  31. package/src/components/display/comments/CommentInput.vue +137 -118
  32. package/src/components/display/comments/CommentItem.vue +155 -137
  33. package/src/components/display/comments/CommentList.vue +142 -120
  34. package/src/components/display/comments/CommentParentInfo.vue +39 -35
  35. package/src/components/display/comments/CommentPlayer.vue +54 -48
  36. package/src/components/display/comments/CommentSection.vue +57 -58
  37. package/src/components/display/edit/EditBox.vue +4 -4
  38. package/src/components/display/edit/EditCommentBox.vue +25 -31
  39. package/src/components/display/emission/EmissionChooser.vue +82 -80
  40. package/src/components/display/emission/EmissionInlineList.vue +118 -105
  41. package/src/components/display/emission/EmissionItem.vue +66 -167
  42. package/src/components/display/emission/EmissionList.vue +96 -122
  43. package/src/components/display/emission/EmissionPlayerItem.vue +131 -126
  44. package/src/components/display/filter/AdvancedSearch.vue +306 -372
  45. package/src/components/display/filter/CategoryFilter.vue +117 -0
  46. package/src/components/display/filter/MonetizableFilter.vue +24 -10
  47. package/src/components/display/filter/ProductorSearch.vue +131 -135
  48. package/src/components/display/filter/RubriqueChoice.vue +104 -0
  49. package/src/components/display/filter/RubriqueFilter.vue +235 -0
  50. package/src/components/display/live/CountDown.vue +30 -29
  51. package/src/components/display/live/LiveHorizontalList.vue +40 -34
  52. package/src/components/display/live/LiveItem.vue +146 -158
  53. package/src/components/display/live/LiveList.vue +167 -154
  54. package/src/components/display/organisation/OrganisationChooser.vue +125 -124
  55. package/src/components/display/organisation/OrganisationChooserLight.vue +40 -47
  56. package/src/components/display/participant/ParticipantItem.vue +92 -108
  57. package/src/components/display/participant/ParticipantList.vue +76 -69
  58. package/src/components/display/playlist/PlaylistItem.vue +45 -56
  59. package/src/components/display/playlist/PlaylistList.vue +57 -48
  60. package/src/components/display/playlist/PodcastList.vue +94 -70
  61. package/src/components/display/podcasts/AnimatorsItem.vue +26 -23
  62. package/src/components/display/podcasts/ParticipantDescription.vue +115 -0
  63. package/src/components/display/podcasts/PodcastFilterList.vue +84 -85
  64. package/src/components/display/podcasts/PodcastImage.vue +244 -208
  65. package/src/components/display/podcasts/PodcastInlineList.vue +145 -207
  66. package/src/components/display/podcasts/PodcastItem.vue +150 -132
  67. package/src/components/display/podcasts/PodcastList.vue +89 -110
  68. package/src/components/display/podcasts/TagList.vue +23 -16
  69. package/src/components/display/rubriques/RubriqueChooser.vue +137 -123
  70. package/src/components/display/rubriques/RubriqueList.vue +227 -0
  71. package/src/components/display/sharing/PlayerParameters.vue +154 -106
  72. package/src/components/display/sharing/QrCode.vue +58 -0
  73. package/src/components/display/sharing/ShareButtons.vue +214 -92
  74. package/src/components/display/sharing/ShareDistribution.vue +110 -121
  75. package/src/components/display/sharing/SharePlayer.vue +245 -190
  76. package/src/components/display/sharing/SubscribeButtons.vue +130 -66
  77. package/src/components/display/studio/RecordingItemButton.vue +4 -4
  78. package/src/components/misc/ErrorMessage.vue +21 -16
  79. package/src/components/misc/Footer.vue +131 -66
  80. package/src/components/misc/HomeDropdown.vue +166 -123
  81. package/src/components/misc/LeftMenu.vue +151 -134
  82. package/src/components/misc/Player.vue +332 -328
  83. package/src/components/misc/Snackbar.vue +27 -29
  84. package/src/components/misc/TopBar.vue +204 -174
  85. package/src/components/misc/modal/ClipboardModal.vue +46 -26
  86. package/src/components/misc/modal/MessageModal.vue +67 -51
  87. package/src/components/misc/modal/NewsletterModal.vue +179 -136
  88. package/src/components/misc/modal/QrCodeModal.vue +83 -0
  89. package/src/components/misc/modal/ShareModalPlayer.vue +133 -74
  90. package/src/components/mixins/functions.ts +21 -18
  91. package/src/components/mixins/init.ts +24 -0
  92. package/src/components/mixins/organisationFilter.ts +24 -0
  93. package/src/components/pages/Category.vue +26 -26
  94. package/src/components/pages/Emission.vue +120 -92
  95. package/src/components/pages/Emissions.vue +109 -86
  96. package/src/components/pages/Home.vue +70 -16
  97. package/src/components/pages/Lives.vue +57 -47
  98. package/src/components/pages/Participant.vue +93 -77
  99. package/src/components/pages/Participants.vue +44 -31
  100. package/src/components/pages/Playlist.vue +63 -52
  101. package/src/components/pages/Playlists.vue +41 -39
  102. package/src/components/pages/Podcast.vue +265 -251
  103. package/src/components/pages/Podcasts.vue +135 -104
  104. package/src/components/pages/Rubrique.vue +25 -19
  105. package/src/components/pages/Search.vue +71 -67
  106. package/src/helper/dom.ts +2 -2
  107. package/src/helper/duration.ts +18 -8
  108. package/src/locale/educationen.ts +14 -0
  109. package/src/locale/en.ts +299 -1
  110. package/src/locale/fr.ts +25 -10
  111. package/src/locale/messages.ts +3 -2
  112. package/src/main.ts +54 -32
  113. package/src/router/router.ts +184 -159
  114. package/src/shims-tsx.d.ts +13 -0
  115. package/src/shims-vue-recaptcha-v3.d.ts +9 -0
  116. package/src/shims-vue.d.ts +5 -6
  117. package/src/store/AppStore.ts +36 -171
  118. package/src/store/class/category.ts +8 -0
  119. package/src/store/class/comment.ts +17 -0
  120. package/src/store/class/conference.ts +27 -0
  121. package/src/store/class/customPlayer.ts +8 -0
  122. package/src/store/class/emission.ts +20 -0
  123. package/src/store/class/fetchParam.ts +16 -0
  124. package/src/store/class/media.ts +13 -0
  125. package/src/store/class/organisation.ts +19 -0
  126. package/src/store/class/participant.ts +12 -0
  127. package/src/store/class/person.ts +13 -0
  128. package/src/store/class/player.ts +12 -0
  129. package/src/store/class/playlist.ts +15 -0
  130. package/src/store/class/podcast.ts +37 -0
  131. package/src/store/class/rubriquage.ts +9 -0
  132. package/src/store/class/rubriquageFilter.ts +5 -0
  133. package/src/store/class/rubrique.ts +8 -0
  134. package/src/store/paramStore.ts +70 -29
  135. package/src/store/typeAppStore.ts +171 -237
  136. package/src/vuex-shim.d.ts +8 -0
  137. package/tsconfig.json +4 -0
  138. package/vue.config.js +14 -0
  139. package/public/img/ACPM.PNG +0 -0
  140. package/src/assets/bootstrap_scss/_alert.scss +0 -51
  141. package/src/assets/bootstrap_scss/_badge.scss +0 -54
  142. package/src/assets/bootstrap_scss/_breadcrumb.scss +0 -42
  143. package/src/assets/bootstrap_scss/_button-group.scss +0 -164
  144. package/src/assets/bootstrap_scss/_buttons.scss +0 -291
  145. package/src/assets/bootstrap_scss/_card.scss +0 -278
  146. package/src/assets/bootstrap_scss/_carousel.scss +0 -197
  147. package/src/assets/bootstrap_scss/_close.scss +0 -41
  148. package/src/assets/bootstrap_scss/_code.scss +0 -48
  149. package/src/assets/bootstrap_scss/_custom-forms.scss +0 -522
  150. package/src/assets/bootstrap_scss/_dropdown.scss +0 -201
  151. package/src/assets/bootstrap_scss/_forms.scss +0 -352
  152. package/src/assets/bootstrap_scss/_functions.scss +0 -134
  153. package/src/assets/bootstrap_scss/_grid.scss +0 -69
  154. package/src/assets/bootstrap_scss/_images.scss +0 -42
  155. package/src/assets/bootstrap_scss/_input-group.scss +0 -191
  156. package/src/assets/bootstrap_scss/_jumbotron.scss +0 -17
  157. package/src/assets/bootstrap_scss/_list-group.scss +0 -158
  158. package/src/assets/bootstrap_scss/_media.scss +0 -8
  159. package/src/assets/bootstrap_scss/_mixins.scss +0 -47
  160. package/src/assets/bootstrap_scss/_modal.scss +0 -243
  161. package/src/assets/bootstrap_scss/_nav.scss +0 -120
  162. package/src/assets/bootstrap_scss/_navbar.scss +0 -324
  163. package/src/assets/bootstrap_scss/_pagination.scss +0 -74
  164. package/src/assets/bootstrap_scss/_popover.scss +0 -170
  165. package/src/assets/bootstrap_scss/_print.scss +0 -141
  166. package/src/assets/bootstrap_scss/_progress.scss +0 -46
  167. package/src/assets/bootstrap_scss/_reboot.scss +0 -482
  168. package/src/assets/bootstrap_scss/_root.scss +0 -20
  169. package/src/assets/bootstrap_scss/_spinners.scss +0 -55
  170. package/src/assets/bootstrap_scss/_tables.scss +0 -185
  171. package/src/assets/bootstrap_scss/_toasts.scss +0 -44
  172. package/src/assets/bootstrap_scss/_tooltip.scss +0 -115
  173. package/src/assets/bootstrap_scss/_transitions.scss +0 -20
  174. package/src/assets/bootstrap_scss/_type.scss +0 -125
  175. package/src/assets/bootstrap_scss/_utilities.scss +0 -17
  176. package/src/assets/bootstrap_scss/_variables.scss +0 -1145
  177. package/src/assets/bootstrap_scss/bootstrap-grid.scss +0 -29
  178. package/src/assets/bootstrap_scss/bootstrap-reboot.scss +0 -12
  179. package/src/assets/bootstrap_scss/bootstrap.scss +0 -44
  180. package/src/assets/bootstrap_scss/mixins/_alert.scss +0 -13
  181. package/src/assets/bootstrap_scss/mixins/_background-variant.scss +0 -22
  182. package/src/assets/bootstrap_scss/mixins/_badge.scss +0 -17
  183. package/src/assets/bootstrap_scss/mixins/_border-radius.scss +0 -63
  184. package/src/assets/bootstrap_scss/mixins/_box-shadow.scss +0 -20
  185. package/src/assets/bootstrap_scss/mixins/_breakpoints.scss +0 -123
  186. package/src/assets/bootstrap_scss/mixins/_buttons.scss +0 -110
  187. package/src/assets/bootstrap_scss/mixins/_caret.scss +0 -62
  188. package/src/assets/bootstrap_scss/mixins/_clearfix.scss +0 -7
  189. package/src/assets/bootstrap_scss/mixins/_deprecate.scss +0 -10
  190. package/src/assets/bootstrap_scss/mixins/_float.scss +0 -14
  191. package/src/assets/bootstrap_scss/mixins/_forms.scss +0 -177
  192. package/src/assets/bootstrap_scss/mixins/_gradients.scss +0 -45
  193. package/src/assets/bootstrap_scss/mixins/_grid-framework.scss +0 -71
  194. package/src/assets/bootstrap_scss/mixins/_grid.scss +0 -69
  195. package/src/assets/bootstrap_scss/mixins/_hover.scss +0 -37
  196. package/src/assets/bootstrap_scss/mixins/_image.scss +0 -36
  197. package/src/assets/bootstrap_scss/mixins/_list-group.scss +0 -21
  198. package/src/assets/bootstrap_scss/mixins/_lists.scss +0 -7
  199. package/src/assets/bootstrap_scss/mixins/_nav-divider.scss +0 -11
  200. package/src/assets/bootstrap_scss/mixins/_pagination.scss +0 -22
  201. package/src/assets/bootstrap_scss/mixins/_reset-text.scss +0 -17
  202. package/src/assets/bootstrap_scss/mixins/_resize.scss +0 -6
  203. package/src/assets/bootstrap_scss/mixins/_screen-reader.scss +0 -34
  204. package/src/assets/bootstrap_scss/mixins/_size.scss +0 -7
  205. package/src/assets/bootstrap_scss/mixins/_table-row.scss +0 -39
  206. package/src/assets/bootstrap_scss/mixins/_text-emphasis.scss +0 -17
  207. package/src/assets/bootstrap_scss/mixins/_text-hide.scss +0 -11
  208. package/src/assets/bootstrap_scss/mixins/_text-truncate.scss +0 -8
  209. package/src/assets/bootstrap_scss/mixins/_transition.scss +0 -16
  210. package/src/assets/bootstrap_scss/mixins/_visibility.scss +0 -8
  211. package/src/assets/bootstrap_scss/utilities/_align.scss +0 -8
  212. package/src/assets/bootstrap_scss/utilities/_background.scss +0 -19
  213. package/src/assets/bootstrap_scss/utilities/_borders.scss +0 -75
  214. package/src/assets/bootstrap_scss/utilities/_clearfix.scss +0 -3
  215. package/src/assets/bootstrap_scss/utilities/_display.scss +0 -26
  216. package/src/assets/bootstrap_scss/utilities/_embed.scss +0 -39
  217. package/src/assets/bootstrap_scss/utilities/_flex.scss +0 -51
  218. package/src/assets/bootstrap_scss/utilities/_float.scss +0 -11
  219. package/src/assets/bootstrap_scss/utilities/_overflow.scss +0 -5
  220. package/src/assets/bootstrap_scss/utilities/_position.scss +0 -32
  221. package/src/assets/bootstrap_scss/utilities/_screenreaders.scss +0 -11
  222. package/src/assets/bootstrap_scss/utilities/_shadows.scss +0 -6
  223. package/src/assets/bootstrap_scss/utilities/_sizing.scss +0 -20
  224. package/src/assets/bootstrap_scss/utilities/_spacing.scss +0 -73
  225. package/src/assets/bootstrap_scss/utilities/_stretched-link.scss +0 -19
  226. package/src/assets/bootstrap_scss/utilities/_text.scss +0 -72
  227. package/src/assets/bootstrap_scss/utilities/_visibility.scss +0 -13
  228. package/src/assets/bootstrap_scss/vendor/_rfs.scss +0 -204
  229. package/src/shims-vuex.d.ts +0 -7
  230. package/src/views/Home.vue +0 -18
@@ -1,11 +1,16 @@
1
1
  <template>
2
2
  <div
3
- class="d-flex flex-column align-items-center live-list-container"
4
3
  v-if="filterOrga || organisationId"
4
+ class="d-flex flex-column align-items-center live-list-container"
5
5
  >
6
- <div class="d-flex justify-content-center" v-if="loading">
7
- <div class="spinner-border mr-3"></div>
8
- <h3 class="mt-2">{{ $t('Loading lives...') }}</h3>
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>
9
14
  </div>
10
15
  <div
11
16
  v-if="
@@ -15,76 +20,90 @@
15
20
  <p>{{ $t('No live currently') }}</p>
16
21
  </div>
17
22
  <div v-if="loaded && displayNextLiveMessage">
18
- <h3 class="text-danger">{{ displayNextLiveMessage }}</h3>
23
+ <h3 class="text-danger">
24
+ {{ displayNextLiveMessage }}
25
+ </h3>
19
26
  </div>
20
27
  <template v-if="lives.length">
21
- <div class="horizontal-separator"></div>
22
- <p class="live-list-category">{{ $t('In live') }}</p>
28
+ <div class="horizontal-separator" />
29
+ <p class="live-list-category">
30
+ {{ $t('In live') }}
31
+ </p>
23
32
  <LiveItem
24
- class="mt-3"
25
33
  v-for="(l, index) in lives"
26
- :fetchConference="l"
27
34
  :key="l.podcastId"
35
+ class="mt-3"
36
+ :fetch-conference="l"
28
37
  :index="index"
29
38
  @deleteItem="deleteLive"
30
39
  />
31
40
  </template>
32
41
  <template v-if="livesNotStarted.length">
33
- <div class="horizontal-separator"></div>
34
- <p class="live-list-category">{{ $t('This live is not started yet') }}</p>
42
+ <div class="horizontal-separator" />
43
+ <p class="live-list-category">
44
+ {{ $t('This live is not started yet') }}
45
+ </p>
35
46
  <LiveItem
36
- class="mt-3"
37
47
  v-for="(l, index) in livesNotStarted"
38
- :fetchConference="l"
39
48
  :key="l.podcastId"
49
+ class="mt-3"
50
+ :fetch-conference="l"
40
51
  :index="index"
41
52
  @deleteItem="deleteLiveNotStarted"
42
53
  />
43
54
  </template>
44
55
  <template v-if="livesToBe.length">
45
- <div class="horizontal-separator"></div>
46
- <p class="live-list-category">{{ $t('Live to be') }}</p>
56
+ <div class="horizontal-separator" />
57
+ <p class="live-list-category">
58
+ {{ $t('Live to be') }}
59
+ </p>
47
60
  <LiveItem
48
- class="mt-3"
49
61
  v-for="(l, index) in livesToBe"
50
- :fetchConference="l"
51
62
  :key="l.podcastId"
63
+ class="mt-3"
64
+ :fetch-conference="l"
52
65
  :index="index"
53
66
  @deleteItem="deleteLiveToBe"
54
67
  />
55
68
  </template>
56
69
  <template v-if="livesTerminated.length">
57
- <div class="horizontal-separator"></div>
58
- <p class="live-list-category">{{ $t('Live terminated') }}</p>
70
+ <div class="horizontal-separator" />
71
+ <p class="live-list-category">
72
+ {{ $t('Live terminated') }}
73
+ </p>
59
74
  <LiveItem
60
- class="mt-3"
61
75
  v-for="(l, index) in livesTerminated"
62
- :fetchConference="l"
63
76
  :key="l.podcastId"
77
+ class="mt-3"
78
+ :fetch-conference="l"
64
79
  :index="index"
65
80
  @deleteItem="deleteLiveTerminated"
66
81
  />
67
82
  </template>
68
83
  <template v-if="livesPublishing.length">
69
- <div class="horizontal-separator"></div>
70
- <p class="live-list-category">{{ $t('Publishing') }}</p>
84
+ <div class="horizontal-separator" />
85
+ <p class="live-list-category">
86
+ {{ $t('Publishing') }}
87
+ </p>
71
88
  <LiveItem
72
- class="mt-3"
73
89
  v-for="(l, index) in livesPublishing"
74
- :fetchConference="l"
75
90
  :key="l.podcastId"
91
+ class="mt-3"
92
+ :fetch-conference="l"
76
93
  :index="index"
77
94
  @deleteItem="deleteLivePublishing"
78
95
  />
79
96
  </template>
80
97
  <template v-if="livesError.length">
81
- <div class="horizontal-separator"></div>
82
- <p class="live-list-category">{{ $t('In error') }}</p>
98
+ <div class="horizontal-separator" />
99
+ <p class="live-list-category">
100
+ {{ $t('In error') }}
101
+ </p>
83
102
  <LiveItem
84
- class="mt-3"
85
103
  v-for="(l, index) in livesError"
86
- :fetchConference="l"
87
104
  :key="l.podcastId"
105
+ class="mt-3"
106
+ :fetch-conference="l"
88
107
  :index="index"
89
108
  @deleteItem="deleteLiveError"
90
109
  />
@@ -92,109 +111,110 @@
92
111
  </div>
93
112
  </template>
94
113
 
95
- <style lang="scss">
96
- .live-list-container .horizontal-separator {
97
- border-top: 1px solid #cccccc;
98
- width: 100%;
99
- margin: 2rem;
100
- }
101
- .live-list-category {
102
- align-self: flex-start;
103
- text-transform: uppercase;
104
- font-weight: bold;
105
- }
106
-
107
- @media (max-width: 450px) {
108
- .live-list-container h3 {
109
- text-align: center;
110
- font-size: 1rem;
111
- }
112
- .live-list-container .horizontal-separator {
113
- margin: 1rem;
114
- }
115
- }
116
- </style>
117
-
118
114
  <script lang="ts">
119
- import studioApi from '@/api/studio';
120
115
  import LiveItem from './LiveItem.vue';
121
116
  const octopusApi = require('@saooti/octopus-api');
122
117
  const moment = require('moment');
123
118
  import { state } from '../../../store/paramStore';
124
-
119
+ import { Conference } from '@/store/class/conference';
125
120
  import { defineComponent } from 'vue'
126
121
  export default defineComponent({
127
122
  name: 'LiveList',
128
-
129
- props: {
130
- conferenceWatched: { default: [] },
131
- organisationId: { default: undefined as any },
132
- },
133
- emits: ['initConferenceIds'],
134
-
135
123
  components: {
136
124
  LiveItem,
137
125
  },
138
126
 
139
- async created() {
140
- const isLive = await octopusApi.liveEnabledOrganisation(
141
- this.filterOrgaUsed
142
- );
143
- if (isLive) {
144
- this.fetchContent();
145
- } else {
146
- this.loading = false;
147
- this.loaded = true;
148
- }
127
+ props: {
128
+ conferenceWatched: { default: () => [], type: Array as ()=>Array<Conference>},
129
+ organisationId: { default: undefined, type: String},
149
130
  },
131
+ emits: ['initConferenceIds'],
150
132
 
151
133
  data() {
152
134
  return {
153
- loading: true,
154
- loaded: true,
155
- lives: [] as any,
156
- livesNotStarted: [] as any,
157
- livesToBe: [] as any,
158
- livesTerminated: [] as any,
159
- livesError: [] as any,
160
- livesPublishing: [] as any,
135
+ loading: true as boolean,
136
+ 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>,
161
143
  };
162
144
  },
163
-
145
+
164
146
  computed: {
165
- filterOrgaUsed():any {
147
+ filterOrgaUsed(): string|undefined {
166
148
  if (this.filterOrga) return this.filterOrga;
167
149
  if (this.organisationId) return this.organisationId;
168
150
  return undefined;
169
151
  },
170
- filterOrga():any {
152
+ filterOrga(): string {
171
153
  return this.$store.state.filter.organisationId;
172
154
  },
173
- displayNextLiveMessage():string {
155
+ displayNextLiveMessage(): string {
174
156
  if (0 !== this.lives.length) return '';
175
157
  if (this.livesNotStarted.length > 0)
176
- return this.$t('A live can start any moment');
158
+ return this.$t('A live can start any moment').toString();
177
159
  if (this.livesToBe.length > 0)
178
160
  return this.$t('Next live date', {
179
161
  date: moment(this.livesToBe[0].date).format('LLLL'),
180
- });
162
+ }).toString();
181
163
  return '';
182
164
  },
183
- myOrganisationId() {
165
+ myOrganisationId(): string {
184
166
  return state.generalParameters.organisationId;
185
167
  },
186
- organisationRight() {
168
+ organisationRight(): boolean {
187
169
  if (this.isRoleLive && this.myOrganisationId === this.filterOrgaUsed)
188
170
  return true;
189
171
  return false;
190
172
  },
191
- isRoleLive() {
173
+ isRoleLive(): boolean {
192
174
  return state.generalParameters.isRoleLive;
193
175
  },
194
176
  },
177
+ watch: {
178
+ async organisationId(): Promise<void> {
179
+ const isLive = await octopusApi.liveEnabledOrganisation(
180
+ this.organisationId
181
+ );
182
+ if (isLive) {
183
+ if(!this.loading){
184
+ this.fetchContent();
185
+ }
186
+ } else {
187
+ this.initArrays();
188
+ this.loading = false;
189
+ this.loaded = true;
190
+ }
191
+ },
192
+ filterOrga(): void {
193
+ if(!this.loading){
194
+ this.fetchContent();
195
+ }
196
+ },
197
+ conferenceWatched: {
198
+ handler(): void {
199
+ this.updateLiveLocal();
200
+ },
201
+ deep: true,
202
+ },
203
+ },
195
204
 
205
+ async created() {
206
+ const isLive = await octopusApi.liveEnabledOrganisation(
207
+ this.filterOrgaUsed
208
+ );
209
+ if (isLive) {
210
+ this.fetchContent();
211
+ } else {
212
+ this.loading = false;
213
+ this.loaded = true;
214
+ }
215
+ },
196
216
  methods: {
197
- initArrays() {
217
+ initArrays(): void {
198
218
  this.lives.length = 0;
199
219
  this.livesNotStarted.length = 0;
200
220
  this.livesToBe.length = 0;
@@ -202,7 +222,8 @@ export default defineComponent({
202
222
  this.livesError.length = 0;
203
223
  this.livesPublishing.length = 0;
204
224
  },
205
- async fetchContent() {
225
+ async fetchContent(): Promise<void> {
226
+ this.initArrays();
206
227
  if (!this.filterOrgaUsed) {
207
228
  this.loading = false;
208
229
  this.loaded = true;
@@ -210,19 +231,17 @@ export default defineComponent({
210
231
  }
211
232
  this.loading = true;
212
233
  this.loaded = false;
213
- let dataLives = await studioApi.listConferences(
214
- this.$store,
215
- true,
234
+ const dataLives = await octopusApi.listConferences(
216
235
  this.filterOrgaUsed,
236
+ true,
217
237
  'RECORDING'
218
238
  );
219
- this.lives = dataLives.filter((p:any) => {
239
+ this.lives = dataLives.filter((p: Conference | null) => {
220
240
  return null !== p;
221
241
  });
222
- let dataLivesToBe = await studioApi.listConferences(
223
- this.$store,
224
- true,
242
+ const dataLivesToBe = await octopusApi.listConferences(
225
243
  this.filterOrgaUsed,
244
+ true,
226
245
  'PENDING'
227
246
  );
228
247
  let indexPast = 0;
@@ -234,95 +253,91 @@ export default defineComponent({
234
253
  break;
235
254
  }
236
255
  }
237
- let dataLivesPlanned = await studioApi.listConferences(
238
- this.$store,
239
- true,
256
+ const dataLivesPlanned = await octopusApi.listConferences(
240
257
  this.filterOrgaUsed,
258
+ true,
241
259
  'PLANNED'
242
260
  );
243
261
  this.livesToBe = dataLivesToBe
244
262
  .slice(indexPast)
245
263
  .concat(dataLivesPlanned)
246
- .filter((p: null) => {
264
+ .filter((p: Conference | null) => {
247
265
  return null !== p;
248
266
  });
249
267
  if (this.organisationRight) {
250
- let dataLivesTerminated = await studioApi.listConferences(
251
- this.$store,
252
- true,
268
+ const dataLivesTerminated = await octopusApi.listConferences(
253
269
  this.filterOrgaUsed,
270
+ true,
254
271
  'DEBRIEFING'
255
272
  );
256
- this.livesTerminated = dataLivesTerminated.filter((p:any) => {
273
+ this.livesTerminated = dataLivesTerminated.filter((p: Conference | null) => {
257
274
  return null !== p;
258
275
  });
259
- let dataLivesError = await studioApi.listConferences(
260
- this.$store,
261
- true,
276
+ const dataLivesError = await octopusApi.listConferences(
262
277
  this.filterOrgaUsed,
278
+ true,
263
279
  'ERROR'
264
280
  );
265
- this.livesError = dataLivesError.filter((p:any) => {
281
+ this.livesError = dataLivesError.filter((p: Conference | null) => {
266
282
  return null !== p;
267
283
  });
268
- let dataLivesPublishing = await studioApi.listConferences(
269
- this.$store,
270
- true,
284
+ const dataLivesPublishing = await octopusApi.listConferences(
271
285
  this.filterOrgaUsed,
286
+ true,
272
287
  'PUBLISHING'
273
288
  );
274
- this.livesPublishing = dataLivesPublishing.filter((p:any) => {
289
+ this.livesPublishing = dataLivesPublishing.filter((p: Conference | null) => {
275
290
  return null !== p;
276
291
  });
277
292
  }
278
- let listIds = this.lives
293
+ const listIds = this.lives
279
294
  .concat(this.livesToBe)
280
295
  .concat(this.livesNotStarted);
281
296
  this.$emit('initConferenceIds', listIds);
282
297
  this.loading = false;
283
298
  this.loaded = true;
284
299
  },
285
- deleteLive(index: any) {
300
+ deleteLive(index: number): void {
286
301
  this.lives.splice(index, 1);
287
302
  },
288
- deleteLiveToBe(index: any) {
303
+ deleteLiveToBe(index: number): void {
289
304
  this.livesToBe.splice(index, 1);
290
305
  },
291
- deleteLiveTerminated(index: any) {
306
+ deleteLiveTerminated(index: number): void {
292
307
  this.livesTerminated.splice(index, 1);
293
308
  },
294
- deleteLiveError(index: any) {
309
+ deleteLiveError(index: number): void {
295
310
  this.livesError.splice(index, 1);
296
311
  },
297
- deleteLiveNotStarted(index: any) {
312
+ deleteLiveNotStarted(index: number): void {
298
313
  this.livesNotStarted.splice(index, 1);
299
314
  },
300
- deleteLivePublishing(index: any) {
315
+ deleteLivePublishing(index: number): void {
301
316
  this.livesPublishing.splice(index, 1);
302
317
  },
303
- updateLiveLocal() {
318
+ updateLiveLocal(): void {
304
319
  for (
305
320
  let index = 0, len = this.conferenceWatched.length;
306
321
  index < len;
307
322
  index++
308
323
  ) {
309
- const element:any = this.conferenceWatched[index];
310
- let indexLivesToBe = this.livesToBe.findIndex(
311
- ( el: { conferenceId: any; }) => el.conferenceId === element.conferenceId
324
+ const element = this.conferenceWatched[index];
325
+ const indexLivesToBe = this.livesToBe.findIndex(
326
+ (el: Conference) => el.conferenceId === element.conferenceId
312
327
  );
313
328
  if (-1 === indexLivesToBe) {
314
- let indexLives = this.lives.findIndex(
315
- ( el: { conferenceId: any; }) => el.conferenceId === element.conferenceId
329
+ const indexLives = this.lives.findIndex(
330
+ (el: Conference) => el.conferenceId === element.conferenceId
316
331
  );
317
332
  if (-1 === indexLives || 'DEBRIEFING' !== element.status) continue;
318
- let newConf = this.lives[indexLives];
333
+ const newConf = this.lives[indexLives];
319
334
  newConf.status = element.status;
320
335
  this.lives.splice(indexLives, 1);
321
336
  this.livesTerminated.push(newConf);
322
337
  break;
323
338
  }
324
339
  if ('RECORDING' !== element.status) continue;
325
- let newConf = this.livesToBe[indexLivesToBe];
340
+ const newConf = this.livesToBe[indexLivesToBe];
326
341
  newConf.status = element.status;
327
342
  this.livesToBe.splice(indexLivesToBe, 1);
328
343
  this.lives.push(newConf);
@@ -330,30 +345,28 @@ export default defineComponent({
330
345
  }
331
346
  },
332
347
  },
333
-
334
- watch: {
335
- async organisationId() {
336
- this.initArrays();
337
- const isLive = await octopusApi.liveEnabledOrganisation(
338
- this.organisationId
339
- );
340
- if (isLive) {
341
- this.fetchContent();
342
- } else {
343
- this.loading = false;
344
- this.loaded = true;
345
- }
346
- },
347
- filterOrga():any {
348
- this.initArrays();
349
- this.fetchContent();
350
- },
351
- conferenceWatched: {
352
- handler() {
353
- this.updateLiveLocal();
354
- },
355
- deep: true,
356
- },
357
- },
358
- });
348
+ })
359
349
  </script>
350
+
351
+ <style lang="scss">
352
+ .live-list-container .horizontal-separator {
353
+ border-top: 1px solid #cccccc;
354
+ width: 100%;
355
+ margin: 2rem;
356
+ }
357
+ .live-list-category {
358
+ align-self: flex-start;
359
+ text-transform: uppercase;
360
+ font-weight: bold;
361
+ }
362
+
363
+ @media (max-width: 450px) {
364
+ .live-list-container h3 {
365
+ text-align: center;
366
+ font-size: 1rem;
367
+ }
368
+ .live-list-container .horizontal-separator {
369
+ margin: 1rem;
370
+ }
371
+ }
372
+ </style>