@saooti/octopus-sdk 37.0.6 → 37.0.7

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 (235) hide show
  1. package/README.md +2 -2
  2. package/index.ts +21 -21
  3. package/package.json +26 -20
  4. package/src/App.vue +69 -60
  5. package/src/api/classicCrud.ts +12 -12
  6. package/src/api/initialize.ts +1 -1
  7. package/src/components/display/aggregator/RssSection.vue +3 -3
  8. package/src/components/display/categories/CategoryChooser.vue +73 -60
  9. package/src/components/display/categories/CategoryFilter.vue +134 -90
  10. package/src/components/display/categories/CategoryList.vue +76 -62
  11. package/src/components/display/comments/AddCommentModal.vue +44 -44
  12. package/src/components/display/comments/CommentBasicView.vue +38 -30
  13. package/src/components/display/comments/CommentInput.vue +121 -106
  14. package/src/components/display/comments/CommentItem.vue +144 -102
  15. package/src/components/display/comments/CommentList.vue +117 -85
  16. package/src/components/display/comments/CommentParentInfo.vue +18 -15
  17. package/src/components/display/comments/CommentPlayer.vue +39 -41
  18. package/src/components/display/comments/CommentSection.vue +68 -53
  19. package/src/components/display/edit/EditBox.vue +7 -7
  20. package/src/components/display/edit/EditBoxRadio.vue +3 -4
  21. package/src/components/display/edit/EditCommentBox.vue +34 -36
  22. package/src/components/display/emission/EmissionInlineList.vue +75 -63
  23. package/src/components/display/emission/EmissionItem.vue +47 -35
  24. package/src/components/display/emission/EmissionList.vue +111 -83
  25. package/src/components/display/emission/EmissionPlayerItem.vue +89 -89
  26. package/src/components/display/filter/AdvancedSearch.vue +81 -73
  27. package/src/components/display/filter/CategorySearchFilter.vue +27 -25
  28. package/src/components/display/filter/DateFilter.vue +38 -38
  29. package/src/components/display/filter/MonetizableFilter.vue +16 -14
  30. package/src/components/display/filter/ProductorSearch.vue +55 -47
  31. package/src/components/display/filter/RubriqueChoice.vue +42 -27
  32. package/src/components/display/filter/RubriqueFilter.vue +130 -85
  33. package/src/components/display/filter/SearchOrder.vue +16 -11
  34. package/src/components/display/list/ListPaginate.vue +72 -70
  35. package/src/components/display/list/PaginateParams.vue +29 -30
  36. package/src/components/display/list/PaginateSection.vue +210 -0
  37. package/src/components/display/list/SwiperList.vue +28 -32
  38. package/src/components/display/live/CountDown.vue +12 -14
  39. package/src/components/display/live/LiveHorizontalList.vue +60 -50
  40. package/src/components/display/live/LiveItem.vue +42 -26
  41. package/src/components/display/live/LiveList.vue +92 -65
  42. package/src/components/display/live/RadioCurrently.vue +47 -42
  43. package/src/components/display/live/RadioImage.vue +40 -42
  44. package/src/components/display/live/RadioItem.vue +15 -22
  45. package/src/components/display/live/RadioList.vue +24 -21
  46. package/src/components/display/live/RadioPlanning.vue +105 -68
  47. package/src/components/display/organisation/OrganisationChooser.vue +58 -42
  48. package/src/components/display/organisation/OrganisationChooserLight.vue +27 -19
  49. package/src/components/display/participant/ParticipantItem.vue +89 -77
  50. package/src/components/display/participant/ParticipantList.vue +90 -60
  51. package/src/components/display/playlist/PlaylistItem.vue +32 -35
  52. package/src/components/display/playlist/PlaylistList.vue +70 -52
  53. package/src/components/display/playlist/PodcastList.vue +61 -50
  54. package/src/components/display/playlist/PodcastPlaylistInlineList.vue +47 -38
  55. package/src/components/display/podcasts/AnimatorsItem.vue +17 -15
  56. package/src/components/display/podcasts/ParticipantDescription.vue +21 -22
  57. package/src/components/display/podcasts/PodcastFilterList.vue +28 -26
  58. package/src/components/display/podcasts/PodcastImage.vue +129 -135
  59. package/src/components/display/podcasts/PodcastInlineList.vue +33 -29
  60. package/src/components/display/podcasts/PodcastInlineListClassic.vue +91 -71
  61. package/src/components/display/podcasts/PodcastInlineListTemplate.vue +94 -85
  62. package/src/components/display/podcasts/PodcastItem.vue +96 -90
  63. package/src/components/display/podcasts/PodcastItemInfo.vue +61 -65
  64. package/src/components/display/podcasts/PodcastList.vue +115 -84
  65. package/src/components/display/podcasts/PodcastModuleBox.vue +95 -104
  66. package/src/components/display/podcasts/PodcastPlayBar.vue +45 -32
  67. package/src/components/display/podcasts/PodcastSwiperList.vue +65 -55
  68. package/src/components/display/podcasts/TagList.vue +33 -37
  69. package/src/components/display/rubriques/RubriqueChooser.vue +70 -51
  70. package/src/components/display/rubriques/RubriqueList.vue +117 -89
  71. package/src/components/display/sharing/PlayerParameters.vue +45 -42
  72. package/src/components/display/sharing/QrCode.vue +52 -46
  73. package/src/components/display/sharing/ShareButtons.vue +18 -18
  74. package/src/components/display/sharing/ShareButtonsIntern.vue +100 -78
  75. package/src/components/display/sharing/ShareDistribution.vue +101 -67
  76. package/src/components/display/sharing/SharePlayer.vue +207 -127
  77. package/src/components/display/sharing/SharePlayerColors.vue +15 -15
  78. package/src/components/display/sharing/SharePlayerRadio.vue +62 -39
  79. package/src/components/display/sharing/SharePlayerTypes.vue +93 -55
  80. package/src/components/display/sharing/SubscribeButtons.vue +83 -32
  81. package/src/components/display/studio/RecordingItemButton.vue +3 -3
  82. package/src/components/form/ClassicCheckbox.vue +32 -31
  83. package/src/components/form/ClassicDatePicker.vue +47 -49
  84. package/src/components/form/ClassicInputText.vue +99 -98
  85. package/src/components/form/ClassicLoading.vue +11 -14
  86. package/src/components/form/ClassicMultiselect.vue +125 -126
  87. package/src/components/form/ClassicRadio.vue +15 -18
  88. package/src/components/form/ClassicSearch.vue +17 -23
  89. package/src/components/form/ClassicSelect.vue +35 -27
  90. package/src/components/form/{Wysiwyg.vue → ClassicWysiwyg.vue} +94 -109
  91. package/src/components/misc/AcpmImage.vue +6 -6
  92. package/src/components/misc/ClassicAccordion.vue +69 -0
  93. package/src/components/misc/ClassicNav.vue +117 -0
  94. package/src/components/misc/ClassicPopover.vue +212 -0
  95. package/src/components/misc/{Spinner.vue → ClassicSpinner.vue} +14 -15
  96. package/src/components/misc/ErrorMessage.vue +9 -17
  97. package/src/components/misc/FooterSection.vue +198 -0
  98. package/src/components/misc/HomeDropdown.vue +60 -60
  99. package/src/components/misc/LeftMenu.vue +115 -79
  100. package/src/components/misc/ProgressBar.vue +36 -32
  101. package/src/components/misc/SnackBar.vue +169 -0
  102. package/src/components/misc/TopBar.vue +161 -115
  103. package/src/components/misc/modal/ClassicModal.vue +99 -103
  104. package/src/components/misc/modal/ClipboardModal.vue +21 -23
  105. package/src/components/misc/modal/MessageModal.vue +22 -28
  106. package/src/components/misc/modal/NewsletterModal.vue +139 -113
  107. package/src/components/misc/modal/QrCodeModal.vue +14 -17
  108. package/src/components/misc/modal/ShareModalPlayer.vue +44 -60
  109. package/src/components/misc/player/PlayerCompact.vue +47 -62
  110. package/src/components/misc/player/{Player.vue → PlayerComponent.vue} +54 -46
  111. package/src/components/misc/player/PlayerLarge.vue +62 -61
  112. package/src/components/misc/player/PlayerProgressBar.vue +40 -30
  113. package/src/components/misc/player/PlayerTimeline.vue +32 -36
  114. package/src/components/misc/player/radio/RadioHistory.vue +62 -59
  115. package/src/components/misc/player/radio/RadioProgressBar.vue +44 -35
  116. package/src/components/mixins/cookies.ts +11 -10
  117. package/src/components/mixins/displayMethods.ts +5 -4
  118. package/src/components/mixins/handle403.ts +9 -9
  119. package/src/components/mixins/imageProxy.ts +14 -7
  120. package/src/components/mixins/init.ts +31 -16
  121. package/src/components/mixins/orgaComputed.ts +7 -7
  122. package/src/components/mixins/organisationFilter.ts +36 -22
  123. package/src/components/mixins/player/playerComment.ts +46 -37
  124. package/src/components/mixins/player/playerDisplay.ts +122 -87
  125. package/src/components/mixins/player/playerLive.ts +65 -43
  126. package/src/components/mixins/player/playerLogic.ts +133 -88
  127. package/src/components/mixins/player/playerTranscript.ts +48 -30
  128. package/src/components/mixins/radio/fetchRadioData.ts +40 -23
  129. package/src/components/mixins/selenium.ts +2 -2
  130. package/src/components/mixins/tagOfMixins.ts +11 -11
  131. package/src/components/pages/CategoryPage.vue +43 -0
  132. package/src/components/pages/{Emission.vue → EmissionPage.vue} +98 -67
  133. package/src/components/pages/{Emissions.vue → EmissionsPage.vue} +51 -44
  134. package/src/components/pages/Error403Page.vue +20 -19
  135. package/src/components/pages/HomePage.vue +144 -0
  136. package/src/components/pages/LivesPage.vue +66 -0
  137. package/src/components/pages/PageNotFound.vue +33 -22
  138. package/src/components/pages/{Participant.vue → ParticipantPage.vue} +63 -49
  139. package/src/components/pages/{Participants.vue → ParticipantsPage.vue} +9 -9
  140. package/src/components/pages/PlaylistPage.vue +175 -0
  141. package/src/components/pages/{Playlists.vue → PlaylistsPage.vue} +16 -14
  142. package/src/components/pages/PodcastPage.vue +365 -0
  143. package/src/components/pages/PodcastsPage.vue +152 -0
  144. package/src/components/pages/RadioPage.vue +131 -0
  145. package/src/components/pages/RubriquePage.vue +45 -0
  146. package/src/components/pages/{Search.vue → SearchPage.vue} +19 -19
  147. package/src/helper/dom.ts +1 -1
  148. package/src/helper/duration.ts +10 -4
  149. package/src/helper/useEventListener.ts +7 -8
  150. package/src/i18n.ts +31 -30
  151. package/src/locale/de.ts +263 -257
  152. package/src/locale/educationen.ts +13 -13
  153. package/src/locale/educationfr.ts +1 -1
  154. package/src/locale/en.ts +323 -324
  155. package/src/locale/es.ts +325 -318
  156. package/src/locale/fr.ts +330 -324
  157. package/src/locale/it.ts +332 -328
  158. package/src/locale/messages.ts +9 -9
  159. package/src/locale/sl.ts +315 -319
  160. package/src/main.ts +28 -31
  161. package/src/router/router.ts +218 -198
  162. package/src/shims-tsx.d.ts +1 -1
  163. package/src/shims-vue.d.ts +1 -1
  164. package/src/stores/ApiStore.ts +44 -44
  165. package/src/stores/AuthStore.ts +21 -15
  166. package/src/stores/CommentStore.ts +13 -11
  167. package/src/stores/FilterStore.ts +25 -15
  168. package/src/stores/GeneralStore.ts +15 -15
  169. package/src/stores/ParamSdkStore.ts +179 -137
  170. package/src/stores/PlayerStore.ts +139 -125
  171. package/src/stores/class/adserver/adserverConfig.ts +1 -1
  172. package/src/stores/class/adserver/adserverOtherEmission.ts +9 -9
  173. package/src/stores/class/cartouchier/cartouche.ts +4 -4
  174. package/src/stores/class/cartouchier/cartouchier.ts +2 -2
  175. package/src/stores/class/conference/conference.ts +10 -9
  176. package/src/stores/class/conference/conferenceMessage.ts +2 -2
  177. package/src/stores/class/conference/conferenceParticipant.ts +1 -1
  178. package/src/stores/class/conference/studioCall.ts +6 -6
  179. package/src/stores/class/contract/contractOrganisation.ts +5 -5
  180. package/src/stores/class/ftp/ftpEmission.ts +9 -9
  181. package/src/stores/class/ftp/testFtpEmission.ts +4 -4
  182. package/src/stores/class/general/audioView.ts +19 -19
  183. package/src/stores/class/general/category.ts +1 -1
  184. package/src/stores/class/general/classicSelectType.ts +2 -3
  185. package/src/stores/class/general/customPlayer.ts +8 -8
  186. package/src/stores/class/general/emission.ts +20 -20
  187. package/src/stores/class/general/fetchParam.ts +8 -2
  188. package/src/stores/class/general/initState.ts +31 -31
  189. package/src/stores/class/general/interfacePageable.ts +13 -13
  190. package/src/stores/class/general/ituneCategory.ts +4 -4
  191. package/src/stores/class/general/listReturn.ts +12 -12
  192. package/src/stores/class/general/media.ts +7 -7
  193. package/src/stores/class/general/organisation.ts +9 -9
  194. package/src/stores/class/general/pageable.ts +10 -10
  195. package/src/stores/class/general/participant.ts +7 -7
  196. package/src/stores/class/general/player.ts +30 -28
  197. package/src/stores/class/general/playlist.ts +17 -19
  198. package/src/stores/class/general/podcast.ts +19 -19
  199. package/src/stores/class/general/sortPageable.ts +4 -4
  200. package/src/stores/class/general/soundcastCategory.ts +7 -7
  201. package/src/stores/class/ouestFrance/ofTag.ts +34 -34
  202. package/src/stores/class/ouestFrance/ofTagInfo.ts +9 -9
  203. package/src/stores/class/ouestFrance/ofTagPage.ts +7 -7
  204. package/src/stores/class/ouestFrance/ofTagSeo.ts +7 -7
  205. package/src/stores/class/ouestFrance/ofTagVente.ts +6 -6
  206. package/src/stores/class/ouestFrance/ofTagWithParents.ts +20 -20
  207. package/src/stores/class/radio/canal.ts +4 -4
  208. package/src/stores/class/radio/live.ts +6 -6
  209. package/src/stores/class/radio/mix.ts +16 -16
  210. package/src/stores/class/radio/playlistMedia.ts +7 -7
  211. package/src/stores/class/radio/recurrence.ts +54 -54
  212. package/src/stores/class/rss/rssEmission.ts +13 -13
  213. package/src/stores/class/rss/rssInfo.ts +7 -7
  214. package/src/stores/class/rubrique/rubriquage.ts +2 -2
  215. package/src/stores/class/rubrique/rubrique.ts +1 -1
  216. package/src/stores/class/stat/statArrayIncome.ts +5 -5
  217. package/src/stores/class/stat/statArrayObject.ts +26 -26
  218. package/src/stores/class/stat/statGraph.ts +6 -6
  219. package/src/stores/class/user/person.ts +4 -2
  220. package/src/stores/class/user/profile.ts +4 -2
  221. package/src/stores/class/user/userKeycloak.ts +4 -5
  222. package/src/components/display/list/Paginate.vue +0 -181
  223. package/src/components/misc/Accordion.vue +0 -78
  224. package/src/components/misc/Footer.vue +0 -169
  225. package/src/components/misc/Nav.vue +0 -119
  226. package/src/components/misc/Popover.vue +0 -193
  227. package/src/components/misc/Snackbar.vue +0 -168
  228. package/src/components/pages/Category.vue +0 -41
  229. package/src/components/pages/Home.vue +0 -125
  230. package/src/components/pages/Lives.vue +0 -64
  231. package/src/components/pages/Playlist.vue +0 -164
  232. package/src/components/pages/Podcast.vue +0 -307
  233. package/src/components/pages/Podcasts.vue +0 -146
  234. package/src/components/pages/Radio.vue +0 -122
  235. package/src/components/pages/Rubrique.vue +0 -42
@@ -14,32 +14,26 @@
14
14
  type="text"
15
15
  :placeholder="$t('Your name')"
16
16
  :class="{ 'border border-danger': 0 === countName || !validName }"
17
- >
17
+ />
18
18
  <p
19
19
  class="d-flex justify-content-end h6"
20
20
  :class="{ 'text-danger': !validName }"
21
21
  >
22
- {{ countName + ' / ' + maxName }}
22
+ {{ countName + " / " + maxName }}
23
23
  </p>
24
- <div
25
- v-if="''!==errorText"
26
- class="mt-1 text-danger"
27
- >
24
+ <div v-if="'' !== errorText" class="mt-1 text-danger">
28
25
  {{ errorText }}
29
26
  </div>
30
27
  </template>
31
28
  <template v-else>
32
- <div>{{ $t('Send in progress') }}</div>
29
+ <div>{{ $t("Send in progress") }}</div>
33
30
  </template>
34
31
  </template>
35
32
  <template #footer>
36
- <button
37
- class="btn m-1"
38
- @click="closePopup"
39
- >
40
- {{ $t('Close') }}
33
+ <button class="btn m-1" @click="closePopup">
34
+ {{ $t("Close") }}
41
35
  </button>
42
- <vue-recaptcha
36
+ <vue-recaptcha
43
37
  v-if="!isVerify"
44
38
  ref="invisibleRecaptcha"
45
39
  :load-recaptcha-script="true"
@@ -54,56 +48,56 @@
54
48
  :disabled="0 === countName || !validName"
55
49
  @click="submit"
56
50
  >
57
- {{ $t('Validate') }}
51
+ {{ $t("Validate") }}
58
52
  </button>
59
53
  </template>
60
54
  </ClassicModal>
61
55
  </template>
62
56
 
63
57
  <script lang="ts">
64
- import Constants from '../../../../public/config';
65
- import { state } from '../../../stores/ParamSdkStore';
66
- import ClassicModal from '../../misc/modal/ClassicModal.vue';
67
- import api from '@/api/initialize';
68
- import { useAuthStore } from '@/stores/AuthStore';
69
- import { mapState } from 'pinia';
70
- import { VueRecaptcha } from 'vue-recaptcha';
71
- import { defineComponent } from 'vue';
58
+ import Constants from "../../../../public/config";
59
+ import { state } from "../../../stores/ParamSdkStore";
60
+ import ClassicModal from "../../misc/modal/ClassicModal.vue";
61
+ import api from "@/api/initialize";
62
+ import { useAuthStore } from "@/stores/AuthStore";
63
+ import { mapState } from "pinia";
64
+ import { VueRecaptcha } from "vue-recaptcha";
65
+ import { defineComponent } from "vue";
72
66
  export default defineComponent({
73
- name: 'AddCommentModal',
74
- components:{
67
+ name: "AddCommentModal",
68
+ components: {
75
69
  VueRecaptcha,
76
- ClassicModal
70
+ ClassicModal,
77
71
  },
78
72
 
79
73
  props: {},
80
- emits: ['close','validate'],
74
+ emits: ["close", "validate"],
81
75
 
82
76
  data() {
83
77
  return {
84
- name: '' as string,
78
+ name: "" as string,
85
79
  sending: false as boolean,
86
80
  sendError: false as boolean,
87
81
  isVerify: false as boolean,
88
- maxName : Constants.MAX_COMMENT_NAME as number
82
+ maxName: Constants.MAX_COMMENT_NAME as number,
89
83
  };
90
84
  },
91
85
  computed: {
92
- ...mapState(useAuthStore, ['authProfile']),
93
- errorText():string {
94
- if(this.isCaptchaTest){
95
- return this.$t('Recaptcha not active');
86
+ ...mapState(useAuthStore, ["authProfile"]),
87
+ errorText(): string {
88
+ if (this.isCaptchaTest) {
89
+ return this.$t("Recaptcha not active");
96
90
  }
97
- return this.sendError? this.$t('Recaptcha error') : '';
91
+ return this.sendError ? this.$t("Recaptcha error") : "";
98
92
  },
99
- validName(): boolean{
93
+ validName(): boolean {
100
94
  return this.countName <= this.maxName;
101
95
  },
102
- countName(): number{
96
+ countName(): number {
103
97
  return this.name.length;
104
98
  },
105
99
  isCaptchaTest(): boolean {
106
- return (state.generalParameters.isCaptchaTest as boolean);
100
+ return state.generalParameters.isCaptchaTest as boolean;
107
101
  },
108
102
  },
109
103
 
@@ -111,9 +105,13 @@ export default defineComponent({
111
105
  this.initAuthenticatedName();
112
106
  },
113
107
  methods: {
114
- initAuthenticatedName():void{
115
- if (!this.authProfile?.userId) { return; }
116
- this.name = (`${this.authProfile?.firstname||''} ${this.authProfile?.lastname||''}`).trim();
108
+ initAuthenticatedName(): void {
109
+ if (!this.authProfile?.userId) {
110
+ return;
111
+ }
112
+ this.name = `${this.authProfile?.firstname || ""} ${
113
+ this.authProfile?.lastname || ""
114
+ }`.trim();
117
115
  this.isVerify = true;
118
116
  },
119
117
  async handleSuccess(token: string) {
@@ -126,17 +124,19 @@ export default defineComponent({
126
124
  },
127
125
  async submit(): Promise<void> {
128
126
  if (!this.isVerify && !this.isCaptchaTest) {
129
- return (this.$refs.invisibleRecaptcha as InstanceType<typeof VueRecaptcha>).execute();
127
+ return (
128
+ this.$refs.invisibleRecaptcha as InstanceType<typeof VueRecaptcha>
129
+ ).execute();
130
130
  }
131
131
  this.sendComment();
132
132
  },
133
133
  closePopup(): void {
134
- this.$emit('close');
134
+ this.$emit("close");
135
135
  },
136
136
  sendComment(): void {
137
137
  this.sending = true;
138
- this.$emit('validate', this.name);
138
+ this.$emit("validate", this.name);
139
139
  },
140
140
  },
141
- })
142
- </script>
141
+ });
142
+ </script>
@@ -2,19 +2,22 @@
2
2
  <div>
3
3
  <div class="d-flex h6">
4
4
  <strong
5
- v-if="recordingInLive && ('Live' === comment.phase || 'Prelive' === comment.phase)"
5
+ v-if="
6
+ recordingInLive &&
7
+ ('Live' === comment.phase || 'Prelive' === comment.phase)
8
+ "
6
9
  class="recording-bg me-1 text-light p-1"
7
- >{{ $t('Live') }}</strong>
10
+ >{{ $t("Live") }}</strong
11
+ >
8
12
  <strong
9
13
  :id="'popover-comment' + comment.comId"
10
14
  role="button"
11
15
  tabindex="-1"
12
- :class="editRight || isValid? 'c-hand-auto':'text-danger'"
16
+ :class="editRight || isValid ? 'c-hand-auto' : 'text-danger'"
13
17
  class="me-2"
14
- >{{
15
- comment.name
16
- }}</strong>
17
- <Popover
18
+ >{{ comment.name }}</strong
19
+ >
20
+ <ClassicPopover
18
21
  :disable="editRight || isValid"
19
22
  :target="'popover-comment' + comment.comId"
20
23
  :content="$t('Comment waiting')"
@@ -29,8 +32,8 @@
29
32
  <div class="me-2">
30
33
  {{ date }}
31
34
  </div>
32
- <span
33
- v-if="editRight"
35
+ <span
36
+ v-if="editRight"
34
37
  :class="'status-' + comment.status"
35
38
  :data-selenium="'status-comment-' + seleniumFormat(comment.name)"
36
39
  />
@@ -42,30 +45,31 @@
42
45
  v-if="comment.content.length > 300"
43
46
  class="c-hand font-italic"
44
47
  @click="summary = !summary"
45
- >{{ readMore }}</a>
48
+ >{{ readMore }}</a
49
+ >
46
50
  </div>
47
51
  </template>
48
52
 
49
53
  <script lang="ts">
50
- import selenium from '../../mixins/selenium';
51
- import displayMethods from '../../mixins/displayMethods';
52
- import { CommentPodcast } from '@/stores/class/general/comment';
53
- import dayjs from 'dayjs';
54
- import Popover from '../../misc/Popover.vue';
55
- import { defineComponent } from 'vue';
54
+ import selenium from "../../mixins/selenium";
55
+ import displayMethods from "../../mixins/displayMethods";
56
+ import { CommentPodcast } from "@/stores/class/general/comment";
57
+ import dayjs from "dayjs";
58
+ import ClassicPopover from "../../misc/ClassicPopover.vue";
59
+ import { defineComponent } from "vue";
56
60
  export default defineComponent({
57
- name: 'CommentBasicView',
61
+ name: "CommentBasicView",
58
62
 
59
63
  components: {
60
- Popover
64
+ ClassicPopover,
61
65
  },
62
66
 
63
- mixins:[displayMethods, selenium],
67
+ mixins: [displayMethods, selenium],
64
68
 
65
69
  props: {
66
- comment: { default: ()=>({}), type: Object as ()=>CommentPodcast },
67
- editRight: { default: false, type: Boolean},
68
- recordingInLive: { default: false, type: Boolean},
70
+ comment: { default: () => ({}), type: Object as () => CommentPodcast },
71
+ editRight: { default: false, type: Boolean },
72
+ recordingInLive: { default: false, type: Boolean },
69
73
  },
70
74
 
71
75
  data() {
@@ -74,21 +78,25 @@ export default defineComponent({
74
78
  };
75
79
  },
76
80
  computed: {
77
- isValid(): boolean{
78
- return 'Valid'=== this.comment.status;
81
+ isValid(): boolean {
82
+ return "Valid" === this.comment.status;
79
83
  },
80
84
  date(): string {
81
- return this.comment.date ? dayjs(this.comment.date).format('D MMMM YYYY HH[h]mm') : '';
85
+ return this.comment.date
86
+ ? dayjs(this.comment.date).format("D MMMM YYYY HH[h]mm")
87
+ : "";
82
88
  },
83
89
  readMore(): string {
84
- return this.summary ? this.$t('Read more') : this.$t('Read less');
90
+ return this.summary ? this.$t("Read more") : this.$t("Read less");
85
91
  },
86
92
  contentDisplay(): string {
87
- if (!this.summary){return this.comment.content;}
88
- if (!this.comment.content) return '';
93
+ if (!this.summary) {
94
+ return this.comment.content;
95
+ }
96
+ if (!this.comment.content) return "";
89
97
  if (this.comment.content.length <= 300) return this.comment.content;
90
- return this.comment.content.substring(0, 300) + '...';
98
+ return this.comment.content.substring(0, 300) + "...";
91
99
  },
92
100
  },
93
- })
101
+ });
94
102
  </script>
@@ -1,43 +1,35 @@
1
1
  <template>
2
- <div
3
- v-if="isPresent"
4
- class="d-flex flex-column comment-input-container mt-3"
5
- >
2
+ <div v-if="isPresent" class="d-flex flex-column comment-input-container mt-3">
6
3
  <strong
7
4
  v-if="knownIdentity && !editName"
8
5
  class="h6 mt-1 c-hand"
9
6
  @click="changeIdentity"
10
- >{{ knownIdentity }}</strong>
11
- <div
12
- v-if="editName"
13
- class="d-flex"
7
+ >{{ knownIdentity }}</strong
14
8
  >
9
+ <div v-if="editName" class="d-flex">
15
10
  <div class="d-flex flex-column">
16
11
  <input
17
12
  v-model="temporaryName"
18
13
  class="h6 mt-1"
19
14
  type="text"
20
15
  :class="{ 'border border-danger': 0 === countName || !validName }"
21
- >
16
+ />
22
17
  <p
23
18
  class="d-flex justify-content-end h6 mb-0"
24
19
  :class="{ 'text-danger': !validName }"
25
20
  >
26
- {{ countName + ' / ' + maxName }}
21
+ {{ countName + " / " + maxName }}
27
22
  </p>
28
23
  </div>
29
- <button
30
- class="btn m-1"
31
- @click="editName = false"
32
- >
33
- {{ $t('Cancel') }}
24
+ <button class="btn m-1" @click="editName = false">
25
+ {{ $t("Cancel") }}
34
26
  </button>
35
27
  <button
36
28
  class="btn btn-primary m-1"
37
29
  :disabled="0 === countName || !validName"
38
30
  @click="validEdit"
39
31
  >
40
- {{ $t('Validate') }}
32
+ {{ $t("Validate") }}
41
33
  </button>
42
34
  </div>
43
35
  <textarea
@@ -54,14 +46,11 @@
54
46
  class="d-flex justify-content-end h6"
55
47
  :class="{ 'text-danger': !validComment }"
56
48
  >
57
- {{ countComment + ' / ' + maxComment }}
49
+ {{ countComment + " / " + maxComment }}
58
50
  </p>
59
51
  <div class="d-flex justify-content-end mt-1">
60
- <button
61
- class="btn me-2"
62
- @mousedown="cancelAction"
63
- >
64
- {{ $t('Cancel') }}
52
+ <button class="btn me-2" @mousedown="cancelAction">
53
+ {{ $t("Cancel") }}
65
54
  </button>
66
55
  <button
67
56
  class="btn btn-primary"
@@ -89,106 +78,122 @@
89
78
  </template>
90
79
 
91
80
  <script lang="ts">
92
- import octopusApi from '@saooti/octopus-api';
93
- import crudApi from '@/api/classicCrud';
94
- import cookies from '../../mixins/cookies';
95
- import { state } from '../../../stores/ParamSdkStore';
96
- import { Podcast } from '@/stores/class/general/podcast';
97
- import { Conference } from '@/stores/class/conference/conference';
98
- import { CommentPodcast } from '@/stores/class/general/comment';
99
- import Constants from '../../../../public/config';
100
- import { usePlayerStore } from '@/stores/PlayerStore';
101
- import { useAuthStore } from '@/stores/AuthStore';
102
- import { mapState } from 'pinia';
103
- import { defineComponent, defineAsyncComponent } from 'vue';
104
- const AddCommentModal = defineAsyncComponent(() => import('./AddCommentModal.vue'));
105
- const MessageModal = defineAsyncComponent(() => import('../../misc/modal/MessageModal.vue'));
81
+ import octopusApi from "@saooti/octopus-api";
82
+ import crudApi from "@/api/classicCrud";
83
+ import cookies from "../../mixins/cookies";
84
+ import { state } from "../../../stores/ParamSdkStore";
85
+ import { Podcast } from "@/stores/class/general/podcast";
86
+ import { Conference } from "@/stores/class/conference/conference";
87
+ import { CommentPodcast } from "@/stores/class/general/comment";
88
+ import Constants from "../../../../public/config";
89
+ import { usePlayerStore } from "@/stores/PlayerStore";
90
+ import { useAuthStore } from "@/stores/AuthStore";
91
+ import { mapState } from "pinia";
92
+ import { defineComponent, defineAsyncComponent } from "vue";
93
+ const AddCommentModal = defineAsyncComponent(
94
+ () => import("./AddCommentModal.vue"),
95
+ );
96
+ const MessageModal = defineAsyncComponent(
97
+ () => import("../../misc/modal/MessageModal.vue"),
98
+ );
106
99
  export default defineComponent({
107
- name: 'CommentInput',
100
+ name: "CommentInput",
108
101
  components: {
109
102
  AddCommentModal,
110
103
  MessageModal,
111
104
  },
112
- mixins:[cookies],
105
+ mixins: [cookies],
113
106
 
114
107
  props: {
115
- podcast: { default: undefined, type: Object as ()=>Podcast },
108
+ podcast: { default: undefined, type: Object as () => Podcast },
116
109
  knownIdentity: { default: undefined, type: String },
117
110
  focus: { default: false, type: Boolean },
118
- comment: { default: undefined, type: Object as ()=>CommentPodcast },
119
- fetchConference: { default: undefined, type: Object as ()=>Conference },
111
+ comment: { default: undefined, type: Object as () => CommentPodcast },
112
+ fetchConference: { default: undefined, type: Object as () => Conference },
120
113
  },
121
- emits: ['update:knownIdentity', 'cancelAction', 'newComment'],
114
+ emits: ["update:knownIdentity", "cancelAction", "newComment"],
122
115
 
123
116
  data() {
124
117
  return {
125
- newComment: '' as string,
118
+ newComment: "" as string,
126
119
  textareaFocus: false as boolean,
127
120
  checkIdentityModal: false as boolean,
128
121
  postError: false as boolean,
129
122
  isOneLine: true as boolean,
130
123
  editName: false as boolean,
131
- temporaryName: '' as string,
132
- maxComment : Constants.MAX_COMMENT as number,
133
- maxName : Constants.MAX_COMMENT_NAME as number
124
+ temporaryName: "" as string,
125
+ maxComment: Constants.MAX_COMMENT as number,
126
+ maxName: Constants.MAX_COMMENT_NAME as number,
134
127
  };
135
128
  },
136
129
 
137
130
  computed: {
138
- ...mapState(usePlayerStore, ['playerPodcast', 'playerLive', 'playerElapsed', 'playerTotal']),
139
- ...mapState(useAuthStore, ['authProfile']),
140
- validName(): boolean{
131
+ ...mapState(usePlayerStore, [
132
+ "playerPodcast",
133
+ "playerLive",
134
+ "playerElapsed",
135
+ "playerTotal",
136
+ ]),
137
+ ...mapState(useAuthStore, ["authProfile"]),
138
+ validName(): boolean {
141
139
  return this.countName <= this.maxName;
142
140
  },
143
- countName(): number{
141
+ countName(): number {
144
142
  return this.temporaryName.length;
145
143
  },
146
- validComment(): boolean{
144
+ validComment(): boolean {
147
145
  return this.countComment <= this.maxComment;
148
146
  },
149
- countComment(): number{
147
+ countComment(): number {
150
148
  return this.newComment.length;
151
149
  },
152
150
  isPresent(): boolean {
153
151
  if (!this.podcast) return true;
154
- let podcastComment = this.podcast.annotations?.COMMENTS ?? 'INHERIT';
155
- let organisationComment = this.podcast.organisation.comments??'LIVE_ONLY';
156
- return !(('LIVE_ONLY' === podcastComment &&
157
- 'READY_TO_RECORD' !== this.podcast.processingStatus) ||
158
- ('INHERIT' === podcastComment &&
159
- 'LIVE_ONLY' === organisationComment &&
160
- 'READY_TO_RECORD' !== this.podcast.processingStatus));
152
+ let podcastComment = this.podcast.annotations?.COMMENTS ?? "INHERIT";
153
+ let organisationComment =
154
+ this.podcast.organisation.comments ?? "LIVE_ONLY";
155
+ return !(
156
+ ("LIVE_ONLY" === podcastComment &&
157
+ "READY_TO_RECORD" !== this.podcast.processingStatus) ||
158
+ ("INHERIT" === podcastComment &&
159
+ "LIVE_ONLY" === organisationComment &&
160
+ "READY_TO_RECORD" !== this.podcast.processingStatus)
161
+ );
161
162
  },
162
163
  placeholder(): string {
163
- return this.comment?.comId? this.$t('Answer a comment') : this.$t('Write a comment');
164
+ return this.comment?.comId
165
+ ? this.$t("Answer a comment")
166
+ : this.$t("Write a comment");
164
167
  },
165
168
  isCertified(): boolean {
166
- return (true === state.generalParameters.isCommments &&
167
- state.generalParameters.organisationId === this.podcastOrga) ||
168
- true === state.generalParameters.isAdmin;
169
+ return (
170
+ (true === state.generalParameters.isCommments &&
171
+ state.generalParameters.organisationId === this.podcastOrga) ||
172
+ true === state.generalParameters.isAdmin
173
+ );
169
174
  },
170
- phase(): string|undefined {
171
- if(undefined === this.podcast){
175
+ phase(): string | undefined {
176
+ if (undefined === this.podcast) {
172
177
  return this.comment ? this.comment.phase : undefined;
173
178
  }
174
179
  if (
175
180
  !this.podcast.conferenceId ||
176
181
  0 === this.podcast.conferenceId ||
177
- 'READY_TO_RECORD' !== this.podcast.processingStatus
182
+ "READY_TO_RECORD" !== this.podcast.processingStatus
178
183
  )
179
- return 'Podcast';
184
+ return "Podcast";
180
185
  if (
181
186
  this.fetchConference &&
182
- ('PLANNED' === this.fetchConference.status ||
183
- 'PENDING' === this.fetchConference.status)
187
+ ("PLANNED" === this.fetchConference.status ||
188
+ "PENDING" === this.fetchConference.status)
184
189
  )
185
- return 'Prelive';
186
- return 'Live';
190
+ return "Prelive";
191
+ return "Live";
187
192
  },
188
- podcastOrga(): string|undefined{
189
- const commentOrga = this.comment?.organisationId ??'';
193
+ podcastOrga(): string | undefined {
194
+ const commentOrga = this.comment?.organisationId ?? "";
190
195
  return this.podcast?.organisation.id ?? commentOrga;
191
- }
196
+ },
192
197
  },
193
198
  watch: {
194
199
  textareaFocus(): void {
@@ -204,25 +209,29 @@ export default defineComponent({
204
209
  (this.$refs.textarea as HTMLElement).clientWidth -
205
210
  this.inputExceeded(
206
211
  this.newComment,
207
- '18px Montserrat, sans-serif, Helvetica Neue'
212
+ "18px Montserrat, sans-serif, Helvetica Neue",
208
213
  ) >
209
214
  padding;
210
215
  },
211
216
  },
212
217
  methods: {
213
218
  changeIdentity(): void {
214
- if(!this.knownIdentity){return}
219
+ if (!this.knownIdentity) {
220
+ return;
221
+ }
215
222
  this.temporaryName = this.knownIdentity;
216
223
  this.editName = true;
217
224
  },
218
225
  validEdit(): void {
219
- this.setCookie('comment-octopus-name', this.temporaryName);
220
- this.$emit('update:knownIdentity', this.temporaryName);
226
+ this.setCookie("comment-octopus-name", this.temporaryName);
227
+ this.$emit("update:knownIdentity", this.temporaryName);
221
228
  this.editName = false;
222
229
  },
223
230
  inputExceeded(text: string, font: string): number {
224
- const context = document.createElement('canvas').getContext('2d');
225
- if(null === context){return 0;}
231
+ const context = document.createElement("canvas").getContext("2d");
232
+ if (null === context) {
233
+ return 0;
234
+ }
226
235
  context.font = font;
227
236
  return context.measureText(text).width;
228
237
  },
@@ -234,40 +243,38 @@ export default defineComponent({
234
243
  }
235
244
  },
236
245
  cancelAction(): void {
237
- this.$emit('cancelAction');
246
+ this.$emit("cancelAction");
238
247
  },
239
- defineTimelineValue(): number{
240
- let timeline = 0;
248
+ defineTimelineValue(): number {
249
+ let timeline = 0;
241
250
  if (
242
- undefined !== this.podcast &&(
243
- (this.playerPodcast?.podcastId ===this.podcast.podcastId) ||
244
- (this.playerLive?.podcastId ===this.podcast.podcastId))
251
+ undefined !== this.podcast &&
252
+ (this.playerPodcast?.podcastId === this.podcast.podcastId ||
253
+ this.playerLive?.podcastId === this.podcast.podcastId)
245
254
  ) {
246
- timeline = Math.round(
247
- this.playerElapsed * this.playerTotal
248
- );
255
+ timeline = Math.round(this.playerElapsed * this.playerTotal);
249
256
  if (this.podcast.duration && this.playerPodcast) {
250
257
  timeline = Math.round(
251
- timeline - (this.playerTotal - this.podcast.duration / 1000)
258
+ timeline - (this.playerTotal - this.podcast.duration / 1000),
252
259
  );
253
260
  }
254
261
  }
255
- return timeline < 0? 0 : timeline;
262
+ return timeline < 0 ? 0 : timeline;
256
263
  },
257
264
  async postComment(name?: string): Promise<void> {
258
265
  if (name) {
259
- this.setCookie('comment-octopus-name', name);
260
- this.$emit('update:knownIdentity', name);
266
+ this.setCookie("comment-octopus-name", name);
267
+ this.$emit("update:knownIdentity", name);
261
268
  }
262
- const sendName = name??this.knownIdentity;
269
+ const sendName = name ?? this.knownIdentity;
263
270
  const commentPodcastId = this.comment?.podcastId ?? 0;
264
271
  const comment: CommentPodcast = {
265
272
  content: this.newComment,
266
- name: sendName ??'',
273
+ name: sendName ?? "",
267
274
  podcastId: this.podcast?.podcastId ?? commentPodcastId,
268
275
  timeline: this.defineTimelineValue(),
269
276
  organisationId: this.podcastOrga,
270
- commentIdReferer:this.comment?.comId,
277
+ commentIdReferer: this.comment?.comId,
271
278
  certified: this.isCertified,
272
279
  userId: this.authProfile?.userId,
273
280
  phase: this.phase,
@@ -275,25 +282,33 @@ export default defineComponent({
275
282
  try {
276
283
  let data;
277
284
  if (this.isCertified) {
278
- comment.status = 'Valid';
279
- data = await crudApi.postData<CommentPodcast>(2, 'registeredComment/' + comment.userId, {...comment, ...{userId: undefined}});
285
+ comment.status = "Valid";
286
+ data = await crudApi.postData<CommentPodcast>(
287
+ 2,
288
+ "registeredComment/" + comment.userId,
289
+ { ...comment, ...{ userId: undefined } },
290
+ );
280
291
  } else {
281
- data = await octopusApi.postDataPublic<CommentPodcast>(2,'unregisteredComment',comment);
292
+ data = await octopusApi.postDataPublic<CommentPodcast>(
293
+ 2,
294
+ "unregisteredComment",
295
+ comment,
296
+ );
282
297
  }
283
- this.$emit('newComment', data);
284
- this.newComment = '';
298
+ this.$emit("newComment", data);
299
+ this.newComment = "";
285
300
  } catch (error) {
286
301
  this.postError = true;
287
302
  }
288
303
  this.checkIdentityModal = false;
289
304
  },
290
305
  },
291
- })
306
+ });
292
307
  </script>
293
308
 
294
309
  <style lang="scss">
295
- @import '@scss/_variables.scss';
296
- .octopus-app{
310
+ @import "@scss/_variables.scss";
311
+ .octopus-app {
297
312
  .comment-input-container {
298
313
  textarea::placeholder {
299
314
  color: $octopus-primary-color;
@@ -310,10 +325,10 @@ export default defineComponent({
310
325
  box-shadow: unset !important;
311
326
  background: transparent !important;
312
327
  height: 50px;
313
- &.short{
328
+ &.short {
314
329
  max-height: 38px;
315
330
  }
316
331
  }
317
332
  }
318
333
  }
319
- </style>
334
+ </style>