@saooti/octopus-sdk 30.0.58 → 30.0.61

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 CHANGED
@@ -554,4 +554,7 @@ See [Configuration Reference](https://cli.vuejs.org/config/).
554
554
  * 30.0.55 Align participant img
555
555
  * 30.0.56 Popover title
556
556
  * 30.0.57 podcastmaker Le soir améliorations
557
- * 30.0.58 Prefix css dans component par octopus-app
557
+ * 30.0.58 Prefix css dans component par octopus-app
558
+ * 30.0.59 Pb productorChooser
559
+ * 30.0.60 PlaylistPodcastInlineList
560
+ * 30.0.61 Page podcast -> init recherche
package/index.ts CHANGED
@@ -49,6 +49,7 @@ import EmissionInlineList from "./src/components/display/emission/EmissionInline
49
49
  import RubriqueChooser from "./src/components/display/rubriques/RubriqueChooser.vue";
50
50
  import CommentList from "./src/components/display/comments/CommentList.vue";
51
51
  import CommentInput from "./src/components/display/comments/CommentInput.vue";
52
+ import PodcastPlaylistInlineList from "./src/components/display/playlist/PodcastPlaylistInlineList.vue";
52
53
 
53
54
  //form
54
55
  import ClassicSearch from "./src/components/form/ClassicSearch.vue";
@@ -112,7 +113,8 @@ const components = {
112
113
  ClassicCheckbox,
113
114
  ClassicRadio,
114
115
  ClassicLoading,
115
- AdvancedSearch
116
+ AdvancedSearch,
117
+ PodcastPlaylistInlineList
116
118
  }
117
119
 
118
120
  export default components;
@@ -165,5 +167,6 @@ export {
165
167
  ClassicCheckbox,
166
168
  ClassicRadio,
167
169
  ClassicLoading,
168
- AdvancedSearch
170
+ AdvancedSearch,
171
+ PodcastPlaylistInlineList
169
172
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saooti/octopus-sdk",
3
- "version": "30.0.58",
3
+ "version": "30.0.61",
4
4
  "private": false,
5
5
  "description": "Javascript SDK for using octopus",
6
6
  "author": "Saooti",
@@ -22,7 +22,7 @@
22
22
  class="dropdown btn-group"
23
23
  >
24
24
  <button
25
- class="btn dropdown-toggle admin-button dropdown-toggle-no-caret saooti-plus"
25
+ class="btn dropdown-toggle admin-button dropdown-toggle-no-caret saooti-more"
26
26
  data-bs-toggle="dropdown"
27
27
  aria-expanded="false"
28
28
  :title="$t('See more')"
@@ -51,7 +51,7 @@
51
51
  </template>
52
52
  <div
53
53
  :class="buttonPlus?'ms-1':''"
54
- class="saooti-plus"
54
+ class="saooti-more"
55
55
  />
56
56
  </button>
57
57
  </template>
@@ -26,7 +26,7 @@
26
26
  </template>
27
27
  <div
28
28
  :class="buttonPlus?'ms-1':''"
29
- class="saooti-plus"
29
+ class="saooti-more"
30
30
  />
31
31
  </button>
32
32
  </div>
@@ -14,7 +14,7 @@
14
14
  ref="multiselectRef"
15
15
  v-model="organisation"
16
16
  label="name"
17
- track-by="organisationId"
17
+ track-by="id"
18
18
  :placeholder="$t('Type string to filter by organisation')"
19
19
  :options="organisations"
20
20
  :multiple="false"
@@ -23,7 +23,7 @@
23
23
  </ul>
24
24
  <button
25
25
  v-show="!allFetched"
26
- class="btn btn-more saooti-plus"
26
+ class="btn btn-more saooti-more"
27
27
  :title="$t('See more')"
28
28
  :disabled="loading"
29
29
  @click="fetchContent(false)"
@@ -29,7 +29,7 @@
29
29
  </template>
30
30
  <div
31
31
  :class="buttonPlus?'ms-1':''"
32
- class="saooti-plus"
32
+ class="saooti-more"
33
33
  />
34
34
  </button>
35
35
  </div>
@@ -49,7 +49,7 @@
49
49
  </template>
50
50
  <div
51
51
  :class="buttonPlus?'ms-1':''"
52
- class="saooti-plus"
52
+ class="saooti-more"
53
53
  />
54
54
  </button>
55
55
  </div>
@@ -0,0 +1,204 @@
1
+ <template>
2
+ <div
3
+ v-if="loading || (!loading && 0 !== allPodcasts.length)"
4
+ class="d-flex flex-column p-3 playlist-inline-podcast"
5
+ >
6
+ <h2>{{ title }}</h2>
7
+ <div
8
+ v-if="!overflowScroll"
9
+ class="d-flex justify-content-end hide-phone"
10
+ >
11
+ <button
12
+ class="btn admin-button m-1"
13
+ :class="{ disabled: !previousAvailable }"
14
+ :title="$t('Display previous')"
15
+ @click="displayPrevious()"
16
+ >
17
+ <div class="saooti-left fw-bold" />
18
+ </button>
19
+ <button
20
+ class="btn admin-button m-1"
21
+ :class="{ disabled: !nextAvailable }"
22
+ :title="$t('Display next')"
23
+ @click="displayNext()"
24
+ >
25
+ <div class="saooti-right fw-bold" />
26
+ </button>
27
+ </div>
28
+ <ClassicLoading
29
+ :loading-text="loading?$t('Loading podcasts ...'):undefined"
30
+ />
31
+ <transition-group
32
+ :name="transitionName"
33
+ class="element-list-inline"
34
+ tag="ul"
35
+ :class="[
36
+ alignLeft ? 'justify-content-start' : '',
37
+ overflowScroll ? 'overflowScroll' : '',
38
+ ]"
39
+ :css="isInlineAnimation"
40
+ >
41
+ <PodcastItem
42
+ v-for="p in podcasts"
43
+ :key="p.podcastId"
44
+ class="flex-shrink-0 item-phone-margin"
45
+ :podcast="p"
46
+ :class="[alignLeft ? 'me-3' : '']"
47
+ />
48
+ </transition-group>
49
+ <router-link
50
+ class="btn btn-link align-self-center width-fit-content m-4"
51
+ :to="{
52
+ name: 'playlist',
53
+ params: { playlistId: playlistId.toString() },
54
+ }"
55
+ >
56
+ {{ $t('See more') }}
57
+ <div
58
+ class="ms-1 saooti-more"
59
+ />
60
+ </router-link>
61
+ </div>
62
+ </template>
63
+
64
+ <script lang="ts">
65
+ import octopusApi from '@saooti/octopus-api';
66
+ import domHelper from '../../../helper/dom';
67
+ import PodcastItem from '../podcasts/PodcastItem.vue';
68
+ import ClassicLoading from '../../form/ClassicLoading.vue';
69
+ const PHONE_WIDTH = 960;
70
+ import { state } from '../../../store/paramStore';
71
+ import { Podcast } from '@/store/class/general/podcast';
72
+ import { defineComponent } from 'vue'
73
+ import { Playlist } from '@saooti/octopus-api/class/playlist';
74
+ export default defineComponent({
75
+ name: 'PodcastPlaylistInlineList',
76
+
77
+ components: {
78
+ PodcastItem,
79
+ ClassicLoading
80
+ },
81
+
82
+ props: {
83
+ playlistId: { default: undefined, type: Number},
84
+ },
85
+
86
+ data() {
87
+ return {
88
+ loading: true as boolean,
89
+ index: 0 as number,
90
+ first: 0 as number,
91
+ size: 5 as number,
92
+ totalCount: 0 as number,
93
+ playlist: undefined as Playlist|undefined,
94
+ allPodcasts: [] as Array<Podcast>,
95
+ direction: 1 as number,
96
+ alignLeft: false as boolean,
97
+ };
98
+ },
99
+ computed: {
100
+ title(): string{
101
+ if(this.playlist){
102
+ return this.playlist.title;
103
+ }
104
+ return "";
105
+ },
106
+ podcasts(): Array<Podcast> {
107
+ return this.allPodcasts.slice(this.index, this.index + this.size);
108
+ },
109
+ sizeItem(): number {
110
+ return state.generalParameters.podcastItem ? (state.generalParameters.podcastItem as number): 13;
111
+ },
112
+ overflowScroll(): boolean {
113
+ return (state.emissionPage.overflowScroll as boolean);
114
+ },
115
+ isInlineAnimation(): boolean {
116
+ return (state.generalParameters.isInlineAnimation as boolean);
117
+ },
118
+ previousAvailable(): boolean {
119
+ return this.index > 0;
120
+ },
121
+ nextAvailable(): boolean {
122
+ return this.index + this.size < this.totalCount;
123
+ },
124
+ transitionName(): string {
125
+ return this.direction > 0 ? 'out-left' : 'out-right';
126
+ },
127
+ },
128
+ watch: {
129
+ playlistId(): void {
130
+ this.reset();
131
+ this.fetchContent();
132
+ },
133
+ },
134
+
135
+ created() {
136
+ window.addEventListener('resize', this.handleResize);
137
+ },
138
+
139
+ unmounted() {
140
+ window.removeEventListener('resize', this.handleResize);
141
+ },
142
+
143
+ mounted() {
144
+ this.handleResize();
145
+ this.fetchContent();
146
+ },
147
+ methods: {
148
+ async fetchContent(): Promise<void> {
149
+ this.allPodcasts.length = 0;
150
+ this.loading = true;
151
+ this.playlist = await octopusApi.fetchPlaylist(this.playlistId ? this.playlistId.toString(): "");
152
+ this.allPodcasts = await octopusApi.fetchPlaylistContent(
153
+ this.playlist.playlistId.toString()
154
+ );
155
+ if (!((state.generalParameters.authenticated && state.generalParameters.organisationId === this.playlist.organisation.id) ||
156
+ state.generalParameters.isAdmin)) {
157
+ this.allPodcasts = this.allPodcasts.filter((p: Podcast|null) => {
158
+ return (
159
+ null !== p &&
160
+ (!p.availability || true === p.availability.visibility)
161
+ );
162
+ });
163
+ }
164
+ if (this.allPodcasts.length <= 3) {
165
+ this.alignLeft = true;
166
+ } else {
167
+ this.alignLeft = false;
168
+ }
169
+ this.loading = false;
170
+ },
171
+ displayPrevious(): void {
172
+ this.direction = -1;
173
+ if (this.previousAvailable) {
174
+ this.index -= 1;
175
+ }
176
+ },
177
+ displayNext(): void {
178
+ this.direction = 1;
179
+ if (!this.nextAvailable) return;
180
+ this.index += 1;
181
+ },
182
+ handleResize(): void {
183
+ if (!this.$el) return;
184
+ if (this.overflowScroll) {
185
+ this.size = 20;
186
+ return;
187
+ }
188
+ if (window.innerWidth <= PHONE_WIDTH) {
189
+ this.size = 10;
190
+ return;
191
+ }
192
+ const width = (this.$el as HTMLElement).offsetWidth;
193
+ const sixteen = domHelper.convertRemToPixels(this.sizeItem + 0.7);
194
+ this.size = Math.floor(width / sixteen);
195
+ },
196
+ reset(): void {
197
+ this.index = 0;
198
+ this.first = 0;
199
+ this.totalCount = 0;
200
+ this.allPodcasts.length = 0;
201
+ },
202
+ },
203
+ })
204
+ </script>
@@ -72,7 +72,7 @@
72
72
  {{ buttonText }}
73
73
  <div
74
74
  v-if="buttonPlus"
75
- class="ms-1 saooti-plus"
75
+ class="ms-1 saooti-more"
76
76
  />
77
77
  </router-link>
78
78
  </div>
@@ -33,7 +33,7 @@
33
33
  </template>
34
34
  <div
35
35
  :class="buttonPlus?'ms-1':''"
36
- class="saooti-plus"
36
+ class="saooti-more"
37
37
  />
38
38
  </button>
39
39
  </div>
@@ -31,7 +31,7 @@
31
31
  class="dropdown btn-group"
32
32
  >
33
33
  <button
34
- class="btn dropdown-toggle admin-button dropdown-toggle-no-caret saooti-plus"
34
+ class="btn dropdown-toggle admin-button dropdown-toggle-no-caret saooti-more"
35
35
  data-bs-toggle="dropdown"
36
36
  aria-expanded="false"
37
37
  :title="$t('See more')"
@@ -90,6 +90,7 @@ export default defineComponent({
90
90
  props: {
91
91
  productor: { default: undefined, type: String},
92
92
  isEducation: { default: false, type: Boolean},
93
+ searchInit: { default: "", type: String}
93
94
  },
94
95
 
95
96
  data() {
@@ -154,6 +155,9 @@ export default defineComponent({
154
155
  },
155
156
 
156
157
  created() {
158
+ if(this.searchInit){
159
+ this.searchPattern = this.searchInit;
160
+ }
157
161
  if (this.productor) {
158
162
  this.organisationId = this.productor;
159
163
  } else if (this.$store.state.filter.organisationId) {