@saooti/octopus-sdk 39.1.3-beta → 39.1.4-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 +31 -5
- package/package.json +2 -1
- 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/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/list/SwiperList.vue +5 -4
- 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 +116 -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,7 +51,8 @@ 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");
|
|
52
|
-
|
|
54
|
+
export const getEmissionPresentationList = () => import("./src/components/display/emission/EmissionPresentationList.vue");
|
|
55
|
+
export const getPodcastPlayButton = () => import("./src/components/display/podcasts/PodcastPlayButton.vue");
|
|
53
56
|
|
|
54
57
|
//Radio
|
|
55
58
|
export const getRadioCurrently = () => import("./src/components/display/live/RadioCurrently.vue");
|
|
@@ -76,6 +79,8 @@ export const getClassicMultiselect = () => import("./src/components/form/Classic
|
|
|
76
79
|
export const getClassicInputText = () => import("./src/components/form/ClassicInputText.vue");
|
|
77
80
|
export const getClassicEmojiPicker = () => import("./src/components/form/ClassicEmojiPicker.vue");
|
|
78
81
|
export const getClassicContentEditable = () => import("./src/components/form/ClassicContentEditable.vue");
|
|
82
|
+
export const getSwiperList = () => import("./src/components/display/list/SwiperList.vue");
|
|
83
|
+
|
|
79
84
|
|
|
80
85
|
//mixins
|
|
81
86
|
|
|
@@ -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.4-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",
|
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: {
|
|
@@ -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",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
:key="manualReload"
|
|
6
6
|
:slides-per-view="numberItem"
|
|
7
7
|
:space-between="0"
|
|
8
|
-
:loop="
|
|
8
|
+
:loop="true"
|
|
9
9
|
:slides-offset-before="offsetSwiper"
|
|
10
10
|
:slides-offset-after="offsetSwiper"
|
|
11
11
|
:navigation="true"
|
|
@@ -73,9 +73,9 @@ export default defineComponent({
|
|
|
73
73
|
? state.generalParameters.podcastItem
|
|
74
74
|
: 13.5;
|
|
75
75
|
},
|
|
76
|
-
isLoop(): boolean {
|
|
76
|
+
/* isLoop(): boolean {
|
|
77
77
|
return this.listObject.length >= this.numberItem;
|
|
78
|
-
},
|
|
78
|
+
}, */
|
|
79
79
|
itemRecalculizedSize(): number {
|
|
80
80
|
return this.widthSwiperUsable / this.numberItem;
|
|
81
81
|
},
|
|
@@ -146,6 +146,7 @@ export default defineComponent({
|
|
|
146
146
|
width: 100%;
|
|
147
147
|
height: 100%;
|
|
148
148
|
}
|
|
149
|
+
|
|
149
150
|
.swiper-button-next,
|
|
150
151
|
.swiper-button-prev {
|
|
151
152
|
color: $octopus-primary-color !important;
|
|
@@ -160,7 +161,7 @@ export default defineComponent({
|
|
|
160
161
|
display: flex;
|
|
161
162
|
}
|
|
162
163
|
.swiper-slide {
|
|
163
|
-
display: flex;
|
|
164
|
+
display: flex !important;
|
|
164
165
|
align-items: center;
|
|
165
166
|
justify-content: center;
|
|
166
167
|
}
|