diff --git a/src/components/forms/formGenerator.js b/src/components/forms/formGenerator.js index 7f906c5..86b00d7 100644 --- a/src/components/forms/formGenerator.js +++ b/src/components/forms/formGenerator.js @@ -14,7 +14,9 @@ export const FormGenerator = ({ const handler = async (event) => { event.preventDefault() - if ( inputList[0].action === 'Download' ) { + if ( inputList[0].action === 'Download' + || inputList[0].action === 'Upload' + ) { await action() } else { for (let i = 0; i < refList.length; i++) { @@ -215,7 +217,8 @@ const UploadInputGenerator = ({ const onLoadFile = async (event) => { event.preventDefault() let data = event.target.files[0] - input.setFile(await toBase64(data)) + // input.setFile(await toBase64(data)) + input.setFile( data ) setDropInfos(data.name, data.size) } @@ -223,11 +226,12 @@ const UploadInputGenerator = ({ event.preventDefault() event.persist() let data = event.dataTransfer.files[0] - input.setFile(await toBase64(data)) + // input.setFile(await toBase64(data)) + input.setFile( data ) setDropInfos(data.name, data.size) } - const toBase64 = (file) => new Promise((resolve, reject) => { + const toBase64 = async (file) => new Promise((resolve, reject) => { let fileReader = new FileReader() fileReader.readAsDataURL(file) fileReader.onload = () => resolve(fileReader.result) diff --git a/src/components/forms/model_crud/modelUpload.js b/src/components/forms/model_crud/modelUpload.js index de69c65..f36572a 100644 --- a/src/components/forms/model_crud/modelUpload.js +++ b/src/components/forms/model_crud/modelUpload.js @@ -1,8 +1,58 @@ -import React from 'react' +import React, { useState } from 'react' +import { useSelector, useDispatch } from 'react-redux' + +import { userAuthSelector } from '../../../redux/slices/userAuthSlice' +import { modelCrudSelector } from '../../../redux/slices/modelCrudSlice' +import modelCrudAsyncThunk from '../../../redux/asyncThunks/modelCrudAsyncThunk' + +import FormGenerator from '../formGenerator' + const ModelUploadForm = () => { + + const dispatch = useDispatch() + + const [blend, setBlend] = useState('') + const [blendInfo, setBlendInfo] = useState('Drop/Click\nfor upload "*.blend" file') + + const { upload_blend_file_status } = useSelector( modelCrudSelector ) + const { user, token } = useSelector( userAuthSelector ) + + let inputList = [ + { + type: 'info', + action: 'Upload', + endpint: 'model/upload', + button_value: 'Upload Model' + }, + { + type: 'file', + name: 'Model', + fileType: 'blender', + dropInfo: blendInfo, + setDropInfo: setBlendInfo, + file: blend, + setFile: setBlend + } + ] + + const handleModelUpload = () => { + let body = { + user_id: user.id, + file: blend, + token: token + } + console.log( body ) + dispatch( modelCrudAsyncThunk.fetchUploadModel( body ) ) + } + return ( <> + ) } diff --git a/src/components/forms/render_crud/renderShowReadyRendersAndDownload.js b/src/components/forms/render_crud/renderShowReadyRendersAndDownload.js index e69de29..5b003c4 100644 --- a/src/components/forms/render_crud/renderShowReadyRendersAndDownload.js +++ b/src/components/forms/render_crud/renderShowReadyRendersAndDownload.js @@ -0,0 +1,65 @@ +import React, { useEffect } from 'react' + +import { useSelector, useDispatch } from 'react-redux' + +import { userAuthSelector } from '../../../redux/slices/userAuthSlice' +import { renderCrudSelector } from '../../../redux/slices/renderCrudSlice' +import renderCrudAsyncThunk from '../../../redux/asyncThunks/renderCrudAsyncThunk' + +import { GeneralAddress } from '../../../redux/asyncThunks/abstracts/abstractAddress' + +import FormGenerator from '../formGenerator' + + +const RenderShowAndDownloadForm = () => { + + const dispatch = useDispatch() + + const { render_list } = useSelector( renderCrudSelector ) + const { user, token } = useSelector( userAuthSelector ) + + let blocker = false + + useEffect( + () => { + if ( render_list.length === 0 && user.id > 0 && token !== '' && !blocker ) { + dispatch( renderCrudAsyncThunk.fetchGetAllRenders( token ) ) + if ( render_list.length === 0 ) { + blocker = true + } + } + } + ) + + let inputList = [ + { + type: 'info', + action: 'Download', + endpint: 'model/download', + button_value: 'Refresh Renders List' + }, + { + type: 'drop-box', + name: 'Renders', + values: render_list, + link: GeneralAddress + '/render/', + } + ] + + const handleRefresh = () => { + dispatch( renderCrudAsyncThunk.fetchGetAllRenders( token ) ) + } + + return ( + <> + + + ) + +} + +export default RenderShowAndDownloadForm \ No newline at end of file diff --git a/src/pages/func_group/navigationBar.js b/src/pages/func_group/navigationBar.js index 857350c..22da780 100644 --- a/src/pages/func_group/navigationBar.js +++ b/src/pages/func_group/navigationBar.js @@ -10,17 +10,17 @@ import userAuthAsyncThunk from '../../redux/asyncThunks/userAuthAsyncThunk' const __setShowGeneral = ( view, key, movements ) => { - movements.user_view.userCrudView = { + let user_default = { update_user: false, delete_user: false } - movements.model_view.modelCrudView = { + let model_default = { show_models_and_dwonload: false, upload_model: false } - movements.render_view.renderView = { + let render_default = { show_ready_renders_and_download: false, render_functionality: { render_single_image: false, @@ -37,6 +37,12 @@ const __setShowGeneral = ( view, key, movements ) => { movements.user_view.setUserCrudView( new_move ) + movements.model_view.setModelCrudView( + model_default + ) + movements.render_view.setRenderView( + render_default + ) } else if (view === 'model_view') { let new_move = movements.model_view.modelCrudView @@ -44,19 +50,31 @@ const __setShowGeneral = ( view, key, movements ) => { movements.model_view.setModelCrudView( new_move ) + movements.user_view.setUserCrudView( + user_default + ) + movements.render_view.setRenderView( + render_default + ) } else if (view === 'render_view') { let new_move = movements.render_view.renderView if ( key in new_move ) { new_move[key] = true - movements.model_view.setModelCrudView( + movements.render_view.setRenderView( new_move ) } else { new_move['render_functionality'][key] = true - movements.model_view.setModelCrudView( + movements.render_view.setRenderView( new_move ) } + movements.model_view.setModelCrudView( + model_default + ) + movements.user_view.setUserCrudView( + user_default + ) } } @@ -82,7 +100,7 @@ const NavigationBar = ({ movements }) => { const dispatch = useDispatch() useEffect( () => { - if ( user_get === {} && token !== '' && user.id > 0) + if ( Object.keys(user_get).length === 0 && token !== '' && user.id > 0) dispatch( userCrudAsyncThunk.fetchGetOneUser( { diff --git a/src/pages/func_group/render/renderIndex.js b/src/pages/func_group/render/renderIndex.js new file mode 100644 index 0000000..899c8bc --- /dev/null +++ b/src/pages/func_group/render/renderIndex.js @@ -0,0 +1,42 @@ +import React, { useState, useEffect } from 'react' + +import RenderShowAndDownloadForm from '../../../components/forms/render_crud/renderShowReadyRendersAndDownload' + +const __handleSwap = (name, movement) => { + + let display = { + display: 'block' + } + + let hide = { + display: 'none' + } + + if ( Object.keys(movement['movement']).includes(name) ) { + if (movement['movement'][name]) + return display + else + return hide + } else if (Object.keys(movement['movement']['render_functionality']).includes(name)) { + if (movement['movement'][name]) + return display + else + return hide + } else { + return hide + } + +} + +const RenderIndex = ( movement ) => { + + return ( +
+
+ +
+
+ ) +} + +export default RenderIndex \ No newline at end of file diff --git a/src/pages/func_group/render_crud/renderCrudIndex.js b/src/pages/func_group/render_crud/renderCrudIndex.js deleted file mode 100644 index 6ca6d3c..0000000 --- a/src/pages/func_group/render_crud/renderCrudIndex.js +++ /dev/null @@ -1,11 +0,0 @@ -import React, { useState, useEffect } from 'react' - -const RenderCrudIndex = () => { - - return ( -
-
- ) -} - -export default RenderCrudIndex \ No newline at end of file diff --git a/src/pages/func_group/root.js b/src/pages/func_group/root.js index 92585b7..47c7376 100644 --- a/src/pages/func_group/root.js +++ b/src/pages/func_group/root.js @@ -2,13 +2,6 @@ import React, { useState, useEffect } from 'react' import VerifyUserSession from './rootUtils' -import UserAuthIndex from './user_auth/userAuthIndex' -import UserCrudIndex from './user_crud/userCrudIndex' -import ModelCrudIndex from './model_crud/modelCrudIndex' -import RenderCrudIndex from './render_crud/renderCrudIndex' -import RenderWebsocketIndex from './render_websocket/renderWebsocketIndex' - - const Root = () => { return ( diff --git a/src/pages/func_group/rootUtils.js b/src/pages/func_group/rootUtils.js index 07fdfdd..45dbb27 100644 --- a/src/pages/func_group/rootUtils.js +++ b/src/pages/func_group/rootUtils.js @@ -6,8 +6,7 @@ import { userAuthSelector } from '../../redux/slices/userAuthSlice' import UserAuthIndex from './user_auth/userAuthIndex' import UserCrudIndex from './user_crud/userCrudIndex' import ModelCrudIndex from './model_crud/modelCrudIndex' -import RenderCrudIndex from './render_crud/renderCrudIndex' -import RenderWebsocketIndex from './render_websocket/renderWebsocketIndex' +import RenderIndex from './render/renderIndex' import NavigationBar from './navigationBar' @@ -65,12 +64,12 @@ const GeneralView = () => { - - + /> */} ) } diff --git a/src/redux/asyncThunks/abstracts/abstractService.js b/src/redux/asyncThunks/abstracts/abstractService.js index dc58850..b3ae2b0 100644 --- a/src/redux/asyncThunks/abstracts/abstractService.js +++ b/src/redux/asyncThunks/abstracts/abstractService.js @@ -72,6 +72,7 @@ const responseAbstract = async (endpoint, method, token, body) => { body, ) ) + console.log(response) return response } @@ -86,8 +87,8 @@ const headerBuilder = (url, method, token, body) => { headers_r = { 'authorization': token, 'x-csrftoken': getCookie('csrftoken'), - 'accept': 'multipart/form-data', - 'content-type': 'multipart/form-data', + // 'accept': 'multipart/form-data', + // 'content-type': 'multipart/form-data' } } let headers = { @@ -97,9 +98,15 @@ const headerBuilder = (url, method, token, body) => { credentials: 'same-origin' } if (method === 'PUT' || method === 'POST' || method === 'PATCH') { - headers = Object.assign({}, headers, { - data: JSON.stringify(body), - }) + if ('file' in body) { + headers = Object.assign({}, headers, { + data: body, + }) + } else { + headers = Object.assign({}, headers, { + data: JSON.stringify(body), + }) + } } return headers } diff --git a/src/redux/asyncThunks/modelCrudAsyncThunk.js b/src/redux/asyncThunks/modelCrudAsyncThunk.js index c3c13a4..261312d 100644 --- a/src/redux/asyncThunks/modelCrudAsyncThunk.js +++ b/src/redux/asyncThunks/modelCrudAsyncThunk.js @@ -45,9 +45,6 @@ const fetchUploadModel = createAsyncThunk( body, thunkAPI ) => { - let formData = FormData() - formData.append("blend", body.file) - body.file = formData return await abstractService._post( endpoint, body, diff --git a/src/redux/slices/renderCrudSlice.js b/src/redux/slices/renderCrudSlice.js index 1019395..41786b5 100644 --- a/src/redux/slices/renderCrudSlice.js +++ b/src/redux/slices/renderCrudSlice.js @@ -11,7 +11,7 @@ const renderCrudSlice = createSlice( reducers: {}, extraReducers: { [renderCrudAsyncThunk.fetchGetAllRenders.fulfilled.type]: (state, action) => { - state.render_list = action.payload.data.render_list + state.render_list = action.payload.data }, [renderCrudAsyncThunk.fetchGetOneRenderAndDownload.fulfilled.type]: (state, action) => { state.download_zip_file = action.payload.data