@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.
- package/README.md +73 -0
- package/index.d.ts +4 -0
- package/index.ts +12 -0
- package/package.json +61 -39
- package/public/css/fonts/saooti-ui.eot +0 -0
- package/public/css/fonts/saooti-ui.svg +30 -19
- package/public/css/fonts/saooti-ui.ttf +0 -0
- package/public/css/fonts/saooti-ui.woff +0 -0
- package/public/css/fonts/style.css +48 -5
- package/public/img/ACPM.png +0 -0
- package/public/img/article.png +0 -0
- package/src/App.vue +97 -31
- package/src/api/comments.ts +3 -1
- package/src/api/emissions.ts +5 -2
- package/src/api/initialize.ts +3 -2
- package/src/api/podcasts.ts +5 -2
- package/src/api/profile.ts +4 -2
- package/src/api/studio.ts +12 -1
- package/src/assets/bootstrap-diff.scss +265 -0
- package/src/assets/form.scss +23 -0
- package/src/assets/general.scss +47 -20
- package/src/assets/modal.scss +9 -10
- package/src/assets/multiselect.scss +19 -2
- package/src/assets/octopus-library.scss +16 -4
- package/src/assets/share.scss +343 -0
- package/src/components/display/aggregator/RssSection.vue +4 -4
- package/src/components/display/categories/CategoryChooser.vue +152 -105
- package/src/components/display/categories/CategoryFilter.vue +108 -0
- package/src/components/display/categories/CategoryList.vue +138 -109
- package/src/components/display/comments/AddCommentModal.vue +104 -87
- package/src/components/display/comments/CommentInput.vue +137 -118
- package/src/components/display/comments/CommentItem.vue +155 -137
- package/src/components/display/comments/CommentList.vue +142 -120
- package/src/components/display/comments/CommentParentInfo.vue +39 -35
- package/src/components/display/comments/CommentPlayer.vue +54 -48
- package/src/components/display/comments/CommentSection.vue +57 -58
- package/src/components/display/edit/EditBox.vue +4 -4
- package/src/components/display/edit/EditCommentBox.vue +25 -31
- package/src/components/display/emission/EmissionChooser.vue +82 -80
- package/src/components/display/emission/EmissionInlineList.vue +118 -105
- package/src/components/display/emission/EmissionItem.vue +66 -167
- package/src/components/display/emission/EmissionList.vue +96 -122
- package/src/components/display/emission/EmissionPlayerItem.vue +131 -126
- package/src/components/display/filter/AdvancedSearch.vue +306 -372
- package/src/components/display/filter/CategoryFilter.vue +117 -0
- package/src/components/display/filter/MonetizableFilter.vue +24 -10
- package/src/components/display/filter/ProductorSearch.vue +131 -135
- package/src/components/display/filter/RubriqueChoice.vue +104 -0
- package/src/components/display/filter/RubriqueFilter.vue +235 -0
- package/src/components/display/live/CountDown.vue +30 -29
- package/src/components/display/live/LiveHorizontalList.vue +40 -34
- package/src/components/display/live/LiveItem.vue +146 -158
- package/src/components/display/live/LiveList.vue +167 -154
- package/src/components/display/organisation/OrganisationChooser.vue +125 -124
- package/src/components/display/organisation/OrganisationChooserLight.vue +40 -47
- package/src/components/display/participant/ParticipantItem.vue +92 -108
- package/src/components/display/participant/ParticipantList.vue +76 -69
- package/src/components/display/playlist/PlaylistItem.vue +45 -56
- package/src/components/display/playlist/PlaylistList.vue +57 -48
- package/src/components/display/playlist/PodcastList.vue +94 -70
- package/src/components/display/podcasts/AnimatorsItem.vue +26 -23
- package/src/components/display/podcasts/ParticipantDescription.vue +115 -0
- package/src/components/display/podcasts/PodcastFilterList.vue +84 -85
- package/src/components/display/podcasts/PodcastImage.vue +244 -208
- package/src/components/display/podcasts/PodcastInlineList.vue +145 -207
- package/src/components/display/podcasts/PodcastItem.vue +150 -132
- package/src/components/display/podcasts/PodcastList.vue +89 -110
- package/src/components/display/podcasts/TagList.vue +23 -16
- package/src/components/display/rubriques/RubriqueChooser.vue +137 -123
- package/src/components/display/rubriques/RubriqueList.vue +227 -0
- package/src/components/display/sharing/PlayerParameters.vue +154 -106
- package/src/components/display/sharing/QrCode.vue +58 -0
- package/src/components/display/sharing/ShareButtons.vue +214 -92
- package/src/components/display/sharing/ShareDistribution.vue +110 -121
- package/src/components/display/sharing/SharePlayer.vue +245 -190
- package/src/components/display/sharing/SubscribeButtons.vue +130 -66
- package/src/components/display/studio/RecordingItemButton.vue +4 -4
- package/src/components/misc/ErrorMessage.vue +21 -16
- package/src/components/misc/Footer.vue +131 -66
- package/src/components/misc/HomeDropdown.vue +166 -123
- package/src/components/misc/LeftMenu.vue +151 -134
- package/src/components/misc/Player.vue +332 -328
- package/src/components/misc/Snackbar.vue +27 -29
- package/src/components/misc/TopBar.vue +204 -174
- package/src/components/misc/modal/ClipboardModal.vue +46 -26
- package/src/components/misc/modal/MessageModal.vue +67 -51
- package/src/components/misc/modal/NewsletterModal.vue +179 -136
- package/src/components/misc/modal/QrCodeModal.vue +83 -0
- package/src/components/misc/modal/ShareModalPlayer.vue +133 -74
- package/src/components/mixins/functions.ts +21 -18
- package/src/components/mixins/init.ts +24 -0
- package/src/components/mixins/organisationFilter.ts +24 -0
- package/src/components/pages/Category.vue +26 -26
- package/src/components/pages/Emission.vue +120 -92
- package/src/components/pages/Emissions.vue +109 -86
- package/src/components/pages/Home.vue +70 -16
- package/src/components/pages/Lives.vue +57 -47
- package/src/components/pages/Participant.vue +93 -77
- package/src/components/pages/Participants.vue +44 -31
- package/src/components/pages/Playlist.vue +63 -52
- package/src/components/pages/Playlists.vue +41 -39
- package/src/components/pages/Podcast.vue +265 -251
- package/src/components/pages/Podcasts.vue +135 -104
- package/src/components/pages/Rubrique.vue +25 -19
- package/src/components/pages/Search.vue +71 -67
- package/src/helper/dom.ts +2 -2
- package/src/helper/duration.ts +18 -8
- package/src/locale/educationen.ts +14 -0
- package/src/locale/en.ts +299 -1
- package/src/locale/fr.ts +25 -10
- package/src/locale/messages.ts +3 -2
- package/src/main.ts +54 -32
- package/src/router/router.ts +184 -159
- package/src/shims-tsx.d.ts +13 -0
- package/src/shims-vue-recaptcha-v3.d.ts +9 -0
- package/src/shims-vue.d.ts +5 -6
- package/src/store/AppStore.ts +36 -171
- package/src/store/class/category.ts +8 -0
- package/src/store/class/comment.ts +17 -0
- package/src/store/class/conference.ts +27 -0
- package/src/store/class/customPlayer.ts +8 -0
- package/src/store/class/emission.ts +20 -0
- package/src/store/class/fetchParam.ts +16 -0
- package/src/store/class/media.ts +13 -0
- package/src/store/class/organisation.ts +19 -0
- package/src/store/class/participant.ts +12 -0
- package/src/store/class/person.ts +13 -0
- package/src/store/class/player.ts +12 -0
- package/src/store/class/playlist.ts +15 -0
- package/src/store/class/podcast.ts +37 -0
- package/src/store/class/rubriquage.ts +9 -0
- package/src/store/class/rubriquageFilter.ts +5 -0
- package/src/store/class/rubrique.ts +8 -0
- package/src/store/paramStore.ts +70 -29
- package/src/store/typeAppStore.ts +171 -237
- package/src/vuex-shim.d.ts +8 -0
- package/tsconfig.json +4 -0
- package/vue.config.js +14 -0
- package/public/img/ACPM.PNG +0 -0
- package/src/assets/bootstrap_scss/_alert.scss +0 -51
- package/src/assets/bootstrap_scss/_badge.scss +0 -54
- package/src/assets/bootstrap_scss/_breadcrumb.scss +0 -42
- package/src/assets/bootstrap_scss/_button-group.scss +0 -164
- package/src/assets/bootstrap_scss/_buttons.scss +0 -291
- package/src/assets/bootstrap_scss/_card.scss +0 -278
- package/src/assets/bootstrap_scss/_carousel.scss +0 -197
- package/src/assets/bootstrap_scss/_close.scss +0 -41
- package/src/assets/bootstrap_scss/_code.scss +0 -48
- package/src/assets/bootstrap_scss/_custom-forms.scss +0 -522
- package/src/assets/bootstrap_scss/_dropdown.scss +0 -201
- package/src/assets/bootstrap_scss/_forms.scss +0 -352
- package/src/assets/bootstrap_scss/_functions.scss +0 -134
- package/src/assets/bootstrap_scss/_grid.scss +0 -69
- package/src/assets/bootstrap_scss/_images.scss +0 -42
- package/src/assets/bootstrap_scss/_input-group.scss +0 -191
- package/src/assets/bootstrap_scss/_jumbotron.scss +0 -17
- package/src/assets/bootstrap_scss/_list-group.scss +0 -158
- package/src/assets/bootstrap_scss/_media.scss +0 -8
- package/src/assets/bootstrap_scss/_mixins.scss +0 -47
- package/src/assets/bootstrap_scss/_modal.scss +0 -243
- package/src/assets/bootstrap_scss/_nav.scss +0 -120
- package/src/assets/bootstrap_scss/_navbar.scss +0 -324
- package/src/assets/bootstrap_scss/_pagination.scss +0 -74
- package/src/assets/bootstrap_scss/_popover.scss +0 -170
- package/src/assets/bootstrap_scss/_print.scss +0 -141
- package/src/assets/bootstrap_scss/_progress.scss +0 -46
- package/src/assets/bootstrap_scss/_reboot.scss +0 -482
- package/src/assets/bootstrap_scss/_root.scss +0 -20
- package/src/assets/bootstrap_scss/_spinners.scss +0 -55
- package/src/assets/bootstrap_scss/_tables.scss +0 -185
- package/src/assets/bootstrap_scss/_toasts.scss +0 -44
- package/src/assets/bootstrap_scss/_tooltip.scss +0 -115
- package/src/assets/bootstrap_scss/_transitions.scss +0 -20
- package/src/assets/bootstrap_scss/_type.scss +0 -125
- package/src/assets/bootstrap_scss/_utilities.scss +0 -17
- package/src/assets/bootstrap_scss/_variables.scss +0 -1145
- package/src/assets/bootstrap_scss/bootstrap-grid.scss +0 -29
- package/src/assets/bootstrap_scss/bootstrap-reboot.scss +0 -12
- package/src/assets/bootstrap_scss/bootstrap.scss +0 -44
- package/src/assets/bootstrap_scss/mixins/_alert.scss +0 -13
- package/src/assets/bootstrap_scss/mixins/_background-variant.scss +0 -22
- package/src/assets/bootstrap_scss/mixins/_badge.scss +0 -17
- package/src/assets/bootstrap_scss/mixins/_border-radius.scss +0 -63
- package/src/assets/bootstrap_scss/mixins/_box-shadow.scss +0 -20
- package/src/assets/bootstrap_scss/mixins/_breakpoints.scss +0 -123
- package/src/assets/bootstrap_scss/mixins/_buttons.scss +0 -110
- package/src/assets/bootstrap_scss/mixins/_caret.scss +0 -62
- package/src/assets/bootstrap_scss/mixins/_clearfix.scss +0 -7
- package/src/assets/bootstrap_scss/mixins/_deprecate.scss +0 -10
- package/src/assets/bootstrap_scss/mixins/_float.scss +0 -14
- package/src/assets/bootstrap_scss/mixins/_forms.scss +0 -177
- package/src/assets/bootstrap_scss/mixins/_gradients.scss +0 -45
- package/src/assets/bootstrap_scss/mixins/_grid-framework.scss +0 -71
- package/src/assets/bootstrap_scss/mixins/_grid.scss +0 -69
- package/src/assets/bootstrap_scss/mixins/_hover.scss +0 -37
- package/src/assets/bootstrap_scss/mixins/_image.scss +0 -36
- package/src/assets/bootstrap_scss/mixins/_list-group.scss +0 -21
- package/src/assets/bootstrap_scss/mixins/_lists.scss +0 -7
- package/src/assets/bootstrap_scss/mixins/_nav-divider.scss +0 -11
- package/src/assets/bootstrap_scss/mixins/_pagination.scss +0 -22
- package/src/assets/bootstrap_scss/mixins/_reset-text.scss +0 -17
- package/src/assets/bootstrap_scss/mixins/_resize.scss +0 -6
- package/src/assets/bootstrap_scss/mixins/_screen-reader.scss +0 -34
- package/src/assets/bootstrap_scss/mixins/_size.scss +0 -7
- package/src/assets/bootstrap_scss/mixins/_table-row.scss +0 -39
- package/src/assets/bootstrap_scss/mixins/_text-emphasis.scss +0 -17
- package/src/assets/bootstrap_scss/mixins/_text-hide.scss +0 -11
- package/src/assets/bootstrap_scss/mixins/_text-truncate.scss +0 -8
- package/src/assets/bootstrap_scss/mixins/_transition.scss +0 -16
- package/src/assets/bootstrap_scss/mixins/_visibility.scss +0 -8
- package/src/assets/bootstrap_scss/utilities/_align.scss +0 -8
- package/src/assets/bootstrap_scss/utilities/_background.scss +0 -19
- package/src/assets/bootstrap_scss/utilities/_borders.scss +0 -75
- package/src/assets/bootstrap_scss/utilities/_clearfix.scss +0 -3
- package/src/assets/bootstrap_scss/utilities/_display.scss +0 -26
- package/src/assets/bootstrap_scss/utilities/_embed.scss +0 -39
- package/src/assets/bootstrap_scss/utilities/_flex.scss +0 -51
- package/src/assets/bootstrap_scss/utilities/_float.scss +0 -11
- package/src/assets/bootstrap_scss/utilities/_overflow.scss +0 -5
- package/src/assets/bootstrap_scss/utilities/_position.scss +0 -32
- package/src/assets/bootstrap_scss/utilities/_screenreaders.scss +0 -11
- package/src/assets/bootstrap_scss/utilities/_shadows.scss +0 -6
- package/src/assets/bootstrap_scss/utilities/_sizing.scss +0 -20
- package/src/assets/bootstrap_scss/utilities/_spacing.scss +0 -73
- package/src/assets/bootstrap_scss/utilities/_stretched-link.scss +0 -19
- package/src/assets/bootstrap_scss/utilities/_text.scss +0 -72
- package/src/assets/bootstrap_scss/utilities/_visibility.scss +0 -13
- package/src/assets/bootstrap_scss/vendor/_rfs.scss +0 -204
- package/src/shims-vuex.d.ts +0 -7
- package/src/views/Home.vue +0 -18
|
@@ -1,46 +1,54 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<div
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
<div
|
|
4
|
+
v-if="loaded && !error"
|
|
5
|
+
class="page-box"
|
|
6
|
+
>
|
|
7
|
+
<h1 v-if="!isOuestFrance">
|
|
8
|
+
{{ titlePage }}
|
|
9
|
+
</h1>
|
|
10
|
+
<Countdown
|
|
11
|
+
v-if="isCounter"
|
|
12
|
+
:time-remaining="timeRemaining"
|
|
13
|
+
/>
|
|
6
14
|
<div class="d-flex">
|
|
7
15
|
<div class="d-flex flex-column flex-super-grow">
|
|
8
16
|
<RecordingItemButton
|
|
9
|
-
class="module-box text-center-mobile flex-no-grow"
|
|
10
|
-
:podcast="podcast"
|
|
11
|
-
:live="true"
|
|
12
|
-
:recording="fetchConference"
|
|
13
|
-
@deleteItem="removeDeleted"
|
|
14
|
-
@validatePodcast="updatePodcast"
|
|
15
17
|
v-if="
|
|
16
18
|
!!fetchConference &&
|
|
17
19
|
isLiveReadyToRecord &&
|
|
18
20
|
!isNotRecorded &&
|
|
19
21
|
isOctopusAndAnimator
|
|
20
22
|
"
|
|
21
|
-
|
|
22
|
-
<EditBox
|
|
23
|
+
class="module-box text-center-mobile flex-no-grow"
|
|
23
24
|
:podcast="podcast"
|
|
25
|
+
:live="true"
|
|
26
|
+
:recording="fetchConference"
|
|
27
|
+
@deleteItem="removeDeleted"
|
|
28
|
+
@validatePodcast="updatePodcast"
|
|
29
|
+
/>
|
|
30
|
+
<EditBox
|
|
24
31
|
v-else-if="editRight && isEditBox"
|
|
25
|
-
:
|
|
32
|
+
:podcast="podcast"
|
|
33
|
+
:is-ready="isReady"
|
|
26
34
|
@validatePodcast="updatePodcast"
|
|
27
|
-
|
|
35
|
+
/>
|
|
28
36
|
<div class="module-box">
|
|
29
37
|
<h2
|
|
30
|
-
class="text-uppercase font-weight-bold title-page-podcast"
|
|
31
38
|
v-if="!isOuestFrance"
|
|
39
|
+
class="text-uppercase fw-bold title-page-podcast"
|
|
32
40
|
>
|
|
33
|
-
{{
|
|
41
|
+
{{ podcast.title }}
|
|
34
42
|
</h2>
|
|
35
43
|
<router-link
|
|
44
|
+
v-else
|
|
36
45
|
:to="{
|
|
37
46
|
name: 'emission',
|
|
38
47
|
params: { emissionId: podcast.emission.emissionId },
|
|
39
|
-
query: { productor:
|
|
48
|
+
query: { productor: $store.state.filter.organisationId },
|
|
40
49
|
}"
|
|
41
|
-
v-else
|
|
42
50
|
>
|
|
43
|
-
<h1>{{
|
|
51
|
+
<h1>{{ podcast.emission.name }}</h1>
|
|
44
52
|
</router-link>
|
|
45
53
|
<div class="mb-5 mt-3 d-flex">
|
|
46
54
|
<div class="w-100">
|
|
@@ -50,61 +58,52 @@
|
|
|
50
58
|
? 'shadow-element'
|
|
51
59
|
: '',
|
|
52
60
|
isLiveReadyToRecord &&
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
fetchConference &&
|
|
62
|
+
'null' !== fetchConference &&
|
|
63
|
+
fetchConference.status
|
|
56
64
|
? fetchConference.status.toLowerCase() + '-shadow'
|
|
57
65
|
: '',
|
|
58
66
|
]"
|
|
59
|
-
class="
|
|
60
|
-
|
|
61
|
-
:
|
|
62
|
-
:
|
|
67
|
+
class="me-3"
|
|
68
|
+
:podcast="podcast"
|
|
69
|
+
:hide-play="!isLiveReadyToRecord"
|
|
70
|
+
:playing-podcast="playingPodcast"
|
|
71
|
+
:fetch-conference="fetchConference"
|
|
72
|
+
:is-animator-live="isOctopusAndAnimator"
|
|
63
73
|
@playPodcast="playPodcast"
|
|
64
|
-
:fetchConference="fetchConference"
|
|
65
|
-
:isAnimatorLive="isOctopusAndAnimator"
|
|
66
74
|
/>
|
|
67
|
-
<h3 v-if="isOuestFrance">
|
|
75
|
+
<h3 v-if="isOuestFrance">
|
|
76
|
+
{{ podcast.title }}
|
|
77
|
+
</h3>
|
|
68
78
|
<div
|
|
69
79
|
class="date-text-zone"
|
|
70
80
|
:class="isLiveReady ? 'justify-content-between' : ''"
|
|
71
81
|
>
|
|
72
82
|
<div
|
|
73
|
-
:class="!isLiveReady ? 'mr-5' : ''"
|
|
74
83
|
v-if="!isOuestFrance && 0 !== date.length"
|
|
84
|
+
:class="!isLiveReady ? 'me-5' : ''"
|
|
75
85
|
>
|
|
76
86
|
{{ date }}
|
|
77
87
|
</div>
|
|
78
|
-
<div class="
|
|
79
|
-
<span
|
|
80
|
-
|
|
88
|
+
<div class="ms-2 me-2 duration">
|
|
89
|
+
<span
|
|
90
|
+
v-if="isOuestFrance"
|
|
91
|
+
class="saooti-clock3"
|
|
92
|
+
/>{{ $t('Duration', { duration: duration }) }}
|
|
81
93
|
</div>
|
|
82
|
-
<div
|
|
94
|
+
<div
|
|
95
|
+
v-if="isLiveReady"
|
|
96
|
+
class="text-danger"
|
|
97
|
+
>
|
|
83
98
|
{{ $t('Episode record in live') }}
|
|
84
99
|
</div>
|
|
85
100
|
</div>
|
|
86
101
|
<div
|
|
87
102
|
class="descriptionText html-wysiwyg-content"
|
|
88
|
-
v-html="urlify(
|
|
89
|
-
|
|
103
|
+
v-html="urlify(podcast.description)"
|
|
104
|
+
/>
|
|
90
105
|
<div class="mt-3 mb-3">
|
|
91
|
-
<
|
|
92
|
-
{{ $t('Animated by : ') }}
|
|
93
|
-
<router-link
|
|
94
|
-
:aria-label="$t('Participant')"
|
|
95
|
-
class="link-info"
|
|
96
|
-
v-for="animator in podcast.animators"
|
|
97
|
-
v-bind:key="animator.participantId"
|
|
98
|
-
:to="{
|
|
99
|
-
name: 'participant',
|
|
100
|
-
params: { participantId: animator.participantId },
|
|
101
|
-
query: {
|
|
102
|
-
productor: this.$store.state.filter.organisationId,
|
|
103
|
-
},
|
|
104
|
-
}"
|
|
105
|
-
>{{ getName(animator) }}</router-link
|
|
106
|
-
>
|
|
107
|
-
</div>
|
|
106
|
+
<ParticipantDescription :participants="podcast.animators" />
|
|
108
107
|
<div v-if="!isOuestFrance">
|
|
109
108
|
{{ $t('Emission') + ' : ' }}
|
|
110
109
|
<router-link
|
|
@@ -113,11 +112,12 @@
|
|
|
113
112
|
name: 'emission',
|
|
114
113
|
params: { emissionId: podcast.emission.emissionId },
|
|
115
114
|
query: {
|
|
116
|
-
productor:
|
|
115
|
+
productor: $store.state.filter.organisationId,
|
|
117
116
|
},
|
|
118
117
|
}"
|
|
119
|
-
>{{ this.podcast.emission.name }}</router-link
|
|
120
118
|
>
|
|
119
|
+
{{ podcast.emission.name }}
|
|
120
|
+
</router-link>
|
|
121
121
|
</div>
|
|
122
122
|
<div v-if="!isPodcastmaker">
|
|
123
123
|
{{ $t('Producted by : ') }}
|
|
@@ -127,62 +127,64 @@
|
|
|
127
127
|
name: 'productor',
|
|
128
128
|
params: { productorId: podcast.organisation.id },
|
|
129
129
|
query: {
|
|
130
|
-
productor:
|
|
131
|
-
},
|
|
132
|
-
}"
|
|
133
|
-
>{{ this.podcast.organisation.name }}</router-link
|
|
134
|
-
>
|
|
135
|
-
</div>
|
|
136
|
-
<div class="comma" v-if="podcast.guests">
|
|
137
|
-
{{ $t('Guests') + ' : ' }}
|
|
138
|
-
<router-link
|
|
139
|
-
class="link-info"
|
|
140
|
-
v-for="guest in podcast.guests"
|
|
141
|
-
v-bind:key="guest.participantId"
|
|
142
|
-
:to="{
|
|
143
|
-
name: 'participant',
|
|
144
|
-
params: { participantId: guest.participantId },
|
|
145
|
-
query: {
|
|
146
|
-
productor: this.$store.state.filter.organisationId,
|
|
130
|
+
productor: $store.state.filter.organisationId,
|
|
147
131
|
},
|
|
148
132
|
}"
|
|
149
|
-
>{{ getName(guest) }}</router-link
|
|
150
133
|
>
|
|
134
|
+
{{ podcast.organisation.name }}
|
|
135
|
+
</router-link>
|
|
151
136
|
</div>
|
|
137
|
+
<a
|
|
138
|
+
v-if="podcast.article"
|
|
139
|
+
class="btn d-flex align-items-center my-2 width-fit-content"
|
|
140
|
+
:href="podcast.article"
|
|
141
|
+
rel="noopener"
|
|
142
|
+
target="_blank"
|
|
143
|
+
>
|
|
144
|
+
<span class="saooti-newspaper me-1" />
|
|
145
|
+
<div>{{ $t('See associated article') }}</div>
|
|
146
|
+
</a>
|
|
147
|
+
<ParticipantDescription
|
|
148
|
+
:participants="podcast.guests"
|
|
149
|
+
:is-guest="true"
|
|
150
|
+
/>
|
|
152
151
|
<div v-if="editRight && !isPodcastmaker">
|
|
153
152
|
<div
|
|
154
|
-
class="mr-5"
|
|
155
153
|
v-if="podcast.annotations && podcast.annotations.RSS"
|
|
154
|
+
class="me-5"
|
|
156
155
|
>
|
|
157
156
|
{{ $t('From RSS') }}
|
|
158
157
|
</div>
|
|
159
158
|
<ErrorMessage
|
|
160
|
-
:message="$t('Podcast is not visible for listeners')"
|
|
161
159
|
v-if="!podcast.availability.visibility"
|
|
160
|
+
:message="$t('Podcast is not visible for listeners')"
|
|
162
161
|
/>
|
|
163
162
|
<ErrorMessage
|
|
164
|
-
:message="$t('Podcast in ERROR, please contact Saooti')"
|
|
165
163
|
v-if="'ERROR' === podcast.processingStatus"
|
|
164
|
+
:message="$t('Podcast in ERROR, please contact Saooti')"
|
|
166
165
|
/>
|
|
167
166
|
<ErrorMessage
|
|
168
|
-
:message="$t('Podcast not validated')"
|
|
169
167
|
v-if="podcastNotValid"
|
|
168
|
+
:message="$t('Podcast not validated')"
|
|
170
169
|
/>
|
|
171
170
|
</div>
|
|
172
171
|
<ShareButtons
|
|
173
|
-
:podcast="podcast"
|
|
174
|
-
:bigRound="true"
|
|
175
|
-
:audioUrl="podcast.audioUrl"
|
|
176
172
|
v-if="isDownloadButton"
|
|
177
|
-
|
|
173
|
+
:podcast="podcast"
|
|
174
|
+
:big-round="true"
|
|
175
|
+
:audio-url="podcast.audioUrl"
|
|
176
|
+
/>
|
|
178
177
|
</div>
|
|
179
178
|
</div>
|
|
180
179
|
</div>
|
|
181
|
-
<TagList
|
|
180
|
+
<TagList
|
|
181
|
+
v-if="isTagList"
|
|
182
|
+
:tag-list="podcast.tags"
|
|
183
|
+
/>
|
|
182
184
|
</div>
|
|
183
185
|
<SubscribeButtons
|
|
184
|
-
:emission="podcast.emission"
|
|
185
186
|
v-if="isShareButtons && countLink >= 1"
|
|
187
|
+
:emission="podcast.emission"
|
|
186
188
|
/>
|
|
187
189
|
</div>
|
|
188
190
|
<div
|
|
@@ -190,100 +192,91 @@
|
|
|
190
192
|
:class="authenticated || notExclusive ? 'flex-grow' : ''"
|
|
191
193
|
>
|
|
192
194
|
<SharePlayer
|
|
195
|
+
v-if="isSharePlayer && (authenticated || notExclusive)"
|
|
193
196
|
:podcast="podcast"
|
|
194
197
|
:emission="podcast.emission"
|
|
195
198
|
:exclusive="exclusive"
|
|
196
|
-
:
|
|
197
|
-
:
|
|
198
|
-
:
|
|
199
|
-
|
|
200
|
-
></SharePlayer>
|
|
199
|
+
:not-exclusive="notExclusive"
|
|
200
|
+
:organisation-id="organisationId"
|
|
201
|
+
:is-education="isEducation"
|
|
202
|
+
/>
|
|
201
203
|
<ShareButtons
|
|
202
|
-
:podcast="podcast"
|
|
203
|
-
:notExclusive="notExclusive"
|
|
204
204
|
v-if="isShareButtons"
|
|
205
|
-
|
|
205
|
+
:podcast="podcast"
|
|
206
|
+
:not-exclusive="notExclusive"
|
|
207
|
+
/>
|
|
206
208
|
</div>
|
|
207
209
|
</div>
|
|
208
210
|
<template v-if="!isOuestFrance">
|
|
209
211
|
<CommentSection
|
|
210
|
-
:podcast="podcast"
|
|
211
212
|
v-if="!isPodcastmaker"
|
|
212
|
-
:fetchConference="fetchConference"
|
|
213
213
|
ref="commentSection"
|
|
214
|
+
:podcast="podcast"
|
|
215
|
+
:fetch-conference="fetchConference"
|
|
214
216
|
/>
|
|
215
217
|
<PodcastInlineList
|
|
216
|
-
:
|
|
217
|
-
:href="'/main/pub/emission/' +
|
|
218
|
+
:emission-id="podcast.emission.emissionId"
|
|
219
|
+
:href="'/main/pub/emission/' + podcast.emission.emissionId"
|
|
218
220
|
:title="$t('More episodes of this emission')"
|
|
219
|
-
:
|
|
221
|
+
:button-text="$t('All podcast emission button')"
|
|
220
222
|
/>
|
|
221
223
|
<PodcastInlineList
|
|
222
224
|
v-for="c in categories"
|
|
223
225
|
:key="c.id"
|
|
224
|
-
:
|
|
226
|
+
:iab-id="c.id"
|
|
225
227
|
:href="'/main/pub/category/' + c.id"
|
|
226
228
|
:title="$t('More episodes of this category : ', { name: c.name })"
|
|
227
|
-
:
|
|
229
|
+
:button-text="$t('All podcast button', { name: c.name })"
|
|
228
230
|
/>
|
|
229
231
|
</template>
|
|
230
232
|
</div>
|
|
231
|
-
<div
|
|
232
|
-
|
|
233
|
-
|
|
233
|
+
<div
|
|
234
|
+
v-if="!loaded"
|
|
235
|
+
class="d-flex justify-content-center"
|
|
236
|
+
>
|
|
237
|
+
<div class="spinner-border me-3" />
|
|
238
|
+
<h3 class="mt-2">
|
|
239
|
+
{{ $t('Loading content ...') }}
|
|
240
|
+
</h3>
|
|
234
241
|
</div>
|
|
235
|
-
<div
|
|
242
|
+
<div
|
|
243
|
+
v-if="error"
|
|
244
|
+
class="text-center"
|
|
245
|
+
>
|
|
236
246
|
<h3>{{ $t("Podcast doesn't exist") }}</h3>
|
|
237
247
|
</div>
|
|
238
248
|
</div>
|
|
239
249
|
</template>
|
|
240
|
-
<style lang="scss">
|
|
241
|
-
.title-page-podcast {
|
|
242
|
-
font-size: 0.9rem;
|
|
243
|
-
}
|
|
244
250
|
|
|
245
|
-
.date-text-zone {
|
|
246
|
-
display: flex;
|
|
247
|
-
flex-wrap: wrap;
|
|
248
|
-
margin-bottom: 1rem;
|
|
249
|
-
@media (max-width: 600px) {
|
|
250
|
-
display: initial;
|
|
251
|
-
.duration {
|
|
252
|
-
margin-left: 0 !important;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
.share-container {
|
|
257
|
-
@media (max-width: 960px) {
|
|
258
|
-
flex-grow: 1;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
</style>
|
|
262
251
|
<script lang="ts">
|
|
263
|
-
// @ is an alias to /src
|
|
264
|
-
import RecordingItemButton from '@/components/display/studio/RecordingItemButton.vue';
|
|
265
|
-
import EditBox from '@/components/display/edit/EditBox.vue';
|
|
266
|
-
import SharePlayer from '../display/sharing/SharePlayer.vue';
|
|
267
|
-
import ShareButtons from '../display/sharing/ShareButtons.vue';
|
|
268
252
|
import PodcastInlineList from '../display/podcasts/PodcastInlineList.vue';
|
|
269
253
|
import PodcastImage from '../display/podcasts/PodcastImage.vue';
|
|
270
|
-
import
|
|
271
|
-
import TagList from '../display/podcasts/TagList.vue';
|
|
272
|
-
import SubscribeButtons from '../display/sharing/SubscribeButtons.vue';
|
|
273
|
-
import Countdown from '../display/live/CountDown.vue';
|
|
254
|
+
import ParticipantDescription from '../display/podcasts/ParticipantDescription.vue';
|
|
274
255
|
const octopusApi = require('@saooti/octopus-api');
|
|
275
256
|
import studioApi from '@/api/studio';
|
|
276
257
|
import { state } from '../../store/paramStore';
|
|
277
|
-
import ErrorMessage from '../misc/ErrorMessage.vue';
|
|
278
258
|
const moment = require('moment');
|
|
279
259
|
const humanizeDuration = require('humanize-duration');
|
|
280
260
|
import { displayMethods } from '../mixins/functions';
|
|
261
|
+
import { Podcast } from '@/store/class/podcast';
|
|
262
|
+
import { Conference } from '@/store/class/conference';
|
|
281
263
|
|
|
282
|
-
import { defineComponent,
|
|
264
|
+
import { defineComponent, defineAsyncComponent } from 'vue';
|
|
265
|
+
const ShareButtons = defineAsyncComponent(() => import('../display/sharing/ShareButtons.vue'));
|
|
266
|
+
const SharePlayer = defineAsyncComponent(() => import('../display/sharing/SharePlayer.vue'));
|
|
267
|
+
const EditBox = defineAsyncComponent(() => import('@/components/display/edit/EditBox.vue'));
|
|
268
|
+
const TagList = defineAsyncComponent(() => import('../display/podcasts/TagList.vue'));
|
|
269
|
+
const SubscribeButtons = defineAsyncComponent(() => import('../display/sharing/SubscribeButtons.vue'));
|
|
270
|
+
const RecordingItemButton = defineAsyncComponent(() => import('@/components/display/studio/RecordingItemButton.vue'));
|
|
271
|
+
const Countdown = defineAsyncComponent(() => import('../display/live/CountDown.vue'));
|
|
272
|
+
const CommentSection = defineAsyncComponent(() => import('../display/comments/CommentSection.vue'));
|
|
273
|
+
const ErrorMessage = defineAsyncComponent(() => import('../misc/ErrorMessage.vue'));
|
|
283
274
|
export default defineComponent({
|
|
275
|
+
name: "Podcast",
|
|
284
276
|
components: {
|
|
285
277
|
PodcastInlineList,
|
|
286
278
|
PodcastImage,
|
|
279
|
+
ParticipantDescription,
|
|
287
280
|
ShareButtons,
|
|
288
281
|
SharePlayer,
|
|
289
282
|
EditBox,
|
|
@@ -295,92 +288,61 @@ export default defineComponent({
|
|
|
295
288
|
ErrorMessage,
|
|
296
289
|
},
|
|
297
290
|
|
|
298
|
-
mixins:
|
|
299
|
-
emits: ['podcastTitle', 'playPodcast', 'initConferenceId'],
|
|
291
|
+
mixins:[displayMethods],
|
|
300
292
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
this.$store,
|
|
307
|
-
this.podcast.conferenceId
|
|
308
|
-
);
|
|
309
|
-
if ('' !== data.data) {
|
|
310
|
-
this.fetchConference = data.data;
|
|
311
|
-
} else {
|
|
312
|
-
this.fetchConference = 'null';
|
|
313
|
-
}
|
|
314
|
-
} else {
|
|
315
|
-
let data = await studioApi.getRealConferenceStatus(
|
|
316
|
-
this.$store,
|
|
317
|
-
this.podcast.conferenceId
|
|
318
|
-
);
|
|
319
|
-
this.fetchConference = {
|
|
320
|
-
status: data.data,
|
|
321
|
-
conferenceId: this.podcast.conferenceId,
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
if (
|
|
325
|
-
'null' !== this.fetchConference &&
|
|
326
|
-
'PUBLISHING' !== this.fetchConference.status &&
|
|
327
|
-
'DEBRIEFING' !== this.fetchConference.status
|
|
328
|
-
) {
|
|
329
|
-
this.$emit('initConferenceId', this.podcast.conferenceId);
|
|
330
|
-
}
|
|
293
|
+
props: {
|
|
294
|
+
updateStatus: { default: undefined, type: String},
|
|
295
|
+
playingPodcast: { default: undefined, type: Object as ()=> Podcast},
|
|
296
|
+
podcastId: { default: 0, type: Number},
|
|
297
|
+
isEducation: { default: false, type: Boolean},
|
|
331
298
|
},
|
|
332
299
|
|
|
333
|
-
|
|
300
|
+
emits: ['initConferenceId', 'podcastTitle', 'playPodcast'],
|
|
334
301
|
|
|
335
302
|
data() {
|
|
336
303
|
return {
|
|
337
|
-
loaded: false,
|
|
338
|
-
podcast: undefined as
|
|
339
|
-
error: false,
|
|
340
|
-
exclusive: false,
|
|
341
|
-
notExclusive: false,
|
|
342
|
-
fetchConference: undefined as
|
|
343
|
-
};
|
|
344
|
-
},
|
|
345
|
-
setup() {
|
|
346
|
-
const commentSection:any =ref(null);
|
|
347
|
-
return {
|
|
348
|
-
commentSection,
|
|
304
|
+
loaded: false as boolean,
|
|
305
|
+
podcast: undefined as Podcast|undefined,
|
|
306
|
+
error: false as boolean,
|
|
307
|
+
exclusive: false as boolean,
|
|
308
|
+
notExclusive: false as boolean,
|
|
309
|
+
fetchConference: undefined as Conference|undefined,
|
|
349
310
|
};
|
|
350
311
|
},
|
|
351
312
|
|
|
352
313
|
computed: {
|
|
353
|
-
isPodcastmaker() {
|
|
314
|
+
isPodcastmaker(): boolean {
|
|
354
315
|
return state.generalParameters.podcastmaker;
|
|
355
316
|
},
|
|
356
|
-
isEditBox() {
|
|
317
|
+
isEditBox(): boolean {
|
|
357
318
|
return state.podcastPage.EditBox;
|
|
358
319
|
},
|
|
359
|
-
isShareButtons() {
|
|
320
|
+
isShareButtons(): boolean {
|
|
360
321
|
return state.podcastPage.ShareButtons;
|
|
361
322
|
},
|
|
362
|
-
isSharePlayer() {
|
|
323
|
+
isSharePlayer(): boolean {
|
|
363
324
|
return state.podcastPage.SharePlayer;
|
|
364
325
|
},
|
|
365
|
-
allCategories() {
|
|
366
|
-
return state.
|
|
326
|
+
allCategories(): any {
|
|
327
|
+
return this.$store.state.categories;
|
|
367
328
|
},
|
|
368
|
-
organisationId() {
|
|
329
|
+
organisationId(): string {
|
|
369
330
|
return state.generalParameters.organisationId;
|
|
370
331
|
},
|
|
371
|
-
authenticated():boolean {
|
|
332
|
+
authenticated(): boolean {
|
|
372
333
|
return state.generalParameters.authenticated;
|
|
373
334
|
},
|
|
374
|
-
isOuestFrance() {
|
|
335
|
+
isOuestFrance(): boolean {
|
|
375
336
|
return state.podcastPage.ouestFranceStyle;
|
|
376
337
|
},
|
|
377
|
-
isTagList() {
|
|
338
|
+
isTagList(): boolean {
|
|
378
339
|
return state.podcastPage.tagList;
|
|
379
340
|
},
|
|
380
|
-
isDownloadButton() {
|
|
341
|
+
isDownloadButton(): boolean {
|
|
381
342
|
return state.podcastPage.downloadButton;
|
|
382
343
|
},
|
|
383
|
-
emissionMainCategory():
|
|
344
|
+
emissionMainCategory(): number {
|
|
345
|
+
if(!this.podcast){return 0;}
|
|
384
346
|
if (
|
|
385
347
|
this.podcast.emission.annotations &&
|
|
386
348
|
this.podcast.emission.annotations.mainIabId
|
|
@@ -394,47 +356,47 @@ export default defineComponent({
|
|
|
394
356
|
}
|
|
395
357
|
return 0;
|
|
396
358
|
},
|
|
397
|
-
|
|
398
|
-
categories():any {
|
|
359
|
+
categories(): any {
|
|
399
360
|
if ('undefined' === typeof this.podcast) return '';
|
|
400
361
|
return this.allCategories
|
|
401
|
-
.filter((item:any) => {
|
|
402
|
-
return (
|
|
362
|
+
.filter((item: any) => {
|
|
363
|
+
return ( this.podcast &&
|
|
403
364
|
this.podcast.emission.iabIds &&
|
|
404
365
|
-1 !== this.podcast.emission.iabIds.indexOf(item.id)
|
|
405
366
|
);
|
|
406
367
|
})
|
|
407
|
-
.sort((a:any, b:any) => {
|
|
368
|
+
.sort((a: any, b: any) => {
|
|
408
369
|
if (a.id === this.emissionMainCategory) return -1;
|
|
409
370
|
if (b.id === this.emissionMainCategory) return 1;
|
|
410
371
|
return 0;
|
|
411
372
|
});
|
|
412
373
|
},
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
374
|
+
date(): string {
|
|
375
|
+
if (this.podcast && 1970 !== moment(this.podcast.pubDate).year()){
|
|
376
|
+
if('fr' === this.$i18n.locale){
|
|
377
|
+
return moment(this.podcast.pubDate).format('D MMMM YYYY [à] HH[h]mm');
|
|
378
|
+
}
|
|
379
|
+
return moment(this.podcast.pubDate).format('D MMMM YYYY [at] HH[h]mm');
|
|
380
|
+
}
|
|
417
381
|
return '';
|
|
418
382
|
},
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
if (this.podcast.duration <= 1) return '';
|
|
383
|
+
duration(): string {
|
|
384
|
+
if (!this.podcast || this.podcast.duration <= 1) return '';
|
|
422
385
|
if (this.podcast.duration > 600000) {
|
|
423
386
|
return humanizeDuration(this.podcast.duration, {
|
|
424
|
-
language:
|
|
387
|
+
language: this.$i18n.locale,
|
|
425
388
|
largest: 1,
|
|
426
389
|
round: true,
|
|
427
390
|
});
|
|
428
391
|
}
|
|
429
392
|
return humanizeDuration(this.podcast.duration, {
|
|
430
|
-
language:
|
|
393
|
+
language: this.$i18n.locale,
|
|
431
394
|
largest: 2,
|
|
432
395
|
round: true,
|
|
433
396
|
});
|
|
434
397
|
},
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
if (
|
|
398
|
+
editRight(): boolean {
|
|
399
|
+
if ( this.podcast &&
|
|
438
400
|
(this.authenticated &&
|
|
439
401
|
this.organisationId === this.podcast.organisation.id) ||
|
|
440
402
|
state.generalParameters.isAdmin
|
|
@@ -442,7 +404,7 @@ export default defineComponent({
|
|
|
442
404
|
return true;
|
|
443
405
|
return false;
|
|
444
406
|
},
|
|
445
|
-
isReady() {
|
|
407
|
+
isReady(): boolean {
|
|
446
408
|
/* if(this.podcast && this.podcast.processingStatus !== "PLANNED" && this.podcast.processingStatus !== "PROCESSING"){
|
|
447
409
|
return true;
|
|
448
410
|
}else{
|
|
@@ -450,63 +412,64 @@ export default defineComponent({
|
|
|
450
412
|
} */
|
|
451
413
|
return true;
|
|
452
414
|
},
|
|
453
|
-
countLink() {
|
|
415
|
+
countLink(): number {
|
|
454
416
|
let count = 0;
|
|
455
|
-
if (this.podcast.emission && this.podcast.emission.annotations) {
|
|
417
|
+
if (this.podcast && this.podcast.emission && this.podcast.emission.annotations) {
|
|
418
|
+
if (undefined !== this.podcast.emission.annotations.amazon) count++;
|
|
456
419
|
if (undefined !== this.podcast.emission.annotations.applePodcast)
|
|
457
420
|
count++;
|
|
458
421
|
if (undefined !== this.podcast.emission.annotations.deezer) count++;
|
|
459
422
|
if (undefined !== this.podcast.emission.annotations.spotify) count++;
|
|
460
423
|
if (undefined !== this.podcast.emission.annotations.tunein) count++;
|
|
461
|
-
if (undefined !== this.podcast.emission.annotations.tootak) count++;
|
|
462
424
|
if (undefined !== this.podcast.emission.annotations.radioline) count++;
|
|
425
|
+
if (undefined !== this.podcast.emission.annotations.podcastAddict) count++;
|
|
426
|
+
if (undefined !== this.podcast.emission.annotations.playerFm) count++;
|
|
427
|
+
if (undefined !== this.podcast.emission.annotations.stitcher) count++;
|
|
463
428
|
}
|
|
464
429
|
return count;
|
|
465
430
|
},
|
|
466
|
-
isLiveReadyToRecord():boolean {
|
|
467
|
-
return (
|
|
468
|
-
this.podcast.conferenceId &&
|
|
469
|
-
0 !== this.podcast.conferenceId &&
|
|
470
|
-
'READY_TO_RECORD' === this.podcast.processingStatus
|
|
471
|
-
);
|
|
431
|
+
isLiveReadyToRecord(): boolean {
|
|
432
|
+
return (undefined!==this.podcast && undefined!==this.podcast.conferenceId && 0 !== this.podcast.conferenceId && 'READY_TO_RECORD' === this.podcast.processingStatus);
|
|
472
433
|
},
|
|
473
|
-
isLiveReady():boolean {
|
|
434
|
+
isLiveReady(): boolean {
|
|
474
435
|
return (
|
|
475
|
-
this.podcast
|
|
436
|
+
undefined!==this.podcast &&
|
|
437
|
+
undefined!==this.podcast.conferenceId &&
|
|
476
438
|
0 !== this.podcast.conferenceId &&
|
|
477
439
|
'READY' === this.podcast.processingStatus
|
|
478
440
|
);
|
|
479
441
|
},
|
|
480
|
-
isCounter():boolean {
|
|
442
|
+
isCounter(): boolean {
|
|
481
443
|
return (
|
|
482
444
|
this.isLiveReadyToRecord &&
|
|
483
|
-
this.fetchConference &&
|
|
445
|
+
undefined!==this.fetchConference &&
|
|
484
446
|
('PLANNED' === this.fetchConference.status ||
|
|
485
447
|
'PENDING' === this.fetchConference.status)
|
|
486
448
|
);
|
|
487
449
|
},
|
|
488
|
-
isNotRecorded():boolean {
|
|
450
|
+
isNotRecorded(): boolean {
|
|
489
451
|
return (
|
|
490
452
|
this.isLiveReadyToRecord &&
|
|
491
|
-
this.fetchConference &&
|
|
453
|
+
undefined!==this.fetchConference &&
|
|
492
454
|
'DEBRIEFING' === this.fetchConference.status
|
|
493
455
|
);
|
|
494
456
|
},
|
|
495
|
-
isOctopusAndAnimator() {
|
|
457
|
+
isOctopusAndAnimator(): boolean {
|
|
496
458
|
return (
|
|
497
459
|
!this.isPodcastmaker &&
|
|
498
460
|
this.editRight &&
|
|
499
461
|
state.generalParameters.isRoleLive
|
|
500
462
|
);
|
|
501
463
|
},
|
|
502
|
-
titlePage():string {
|
|
503
|
-
if (this.isLiveReadyToRecord) return this.$t('Live episode');
|
|
504
|
-
return this.$t('Episode');
|
|
464
|
+
titlePage(): string {
|
|
465
|
+
if (this.isLiveReadyToRecord) return this.$t('Live episode').toString();
|
|
466
|
+
return this.$t('Episode').toString();
|
|
505
467
|
},
|
|
506
|
-
timeRemaining():string {
|
|
468
|
+
timeRemaining(): string {
|
|
469
|
+
if(!this.podcast){return "";}
|
|
507
470
|
return moment(this.podcast.pubDate).diff(moment(), 'seconds');
|
|
508
471
|
},
|
|
509
|
-
podcastNotValid() {
|
|
472
|
+
podcastNotValid(): boolean {
|
|
510
473
|
if (
|
|
511
474
|
this.podcast &&
|
|
512
475
|
this.podcast.availability &&
|
|
@@ -516,14 +479,56 @@ export default defineComponent({
|
|
|
516
479
|
return false;
|
|
517
480
|
},
|
|
518
481
|
},
|
|
519
|
-
|
|
482
|
+
watch: {
|
|
483
|
+
updateStatus(): void {
|
|
484
|
+
if (this.fetchConference && null !== this.fetchConference) {
|
|
485
|
+
this.fetchConference.status = this.updateStatus;
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
podcastId(): void {
|
|
489
|
+
this.loaded = false;
|
|
490
|
+
this.error = false;
|
|
491
|
+
this.getPodcastDetails(this.podcastId);
|
|
492
|
+
},
|
|
493
|
+
},
|
|
494
|
+
|
|
495
|
+
async mounted() {
|
|
496
|
+
await this.getPodcastDetails(this.podcastId);
|
|
497
|
+
if (!this.podcast) return;
|
|
498
|
+
if (!this.isLiveReadyToRecord) return;
|
|
499
|
+
if (this.isOctopusAndAnimator && undefined!==this.podcast.conferenceId) {
|
|
500
|
+
const data: any = await studioApi.getConference(this.$store.state,this.podcast.conferenceId.toString());
|
|
501
|
+
if ('' !== data.data) {
|
|
502
|
+
this.fetchConference = data.data;
|
|
503
|
+
} else {
|
|
504
|
+
this.fetchConference = {conferenceId:-1, title:''};
|
|
505
|
+
}
|
|
506
|
+
} else if(undefined!==this.podcast.conferenceId){
|
|
507
|
+
const data: any = await octopusApi.getRealConferenceStatus(this.podcast.conferenceId.toString());
|
|
508
|
+
this.fetchConference = {
|
|
509
|
+
status: data.data,
|
|
510
|
+
conferenceId: this.podcast.conferenceId,
|
|
511
|
+
title:'',
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
if (
|
|
515
|
+
this.fetchConference &&
|
|
516
|
+
-1 !== this.fetchConference.conferenceId &&
|
|
517
|
+
'PUBLISHING' !== this.fetchConference.status &&
|
|
518
|
+
'DEBRIEFING' !== this.fetchConference.status
|
|
519
|
+
) {
|
|
520
|
+
this.$emit('initConferenceId', this.podcast.conferenceId);
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
|
|
524
|
+
|
|
520
525
|
methods: {
|
|
521
|
-
updatePodcast(podcastUpdated:
|
|
526
|
+
updatePodcast(podcastUpdated: Podcast): void {
|
|
522
527
|
this.podcast = podcastUpdated;
|
|
523
528
|
},
|
|
524
|
-
async getPodcastDetails(podcastId:
|
|
529
|
+
async getPodcastDetails(podcastId: number): Promise<void> {
|
|
525
530
|
try {
|
|
526
|
-
|
|
531
|
+
const data : Podcast = await octopusApi.fetchPodcast(podcastId);
|
|
527
532
|
this.podcast = data;
|
|
528
533
|
this.$emit('podcastTitle', this.podcast.title);
|
|
529
534
|
if (
|
|
@@ -562,36 +567,45 @@ export default defineComponent({
|
|
|
562
567
|
this.loaded = true;
|
|
563
568
|
}
|
|
564
569
|
},
|
|
565
|
-
getName(person:
|
|
570
|
+
getName(person: any): string {
|
|
566
571
|
const first = person.firstName || '';
|
|
567
572
|
const last = person.lastName || '';
|
|
568
573
|
return (first + ' ' + last).trim();
|
|
569
574
|
},
|
|
570
|
-
playPodcast(podcast:
|
|
575
|
+
playPodcast(podcast: Podcast): void {
|
|
571
576
|
this.$emit('playPodcast', podcast);
|
|
572
577
|
},
|
|
573
|
-
removeDeleted() {
|
|
578
|
+
removeDeleted(): void {
|
|
574
579
|
if (window.history.length > 1) {
|
|
575
580
|
this.$router.go(-1);
|
|
576
581
|
} else {
|
|
577
582
|
this.$router.push('/');
|
|
578
583
|
}
|
|
579
584
|
},
|
|
580
|
-
receiveCommentEvent(event: any) {
|
|
581
|
-
this.commentSection.receiveCommentEvent(event);
|
|
582
|
-
},
|
|
583
|
-
},
|
|
584
|
-
watch: {
|
|
585
|
-
updateStatus() {
|
|
586
|
-
if (this.fetchConference && null !== this.fetchConference) {
|
|
587
|
-
this.fetchConference.status = this.updateStatus;
|
|
588
|
-
}
|
|
589
|
-
},
|
|
590
|
-
podcastId(val) {
|
|
591
|
-
this.loaded = false;
|
|
592
|
-
this.error = false;
|
|
593
|
-
this.getPodcastDetails(val);
|
|
585
|
+
receiveCommentEvent(event: any): void {
|
|
586
|
+
(this.$refs.commentSection as any).receiveCommentEvent(event);
|
|
594
587
|
},
|
|
595
588
|
},
|
|
596
|
-
})
|
|
589
|
+
})
|
|
597
590
|
</script>
|
|
591
|
+
|
|
592
|
+
<style lang="scss">
|
|
593
|
+
.title-page-podcast {
|
|
594
|
+
font-size: 0.9rem;
|
|
595
|
+
}
|
|
596
|
+
.width-fit-content{
|
|
597
|
+
width: fit-content;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.date-text-zone {
|
|
601
|
+
display: flex;
|
|
602
|
+
flex-wrap: wrap;
|
|
603
|
+
margin-bottom: 1rem;
|
|
604
|
+
@media (max-width: 600px) {
|
|
605
|
+
display: initial;
|
|
606
|
+
.duration {
|
|
607
|
+
margin-left: 0 !important;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
</style>
|