@saooti/octopus-sdk 39.1.2-beta → 39.1.3-SNAPSHOT
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/index.ts +30 -4
- package/package.json +2 -2
- package/src/App.vue +2 -2
- package/src/assets/general.scss +4 -1
- package/src/assets/videoPlayer.scss +16 -0
- package/src/components/display/categories/CategoryChooser.vue +1 -1
- package/src/components/display/categories/CategoryFilter.vue +1 -1
- package/src/components/display/categories/CategoryList.vue +2 -2
- package/src/components/display/comments/CommentInput.vue +2 -2
- package/src/components/display/comments/CommentName.vue +1 -1
- package/src/components/display/comments/CommentPlayer.vue +2 -2
- package/src/components/display/comments/CommentSection.vue +1 -1
- package/src/components/display/comments/item/CommentItem.vue +2 -12
- package/src/components/display/comments/item/CommentMoreActions.vue +1 -1
- package/src/components/display/comments/like/LikeSection.vue +1 -1
- package/src/components/display/comments/modal/CheckIdentityModal.vue +1 -1
- package/src/components/display/comments/modal/EditCommentModal.vue +1 -2
- package/src/components/display/comments/modal/ReportAbuseModal.vue +1 -1
- package/src/components/display/emission/EmissionList.vue +1 -1
- package/src/components/display/emission/EmissionPlayerItem.vue +2 -2
- package/src/components/display/emission/EmissionPresentationItem.vue +69 -0
- package/src/components/display/emission/EmissionPresentationList.vue +160 -0
- package/src/components/display/filter/CategorySearchFilter.vue +1 -1
- package/src/components/display/filter/ProductorSearch.vue +1 -1
- package/src/components/display/filter/RubriqueFilter.vue +1 -1
- package/src/components/display/list/ListPaginate.vue +1 -1
- package/src/components/display/live/CountDown.vue +8 -47
- package/src/components/display/live/CountdownOctopus.vue +210 -0
- package/src/components/display/live/LiveList.vue +2 -2
- package/src/components/display/live/RadioCurrently.vue +2 -2
- package/src/components/display/live/RadioImage.vue +2 -2
- package/src/components/display/live/RadioItem.vue +1 -1
- package/src/components/display/live/RadioList.vue +1 -1
- package/src/components/display/live/RadioPlanning.vue +1 -1
- package/src/components/display/organisation/OrganisationChooser.vue +1 -1
- package/src/components/display/organisation/OrganisationChooserLight.vue +1 -1
- package/src/components/display/participant/ParticipantList.vue +1 -1
- package/src/components/display/playlist/PlaylistItem.vue +1 -1
- package/src/components/display/playlist/PlaylistList.vue +1 -1
- package/src/components/display/podcasts/AnimatorsItem.vue +1 -1
- package/src/components/display/podcasts/ParticipantDescription.vue +1 -1
- package/src/components/display/podcasts/PodcastInlineListClassic.vue +1 -1
- package/src/components/display/podcasts/PodcastInlineListTemplate.vue +1 -1
- package/src/components/display/podcasts/PodcastItem.vue +1 -1
- package/src/components/display/podcasts/PodcastList.vue +1 -1
- package/src/components/display/podcasts/PodcastModuleBox.vue +28 -72
- package/src/components/display/podcasts/PodcastPlayBar.vue +1 -1
- package/src/components/display/podcasts/PodcastPlayButton.vue +5 -1
- package/src/components/display/podcasts/PodcastRawTranscript.vue +160 -0
- package/src/components/display/podcasts/PodcastSwiperList.vue +1 -1
- package/src/components/display/podcasts/VideoModuleBox.vue +57 -0
- package/src/components/display/rubriques/RubriqueList.vue +1 -1
- package/src/components/display/sharing/QrCode.vue +1 -1
- package/src/components/display/sharing/ShareButtons.vue +1 -1
- package/src/components/display/sharing/ShareDistribution.vue +5 -5
- package/src/components/display/sharing/SharePlayer.vue +1 -1
- package/src/components/display/sharing/SharePlayerRadio.vue +1 -1
- package/src/components/display/sharing/SubscribeButtons.vue +6 -6
- package/src/components/form/ClassicCheckbox.vue +4 -0
- package/src/components/form/ClassicInputText.vue +10 -1
- package/src/components/form/ClassicSelect.vue +4 -6
- package/src/components/form/ClassicWysiwyg.vue +20 -0
- package/src/components/misc/ClassicNav.vue +7 -1
- package/src/components/misc/FooterSection.vue +2 -2
- package/src/components/misc/MobileMenu.vue +1 -1
- package/src/components/misc/ProgressBar.vue +1 -1
- package/src/components/misc/TopBar.vue +1 -1
- package/src/components/misc/TopBarMainContent.vue +1 -1
- package/src/components/misc/modal/NewsletterModal.vue +1 -1
- package/src/components/misc/player/PlayerCompact.vue +6 -6
- package/src/components/misc/player/PlayerComponent.vue +7 -4
- package/src/components/misc/player/PlayerLarge.vue +1 -2
- package/src/components/misc/player/ads/AdsProgressBar.vue +1 -1
- package/src/components/misc/player/ads/AdsSkipButton.vue +1 -1
- package/src/components/misc/player/chaptering/ChapteringModal.vue +1 -1
- package/src/components/misc/player/chaptering/PlayerChaptering.vue +1 -1
- package/src/components/misc/player/elements/PlayerImage.vue +9 -3
- package/src/components/misc/player/elements/PlayerPlayButton.vue +5 -3
- package/src/components/misc/player/elements/PlayerSpeedButton.vue +66 -0
- package/src/components/misc/player/elements/PlayerTitle.vue +14 -16
- package/src/components/misc/player/progressbar/PlayerProgressBar.vue +2 -2
- package/src/components/misc/player/progressbar/PodcastProgressBar.vue +1 -1
- package/src/components/misc/player/radio/RadioHistory.vue +1 -1
- package/src/components/misc/player/radio/RadioProgressBar.vue +1 -1
- package/src/components/misc/player/video/PlayerVideo.vue +6 -3
- package/src/components/misc/player/video/PlayerVideoDigiteka.vue +14 -26
- package/src/components/misc/player/video/PlayerVideoHls.vue +8 -2
- package/src/components/mixins/debounce.ts +1 -1
- package/src/components/mixins/handle403.ts +2 -6
- package/src/components/mixins/init.ts +1 -1
- package/src/components/mixins/orgaComputed.ts +1 -1
- package/src/components/mixins/organisationFilter.ts +2 -2
- package/src/components/mixins/player/playerDisplayTime.ts +2 -2
- package/src/components/mixins/player/playerLive.ts +1 -1
- package/src/components/mixins/player/playerLogic.ts +3 -3
- package/src/components/mixins/player/playerLogicProgress.ts +1 -1
- package/src/components/mixins/player/playerStitching.ts +3 -3
- package/src/components/mixins/player/playerTranscript.ts +2 -2
- package/src/components/mixins/player/playerVast.ts +2 -2
- package/src/components/mixins/podcast/countdown.ts +45 -0
- package/src/components/mixins/podcast/podcastView.ts +53 -0
- package/src/components/mixins/resizePhone.ts +1 -1
- package/src/components/pages/CategoryPage.vue +2 -2
- package/src/components/pages/EmissionPage.vue +1 -1
- package/src/components/pages/EmissionsPage.vue +1 -1
- package/src/components/pages/Error403Page.vue +1 -1
- package/src/components/pages/HomePage.vue +2 -2
- package/src/components/pages/LivesPage.vue +1 -1
- package/src/components/pages/PageNotFound.vue +2 -2
- package/src/components/pages/PlaylistPage.vue +1 -1
- package/src/components/pages/PodcastPage.vue +3 -3
- package/src/components/pages/PodcastsPage.vue +1 -1
- package/src/components/pages/RadioPage.vue +1 -1
- package/src/components/pages/VideoPage.vue +331 -0
- package/src/helper/dom.ts +5 -0
- package/src/helper/duration.ts +18 -5
- package/src/locale/de.ts +8 -0
- package/src/locale/en.ts +8 -0
- package/src/locale/es.ts +8 -0
- package/src/locale/fr.ts +8 -0
- package/src/locale/it.ts +8 -0
- package/src/locale/sl.ts +8 -0
- package/src/router/router.ts +10 -0
- package/src/stores/CommentStore.ts +121 -62
- package/src/stores/GeneralStore.ts +5 -3
- package/src/stores/ParamSdkStore.ts +13 -13
- package/src/stores/PlayerStore.ts +48 -35
- package/src/stores/SaveFetchStore.ts +56 -39
- package/src/stores/VastStore.ts +45 -38
- package/src/websocket/commentWebsocket.ts +1 -1
- package/src/stores/ApiStore.ts +0 -68
package/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ export const getCategory = () => import("./src/components/pages/CategoryPage.vue
|
|
|
14
14
|
export const getRubrique = () => import("./src/components/pages/RubriquePage.vue");
|
|
15
15
|
export const getError403Page = () => import("./src/components/pages/Error403Page.vue");
|
|
16
16
|
export const getRadio = () => import("./src/components/pages/RadioPage.vue");
|
|
17
|
+
export const getVideo = () => import("./src/components/pages/VideoPage.vue");
|
|
17
18
|
|
|
18
19
|
//Misc
|
|
19
20
|
export const getAccordion = () => import("./src/components/misc/ClassicAccordion.vue");
|
|
@@ -33,6 +34,7 @@ export const getClassicModal = () => import("./src/components/misc/modal/Classic
|
|
|
33
34
|
export const getClassicLazy = () => import("./src/components/misc/ClassicLazy.vue");
|
|
34
35
|
|
|
35
36
|
|
|
37
|
+
|
|
36
38
|
//Display
|
|
37
39
|
export const getCategoryChooser = () => import("./src/components/display/categories/CategoryChooser.vue");
|
|
38
40
|
export const getCategoryList = () => import("./src/components/display/categories/CategoryList.vue");
|
|
@@ -49,6 +51,9 @@ export const getCommentList = () => import("./src/components/display/comments/Co
|
|
|
49
51
|
export const getCommentInput = () => import("./src/components/display/comments/CommentInput.vue");
|
|
50
52
|
export const getPodcastPlaylistInlineList = () => import("./src/components/display/playlist/PodcastPlaylistInlineList.vue");
|
|
51
53
|
export const getLiveList = () => import("./src/components/display/live/LiveList.vue");
|
|
54
|
+
export const getEmissionPresentationList = () => import("./src/components/display/emission/EmissionPresentationList.vue");
|
|
55
|
+
export const getPodcastPlayButton = () => import("./src/components/display/podcasts/PodcastPlayButton.vue");
|
|
56
|
+
|
|
52
57
|
|
|
53
58
|
|
|
54
59
|
//Radio
|
|
@@ -87,10 +92,23 @@ import orgaFilter from "./src/components/mixins/organisationFilter.ts";
|
|
|
87
92
|
import initSDK from "./src/components/mixins/init.ts";
|
|
88
93
|
import tagOfMixins from "./src/components/mixins/tagOfMixins.ts";
|
|
89
94
|
import resizePhone from "./src/components/mixins/resizePhone.ts";
|
|
90
|
-
import
|
|
95
|
+
import debounce from "./src/components/mixins/debounce.ts";
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
//helper
|
|
99
|
+
import domHelper from "./src/helper/dom.ts";
|
|
100
|
+
import durationHelper from "./src/helper/duration.ts";
|
|
101
|
+
import stringHelper from "./src/helper/string.ts";
|
|
102
|
+
|
|
91
103
|
|
|
104
|
+
//stores
|
|
105
|
+
import {useVastStore} from "./src/stores/VastStore.ts";
|
|
106
|
+
import {useSaveFetchStore} from "./src/stores/SaveFetchStore.ts";
|
|
107
|
+
import {usePlayerStore} from "./src/stores/PlayerStore.ts";
|
|
108
|
+
import {useGeneralStore} from "./src/stores/GeneralStore.ts";
|
|
109
|
+
import {useFilterStore} from "./src/stores/FilterStore.ts";
|
|
110
|
+
import {useCommentStore} from "./src/stores/CommentStore.ts";
|
|
92
111
|
|
|
93
|
-
import TopBar from "./src/components/misc/TopBar.vue";
|
|
94
112
|
|
|
95
113
|
export {
|
|
96
114
|
selenium,
|
|
@@ -101,6 +119,14 @@ export {
|
|
|
101
119
|
initSDK,
|
|
102
120
|
tagOfMixins,
|
|
103
121
|
resizePhone,
|
|
104
|
-
|
|
105
|
-
|
|
122
|
+
debounce,
|
|
123
|
+
useVastStore,
|
|
124
|
+
useSaveFetchStore,
|
|
125
|
+
usePlayerStore,
|
|
126
|
+
useGeneralStore,
|
|
127
|
+
useFilterStore,
|
|
128
|
+
useCommentStore,
|
|
129
|
+
domHelper,
|
|
130
|
+
durationHelper,
|
|
131
|
+
stringHelper
|
|
106
132
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saooti/octopus-sdk",
|
|
3
|
-
"version": "39.1.
|
|
3
|
+
"version": "39.1.3-SNAPSHOT",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Javascript SDK for using octopus",
|
|
6
6
|
"author": "Saooti",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"@popperjs/core": "^2.11.8",
|
|
19
19
|
"@saooti/octopus-api": "^0.39.2",
|
|
20
20
|
"@stomp/stompjs": "^7.0.0",
|
|
21
|
+
"@tiptap/extension-hard-break": "^2.8.0",
|
|
21
22
|
"@tiptap/extension-link": "^2.4.0",
|
|
22
23
|
"@tiptap/extension-underline": "^2.4.0",
|
|
23
24
|
"@tiptap/pm": "^2.4.0",
|
|
@@ -37,7 +38,6 @@
|
|
|
37
38
|
"hls.js": "^1.5.11",
|
|
38
39
|
"humanize-duration": "^3.32.1",
|
|
39
40
|
"jest": "^29.7.0",
|
|
40
|
-
"murmurhash3js": "^3.0.1",
|
|
41
41
|
"pinia": "^2.1.7",
|
|
42
42
|
"qrcode.vue": "^3.4.1",
|
|
43
43
|
"sass": "^1.77.6",
|
package/src/App.vue
CHANGED
|
@@ -21,8 +21,8 @@ import { Rubriquage } from "./stores/class/rubrique/rubriquage";
|
|
|
21
21
|
import { RubriquageFilter } from "./stores/class/rubrique/rubriquageFilter";
|
|
22
22
|
import { Rubrique } from "./stores/class/rubrique/rubrique";
|
|
23
23
|
import initSDK from "./components/mixins/init";
|
|
24
|
-
import { useFilterStore } from "
|
|
25
|
-
import { useGeneralStore } from "
|
|
24
|
+
import { useFilterStore } from "./stores/FilterStore";
|
|
25
|
+
import { useGeneralStore } from "./stores/GeneralStore";
|
|
26
26
|
import { mapState, mapActions } from "pinia";
|
|
27
27
|
import { defineAsyncComponent, defineComponent } from "vue";
|
|
28
28
|
import { Category } from "./stores/class/general/category";
|
package/src/assets/general.scss
CHANGED
|
@@ -73,6 +73,9 @@ body{
|
|
|
73
73
|
.really-light-primary-bg{
|
|
74
74
|
background-color: $primaryColorReallyTransparent !important;
|
|
75
75
|
}
|
|
76
|
+
.blue-bg{
|
|
77
|
+
background-color: $blue-octopus;
|
|
78
|
+
}
|
|
76
79
|
.width-fit-content{
|
|
77
80
|
width: fit-content !important;
|
|
78
81
|
}
|
|
@@ -81,7 +84,7 @@ body{
|
|
|
81
84
|
}
|
|
82
85
|
.page-box{
|
|
83
86
|
background-color: $octopus-background;
|
|
84
|
-
padding: 1rem
|
|
87
|
+
padding: 1rem 3rem 3rem 3rem;
|
|
85
88
|
flex-grow: 1;
|
|
86
89
|
display: flex;
|
|
87
90
|
flex-direction: column;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
.octopus-app {
|
|
2
|
+
.video-responsive-wrapper {
|
|
3
|
+
position:relative;
|
|
4
|
+
padding-bottom:56.25%;
|
|
5
|
+
height:0;
|
|
6
|
+
width: 100%;
|
|
7
|
+
iframe, #video-element-hls {
|
|
8
|
+
position:absolute;
|
|
9
|
+
top:0;
|
|
10
|
+
left:0;
|
|
11
|
+
width:100% !important;
|
|
12
|
+
height:100%;
|
|
13
|
+
margin:0 !important;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
</template>
|
|
20
20
|
|
|
21
21
|
<script lang="ts">
|
|
22
|
-
import { useGeneralStore } from "
|
|
22
|
+
import { useGeneralStore } from "../../../stores/GeneralStore";
|
|
23
23
|
import { mapState } from "pinia";
|
|
24
24
|
import ClassicMultiselect from "../../form/ClassicMultiselect.vue";
|
|
25
25
|
import { Category } from "@/stores/class/general/category";
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
import { Rubriquage } from "@/stores/class/rubrique/rubriquage";
|
|
66
66
|
import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
|
|
67
67
|
import { Rubrique } from "@/stores/class/rubrique/rubrique";
|
|
68
|
-
import { useFilterStore } from "
|
|
68
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
69
69
|
import { state } from "../../../stores/ParamSdkStore";
|
|
70
70
|
import { mapState, mapActions } from "pinia";
|
|
71
71
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
@@ -43,8 +43,8 @@ import octopusApi from "@saooti/octopus-api";
|
|
|
43
43
|
import { state } from "../../../stores/ParamSdkStore";
|
|
44
44
|
import ClassicPopover from "../../misc/ClassicPopover.vue";
|
|
45
45
|
import { Category } from "@/stores/class/general/category";
|
|
46
|
-
import { useFilterStore } from "
|
|
47
|
-
import { useGeneralStore } from "
|
|
46
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
47
|
+
import { useGeneralStore } from "../../../stores/GeneralStore";
|
|
48
48
|
import { mapState, mapActions } from "pinia";
|
|
49
49
|
import { defineComponent } from "vue";
|
|
50
50
|
export default defineComponent({
|
|
@@ -58,8 +58,8 @@ import { CommentCreate, CommentPodcast } from "@/stores/class/general/comment";
|
|
|
58
58
|
import Constants from "../../../../public/config";
|
|
59
59
|
import { mapState } from "pinia";
|
|
60
60
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
61
|
-
import { useCommentStore } from "
|
|
62
|
-
import { usePlayerStore } from "
|
|
61
|
+
import { useCommentStore } from "../../../stores/CommentStore";
|
|
62
|
+
import { usePlayerStore } from "../../../stores/PlayerStore";
|
|
63
63
|
const CheckIdentityModal = defineAsyncComponent(
|
|
64
64
|
() => import("./modal/CheckIdentityModal.vue"),
|
|
65
65
|
);
|
|
@@ -42,7 +42,7 @@ import Constants from "../../../../public/config";
|
|
|
42
42
|
import { useAuthStore } from "@/stores/AuthStore";
|
|
43
43
|
import { mapActions, mapState } from "pinia";
|
|
44
44
|
import { defineComponent } from "vue";
|
|
45
|
-
import { useCommentStore } from "
|
|
45
|
+
import { useCommentStore } from "../../../stores/CommentStore";
|
|
46
46
|
export default defineComponent({
|
|
47
47
|
name: "CommentName",
|
|
48
48
|
emits: [],
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
<script lang="ts">
|
|
36
36
|
import { CommentPodcast } from "@/stores/class/general/comment";
|
|
37
37
|
import selenium from "../../mixins/selenium";
|
|
38
|
-
import { usePlayerStore } from "
|
|
38
|
+
import { usePlayerStore } from "../../../stores/PlayerStore";
|
|
39
39
|
import { mapActions, mapState } from "pinia";
|
|
40
40
|
import { defineComponent } from "vue";
|
|
41
|
-
import { useCommentStore } from "
|
|
41
|
+
import { useCommentStore } from "../../../stores/CommentStore";
|
|
42
42
|
export default defineComponent({
|
|
43
43
|
name: "CommentPlayer",
|
|
44
44
|
mixins: [selenium],
|
|
@@ -30,7 +30,7 @@ import cookies from "../../mixins/cookies";
|
|
|
30
30
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
31
31
|
import { defineAsyncComponent, defineComponent } from "vue";
|
|
32
32
|
import { mapActions, mapState } from "pinia";
|
|
33
|
-
import { useCommentStore } from "
|
|
33
|
+
import { useCommentStore } from "../../../stores/CommentStore";
|
|
34
34
|
import {
|
|
35
35
|
CommentMessage,
|
|
36
36
|
CommentsConfig,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
class="d-flex flex-column flex-grow-1 w-100 really-light-secondary-bg"
|
|
4
4
|
:class="isAnAnswer && !isFlatList ? 'my-1 p-0' : 'my-3 p-2'"
|
|
5
5
|
>
|
|
6
|
-
<div class="d-flex justify-content-between align-items-center">
|
|
6
|
+
<div class="d-flex flex-nowrap justify-content-between align-items-center">
|
|
7
7
|
<CommentBasicView :comment="comment" :edit-right="editRight" />
|
|
8
8
|
<CommentMoreActions
|
|
9
9
|
v-model:comment="commentForVmodel"
|
|
@@ -89,7 +89,7 @@ import displayMethods from "../../../mixins/displayMethods";
|
|
|
89
89
|
import { CommentPodcast } from "@/stores/class/general/comment";
|
|
90
90
|
import { Podcast } from "../../../../stores/class/general/podcast";
|
|
91
91
|
import CommentBasicView from "./CommentBasicView.vue";
|
|
92
|
-
import { useCommentStore } from "
|
|
92
|
+
import { useCommentStore } from "../../../../stores/CommentStore";
|
|
93
93
|
import { mapActions, mapState } from "pinia";
|
|
94
94
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
95
95
|
import {
|
|
@@ -232,13 +232,3 @@ export default defineComponent({
|
|
|
232
232
|
},
|
|
233
233
|
});
|
|
234
234
|
</script>
|
|
235
|
-
<style lang="scss">
|
|
236
|
-
.octopus-app {
|
|
237
|
-
.answers-section {
|
|
238
|
-
.btn.btn-primary {
|
|
239
|
-
align-self: start !important;
|
|
240
|
-
margin: 0.5rem 0 0 0 !important;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
</style>
|
|
@@ -60,7 +60,7 @@ import CommentMoreActionsAdmin from "@/components/display/comments/item/CommentM
|
|
|
60
60
|
import { useAuthStore } from "@/stores/AuthStore";
|
|
61
61
|
import { CommentPodcast } from "@/stores/class/general/comment";
|
|
62
62
|
import { Podcast } from "@/stores/class/general/podcast";
|
|
63
|
-
import { useCommentStore } from "
|
|
63
|
+
import { useCommentStore } from "../../../../stores/CommentStore";
|
|
64
64
|
import { mapActions, mapState } from "pinia";
|
|
65
65
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
66
66
|
import { CommentsConfig } from "@/stores/class/config/commentsConfig";
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
import { state } from "../../../../stores/ParamSdkStore";
|
|
27
27
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
28
28
|
import octopusApi from "@saooti/octopus-api";
|
|
29
|
-
import { useCommentStore } from "
|
|
29
|
+
import { useCommentStore } from "../../../../stores/CommentStore";
|
|
30
30
|
import { mapActions, mapState } from "pinia";
|
|
31
31
|
import {
|
|
32
32
|
CommentFeelings,
|
|
@@ -25,7 +25,7 @@ import ClassicInputText from "../../../form/ClassicInputText.vue";
|
|
|
25
25
|
import RecaptchaModal from "./RecaptchaModal.vue";
|
|
26
26
|
import { mapActions } from "pinia";
|
|
27
27
|
import { defineComponent } from "vue";
|
|
28
|
-
import { useCommentStore } from "
|
|
28
|
+
import { useCommentStore } from "../../../../stores/CommentStore";
|
|
29
29
|
export default defineComponent({
|
|
30
30
|
name: "CheckIdentityModal",
|
|
31
31
|
components: {
|
|
@@ -14,9 +14,8 @@
|
|
|
14
14
|
v-model:text-init="name"
|
|
15
15
|
v-model:errorVariable="errorName"
|
|
16
16
|
input-id="username-input"
|
|
17
|
-
:label="$t('
|
|
17
|
+
:label="$t('Your name')"
|
|
18
18
|
:max-length="MAX_NAME"
|
|
19
|
-
:error-text="$t('Please provide a lastname')"
|
|
20
19
|
/>
|
|
21
20
|
<ClassicInputText
|
|
22
21
|
v-model:text-init="commentText"
|
|
@@ -39,7 +39,7 @@ import ClassicInputText from "../../../form/ClassicInputText.vue";
|
|
|
39
39
|
import RecaptchaModal from "./RecaptchaModal.vue";
|
|
40
40
|
import { mapActions, mapState } from "pinia";
|
|
41
41
|
import { defineComponent } from "vue";
|
|
42
|
-
import { useCommentStore } from "
|
|
42
|
+
import { useCommentStore } from "../../../../stores/CommentStore";
|
|
43
43
|
import octopusApi from "@saooti/octopus-api";
|
|
44
44
|
import {
|
|
45
45
|
CommentAbuseInfo,
|
|
@@ -70,7 +70,7 @@ import { defineComponent, defineAsyncComponent } from "vue";
|
|
|
70
70
|
import { FetchParam } from "@/stores/class/general/fetchParam";
|
|
71
71
|
import { AxiosError } from "axios";
|
|
72
72
|
import { Rubriquage } from "@/stores/class/rubrique/rubriquage";
|
|
73
|
-
import { useFilterStore } from "
|
|
73
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
74
74
|
import { mapState } from "pinia";
|
|
75
75
|
import { ListClassicReturn } from "@/stores/class/general/listReturn";
|
|
76
76
|
const EmissionItem = defineAsyncComponent(() => import("./EmissionItem.vue"));
|
|
@@ -105,8 +105,8 @@ import { Podcast } from "@/stores/class/general/podcast";
|
|
|
105
105
|
import { state } from "../../../stores/ParamSdkStore";
|
|
106
106
|
import imageProxy from "../../mixins/imageProxy";
|
|
107
107
|
import displayMethods from "../../mixins/displayMethods";
|
|
108
|
-
import { usePlayerStore } from "
|
|
109
|
-
import { useFilterStore } from "
|
|
108
|
+
import { usePlayerStore } from "../../../stores/PlayerStore";
|
|
109
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
110
110
|
import { mapState, mapActions } from "pinia";
|
|
111
111
|
import { defineAsyncComponent, defineComponent } from "vue";
|
|
112
112
|
import { ListClassicReturn } from "@/stores/class/general/listReturn";
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
class="emission-item-container emission-presentation-container mt-3"
|
|
4
|
+
:class="isVertical ? 'emission-vertical-item' : ''"
|
|
5
|
+
>
|
|
6
|
+
<router-link
|
|
7
|
+
:to="{
|
|
8
|
+
name: 'emission',
|
|
9
|
+
params: { emissionId: emission.emissionId },
|
|
10
|
+
query: { productor: filterOrgaId },
|
|
11
|
+
}"
|
|
12
|
+
:title="$t('Emission')"
|
|
13
|
+
class="d-flex-column flex-grow-1 text-dark"
|
|
14
|
+
:class="isVertical ? 'flex-column' : ''"
|
|
15
|
+
>
|
|
16
|
+
<img
|
|
17
|
+
v-lazy="proxyImageUrl(emission.imageUrl, isVertical ? '400' : '250')"
|
|
18
|
+
:width="isVertical ? '400' : '250'"
|
|
19
|
+
:height="isVertical ? '400' : '250'"
|
|
20
|
+
:class="isVertical ? 'img-box-bigger' : ''"
|
|
21
|
+
class="img-box"
|
|
22
|
+
:title="$t('Emission name image', { name: emission.name })"
|
|
23
|
+
:alt="$t('Emission name image', { name: emission.name })"
|
|
24
|
+
/>
|
|
25
|
+
<div class="emission-item-text">
|
|
26
|
+
<div class="d-flex align-items-center emission-name">
|
|
27
|
+
{{ emission.name }}
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</router-link>
|
|
31
|
+
</div>
|
|
32
|
+
</template>
|
|
33
|
+
|
|
34
|
+
<script lang="ts">
|
|
35
|
+
import { orgaComputed } from "../../mixins/orgaComputed";
|
|
36
|
+
import { Emission } from "@/stores/class/general/emission";
|
|
37
|
+
import imageProxy from "../../mixins/imageProxy";
|
|
38
|
+
import displayMethods from "../../mixins/displayMethods";
|
|
39
|
+
import { defineComponent } from "vue";
|
|
40
|
+
export default defineComponent({
|
|
41
|
+
name: "EmissionItem",
|
|
42
|
+
|
|
43
|
+
mixins: [displayMethods, orgaComputed, imageProxy],
|
|
44
|
+
|
|
45
|
+
props: {
|
|
46
|
+
emission: { default: () => ({}), type: Object as () => Emission },
|
|
47
|
+
isVertical: { default: false, type: Boolean },
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
</script>
|
|
51
|
+
<style lang="scss">
|
|
52
|
+
.octopus-app {
|
|
53
|
+
.emission-presentation-container {
|
|
54
|
+
@media (max-width: 960px) {
|
|
55
|
+
width: 250px !important;
|
|
56
|
+
margin-right: 0.5rem;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
.emission-item-container.emission-vertical-item {
|
|
60
|
+
flex-grow: 0;
|
|
61
|
+
width: 400px;
|
|
62
|
+
flex-shrink: 0;
|
|
63
|
+
}
|
|
64
|
+
.img-box-bigger {
|
|
65
|
+
width: 400px;
|
|
66
|
+
height: 400px;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
</style>
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="d-flex flex-column p-3">
|
|
3
|
+
<h2 class="mb-3">{{ title }}</h2>
|
|
4
|
+
<ClassicLoading
|
|
5
|
+
:loading-text="loading ? $t('Loading emissions ...') : undefined"
|
|
6
|
+
:error-text="error ? $t(`Error`) : undefined"
|
|
7
|
+
/>
|
|
8
|
+
<template v-if="!loading && !error">
|
|
9
|
+
<div class="d-flex flex-nowrap align-items-stretch overflow-phone-auto">
|
|
10
|
+
<EmissionItemPresentation
|
|
11
|
+
v-if="allEmissions[0]"
|
|
12
|
+
:class="!isPhone ? 'me-3' : ''"
|
|
13
|
+
:emission="allEmissions[0]"
|
|
14
|
+
:is-vertical="!isPhone"
|
|
15
|
+
/>
|
|
16
|
+
<div
|
|
17
|
+
v-if="allEmissions.length > 1"
|
|
18
|
+
class="emission-column emission-column-margin d-flex-row flex-nowrap"
|
|
19
|
+
>
|
|
20
|
+
<EmissionItemPresentation
|
|
21
|
+
v-if="allEmissions[1]"
|
|
22
|
+
:emission="allEmissions[1]"
|
|
23
|
+
/>
|
|
24
|
+
<EmissionItemPresentation
|
|
25
|
+
v-if="allEmissions[2]"
|
|
26
|
+
:emission="allEmissions[2]"
|
|
27
|
+
/>
|
|
28
|
+
</div>
|
|
29
|
+
<div
|
|
30
|
+
v-if="allEmissions.length > 3"
|
|
31
|
+
class="emission-column d-flex-row flex-nowrap show-emission-column"
|
|
32
|
+
>
|
|
33
|
+
<EmissionItemPresentation
|
|
34
|
+
v-if="allEmissions[3]"
|
|
35
|
+
:emission="allEmissions[3]"
|
|
36
|
+
/>
|
|
37
|
+
<EmissionItemPresentation
|
|
38
|
+
v-if="allEmissions[4]"
|
|
39
|
+
:emission="allEmissions[4]"
|
|
40
|
+
/>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<router-link
|
|
44
|
+
v-if="buttonText && href"
|
|
45
|
+
:to="href"
|
|
46
|
+
class="btn btn-primary align-self-center width-fit-content m-4"
|
|
47
|
+
>
|
|
48
|
+
{{ buttonText }}
|
|
49
|
+
</router-link>
|
|
50
|
+
</template>
|
|
51
|
+
</div>
|
|
52
|
+
</template>
|
|
53
|
+
|
|
54
|
+
<script lang="ts">
|
|
55
|
+
import octopusApi from "@saooti/octopus-api";
|
|
56
|
+
import { handle403 } from "../../mixins/handle403";
|
|
57
|
+
import ClassicLoading from "../../form/ClassicLoading.vue";
|
|
58
|
+
import { Emission } from "@/stores/class/general/emission";
|
|
59
|
+
import { defineAsyncComponent, defineComponent } from "vue";
|
|
60
|
+
import { AxiosError } from "axios";
|
|
61
|
+
import imageProxy from "../../mixins/imageProxy";
|
|
62
|
+
import resizePhone from "../../mixins/resizePhone";
|
|
63
|
+
const EmissionItemPresentation = defineAsyncComponent(
|
|
64
|
+
() => import("./EmissionPresentationItem.vue"),
|
|
65
|
+
);
|
|
66
|
+
export default defineComponent({
|
|
67
|
+
name: "EmissionPresentationList",
|
|
68
|
+
components: {
|
|
69
|
+
ClassicLoading,
|
|
70
|
+
EmissionItemPresentation,
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
mixins: [handle403, imageProxy, resizePhone],
|
|
74
|
+
|
|
75
|
+
props: {
|
|
76
|
+
organisationId: { default: undefined, type: String },
|
|
77
|
+
title: { default: "", type: String },
|
|
78
|
+
href: { default: undefined, type: String },
|
|
79
|
+
buttonText: { default: undefined, type: String },
|
|
80
|
+
},
|
|
81
|
+
data() {
|
|
82
|
+
return {
|
|
83
|
+
loading: true as boolean,
|
|
84
|
+
error: false as boolean,
|
|
85
|
+
allEmissions: [] as Array<Emission>,
|
|
86
|
+
isPhone: false as boolean,
|
|
87
|
+
windowWidth: 0 as number,
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
mounted() {
|
|
92
|
+
this.fetchNext();
|
|
93
|
+
},
|
|
94
|
+
methods: {
|
|
95
|
+
async fetchNext(): Promise<void> {
|
|
96
|
+
this.loading = true;
|
|
97
|
+
try {
|
|
98
|
+
const data = await octopusApi.fetchDataWithParams<{
|
|
99
|
+
count: number;
|
|
100
|
+
result: Array<Emission>;
|
|
101
|
+
sort: string;
|
|
102
|
+
}>(
|
|
103
|
+
0,
|
|
104
|
+
"emission/search",
|
|
105
|
+
{
|
|
106
|
+
first: 0,
|
|
107
|
+
size: 5,
|
|
108
|
+
organisationId: this.organisationId,
|
|
109
|
+
sort: "LAST_PODCAST_DESC",
|
|
110
|
+
},
|
|
111
|
+
true,
|
|
112
|
+
);
|
|
113
|
+
this.allEmissions = this.allEmissions.concat(
|
|
114
|
+
data.result.filter((em: Emission | null) => null !== em),
|
|
115
|
+
);
|
|
116
|
+
this.loading = false;
|
|
117
|
+
} catch (error) {
|
|
118
|
+
this.handle403(error as AxiosError);
|
|
119
|
+
this.error = true;
|
|
120
|
+
}
|
|
121
|
+
this.loading = false;
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
</script>
|
|
126
|
+
<style lang="scss">
|
|
127
|
+
.octopus-app {
|
|
128
|
+
.overflow-phone-auto {
|
|
129
|
+
@media (max-width: 960px) {
|
|
130
|
+
overflow-y: auto;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
.emission-column {
|
|
134
|
+
flex-shrink: 0;
|
|
135
|
+
width: calc((100% - 420px) / 2);
|
|
136
|
+
@media (max-width: 1550px) {
|
|
137
|
+
width: calc((100% - 420px));
|
|
138
|
+
}
|
|
139
|
+
@media (max-width: 960px) {
|
|
140
|
+
width: auto;
|
|
141
|
+
flex-direction: row !important;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
.emission-column-margin {
|
|
145
|
+
margin-right: 1rem;
|
|
146
|
+
@media (max-width: 960px) {
|
|
147
|
+
margin-right: 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
.show-emission-column {
|
|
151
|
+
display: flex;
|
|
152
|
+
@media (max-width: 1550px) {
|
|
153
|
+
display: none !important;
|
|
154
|
+
}
|
|
155
|
+
@media (max-width: 960px) {
|
|
156
|
+
display: flex !important;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
</style>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<script lang="ts">
|
|
18
18
|
import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
|
|
19
19
|
import CategoryChooser from "../categories/CategoryChooser.vue";
|
|
20
|
-
import { useFilterStore } from "
|
|
20
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
21
21
|
import { mapState, mapActions } from "pinia";
|
|
22
22
|
import { defineComponent } from "vue";
|
|
23
23
|
export default defineComponent({
|
|
@@ -46,7 +46,7 @@ import ClassicSearch from "../../form/ClassicSearch.vue";
|
|
|
46
46
|
import { state } from "../../../stores/ParamSdkStore";
|
|
47
47
|
import orgaFilter from "../../mixins/organisationFilter";
|
|
48
48
|
import { Organisation } from "@/stores/class/general/organisation";
|
|
49
|
-
import { useFilterStore } from "
|
|
49
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
50
50
|
import { mapState, mapActions } from "pinia";
|
|
51
51
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
52
52
|
const OrganisationChooser = defineAsyncComponent(
|
|
@@ -39,7 +39,7 @@ import octopusApi from "@saooti/octopus-api";
|
|
|
39
39
|
import ClassicCheckbox from "../../form/ClassicCheckbox.vue";
|
|
40
40
|
import { Rubriquage } from "@/stores/class/rubrique/rubriquage";
|
|
41
41
|
import { RubriquageFilter } from "@/stores/class/rubrique/rubriquageFilter";
|
|
42
|
-
import { useFilterStore } from "
|
|
42
|
+
import { useFilterStore } from "../../../stores/FilterStore";
|
|
43
43
|
import { mapState, mapActions } from "pinia";
|
|
44
44
|
import { defineComponent, defineAsyncComponent } from "vue";
|
|
45
45
|
const RubriqueChoice = defineAsyncComponent(
|
|
@@ -56,7 +56,7 @@ import PaginateParams from "./PaginateParams.vue";
|
|
|
56
56
|
import PaginateSection from "./PaginateSection.vue";
|
|
57
57
|
import resizePhone from "../../mixins/resizePhone";
|
|
58
58
|
import { defineComponent } from "vue";
|
|
59
|
-
import { usePlayerStore } from "
|
|
59
|
+
import { usePlayerStore } from "../../../stores/PlayerStore";
|
|
60
60
|
import { mapState } from "pinia";
|
|
61
61
|
export default defineComponent({
|
|
62
62
|
name: "ListPaginate",
|