@saooti/octopus-sdk 30.0.4 → 30.0.8

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 (151) hide show
  1. package/README.md +5 -0
  2. package/index.ts +13 -2
  3. package/package.json +1 -1
  4. package/src/App.vue +4 -4
  5. package/src/api/comments.ts +1 -1
  6. package/src/assets/bootstrap-diff.scss +2 -1
  7. package/src/assets/form.scss +7 -15
  8. package/src/assets/general.scss +14 -20
  9. package/src/assets/multiselect.scss +2 -2
  10. package/src/assets/share.scss +1 -12
  11. package/src/components/display/categories/CategoryChooser.vue +1 -1
  12. package/src/components/display/categories/CategoryFilter.vue +4 -4
  13. package/src/components/display/categories/CategoryList.vue +1 -1
  14. package/src/components/display/comments/CommentInput.vue +3 -3
  15. package/src/components/display/comments/CommentItem.vue +4 -3
  16. package/src/components/display/comments/CommentList.vue +4 -4
  17. package/src/components/display/comments/CommentParentInfo.vue +1 -1
  18. package/src/components/display/comments/CommentPlayer.vue +2 -2
  19. package/src/components/display/comments/CommentSection.vue +3 -3
  20. package/src/components/display/edit/EditBox.vue +1 -1
  21. package/src/components/display/edit/EditCommentBox.vue +1 -1
  22. package/src/components/display/emission/EmissionChooser.vue +2 -2
  23. package/src/components/display/emission/EmissionInlineList.vue +3 -3
  24. package/src/components/display/emission/EmissionItem.vue +3 -3
  25. package/src/components/display/emission/EmissionList.vue +4 -4
  26. package/src/components/display/emission/EmissionPlayerItem.vue +3 -3
  27. package/src/components/display/filter/AdvancedSearch.vue +40 -106
  28. package/src/components/display/filter/CategoryFilter.vue +10 -14
  29. package/src/components/display/filter/MonetizableFilter.vue +1 -1
  30. package/src/components/display/filter/ProductorSearch.vue +21 -40
  31. package/src/components/display/filter/RubriqueChoice.vue +4 -4
  32. package/src/components/display/filter/RubriqueFilter.vue +10 -14
  33. package/src/components/display/live/LiveHorizontalList.vue +1 -1
  34. package/src/components/display/live/LiveItem.vue +2 -2
  35. package/src/components/display/live/LiveList.vue +1 -1
  36. package/src/components/display/organisation/OrganisationChooser.vue +1 -1
  37. package/src/components/display/organisation/OrganisationChooserLight.vue +9 -3
  38. package/src/components/display/participant/ParticipantItem.vue +1 -1
  39. package/src/components/display/participant/ParticipantList.vue +1 -1
  40. package/src/components/display/playlist/PlaylistItem.vue +2 -2
  41. package/src/components/display/playlist/PlaylistList.vue +1 -1
  42. package/src/components/display/playlist/PodcastList.vue +10 -21
  43. package/src/components/display/podcasts/AnimatorsItem.vue +1 -1
  44. package/src/components/display/podcasts/ParticipantDescription.vue +2 -1
  45. package/src/components/display/podcasts/PodcastFilterList.vue +11 -20
  46. package/src/components/display/podcasts/PodcastImage.vue +3 -3
  47. package/src/components/display/podcasts/PodcastInlineList.vue +3 -3
  48. package/src/components/display/podcasts/PodcastItem.vue +3 -3
  49. package/src/components/display/podcasts/PodcastList.vue +2 -2
  50. package/src/components/display/podcasts/PodcastModuleBox.vue +2 -2
  51. package/src/components/display/rubriques/RubriqueChooser.vue +1 -1
  52. package/src/components/display/rubriques/RubriqueList.vue +4 -4
  53. package/src/components/display/sharing/PlayerParameters.vue +31 -103
  54. package/src/components/display/sharing/ShareButtons.vue +3 -3
  55. package/src/components/display/sharing/ShareDistribution.vue +1 -1
  56. package/src/components/display/sharing/SharePlayer.vue +35 -51
  57. package/src/components/display/sharing/SharePlayerColors.vue +2 -2
  58. package/src/components/display/sharing/SharePlayerTypes.vue +5 -5
  59. package/src/components/display/sharing/SubscribeButtons.vue +2 -2
  60. package/src/components/form/ClassicCheckbox.vue +61 -0
  61. package/src/components/form/ClassicLoading.vue +28 -0
  62. package/src/components/form/ClassicRadio.vue +61 -0
  63. package/src/components/form/ClassicSearch.vue +82 -0
  64. package/src/components/misc/ErrorMessage.vue +1 -1
  65. package/src/components/misc/Footer.vue +28 -37
  66. package/src/components/misc/HomeDropdown.vue +44 -93
  67. package/src/components/misc/LeftMenu.vue +111 -144
  68. package/src/components/misc/Player.vue +16 -30
  69. package/src/components/misc/PlayerButtons.vue +16 -39
  70. package/src/components/misc/PlayerClockAndTimeline.vue +1 -1
  71. package/src/components/misc/PlayerProgressBar.vue +16 -51
  72. package/src/components/misc/Popover.vue +8 -2
  73. package/src/components/misc/TopBar.vue +142 -224
  74. package/src/components/misc/modal/ClipboardModal.vue +1 -1
  75. package/src/components/misc/modal/NewsletterModal.vue +15 -29
  76. package/src/components/misc/modal/QrCodeModal.vue +2 -2
  77. package/src/components/misc/modal/ShareModalPlayer.vue +1 -1
  78. package/src/components/mixins/init.ts +1 -1
  79. package/src/components/mixins/organisationFilter.ts +1 -1
  80. package/src/components/pages/Category.vue +4 -9
  81. package/src/components/pages/Emission.vue +13 -25
  82. package/src/components/pages/Emissions.vue +10 -19
  83. package/src/components/pages/Home.vue +5 -7
  84. package/src/components/pages/Lives.vue +3 -5
  85. package/src/components/pages/Participant.vue +19 -27
  86. package/src/components/pages/Participants.vue +7 -15
  87. package/src/components/pages/Playlist.vue +17 -30
  88. package/src/components/pages/Playlists.vue +1 -11
  89. package/src/components/pages/Podcast.vue +20 -34
  90. package/src/components/pages/Podcasts.vue +12 -26
  91. package/src/components/pages/Search.vue +26 -64
  92. package/src/store/class/{adserverConfig.ts → adserver/adserverConfig.ts} +0 -0
  93. package/src/store/class/adserver/adserverOtherEmission.ts +13 -0
  94. package/src/store/class/{adserverTiming.ts → adserver/adserverTiming.ts} +0 -0
  95. package/src/store/class/cartouchier/cartouche.ts +15 -0
  96. package/src/store/class/cartouchier/cartouchier.ts +9 -0
  97. package/src/store/class/conference/conference.ts +35 -0
  98. package/src/store/class/conference/conferenceMessage.ts +10 -0
  99. package/src/store/class/conference/conferenceParticipant.ts +18 -0
  100. package/src/store/class/conference/pad.ts +15 -0
  101. package/src/store/class/conference/studioCall.ts +7 -0
  102. package/src/store/class/contract/contract.ts +7 -0
  103. package/src/store/class/contract/contractOrganisation.ts +7 -0
  104. package/src/store/class/ftp/ftpEmission.ts +41 -0
  105. package/src/store/class/ftp/ftpParam.ts +12 -0
  106. package/src/store/class/ftp/testFtpEmission.ts +5 -0
  107. package/src/store/class/general/audioView.ts +21 -0
  108. package/src/store/class/{category.ts → general/category.ts} +1 -1
  109. package/src/store/class/general/comment.ts +16 -0
  110. package/src/store/class/general/customPlayer.ts +8 -0
  111. package/src/store/class/{emission.ts → general/emission.ts} +2 -2
  112. package/src/store/class/general/fetchParam.ts +33 -0
  113. package/src/store/class/general/initState.ts +25 -0
  114. package/src/store/class/general/ituneCategory.ts +5 -0
  115. package/src/store/class/general/media.ts +14 -0
  116. package/src/store/class/general/organisation.ts +19 -0
  117. package/src/store/class/general/pageable.ts +13 -0
  118. package/src/store/class/{participant.ts → general/participant.ts} +0 -0
  119. package/src/store/class/{player.ts → general/player.ts} +0 -0
  120. package/src/store/class/{playlist.ts → general/playlist.ts} +2 -2
  121. package/src/store/class/{podcast.ts → general/podcast.ts} +2 -1
  122. package/src/store/class/general/sortPageable.ts +5 -0
  123. package/src/store/class/general/soundcastCategory.ts +8 -0
  124. package/src/store/class/ouestFrance/ofTag.ts +36 -0
  125. package/src/store/class/ouestFrance/ofTagInfo.ts +9 -0
  126. package/src/store/class/ouestFrance/ofTagPage.ts +7 -0
  127. package/src/store/class/ouestFrance/ofTagSeo.ts +7 -0
  128. package/src/store/class/ouestFrance/ofTagVente.ts +6 -0
  129. package/src/store/class/ouestFrance/ofTagWithParents.ts +26 -0
  130. package/src/store/class/rss/aggregator.ts +28 -0
  131. package/src/store/class/rss/rssEmission.ts +14 -0
  132. package/src/store/class/rss/rssInfo.ts +8 -0
  133. package/src/store/class/{rubriquage.ts → rubrique/rubriquage.ts} +0 -0
  134. package/src/store/class/rubrique/rubriquageFilter.ts +6 -0
  135. package/src/store/class/rubrique/rubrique.ts +8 -0
  136. package/src/store/class/stat/statArrayIncome.ts +6 -0
  137. package/src/store/class/stat/statArrayObject.ts +34 -0
  138. package/src/store/class/stat/statGraph.ts +7 -0
  139. package/src/store/class/{person.ts → user/person.ts} +2 -2
  140. package/src/store/class/user/profile.ts +12 -0
  141. package/src/store/class/user/userKeycloak.ts +24 -0
  142. package/src/store/paramStore.ts +1 -1
  143. package/src/store/typeAppStore.ts +10 -10
  144. package/src/store/class/comment.ts +0 -16
  145. package/src/store/class/conference.ts +0 -31
  146. package/src/store/class/customPlayer.ts +0 -8
  147. package/src/store/class/fetchParam.ts +0 -33
  148. package/src/store/class/media.ts +0 -14
  149. package/src/store/class/organisation.ts +0 -19
  150. package/src/store/class/rubriquageFilter.ts +0 -6
  151. package/src/store/class/rubrique.ts +0 -9
@@ -9,29 +9,19 @@
9
9
  <div class="d-flex align-items-center flex-wrap">
10
10
  <div
11
11
  v-if="categoryFilter"
12
- class="d-flex align-items-center flex-grow categories-filter"
12
+ class="d-flex align-items-center flex-grow-1 categories-filter"
13
13
  >
14
14
  <CategoryChooser
15
15
  :defaultanswer="$t('No category filter')"
16
16
  @selected="onCategorySelected"
17
17
  />
18
18
  </div>
19
- <div class="d-flex position-relative small-flex-grow">
20
- <label
21
- for="search"
22
- class="d-inline"
23
- :aria-label="$t('Search')"
24
- />
25
- <input
26
- id="search"
27
- v-model="searchPattern"
28
- :placeholder="$t('Search')"
29
- class="filter-search-input input-no-outline flex-grow"
30
- >
31
- <div
32
- class="saooti-search-bounty filter-list-search-icon search-icon-container"
33
- />
34
- </div>
19
+ <ClassicSearch
20
+ v-model:textInit="searchPattern"
21
+ class="small-flex-grow"
22
+ id-checkbox="podcast-filter-search"
23
+ :label="$t('Search')"
24
+ />
35
25
  </div>
36
26
  <PodcastList
37
27
  :first="first"
@@ -49,16 +39,17 @@
49
39
  </template>
50
40
 
51
41
  <script lang="ts">
52
-
42
+ import ClassicSearch from '../../form/ClassicSearch.vue';
53
43
  import PodcastList from './PodcastList.vue';
54
- import { Category } from '@/store/class/category';
44
+ import { Category } from '@/store/class/general/category';
55
45
  import { defineComponent, defineAsyncComponent } from 'vue';
56
- import { Podcast } from '@/store/class/podcast';
46
+ import { Podcast } from '@/store/class/general/podcast';
57
47
  const CategoryChooser = defineAsyncComponent(() => import('../categories/CategoryChooser.vue'));
58
48
  export default defineComponent({
59
49
  components: {
60
50
  CategoryChooser,
61
51
  PodcastList,
52
+ ClassicSearch
62
53
  },
63
54
  props: {
64
55
  participantId: { default: undefined, type: Number},
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="podcast"
4
- class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink float-start"
4
+ class="img-box d-flex flex-column justify-content-start align-items-start position-relative justify rounded-lg flex-shrink-0 float-start"
5
5
  :style="{ 'background-image': 'url(\'' + podcast.imageUrl + '\')' }"
6
6
  >
7
7
  <template v-if="isPodcastmaker">
@@ -96,8 +96,8 @@
96
96
  import { mapState } from 'vuex';
97
97
  import { state } from '../../../store/paramStore';
98
98
  import {StoreState} from '@/store/typeAppStore';
99
- import { Podcast } from '@/store/class/podcast';
100
- import { Conference } from '@/store/class/conference';
99
+ import { Podcast } from '@/store/class/general/podcast';
100
+ import { Conference } from '@/store/class/conference/conference';
101
101
  import { defineComponent } from 'vue'
102
102
  export default defineComponent({
103
103
  name: 'PodcastImage',
@@ -62,7 +62,7 @@
62
62
  <PodcastItem
63
63
  v-for="p in podcasts"
64
64
  :key="p.podcastId"
65
- class="flex-shrink item-phone-margin"
65
+ class="flex-shrink-0 item-phone-margin"
66
66
  :podcast="p"
67
67
  :class="[alignLeft ? 'me-3' : '']"
68
68
  />
@@ -88,8 +88,8 @@ import PodcastItem from './PodcastItem.vue';
88
88
 
89
89
  const PHONE_WIDTH = 960;
90
90
 
91
- import { Podcast } from '@/store/class/podcast';
92
- import { RubriquageFilter } from '@/store/class/rubriquageFilter';
91
+ import { Podcast } from '@/store/class/general/podcast';
92
+ import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
93
93
  import { defineComponent } from 'vue'
94
94
  import { RouteLocationRaw } from 'vue-router';
95
95
  export default defineComponent({
@@ -54,7 +54,7 @@
54
54
  params: { podcastId: podcast.podcastId },
55
55
  query: { productor: $store.state.filter.organisationId },
56
56
  }"
57
- class="text-dark d-flex flex-column flex-grow"
57
+ class="text-dark d-flex flex-column flex-grow-1"
58
58
  >
59
59
  <div class="title-podcast-item">
60
60
  {{ title }}
@@ -89,8 +89,8 @@ import moment from 'moment';
89
89
  // @ts-ignore
90
90
  import humanizeDuration from 'humanize-duration';
91
91
 
92
- import { Podcast } from '@/store/class/podcast';
93
- import { Category } from '@/store/class/category';
92
+ import { Podcast } from '@/store/class/general/podcast';
93
+ import { Category } from '@/store/class/general/category';
94
94
  import { defineComponent } from 'vue'
95
95
  export default defineComponent({
96
96
  name: 'PodcastItem',
@@ -49,9 +49,9 @@ import octopusApi from '@saooti/octopus-api';
49
49
  import PodcastItem from './PodcastItem.vue';
50
50
  import { state } from '../../../store/paramStore';
51
51
 
52
- import { Podcast } from '@/store/class/podcast';
52
+ import { Podcast } from '@/store/class/general/podcast';
53
53
  import { defineComponent } from 'vue'
54
- import { FetchParam } from '@/store/class/fetchParam';
54
+ import { FetchParam } from '@/store/class/general/fetchParam';
55
55
  export default defineComponent({
56
56
  name: 'PodcastList',
57
57
 
@@ -160,8 +160,8 @@ import moment from 'moment';
160
160
  // @ts-ignore
161
161
  import humanizeDuration from 'humanize-duration';
162
162
  import { displayMethods } from '../../mixins/functions';
163
- import { Podcast } from '@/store/class/podcast';
164
- import { Conference } from '@/store/class/conference';
163
+ import { Podcast } from '@/store/class/general/podcast';
164
+ import { Conference } from '@/store/class/conference/conference';
165
165
 
166
166
  import { defineComponent, defineAsyncComponent } from 'vue';
167
167
  const ShareButtons = defineAsyncComponent(() => import('../sharing/ShareButtons.vue'));
@@ -70,7 +70,7 @@
70
70
  import { selenium } from '../../mixins/functions';
71
71
  //@ts-ignore
72
72
  import VueMultiselect from 'vue-multiselect';
73
- import { Rubrique } from '@/store/class/rubrique';
73
+ import { Rubrique } from '@/store/class/rubrique/rubrique';
74
74
  const getDefaultRubrique = (defaultName: string) => {
75
75
  if ('' === defaultName){
76
76
  return undefined;
@@ -6,7 +6,7 @@
6
6
  >
7
7
  <select
8
8
  v-model="rubriquage"
9
- class="basic-select border c-hand mb-0"
9
+ class="c-hand mb-0"
10
10
  @change="onRubriquageSelected"
11
11
  >
12
12
  <option
@@ -54,9 +54,9 @@
54
54
  </template>
55
55
 
56
56
  <script lang="ts">
57
- import { Rubrique } from '@/store/class/rubrique';
58
- import { Rubriquage } from '@/store/class/rubriquage';
59
- import { RubriquageFilter } from '@/store/class/rubriquageFilter';
57
+ import { Rubrique } from '@/store/class/rubrique/rubrique';
58
+ import { Rubriquage } from '@/store/class/rubrique/rubriquage';
59
+ import { RubriquageFilter } from '@/store/class/rubrique/rubriquageFilter';
60
60
  import { defineComponent } from 'vue'
61
61
  export default defineComponent({
62
62
  name: 'RubriqueList',
@@ -1,6 +1,5 @@
1
1
  <template>
2
2
  <div
3
- v-if="!playlist"
4
3
  id="accordionParameters"
5
4
  class="accordion player-parameters mt-3"
6
5
  >
@@ -28,13 +27,11 @@
28
27
  >
29
28
  <div class="accordion-body">
30
29
  <div
31
- v-if="
32
- !podcast || isEmission || isLargeEmission || isLargeSuggestion
33
- "
34
- class="d-flex flex-column flex-grow"
30
+ v-if="choseNumberEpisode"
31
+ class="d-flex flex-column flex-grow-1"
35
32
  >
36
33
  <div
37
- v-if="!podcast || isEmission || isLargeEmission"
34
+ v-if="displayChoiceAllEpisodes"
38
35
  class="d-flex align-items-center w-100 flex-wrap mt-1"
39
36
  >
40
37
  <input
@@ -44,21 +41,21 @@
44
41
  name="episodeNumbers"
45
42
  value="all"
46
43
  >
47
- <span class="flex-shrink">{{ $t('Show every episode') }}</span>
44
+ <span class="flex-shrink-0">{{ $t('Show every episode') }}</span>
48
45
  </div>
49
46
  <div
50
47
  class="d-flex align-items-center flex-wrap"
51
- :class="!podcast || isEmission || isLargeEmission ? '' : 'mt-3'"
48
+ :class="displayChoiceAllEpisodes ? '' : 'mt-3'"
52
49
  >
53
50
  <input
54
- v-if="!podcast || isEmission || isLargeEmission"
51
+ v-if="displayChoiceAllEpisodes"
55
52
  v-model="episodeNumbers"
56
53
  class="form-check-input"
57
54
  type="radio"
58
55
  name="episodeNumbers"
59
56
  value="number"
60
57
  >
61
- <span class="flex-shrink">{{ $t('Show') }}</span>
58
+ <span class="flex-shrink-0">{{ $t('Show') }}</span>
62
59
  <input
63
60
  id="number-input"
64
61
  v-model="iFrameNumber"
@@ -72,76 +69,29 @@
72
69
  class="d-inline"
73
70
  :aria-label="$t('Number of player podcasts')"
74
71
  />
75
- <span class="flex-shrink">{{ $t('Last podcasts') }}</span>
76
- </div>
77
- <div>
78
- <input
79
- id="proceedCheck"
80
- v-model="proceedReading"
81
- type="checkbox"
82
- class="form-check-input"
83
- >
84
- <label
85
- class="form-check-label"
86
- for="proceedCheck"
87
- >{{
88
- $t('Proceed reading')
89
- }}</label>
90
- </div>
91
- <div>
92
- <input
93
- id="isVisibleCheckbox"
94
- v-model="isVisibleTemp"
95
- type="checkbox"
96
- class="form-check-input"
97
- >
98
- <label
99
- class="form-check-label me-2"
100
- for="isVisibleCheckbox"
101
- >{{ $t('Podcasts still available') }}</label>
72
+ <span class="flex-shrink-0">{{ $t('Last podcasts') }}</span>
102
73
  </div>
74
+ <ClassicCheckbox
75
+ v-model:textInit="proceedReading"
76
+ id-checkbox="proceed-reading-checkbox"
77
+ :label="$t('Proceed reading')"
78
+ />
79
+ <ClassicCheckbox
80
+ v-model:textInit="isVisibleTemp"
81
+ id-checkbox="is-visible-checkbox"
82
+ :label="$t('Podcasts still available')"
83
+ />
103
84
  </div>
104
85
  <div
105
86
  v-else
106
- class="d-flex flex-column flex-grow"
87
+ class="d-flex flex-column flex-grow-1"
107
88
  >
108
- <div>
109
- <input
110
- id="proceedCheck"
111
- v-model="displayArticle"
112
- type="checkbox"
113
- class="form-check-input"
114
- >
115
- <label
116
- class="form-check-label"
117
- for="proceedCheck"
118
- >{{
119
- $t('Display associated article')
120
- }}</label>
121
- </div>
89
+ <ClassicCheckbox
90
+ v-model:textInit="displayArticle"
91
+ id-checkbox="display-article-checkbox"
92
+ :label="$t('Display associated article')"
93
+ />
122
94
  </div>
123
- <!-- <div class="d-flex align-items-center flex-wrap" v-if="podcast && iFrameModel !== 'emission'">
124
- <div>
125
- <input type="checkbox" class="form-check-input" id="startTime" v-model="startTime">
126
- <label class="form-check-label me-2" for="startTime">{{$t('Start at')}}</label>
127
- </div>
128
- <input
129
- ref="minutesRef"
130
- type="number"
131
- :value="minutes"
132
- min="0"
133
- class="input-share-player input-no-outline"
134
- @change="onDurationChange"/>
135
- <div class="me-1 ms-1">:</div>
136
- <input
137
- ref="secondesRef"
138
- type="number"
139
- :value="secondes"
140
- min="0"
141
- max="59"
142
- class="input-share-player input-no-outline"
143
- @change="onDurationChange"/>
144
- </div> -->
145
95
  </div>
146
96
  </div>
147
97
  </div>
@@ -149,26 +99,24 @@
149
99
  </template>
150
100
 
151
101
  <script lang="ts">
152
- import { Playlist } from '@/store/class/playlist';
153
- import { Podcast } from '@/store/class/podcast';
102
+ import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
154
103
  import { defineComponent } from 'vue'
155
104
  export default defineComponent({
105
+ components:{
106
+ ClassicCheckbox,
107
+ },
156
108
  props: {
157
- podcast: { default: undefined, type: Object as ()=> Podcast},
158
- playlist: { default: undefined, type: Object as ()=> Playlist},
159
- iFrameModel: { default: undefined, type: String},
160
109
  isVisible: { default: false, type: Boolean},
110
+ choseNumberEpisode: {default: false, type: Boolean},
111
+ displayChoiceAllEpisodes: {default: false, type: Boolean}
161
112
  },
162
- emits: ['startTime', 'episodeNumbers', 'proceedReading', 'isVisible', 'iFrameNumber', 'displayArticle'],
113
+ emits: ['episodeNumbers', 'proceedReading', 'isVisible', 'iFrameNumber', 'displayArticle'],
163
114
 
164
115
  data() {
165
116
  return {
166
117
  proceedReading: true as boolean,
167
118
  episodeNumbers: 'number' as string,
168
119
  iFrameNumberPriv: '3' as string,
169
- minutes: 0 as number,
170
- secondes: 0 as number,
171
- startTime: true as boolean,
172
120
  isVisibleTemp: this.isVisible as boolean,
173
121
  displayArticle: true as boolean,
174
122
  };
@@ -185,15 +133,6 @@ export default defineComponent({
185
133
  }
186
134
  },
187
135
  },
188
- isEmission(): boolean {
189
- return 'emission' === this.iFrameModel;
190
- },
191
- isLargeEmission(): boolean {
192
- return 'largeEmission' === this.iFrameModel;
193
- },
194
- isLargeSuggestion(): boolean {
195
- return 'largeSuggestion' === this.iFrameModel;
196
- },
197
136
  },
198
137
  watch: {
199
138
  episodeNumbers(): void {
@@ -215,17 +154,6 @@ export default defineComponent({
215
154
  this.$emit('displayArticle', this.displayArticle);
216
155
  }
217
156
  },
218
- methods: {
219
- /* onDurationChange(): void {
220
- if (this.startTime) {
221
- const minutes = parseInt((this.$refs.minutesRef as any).value, 10);
222
- const secondes = parseInt((this.$refs.secondesRef as any).value, 10);
223
- this.$emit('startTime', minutes * 60 + secondes);
224
- } else {
225
- this.$emit('startTime', 0);
226
- }
227
- }, */
228
- },
229
157
  })
230
158
  </script>
231
159
 
@@ -14,13 +14,13 @@
14
14
  v-if="authenticated"
15
15
  id="popover-share-help"
16
16
  role="button"
17
+ tabindex="-1"
17
18
  class="saooti-help ml-2"
18
19
  :aria-label="$t('Help')"
19
20
  />
20
21
  <Popover
21
22
  v-if="authenticated"
22
23
  target="popover-share-help"
23
- triggers="hover"
24
24
  placement="right"
25
25
  >
26
26
  {{ $t('Share this page without edit and share blocks') }}
@@ -247,8 +247,8 @@
247
247
  </template>
248
248
 
249
249
  <script lang="ts">
250
- import { Emission } from '@/store/class/emission';
251
- import { Podcast } from '@/store/class/podcast';
250
+ import { Emission } from '@/store/class/general/emission';
251
+ import { Podcast } from '@/store/class/general/podcast';
252
252
  import { state } from '../../../store/paramStore';
253
253
  import Snackbar from '../../misc/Snackbar.vue';
254
254
  import { displayMethods } from '../../mixins/functions';
@@ -113,7 +113,7 @@
113
113
  import octopusApi from '@saooti/octopus-api';
114
114
  import Snackbar from '../../misc/Snackbar.vue';
115
115
  import { displayMethods } from '../../mixins/functions';
116
- import { Emission } from '@/store/class/emission';
116
+ import { Emission } from '@/store/class/general/emission';
117
117
 
118
118
  import { defineComponent, defineAsyncComponent } from 'vue';
119
119
  import SnackbarVue from '../../misc/Snackbar.vue';
@@ -40,36 +40,23 @@
40
40
  v-model:color="color"
41
41
  v-model:theme="theme"
42
42
  />
43
- <div
43
+ <ClassicCheckbox
44
44
  v-if="isPodcastNotVisible || playlist"
45
- class="d-flex align-items-center flex-wrap"
46
- >
47
- <div>
48
- <input
49
- id="isVisibleCheckbox"
50
- v-model="isVisible"
51
- type="checkbox"
52
- class="form-check-input"
53
- >
54
- <label
55
- class="form-check-label me-2"
56
- for="isVisibleCheckbox"
57
- >{{ titleStillAvailable }}</label>
58
- </div>
59
- </div>
45
+ v-model:textInit="isVisible"
46
+ id-checkbox="is-visible-checkbox"
47
+ :label="titleStillAvailable"
48
+ />
60
49
  </div>
61
50
  <PlayerParameters
62
51
  v-if="isPlayerParameter"
63
- :podcast="podcast"
64
- :playlist="playlist"
65
- :i-frame-model="iFrameModel"
66
52
  :is-visible="isVisible"
53
+ :chose-number-episode="displayChoiceAllEpisodes|| isLargeSuggestion"
54
+ :display-choice-all-episodes="displayChoiceAllEpisodes"
67
55
  @displayArticle="updateDisplayArticle"
68
56
  @episodeNumbers="updateEpisodeNumber"
69
57
  @proceedReading="updateProceedReading"
70
58
  @isVisible="updateIsVisible"
71
59
  @iFrameNumber="updateIframeNumber"
72
- @startTime="updateStartTime"
73
60
  />
74
61
  </template>
75
62
  <div v-else-if="exclusive && authenticated">
@@ -92,21 +79,23 @@
92
79
  <script lang="ts">
93
80
  import { state } from '../../../store/paramStore';
94
81
  import octopusApi from '@saooti/octopus-api';
95
- import { Podcast } from '@/store/class/podcast';
96
- import { Emission } from '@/store/class/emission';
97
- import { Playlist } from '@/store/class/playlist';
98
- import { CustomPlayer } from '@/store/class/customPlayer';
82
+ import { Podcast } from '@/store/class/general/podcast';
83
+ import { Emission } from '@/store/class/general/emission';
84
+ import { Playlist } from '@/store/class/general/playlist';
85
+ import { CustomPlayer } from '@/store/class/general/customPlayer';
99
86
  import { defineComponent, defineAsyncComponent } from 'vue';
100
87
  const ShareModalPlayer = defineAsyncComponent(() => import('../../misc/modal/ShareModalPlayer.vue'));
101
88
  const PlayerParameters = defineAsyncComponent(() => import('./PlayerParameters.vue'));
102
89
  const SharePlayerTypes = defineAsyncComponent(() => import('./SharePlayerTypes.vue'));
103
90
  const SharePlayerColors = defineAsyncComponent(() => import('./SharePlayerColors.vue'));
91
+ const ClassicCheckbox = defineAsyncComponent(() => import('../../form/ClassicCheckbox.vue'));
104
92
  export default defineComponent({
105
93
  components: {
106
94
  ShareModalPlayer,
107
95
  SharePlayerColors,
108
96
  PlayerParameters,
109
- SharePlayerTypes
97
+ SharePlayerTypes,
98
+ ClassicCheckbox
110
99
  },
111
100
 
112
101
  props: {
@@ -128,7 +117,6 @@ export default defineComponent({
128
117
  proceedReading: true as boolean,
129
118
  episodeNumbers: 'number' as string,
130
119
  iFrameNumber: '3' as string,
131
- startTime: 0 as number,
132
120
  isVisible: false as boolean,
133
121
  displayArticle: true as boolean,
134
122
  customPlayers: [] as Array<CustomPlayer>,
@@ -137,6 +125,9 @@ export default defineComponent({
137
125
  },
138
126
 
139
127
  computed: {
128
+ displayChoiceAllEpisodes():boolean{
129
+ return !this.podcast || this.isEmission || this.isLargeEmission;
130
+ },
140
131
  miniplayerBaseUrl(): string{
141
132
  return (state.podcastPage.MiniplayerUri as string);
142
133
  },
@@ -144,7 +135,7 @@ export default defineComponent({
144
135
  return 'emission' === this.iFrameModel;
145
136
  },
146
137
  isLargeEmission(): boolean {
147
- return 'largeEmission' === this.iFrameModel;
138
+ return 'emissionLarge' === this.iFrameModel;
148
139
  },
149
140
  isLargeSuggestion(): boolean {
150
141
  return 'largeSuggestion' === this.iFrameModel;
@@ -181,10 +172,7 @@ export default defineComponent({
181
172
  iFrameSrc(): string {
182
173
  const url = [''];
183
174
  let iFrameNumber = '/' + this.iFrameNumber;
184
- if (
185
- (!this.podcast || this.isEmission || this.isLargeEmission) &&
186
- 'all' === this.episodeNumbers
187
- ) {
175
+ if (this.displayChoiceAllEpisodes && 'all' === this.episodeNumbers) {
188
176
  iFrameNumber = '/0';
189
177
  }
190
178
  if (!this.podcast && !this.playlist && this.emission) {
@@ -245,7 +233,6 @@ export default defineComponent({
245
233
  if(!this.displayArticle){
246
234
  url.push('&article=false');
247
235
  }
248
- url.push('&time=' + this.startTime);
249
236
  if (this.isVisible) {
250
237
  url.push('&key=' + window.btoa(this.dataTitle.toString()));
251
238
  }
@@ -259,38 +246,38 @@ export default defineComponent({
259
246
  case 'large':
260
247
  if (this.podcast) return '180px';
261
248
  if ('number' === this.episodeNumbers) {
262
- switch (this.iFrameNumber) {
249
+ switch (this.iFrameNumber.toString()) {
263
250
  case '1':
264
- return '185px';
251
+ return '270px';
265
252
  case '2':
266
- return '240px';
253
+ return '320px';
267
254
  case '3':
268
- return '290px';
255
+ return '360px';
269
256
  case '4':
270
- return '345px';
257
+ return '420px';
271
258
  case '5':
272
- return '390px';
259
+ return '420px';
273
260
  default:
274
- return '435px';
261
+ return '420px';
275
262
  }
276
263
  }
277
264
  return '435px';
278
- case 'largeEmission':
265
+ case 'emissionLarge':
279
266
  case 'largeSuggestion':
280
267
  if ('number' !== this.episodeNumbers) return '510px';
281
- switch (this.iFrameNumber) {
268
+ switch (this.iFrameNumber.toString()) {
282
269
  case '1':
283
- return '260px';
284
- case '2':
285
270
  return '315px';
286
- case '3':
271
+ case '2':
287
272
  return '365px';
288
- case '4':
273
+ case '3':
289
274
  return '420px';
275
+ case '4':
276
+ return '470px';
290
277
  case '5':
291
- return '465px';
278
+ return '470px';
292
279
  default:
293
- return '510px';
280
+ return '470px';
294
281
  }
295
282
  case 'emission':
296
283
  return '530px';
@@ -316,7 +303,7 @@ export default defineComponent({
316
303
  return 0;
317
304
  },
318
305
  isPlayerParameter(): boolean{
319
- return !this.podcast || (this.podcast.article && 0 !== this.podcast.article.length) || this.isEmission || this.isLargeEmission || this.isLargeSuggestion;
306
+ return (!this.podcast || (this.podcast.article && 0 !== this.podcast.article.length) || this.isEmission || this.isLargeEmission || this.isLargeSuggestion) && !this.playlist;
320
307
  }
321
308
  },
322
309
  async created() {
@@ -365,9 +352,6 @@ export default defineComponent({
365
352
  updateIframeNumber(value: string): void {
366
353
  this.iFrameNumber = value;
367
354
  },
368
- updateStartTime(value: number): void {
369
- this.startTime = value;
370
- },
371
355
  updateIsVisible(value: boolean): void {
372
356
  this.isVisible = value;
373
357
  },
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <div class="d-flex justify-content-around mt-3 flex-grow w-100">
3
- <div class="d-flex flex-column align-items-center flex-shrink me-3">
2
+ <div class="d-flex justify-content-around mt-3 flex-grow-1 w-100">
3
+ <div class="d-flex flex-column align-items-center flex-shrink-0 me-3">
4
4
  <div class="fw-600">
5
5
  {{ $t('Choose color') }}
6
6
  </div>
@@ -34,7 +34,7 @@
34
34
  </option>
35
35
  <option
36
36
  v-if="podcast && podcast.podcastId"
37
- value="largeEmission"
37
+ value="emissionLarge"
38
38
  >
39
39
  {{ $t('Large emission version') }}
40
40
  </option>
@@ -49,11 +49,11 @@
49
49
  </template>
50
50
 
51
51
  <script lang="ts">
52
- import { Podcast } from '@/store/class/podcast';
53
- import { CustomPlayer } from '@/store/class/customPlayer';
52
+ import { Podcast } from '@/store/class/general/podcast';
53
+ import { CustomPlayer } from '@/store/class/general/customPlayer';
54
54
  import { defineComponent } from 'vue';
55
- import { Emission } from '@/store/class/emission';
56
- import { Playlist } from '@/store/class/playlist';
55
+ import { Emission } from '@/store/class/general/emission';
56
+ import { Playlist } from '@/store/class/general/playlist';
57
57
  export default defineComponent({
58
58
  props: {
59
59
  podcast: { default: undefined, type: Object as ()=> Podcast},