@saooti/octopus-sdk 30.0.0 → 30.0.4

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 (43) hide show
  1. package/README.md +7 -0
  2. package/index.ts +5 -2
  3. package/package.json +2 -2
  4. package/public/img/ouest_france_logo.svg +12 -0
  5. package/src/assets/form.scss +3 -1
  6. package/src/assets/modal.scss +1 -0
  7. package/src/components/display/categories/CategoryList.vue +2 -2
  8. package/src/components/display/comments/CommentItem.vue +0 -1
  9. package/src/components/display/emission/EmissionChooser.vue +1 -1
  10. package/src/components/display/emission/EmissionInlineList.vue +4 -4
  11. package/src/components/display/emission/EmissionList.vue +3 -9
  12. package/src/components/display/live/LiveItem.vue +1 -1
  13. package/src/components/display/organisation/OrganisationChooserLight.vue +1 -1
  14. package/src/components/display/playlist/PodcastList.vue +1 -1
  15. package/src/components/display/podcasts/ParticipantDescription.vue +0 -1
  16. package/src/components/display/podcasts/PodcastInlineList.vue +2 -2
  17. package/src/components/display/podcasts/PodcastList.vue +3 -9
  18. package/src/components/display/podcasts/PodcastModuleBox.vue +1 -5
  19. package/src/components/display/podcasts/TagList.vue +46 -35
  20. package/src/components/display/sharing/QrCode.vue +2 -3
  21. package/src/components/display/sharing/ShareButtons.vue +1 -0
  22. package/src/components/display/sharing/SharePlayer.vue +11 -41
  23. package/src/components/display/sharing/SharePlayerColors.vue +4 -49
  24. package/src/components/display/sharing/SharePlayerTypes.vue +7 -10
  25. package/src/components/misc/Popover.vue +1 -2
  26. package/src/components/mixins/tagOfMixins.ts +19 -0
  27. package/src/components/pages/Participant.vue +1 -1
  28. package/src/components/pages/Playlist.vue +1 -1
  29. package/src/components/pages/Podcast.vue +1 -1
  30. package/src/locale/en.ts +0 -1
  31. package/src/locale/fr.ts +0 -1
  32. package/src/store/class/emission.ts +22 -19
  33. package/src/store/class/fetchParam.ts +1 -0
  34. package/src/store/class/participant.ts +8 -8
  35. package/src/store/class/person.ts +13 -11
  36. package/src/store/class/playlist.ts +5 -7
  37. package/src/store/class/podcast.ts +42 -38
  38. package/src/store/class/rubriquage.ts +8 -8
  39. package/src/store/class/rubrique.ts +3 -2
  40. package/src/store/paramStore.ts +14 -11
  41. package/src/api/emissions.ts +0 -13
  42. package/src/api/podcasts.ts +0 -12
  43. package/src/api/profile.ts +0 -11
package/README.md CHANGED
@@ -493,4 +493,11 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
493
493
  * 29.0.24 Version stable vue3
494
494
  * 29.0.25 Specific category does not display in correct order
495
495
  * 29.0.26 Snackbar position
496
+ * 29.0.27 Petit cursor:pointer des familles
497
+ * 29.0.28 Petite couleur des familles
498
+ * 29.0.29 Amélioration Popover
496
499
 
500
+ * 30.0.1 Nouveau sprint
501
+ * 30.0.2 Correction css
502
+ * 30.0.3 Ajout tag page podcast
503
+ * 30.0.4 Remplacer la version "classique" des miniplayers par la version beta
package/index.ts CHANGED
@@ -55,6 +55,7 @@ import {cookies} from "./src/components/mixins/functions";
55
55
  import {displayMethods} from "./src/components/mixins/functions";
56
56
  import {orgaFilter} from "./src/components/mixins/organisationFilter";
57
57
  import {initSDK} from "./src/components/mixins/init";
58
+ import {tagOfMixins} from "./src/components/mixins/tagOfMixins";
58
59
 
59
60
  const components = {
60
61
  Lives,
@@ -97,7 +98,8 @@ const components = {
97
98
  CategoryFilter,
98
99
  orgaFilter,
99
100
  initSDK,
100
- Popover
101
+ Popover,
102
+ tagOfMixins
101
103
  }
102
104
 
103
105
  export default components;
@@ -143,5 +145,6 @@ export {
143
145
  CategoryFilter,
144
146
  orgaFilter,
145
147
  initSDK,
146
- Popover
148
+ Popover,
149
+ tagOfMixins
147
150
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "30.0.0",
3
+ "version": "30.0.4",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -15,7 +15,7 @@
15
15
  "main": "./dist/octopus.common.js",
16
16
  "dependencies": {
17
17
  "@popperjs/core": "^2.10.2",
18
- "@saooti/octopus-api": "^0.29.7",
18
+ "@saooti/octopus-api": "^0.30.2",
19
19
  "@vue/cli": "^5.0.0-rc.0",
20
20
  "@vue/compat": "^3.2.21",
21
21
  "axios": "^0.24.0",
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 25.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 41.1 41.2" style="enable-background:new 0 0 41.1 41.2;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#E2001A;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M28.1,1.5v13.3H12.7v-2h13.4v-12C15.1-2.3,3.8,4.1,0.7,15.1c-2.8,10,2.3,20.6,12,24.6V26.5h15.4v2H14.7v11.9
10
+ c10.9,3.2,22.4-3,25.6-13.9C43.3,16.3,38,5.4,28.1,1.5z"/>
11
+ </g>
12
+ </svg>
@@ -31,7 +31,8 @@
31
31
  }
32
32
 
33
33
  .form-check-input{
34
- margin-right: 5px;
34
+ margin-right: 5px;
35
+ cursor: pointer;
35
36
  }
36
37
 
37
38
  .basic-select{
@@ -90,6 +91,7 @@
90
91
  .nav{
91
92
  border-bottom: 0.05rem solid #ddd;
92
93
  .nav-item{
94
+ cursor: pointer;
93
95
  flex-grow: 1;
94
96
  text-align: center;
95
97
  a {
@@ -24,6 +24,7 @@
24
24
  width: 100%;
25
25
  background: white;
26
26
  display: flex;
27
+ color: #353535 !important;
27
28
  @media (max-width: 500px){
28
29
  width: 95%;
29
30
  margin: 2.5% !important;
@@ -156,9 +156,9 @@ export default defineComponent({
156
156
  }
157
157
  },
158
158
  async fetchCategories(organisationId: string): Promise<void> {
159
- const data = await octopusApi.fetchCategoriesOrga(organisationId, {
159
+ const data = await octopusApi.fetchCategories({
160
160
  lang: this.$i18n.locale,
161
- });
161
+ }, organisationId);
162
162
  this.$store.commit('categoriesOrgaSet', data);
163
163
  },
164
164
  },
@@ -24,7 +24,6 @@
24
24
  }}</b>
25
25
  <Popover
26
26
  :target="'popover-comment' + comment.comId"
27
- triggers="hover"
28
27
  custom-class="wizard-help"
29
28
  >
30
29
  {{ $t('Comment waiting') }}
@@ -88,7 +88,7 @@ import octopusApi from '@saooti/octopus-api';
88
88
  const ELEMENTS_COUNT = 50;
89
89
  const DEFAULT_EMISSION_ID = 0;
90
90
 
91
- const getDefaultEmission = (defaultName: string) => {
91
+ const getDefaultEmission = (defaultName: string): Emission|undefined => {
92
92
  if(''=== defaultName){
93
93
  return undefined;
94
94
  }
@@ -152,8 +152,8 @@ export default defineComponent({
152
152
  first: this.first,
153
153
  size: this.size + 1,
154
154
  organisationId: this.organisationId,
155
- rubriqueId: this.rubriqueId,
156
- rubriquageId: this.rubriquageId,
155
+ rubriqueId: this.rubriqueId ? [this.rubriqueId] : [],
156
+ rubriquageId: this.rubriquageId ? [this.rubriquageId] : [],
157
157
  sort: 'LAST_PODCAST_DESC',
158
158
  });
159
159
  this.loading = false;
@@ -169,8 +169,8 @@ export default defineComponent({
169
169
  });
170
170
  } */
171
171
  if (this.allEmissions.length + data.result.length < this.totalCount) {
172
- const nexEl = data.result.pop();
173
- this.preloadImage(nexEl.imageUrl);
172
+ const nexEl = data.result.pop() as Emission;
173
+ this.preloadImage(nexEl.imageUrl ? nexEl.imageUrl : "");
174
174
  }
175
175
  this.allEmissions = this.allEmissions.concat(data.result);
176
176
  if (this.allEmissions.length <= 3) {
@@ -61,7 +61,6 @@
61
61
 
62
62
  <script lang="ts">
63
63
  import octopusApi from '@saooti/octopus-api';
64
- import emissionApi from '@/api/emissions';
65
64
  import { state } from '../../../store/paramStore';
66
65
 
67
66
  import { Emission } from '@/store/class/emission';
@@ -186,15 +185,10 @@ export default defineComponent({
186
185
  noRubriquageId: this.noRubriquageId.length ? this.noRubriquageId : undefined,
187
186
  rubriqueId: this.rubriqueId.length ? this.rubriqueId : undefined,
188
187
  rubriquageId: this.rubriquageId.length ? this.rubriquageId : undefined,
188
+ includeHidden:this.includeHidden,
189
189
  };
190
- if (this.includeHidden) {
191
- param.includeHidden = this.includeHidden;
192
- const data = await emissionApi.fetchEmissionsAdmin(this.$store.state, param);
193
- this.afterFetching(reset, data);
194
- } else {
195
- const data = await octopusApi.fetchEmissions(param);
196
- this.afterFetching(reset, data);
197
- }
190
+ const data = await octopusApi.fetchEmissions(param);
191
+ this.afterFetching(reset, data);
198
192
  },
199
193
  afterFetching(reset: boolean, data: {count: number, result: Array<Emission>, sort: string}): void {
200
194
  if (reset) {
@@ -234,7 +234,7 @@ export default defineComponent({
234
234
  if (!this.fetchConference || !this.fetchConference.podcastId) return;
235
235
  try {
236
236
  this.live = await octopusApi.fetchPodcast(
237
- this.fetchConference.podcastId
237
+ this.fetchConference.podcastId.toString()
238
238
  );
239
239
  } catch {
240
240
  this.$emit('deleteItem', this.index);
@@ -41,7 +41,7 @@ export default defineComponent({
41
41
 
42
42
  data() {
43
43
  return {
44
- actual: -1 as number,
44
+ actual: -1 as number|string,
45
45
  organisation: undefined as Organisation|undefined,
46
46
  init: false as boolean,
47
47
  };
@@ -161,7 +161,7 @@ export default defineComponent({
161
161
  this.loading = true;
162
162
  this.loaded = false;
163
163
  const content = await octopusApi.fetchPlaylistContent(
164
- this.playlist.playlistId
164
+ this.playlist.playlistId.toString()
165
165
  );
166
166
  for (let index = 0, len = content.length; index < len; index++) {
167
167
  content[index].order = this.playlist.podcasts[content[index].podcastId];
@@ -12,7 +12,6 @@
12
12
  <span class="mx-1">:</span>
13
13
  <Popover
14
14
  :target="idPopover"
15
- triggers="hover"
16
15
  custom-class="participant-help"
17
16
  >
18
17
  <div class="text-center font-weight-bold">
@@ -235,8 +235,8 @@ export default defineComponent({
235
235
  this.loaded = true;
236
236
  this.totalCount = data.count;
237
237
  if (this.allPodcasts.length + data.result.length < this.totalCount) {
238
- const nexEl = data.result.pop();
239
- this.preloadImage(nexEl.imageUrl);
238
+ const nexEl = data.result.pop() as Podcast;
239
+ this.preloadImage(nexEl.imageUrl?nexEl.imageUrl:'');
240
240
  }
241
241
  this.allPodcasts = this.allPodcasts.concat(
242
242
  data.result.filter((pod: Podcast|null) => null !== pod)
@@ -46,7 +46,6 @@
46
46
 
47
47
  <script lang="ts">
48
48
  import octopusApi from '@saooti/octopus-api';
49
- import podcastApi from '@/api/podcasts';
50
49
  import PodcastItem from './PodcastItem.vue';
51
50
  import { state } from '../../../store/paramStore';
52
51
 
@@ -172,6 +171,7 @@ export default defineComponent({
172
171
  noRubriquageId: this.noRubriquageId.length ? this.noRubriquageId : undefined,
173
172
  rubriqueId: this.rubriqueId.length ? this.rubriqueId : undefined,
174
173
  rubriquageId: this.rubriquageId.length ? this.rubriquageId : undefined,
174
+ includeHidden: this.includeHidden
175
175
  };
176
176
  if (undefined !== this.notValid) {
177
177
  param.validity = !this.notValid;
@@ -179,14 +179,8 @@ export default defineComponent({
179
179
  if (this.notValid && !this.isProduction) {
180
180
  param.publisherId = this.$store.state.profile.userId;
181
181
  }
182
- if (this.includeHidden) {
183
- param.includeHidden = this.includeHidden;
184
- const data = await podcastApi.fetchPodcastsAdmin(this.$store.state, param);
185
- this.afterFetching(reset, data);
186
- } else {
187
- const data = await octopusApi.fetchPodcasts(param);
188
- this.afterFetching(reset, data);
189
- }
182
+ const data = await octopusApi.fetchPodcasts(param);
183
+ this.afterFetching(reset, data);
190
184
  },
191
185
  afterFetching(reset: boolean, data: {count: number, result: Array<Podcast>, sort: string}): void {
192
186
  if (reset) {
@@ -146,7 +146,6 @@
146
146
  </div>
147
147
  </div>
148
148
  <TagList
149
- v-if="isTagList"
150
149
  :tag-list="podcast.tags"
151
150
  />
152
151
  </div>
@@ -155,6 +154,7 @@
155
154
  <script lang="ts">
156
155
  import PodcastImage from './PodcastImage.vue';
157
156
  import ParticipantDescription from './ParticipantDescription.vue';
157
+ import TagList from './TagList.vue';
158
158
  import { state } from '../../../store/paramStore';
159
159
  import moment from 'moment';
160
160
  // @ts-ignore
@@ -165,7 +165,6 @@ import { Conference } from '@/store/class/conference';
165
165
 
166
166
  import { defineComponent, defineAsyncComponent } from 'vue';
167
167
  const ShareButtons = defineAsyncComponent(() => import('../sharing/ShareButtons.vue'));
168
- const TagList = defineAsyncComponent(() => import('./TagList.vue'));
169
168
  const ErrorMessage = defineAsyncComponent(() => import('../../misc/ErrorMessage.vue'));
170
169
  export default defineComponent({
171
170
  name: "PodcastModuleBox",
@@ -205,9 +204,6 @@ export default defineComponent({
205
204
  isOuestFrance(): boolean {
206
205
  return (state.podcastPage.ouestFranceStyle as boolean);
207
206
  },
208
- isTagList(): boolean {
209
- return (state.podcastPage.tagList as boolean);
210
- },
211
207
  isDownloadButton(): boolean {
212
208
  return (state.podcastPage.downloadButton as boolean);
213
209
  },
@@ -1,55 +1,66 @@
1
1
  <template>
2
- <div v-if="undefined !== tagList">
3
- <ul class="d-flex flex-wrap">
4
- <li
5
- v-for="tag in tagList"
6
- :key="tag"
7
- class="tagListElement"
2
+ <div
3
+ v-if="undefined !== tagList"
4
+ class="tag-list-component d-flex flex-wrap"
5
+ >
6
+ <div
7
+ v-for="(tag, index) in tagList"
8
+ :key="tag"
9
+ class="tagListElement"
10
+ >
11
+ <div
12
+ :id="'tag-list-from-podcast-page'+index"
13
+ class="tagListLink"
8
14
  >
9
- <router-link
10
- :to="{
11
- name: 'search',
12
- query: {
13
- query: tag,
14
- productor: $store.state.filter.organisationId,
15
- },
16
- }"
17
- class="tagListLink"
15
+ <img
16
+ v-if="isOuestFranceTag(tag)"
17
+ class="ouest-france-logo"
18
+ src="/img/ouest_france_logo.svg"
18
19
  >
19
- {{ tag }}
20
- </router-link>
21
- </li>
22
- </ul>
20
+ {{ formateOfTag(tag) }}
21
+ </div>
22
+ <Popover
23
+ v-if="isOuestFranceTag(tag)"
24
+ :target="'tag-list-from-podcast-page'+index"
25
+ triggers="hover"
26
+ :content="tag.substring(4,tag.length)"
27
+ placement="bottom"
28
+ />
29
+ </div>
23
30
  </div>
24
31
  </template>
25
32
 
26
33
  <script lang="ts">
34
+ import Popover from '../../misc/Popover.vue';
35
+ import { tagOfMixins } from '../../mixins/tagOfMixins';
27
36
  import { defineComponent } from 'vue'
28
37
  export default defineComponent({
29
38
  name: 'TagList',
30
- components: {},
39
+ components: {
40
+ Popover
41
+ },
42
+ mixins:[tagOfMixins],
31
43
  props: {
32
44
  tagList: { default: () => [], type: Array as ()=>Array<string>},
33
45
  },
34
-
35
- methods: {},
46
+ methods: {
47
+ },
36
48
  })
37
49
  </script>
38
50
 
39
51
  <style lang="scss">
40
- .tagListElement {
41
- display: flex;
42
- margin: 0.4rem;
43
- padding: 0.8rem;
44
- border: 1px solid #999;
45
- cursor: pointer;
46
- }
47
- .tagListLink {
48
- font-weight: 700;
49
- font-size: 1.2rem;
50
- color: #666;
51
- &:hover {
52
- color: #666;
52
+ .tag-list-component{
53
+ .ouest-france-logo{
54
+ width: 20px;
55
+ height: 20px;
56
+ margin-right: 5px;
57
+ }
58
+ .tagListElement {
59
+ display: flex;
60
+ margin: 0.4rem;
61
+ padding: 0.2rem;
62
+ border: 1px solid #999;
63
+ border-radius: 0.5rem;
53
64
  }
54
65
  }
55
66
  </style>
@@ -23,7 +23,7 @@
23
23
 
24
24
  <script lang="ts">
25
25
  import { state } from '../../../store/paramStore';
26
- import profileApi from '@/api/profile';
26
+ import octopusApi from '@saooti/octopus-api';
27
27
  import Snackbar from '../../misc/Snackbar.vue';
28
28
  import QrcodeVue from 'qrcode.vue'
29
29
  import { defineComponent } from 'vue'
@@ -67,8 +67,7 @@ export default defineComponent({
67
67
  if(this.$store.state.organisation && this.$store.state.organisation.attributes && Object.keys(this.$store.state.organisation.attributes).length > 1){
68
68
  data = this.$store.state.organisation.attributes;
69
69
  }else{
70
- data= await profileApi.fetchOrganisationAttibutes(
71
- this.$store.state,
70
+ data= await octopusApi.fetchOrganisationAttributes(
72
71
  state.generalParameters.organisationId ? state.generalParameters.organisationId : ""
73
72
  );
74
73
  }
@@ -13,6 +13,7 @@
13
13
  <span
14
14
  v-if="authenticated"
15
15
  id="popover-share-help"
16
+ role="button"
16
17
  class="saooti-help ml-2"
17
18
  :aria-label="$t('Help')"
18
19
  />
@@ -34,27 +34,12 @@
34
34
  :emission="emission"
35
35
  :playlist="playlist"
36
36
  :custom-players="customPlayers"
37
- :is-beta="isBeta"
38
37
  />
39
38
  </div>
40
39
  <SharePlayerColors
41
40
  v-model:color="color"
42
41
  v-model:theme="theme"
43
- v-model:themeBeta="themeBeta"
44
- :is-beta="isBeta"
45
42
  />
46
- <div v-if="displayBetaChoice">
47
- <input
48
- id="isBetaCheckbox"
49
- v-model="isBeta"
50
- type="checkbox"
51
- class="form-check-input"
52
- >
53
- <label
54
- class="form-check-label me-2"
55
- for="isBetaCheckbox"
56
- >{{ $t('Use beta version') }}</label>
57
- </div>
58
43
  <div
59
44
  v-if="isPodcastNotVisible || playlist"
60
45
  class="d-flex align-items-center flex-wrap"
@@ -106,7 +91,6 @@
106
91
 
107
92
  <script lang="ts">
108
93
  import { state } from '../../../store/paramStore';
109
- import profileApi from '@/api/profile';
110
94
  import octopusApi from '@saooti/octopus-api';
111
95
  import { Podcast } from '@/store/class/podcast';
112
96
  import { Emission } from '@/store/class/emission';
@@ -141,26 +125,20 @@ export default defineComponent({
141
125
  isShareModal: false as boolean,
142
126
  color: '#40a372' as string,
143
127
  theme: '#000000' as string,
144
- themeBeta: '#000000' as string,
145
128
  proceedReading: true as boolean,
146
129
  episodeNumbers: 'number' as string,
147
130
  iFrameNumber: '3' as string,
148
131
  startTime: 0 as number,
149
132
  isVisible: false as boolean,
150
133
  displayArticle: true as boolean,
151
- displayBetaChoice: false as boolean,
152
134
  customPlayers: [] as Array<CustomPlayer>,
153
- isBeta: false as boolean,
154
135
  colors: ['#000000', '#ffffff'],
155
136
  };
156
137
  },
157
138
 
158
139
  computed: {
159
140
  miniplayerBaseUrl(): string{
160
- if(this.isBeta){
161
- return (state.podcastPage.MiniplayerBetaUri as string);
162
- }
163
- return (state.podcastPage.MiniplayerUri as string);
141
+ return (state.podcastPage.MiniplayerUri as string);
164
142
  },
165
143
  isEmission(): boolean {
166
144
  return 'emission' === this.iFrameModel;
@@ -254,7 +232,7 @@ export default defineComponent({
254
232
  }
255
233
  }
256
234
  url.push('?distributorId=' + this.organisationId);
257
- const theme = this.isBeta ? this.themeBeta : this.theme;
235
+ const theme = this.theme;
258
236
  url.push(
259
237
  '&color=' +
260
238
  this.color.substring(1) +
@@ -354,8 +332,7 @@ export default defineComponent({
354
332
  if(this.$store.state.organisation && this.$store.state.organisation.attributes && Object.keys(this.$store.state.organisation.attributes).length > 1){
355
333
  data = this.$store.state.organisation.attributes;
356
334
  }else{
357
- data= await profileApi.fetchOrganisationAttibutes(
358
- this.$store.state,
335
+ data= await octopusApi.fetchOrganisationAttributes(
359
336
  state.generalParameters.organisationId ? state.generalParameters.organisationId : ""
360
337
  );
361
338
  }
@@ -369,22 +346,15 @@ export default defineComponent({
369
346
  } else {
370
347
  this.theme = '#000000';
371
348
  }
372
- if (Object.prototype.hasOwnProperty.call(data,'playerBeta')) {
373
- if (Object.prototype.hasOwnProperty.call(data,'THEMEBETA')) {
374
- this.themeBeta = data.THEMEBETA;
375
- }
376
- this.displayBetaChoice = data.playerBeta;
377
- let dataFetched = await octopusApi.fetchCustomPlayer('customPlayer/organisation/'+ this.organisationId);
378
- this.customPlayers = dataFetched.content;
379
- const totalCount = dataFetched.totalElements;
380
- let index = 1;
381
- while (totalCount > this.customPlayers.length) {
382
- dataFetched = await octopusApi.fetchCustomPlayer('customPlayer/organisation/'+ this.organisationId+'?start='+index);
383
- this.customPlayers = this.customPlayers.concat(dataFetched.content);
384
- ++index;
385
- }
349
+ let dataFetched = await octopusApi.fetchCustomPlayer('customPlayer/organisation/'+ this.organisationId);
350
+ this.customPlayers = dataFetched.content;
351
+ const totalCount = dataFetched.totalElements;
352
+ let index = 1;
353
+ while (totalCount > this.customPlayers.length) {
354
+ dataFetched = await octopusApi.fetchCustomPlayer('customPlayer/organisation/'+ this.organisationId+'?start='+index);
355
+ this.customPlayers = this.customPlayers.concat(dataFetched.content);
356
+ ++index;
386
357
  }
387
- return;
388
358
  },
389
359
  updateEpisodeNumber(value: string): void {
390
360
  this.episodeNumbers = value;
@@ -17,34 +17,7 @@
17
17
  <div class="fw-600">
18
18
  {{ $t('Choose theme') }}
19
19
  </div>
20
- <div
21
- v-if="!isBeta"
22
- class="d-flex"
23
- >
24
- <VSwatches
25
- v-for="myColor in colors"
26
- :key="myColor"
27
- v-model="internTheme"
28
- :data-theme="internTheme"
29
- class="c-hand input-no-outline me-1"
30
- :swatch-style="{
31
- padding: '0px 0px',
32
- marginRight: '0px',
33
- marginBottom: '0px',
34
- border: '1px gray solid',
35
- }"
36
- :wrapper-style="{
37
- paddingTop: '0px',
38
- paddingLeft: '0px',
39
- paddingRight: '0px',
40
- paddingBottom: '0px',
41
- }"
42
- :swatches="[myColor]"
43
- inline
44
- />
45
- </div>
46
20
  <VSwatches
47
- v-else
48
21
  v-model="internTheme"
49
22
  class="c-hand input-no-outline"
50
23
  show-fallback
@@ -65,28 +38,18 @@ export default defineComponent({
65
38
  },
66
39
 
67
40
  props: {
68
- isBeta: { default: false, type: Boolean},
69
41
  color: { default: '#40a372', type: String},
70
42
  theme: { default: '#000000', type: String},
71
- themeBeta: { default: '#000000', type: String},
72
43
  },
73
- emits:['update:color', 'update:theme', 'update:themeBeta'],
44
+ emits:['update:color', 'update:theme'],
74
45
 
75
46
  data() {
76
47
  return {
77
48
  internColor:'#40a372' as string,
78
49
  internTheme:'#000000' as string,
79
- colors: ['#000000', '#ffffff'],
80
50
  };
81
51
  },
82
52
  watch:{
83
- isBeta(){
84
- if(this.isBeta){
85
- this.internTheme = this.themeBeta;
86
- }else{
87
- this.internTheme = this.theme;
88
- }
89
- },
90
53
  color(){
91
54
  if(this.color !== this.internColor){
92
55
  this.internColor = this.color;
@@ -98,27 +61,19 @@ export default defineComponent({
98
61
  }
99
62
  },
100
63
  theme(){
101
- if(this.theme !== this.internTheme && !this.isBeta){
64
+ if(this.theme !== this.internTheme){
102
65
  this.internTheme = this.theme;
103
66
  }
104
67
  },
105
- themeBeta(){
106
- if(this.themeBeta !== this.internTheme && this.isBeta){
107
- this.internTheme = this.themeBeta;
108
- }
109
- },
110
68
  internTheme(){
111
- if(this.theme !== this.internTheme && !this.isBeta){
69
+ if(this.theme !== this.internTheme ){
112
70
  this.$emit('update:theme', this.internTheme);
113
- }else if(this.themeBeta !== this.internTheme && this.isBeta){
114
- this.$emit('update:themeBeta', this.internTheme);
115
71
  }
116
72
  }
117
73
  },
118
74
  mounted(){
119
75
  this.internColor= this.color;
120
- this.internTheme= this.isBeta? this.themeBeta : this.theme;
76
+ this.internTheme= this.theme;
121
77
  }
122
-
123
78
  })
124
79
  </script>
@@ -17,15 +17,13 @@
17
17
  <option value="large">
18
18
  {{ $t('Large version') }}
19
19
  </option>
20
- <template v-if="isBeta">
21
- <option
22
- v-for="player in customPlayersDisplay"
23
- :key="player.customId"
24
- :value="player.customId"
25
- >
26
- {{ $t('Custom version') + " «" +player.name+"»" }}
27
- </option>
28
- </template>
20
+ <option
21
+ v-for="player in customPlayersDisplay"
22
+ :key="player.customId"
23
+ :value="player.customId"
24
+ >
25
+ {{ $t('Custom version') + " «" +player.name+"»" }}
26
+ </option>
29
27
  <option
30
28
  v-if="podcast && podcast.podcastId"
31
29
  value="emission"
@@ -62,7 +60,6 @@ export default defineComponent({
62
60
  emission: { default: undefined, type: Object as ()=> Emission},
63
61
  playlist: { default: undefined, type: Object as ()=> Playlist},
64
62
  customPlayers: { default: ()=>[], type: Array as ()=> Array<CustomPlayer>},
65
- isBeta: { default: false, type: Boolean},
66
63
  iFrameModel: { default: 'default', type: String},
67
64
  },
68
65
  emits:['update:iFrameModel'],
@@ -32,7 +32,6 @@ export default defineComponent({
32
32
  placement: {type: String as PropType<Popover.Options['placement']>, default: 'right'},
33
33
  target: {type: String, required: true},
34
34
  title: {type: String, default: ''},
35
- triggers: {type: String as PropType<Popover.Options['trigger']>, default: 'click'},
36
35
  show: {type: Boolean, default: false},
37
36
  disable: {type: Boolean, default: false},
38
37
  },
@@ -46,7 +45,7 @@ export default defineComponent({
46
45
  function initPopover(){
47
46
  instance.value = new Popover(`#${props.target}`, {
48
47
  container: 'body',
49
- trigger: props.triggers,
48
+ trigger: "click hover",
50
49
  placement: props.placement,
51
50
  title: titleRef.value?.innerHTML || '',
52
51
  content: contentRef.value?.innerHTML || '',
@@ -0,0 +1,19 @@
1
+ import {defineComponent } from 'vue';
2
+ export const tagOfMixins = defineComponent({
3
+ name: 'TagOfMixins',
4
+ methods:{
5
+ isOuestFranceTag(tag: string): boolean{
6
+ return "[of]"===tag.substring(0,4);
7
+ },
8
+ formateOfTag(tag: string): string{
9
+ if(!this.isOuestFranceTag(tag)){
10
+ return tag;
11
+ }
12
+ const lastSlash = tag.lastIndexOf('/');
13
+ if(-1!==lastSlash){
14
+ return tag.substring(lastSlash + 1, tag.length);
15
+ }
16
+ return tag.substring(4, tag.length);
17
+ },
18
+ }
19
+ });
@@ -185,7 +185,7 @@ export default defineComponent({
185
185
  async getParticipantDetails(): Promise<void> {
186
186
  this.loaded = false;
187
187
  try {
188
- const data = await octopusApi.fetchParticipant(this.participantId);
188
+ const data = await octopusApi.fetchParticipant(this.participantId ? this.participantId.toString(): "");
189
189
  this.participant = data;
190
190
  this.$emit('participantTitle', this.name);
191
191
  this.loaded = true;
@@ -142,7 +142,7 @@ export default defineComponent({
142
142
  methods: {
143
143
  async getPlaylistDetails(): Promise<void> {
144
144
  try {
145
- const data: Playlist = await octopusApi.fetchPlaylist(this.playlistId);
145
+ const data: Playlist = await octopusApi.fetchPlaylist(this.playlistId ? this.playlistId.toString(): "");
146
146
  this.playlist = data;
147
147
  this.$emit('playlistTitle', this.playlist.title);
148
148
  this.loaded = true;
@@ -325,7 +325,7 @@ export default defineComponent({
325
325
  },
326
326
  async getPodcastDetails(podcastId: number): Promise<void> {
327
327
  try {
328
- const data : Podcast = await octopusApi.fetchPodcast(podcastId);
328
+ const data : Podcast = await octopusApi.fetchPodcast(podcastId.toString());
329
329
  this.podcast = data;
330
330
  this.$emit('podcastTitle', this.podcast.title);
331
331
  if (
package/src/locale/en.ts CHANGED
@@ -287,7 +287,6 @@ export default{
287
287
  'See associated article':"Read the article",
288
288
  "Display associated article":"Display associated article",
289
289
  "Copy this page URL":"Copy this page URL",
290
- "Use beta version":"Use beta version player",
291
290
  "Custom version":"Custom version",
292
291
  "All":"All",
293
292
  'By category': 'By IAB category',
package/src/locale/fr.ts CHANGED
@@ -287,7 +287,6 @@ export default{
287
287
  'See associated article':"Lire l'article",
288
288
  "Display associated article":"Afficher l'article associé",
289
289
  "Copy this page URL":"Copier l'adresse de cette page",
290
- "Use beta version":"Utiliser la version beta du player",
291
290
  "Custom version":"Version customisée",
292
291
  "All":"Tous",
293
292
  'By category': 'Selon la catégorie IAB',
@@ -1,20 +1,23 @@
1
- import { Organisation } from "./organisation";
2
- import { Person } from "./person";
1
+ import { AdserverConfig } from './adserverConfig';
2
+ import { Organisation } from './organisation';
3
+ import { Person } from './person';
3
4
 
4
-
5
- export interface Emission{
6
- imageUrl: string;
7
- annotations?:{[key: string]:string|number|boolean|undefined}|undefined;
8
- description: string;
9
- emissionId: number;
10
- iabIds?: Array<number>;
11
- lastPodcastDate?: string;
12
- monetisable: string;
13
- name: string;
14
- orga: Organisation;
15
- rubriqueIds: Array<number>;
16
- score?: number;
17
- soundcastTag?: string;
18
- publisher?: Person;
19
- }
20
-
5
+ export interface Emission {
6
+ imageUrl?: string;
7
+ annotations?: {[key: string]:string|number|boolean|undefined}|undefined;
8
+ description: string;
9
+ emissionId: number;
10
+ iabIds?: Array<number>;
11
+ lastPodcastDate?: string;
12
+ monetisable: string;
13
+ name: string;
14
+ orga: Organisation;
15
+ rubriqueIds: Array<number>;
16
+ score?: number;
17
+ soundcastTag?: string;
18
+ publisher?: Person;
19
+ copyright?: string;
20
+ optItunesCategories?: Array<string>;
21
+ adConfigs?: {[key:string]: AdserverConfig};
22
+ urlFeed?: string;
23
+ }
@@ -29,4 +29,5 @@ export interface FetchParam{
29
29
  type?: string,
30
30
  listening?: string,
31
31
  top?: number,
32
+ homePageOrder?:boolean,
32
33
  }
@@ -1,12 +1,12 @@
1
- import { Organisation } from "./organisation";
1
+ import { Organisation } from './organisation';
2
2
 
3
- export interface Participant{
4
- imageUrl: string;
5
- description: string;
3
+ export interface Participant {
4
+ imageUrl?: string;
5
+ description?: string;
6
6
  firstName: string;
7
7
  lastName: string;
8
- orga: Organisation;
9
- participantId: number;
8
+ orga?: Organisation;
9
+ participantId: number | undefined;
10
10
  score?: number;
11
- uid: string;
12
- }
11
+ uid?: string;
12
+ }
@@ -1,13 +1,15 @@
1
- import { Organisation } from "./organisation";
1
+ import { Organisation } from './organisation';
2
2
 
3
- export interface Person{
4
- attributes?:{[key: string]:string|number|boolean|undefined}|undefined;
5
- email: string;
6
- emailVerified: boolean;
7
- enabled: true;
8
- first: string;
9
- last: string;
10
- notSeenOnKeycloak: number;
11
- userId: string;
12
- organisation?: Organisation;
3
+ export interface Person {
4
+ attributes?: {[key:string]: string|number|boolean|undefined|Array<string>};
5
+ email: string;
6
+ emailVerified: boolean;
7
+ enabled: true;
8
+ first: string;
9
+ last: string;
10
+ notSeenOnKeycloak: number;
11
+ userId: string;
12
+ organisation?: Organisation;
13
+ activeOrganisation?: Organisation;
14
+ organisations?: Array<Organisation>;
13
15
  }
@@ -1,15 +1,13 @@
1
- import { Organisation } from "./organisation";
2
- import { Person } from "./person";
3
- import { Podcast } from "./podcast";
1
+ import { Organisation } from './organisation';
2
+ import { Person } from './person';
4
3
 
5
-
6
- export interface Playlist{
4
+ export interface Playlist {
7
5
  imageUrl?: string;
8
6
  description: string;
9
7
  organisation: Organisation;
10
8
  playlistId: number;
11
- podcasts: Array<Podcast>;
9
+ podcasts: Array<number | undefined>;
12
10
  score: number;
13
11
  title: string;
14
12
  publisher?: Person;
15
- }
13
+ }
@@ -1,38 +1,42 @@
1
- import { Emission } from "./emission";
2
- import { Organisation } from "./organisation";
3
- import { Participant } from "./participant";
4
- import { Person } from "./person";
5
- export interface Podcast{
6
- imageUrl: string;
7
- animators?: Array<Participant>;
8
- annotations?: {[key: string]:string|number|boolean|undefined}|undefined;
9
- audioStorageUrl: string;
10
- audioUrl: string;
11
- availability: {
12
- date?: string;
13
- visibility?: boolean;
14
- };
15
- article?: string;
16
- comments?: string;
17
- conferenceId?: number;
18
- createdAt?: string;
19
- valid?: boolean;
20
- description?: string;
21
- downloadCount?: number;
22
- duration: number;
23
- emission: Emission;
24
- guests?: Array<Participant>;
25
- monetisable?: string;
26
- organisation: Organisation;
27
- podcastId: number;
28
- processingStatus?: string;
29
- pubDate?: string;
30
- publisher?: Person;
31
- rubriqueIds?: Array<number>;
32
- score?: number;
33
- size?: number;
34
- tags?: Array<string>;
35
- title: string;
36
- weekDownloadCount?: number;
37
- livePodcastId?:number;
38
- }
1
+ import { Emission } from './emission';
2
+ import { Organisation } from './organisation';
3
+ import { Participant } from './participant';
4
+ import { Person } from './person';
5
+ export interface Podcast {
6
+ imageUrl?: string;
7
+ animators?: Array<Participant>;
8
+ annotations?:{[key: string]:string|number|boolean|undefined}|undefined;
9
+ audioStorageUrl: string;
10
+ audioUrl: string;
11
+ article?: string;
12
+ availability: {
13
+ date?: number|null;
14
+ visibility?: boolean;
15
+ immediate?: boolean;
16
+ };
17
+ comments?: string;
18
+ conferenceId?: number;
19
+ createdAt?: string;
20
+ valid?: boolean;
21
+ description?: string;
22
+ downloadCount?: number;
23
+ duration: number;
24
+ email?: string;
25
+ emission: Emission;
26
+ guests?: Array<Participant>;
27
+ monetisable?: string;
28
+ organisation: Organisation;
29
+ podcastId: number;
30
+ processingStatus?: string;
31
+ processorId?: string;
32
+ pubDate?: string;
33
+ publisher?: Person;
34
+ rubriqueIds?: Array<number>;
35
+ score?: number;
36
+ size?: number;
37
+ tags?: Array<string>;
38
+ title: string;
39
+ weekDownloadCount?: number;
40
+ order?: number;
41
+ livePodcastId?: number
42
+ }
@@ -1,9 +1,9 @@
1
- import { Rubrique } from "./rubrique";
1
+ import { Rubrique } from './rubrique';
2
2
 
3
- export interface Rubriquage{
4
- organisationId?: string;
5
- rubriquageId?: number;
6
- rubriques: Array<Rubrique>;
7
- title: string;
8
- homePageOrder?: number;
9
- }
3
+ export interface Rubriquage {
4
+ organisationId?: string;
5
+ rubriquageId?: number;
6
+ rubriques: Array<Rubrique>;
7
+ title: string;
8
+ homePageOrder?: number | null;
9
+ }
@@ -1,8 +1,9 @@
1
- export interface Rubrique{
1
+ export interface Rubrique {
2
2
  emissionCount?: number;
3
3
  name: string;
4
4
  podcastCount?: number;
5
5
  rubriquageId?: number;
6
6
  rubriqueId?: number;
7
7
  score?: number;
8
- }
8
+ }
9
+
@@ -12,7 +12,7 @@ const state:paramStore = {
12
12
  isPlaylist: false,
13
13
  isProduction: true,
14
14
  isContribution: true,
15
- ApiUri: 'https://api.staging.saooti.org/',
15
+ ApiUri: 'https://api.dev2.saooti.org/',
16
16
  podcastmaker: false,
17
17
  buttonPlus: true,
18
18
  allCategories: [],
@@ -24,12 +24,10 @@ const state:paramStore = {
24
24
  SharePlayer: true,
25
25
  ShareButtons: true,
26
26
  ShareDistribution: true,
27
- MiniplayerUri: 'https://player.staging.saooti.org/',
28
- MiniplayerBetaUri: 'https://playerbeta.staging.saooti.org/',
27
+ MiniplayerUri: 'https://playerbeta.dev2.saooti.org/',
29
28
  ouestFranceStyle: false,
30
- tagList: false,
31
29
  downloadButton: false,
32
- hlsUri: 'https://hls.staging.saooti.org/',
30
+ hlsUri: 'https://hls.dev2.saooti.org/',
33
31
  mainRubrique: 0,
34
32
  resourceUrl: undefined
35
33
  },
@@ -82,10 +80,10 @@ const state:paramStore = {
82
80
  userName: '',
83
81
  },
84
82
  octopusApi: {
85
- url: 'http://api.staging.saooti.org/',
86
- commentsUrl: 'http://comments.staging.saooti.org/',
87
- studioUrl: 'http://studio.staging.saooti.org/',
88
- playerUrl: 'https://playerbeta.staging.saooti.org/',
83
+ url: 'http://api.dev2.saooti.org/',
84
+ commentsUrl: 'http://comments.dev2.saooti.org/',
85
+ studioUrl: 'http://studio.dev2.saooti.org/',
86
+ playerUrl: 'https://playerbeta.dev2.saooti.org/',
89
87
  organisationId: undefined,
90
88
  },
91
89
  };
@@ -112,9 +110,7 @@ export interface PodcastPage{
112
110
  ShareButtons?: boolean,
113
111
  ShareDistribution?: boolean,
114
112
  MiniplayerUri?: string,
115
- MiniplayerBetaUri?: string,
116
113
  ouestFranceStyle?: boolean,
117
- tagList?: boolean,
118
114
  downloadButton?: boolean,
119
115
  hlsUri?: string,
120
116
  mainRubrique?: number,
@@ -174,6 +170,13 @@ export interface OctopusApi{
174
170
  studioUrl?: string,
175
171
  playerUrl?: string,
176
172
  organisationId?: string | undefined,
173
+ oAuthParam?: {
174
+ accessToken: string,
175
+ refreshToken: string,
176
+ accessTokenUri: string,
177
+ expiration: string,
178
+ clientId: string,
179
+ }
177
180
  }
178
181
  export interface paramStore{
179
182
  generalParameters:GeneralParameters,
@@ -1,13 +0,0 @@
1
- import { Emission } from "@/store/class/emission";
2
- import { FetchParam } from "@/store/class/fetchParam";
3
- import { StoreState } from "@/store/typeAppStore";
4
-
5
- import octopusApi from '@saooti/octopus-api';
6
- /* eslint-disable */
7
- export default{
8
- async fetchEmissionsAdmin(store: StoreState, parameters: FetchParam): Promise<{ count: number; result: Array<Emission>; sort: string; }> {
9
- console.log(store);
10
- return await octopusApi.fetchEmissions(parameters);
11
- },
12
- };
13
- /* eslint-enable */
@@ -1,12 +0,0 @@
1
- import { FetchParam } from "@/store/class/fetchParam";
2
- import { StoreState } from "@/store/typeAppStore";
3
-
4
- import octopusApi from '@saooti/octopus-api';
5
- /* eslint-disable */
6
- export default {
7
- async fetchPodcastsAdmin(store: StoreState, parameters: FetchParam): Promise<any> {
8
- console.log(store);
9
- return await octopusApi.fetchPodcasts(parameters);
10
- },
11
- };
12
- /* eslint-enable */
@@ -1,11 +0,0 @@
1
- import { StoreState } from "@/store/typeAppStore";
2
- /* eslint-disable */
3
- export default{
4
- fetchOrganisationAttibutes(store: StoreState, organisationId: string): Promise<any> {
5
- return new Promise(resolve => {
6
- console.log(store, organisationId);
7
- resolve({});
8
- });
9
- },
10
- };
11
- /* eslint-enable */