@@ -26,69 +26,32 @@ import ScreenGanttChart from "../screen/util/screen-gantt-chart";
2626 */
2727function PlaylistDragAndDrop ( {
2828 handleChange,
29+ selectedPlaylists,
2930 name,
30- screenId,
31+ handleAdd,
32+ removeFromList,
3133 regionId,
32- regionIdForInitializeCallback,
3334} ) {
3435 const { t } = useTranslation ( "common" , {
3536 keyPrefix : "playlist-drag-and-drop" ,
3637 } ) ;
37-
3838 const [ searchText , setSearchText ] = useState ( ) ;
39- const [ selectedData , setSelectedData ] = useState ( [ ] ) ;
40- const [ totalItems , setTotalItems ] = useState ( 0 ) ;
4139 const [ page , setPage ] = useState ( 1 ) ;
4240 const [ onlySharedPlaylists , setOnlySharedPlaylists ] = useState ( false ) ;
43- const { data : selectedPlaylistsByRegion } =
44- useGetV2ScreensByIdRegionsAndRegionIdPlaylistsQuery ( {
45- id : screenId ,
46- regionId,
47- page,
48- itemsPerPage : 10 ,
49- } ) ;
5041
51- // Get method
52- const { data } = useGetV2PlaylistsQuery ( {
42+ const {
43+ data : {
44+ "hydra:member" : playlists = null ,
45+ "hydra:totalItems" : totalItems = 0 ,
46+ } = { } ,
47+ } = useGetV2PlaylistsQuery ( {
5348 isCampaign : false ,
5449 title : searchText ,
5550 itemsPerPage : 30 ,
5651 order : { createdAt : "desc" } ,
5752 sharedWithMe : onlySharedPlaylists ,
5853 } ) ;
5954
60- /**
61- * @param {object } regionsAndPlaylists This method initializes playlists, so
62- * the initial formstate object in screen manager is not empty
63- */
64- function callbackToinitializePlaylists ( regionsAndPlaylists ) {
65- handleChange ( {
66- target : {
67- id : regionIdForInitializeCallback ,
68- value : regionsAndPlaylists [ "hydra:member" ] . map (
69- ( { playlist } ) => playlist
70- ) ,
71- } ,
72- } ) ;
73- }
74-
75- /** Set loaded data into form state. */
76- useEffect ( ( ) => {
77- if ( selectedPlaylistsByRegion ) {
78- setTotalItems ( selectedPlaylistsByRegion [ "hydra:totalItems" ] ) ;
79- const newPlaylists = selectedPlaylistsByRegion [ "hydra:member" ] . map (
80- ( { playlist, weight } ) => ( { ...playlist , weight } )
81- ) ;
82-
83- const selected = [ ...selectedData , ...newPlaylists ] . sort (
84- ( a , b ) => a . weight - b . weight
85- ) ;
86-
87- setSelectedData ( selected ) ;
88- callbackToinitializePlaylists ( selectedPlaylistsByRegion ) ;
89- }
90- } , [ selectedPlaylistsByRegion ] ) ;
91-
9255 /**
9356 * Fetches data for the multi component
9457 *
@@ -98,39 +61,6 @@ function PlaylistDragAndDrop({
9861 setSearchText ( filter ) ;
9962 } ;
10063
101- /**
102- * Removes playlist from list of playlists, and closes modal.
103- *
104- * @param {object } removeItem - Item to remove
105- */
106- const removeFromList = ( removeItem ) => {
107- const indexOfItemToRemove = selectedData
108- . map ( ( item ) => {
109- return item [ "@id" ] ;
110- } )
111- . indexOf ( removeItem ) ;
112- const selectedDataCopy = [ ...selectedData ] ;
113- selectedDataCopy . splice ( indexOfItemToRemove , 1 ) ;
114- setSelectedData ( selectedDataCopy ) ;
115-
116- const target = { value : selectedDataCopy , id : name } ;
117- handleChange ( { target } ) ;
118- } ;
119-
120- /**
121- * Adds group to list of groups.
122- *
123- * @param {object } props - The props.
124- * @param {object } props.target - The target.
125- */
126- const handleAdd = ( { target } ) => {
127- const { value, id } = target ;
128- setSelectedData ( value ) ;
129- handleChange ( {
130- target : { id, value } ,
131- } ) ;
132- } ;
133-
13464 const columns = SelectPlaylistColumns ( {
13565 handleDelete : removeFromList ,
13666 apiCall : useGetV2PlaylistsByIdSlidesQuery ,
@@ -140,42 +70,40 @@ function PlaylistDragAndDrop({
14070 infoModalTitle : t ( "select-playlists-table.info-modal.slides" ) ,
14171 } ) ;
14272
73+ if ( ! playlists ) return null ;
74+
14375 return (
14476 < >
145- { data && data [ "hydra:member" ] && (
146- < >
147- < FormCheckbox
148- label = { t ( "show-only-shared" ) }
149- onChange = { ( ) => {
150- setOnlySharedPlaylists ( ! onlySharedPlaylists ) ;
151- } }
152- value = { onlySharedPlaylists }
153- name = "show-only-shared"
154- />
155- < div className = "mb-3" >
156- < PlaylistsDropdown
157- filterCallback = { onFilter }
158- name = { name }
159- handlePlaylistSelection = { handleAdd }
160- selected = { selectedData }
161- data = { data [ "hydra:member" ] }
162- />
163- </ div >
164- { selectedData . length > 0 && (
165- < DragAndDropTable
166- columns = { columns }
167- onDropped = { handleChange }
168- name = { name }
169- data = { selectedData }
170- callback = { ( ) => setPage ( page + 1 ) }
171- label = { t ( "more-playlists" ) }
172- totalItems = { totalItems }
173- />
174- ) }
175- { selectedData ?. length > 0 && (
176- < ScreenGanttChart playlists = { selectedData } id = { regionId } />
177- ) }
178- </ >
77+ < FormCheckbox
78+ label = { t ( "show-only-shared" ) }
79+ onChange = { ( ) => {
80+ setOnlySharedPlaylists ( ! onlySharedPlaylists ) ;
81+ } }
82+ value = { onlySharedPlaylists }
83+ name = "show-only-shared"
84+ />
85+ < div className = "mb-3" >
86+ < PlaylistsDropdown
87+ filterCallback = { onFilter }
88+ name = { name }
89+ handlePlaylistSelection = { handleAdd }
90+ selected = { selectedPlaylists }
91+ data = { playlists }
92+ />
93+ </ div >
94+ { selectedPlaylists . length > 0 && (
95+ < DragAndDropTable
96+ columns = { columns }
97+ onDropped = { handleChange }
98+ name = { name }
99+ data = { selectedPlaylists }
100+ callback = { ( ) => setPage ( page + 1 ) }
101+ label = { t ( "more-playlists" ) }
102+ totalItems = { totalItems }
103+ />
104+ ) }
105+ { selectedPlaylists ?. length > 0 && (
106+ < ScreenGanttChart playlists = { selectedPlaylists } id = { regionId } />
179107 ) }
180108 </ >
181109 ) ;
0 commit comments