Build & serve

This commit is contained in:
cracklesparkle
2024-07-19 16:13:29 +09:00
parent 53e9a8cadf
commit e3af090119
24 changed files with 1072 additions and 96 deletions

View File

@ -16,7 +16,7 @@ interface FolderProps {
interface DocumentProps {
doc: IDocument;
index: number;
handleDocumentClick: (doc: IDocument, index: number) => void;
handleDocumentClick: (index: number) => void;
}
const FileItemStyle: SxProps = {
@ -72,7 +72,7 @@ function ItemDocument({ doc, index, handleDocumentClick, ...props }: DocumentPro
<ListItemButton>
<Box
sx={FileItemStyle}
onClick={() => handleDocumentClick(doc, index)}
onClick={() => handleDocumentClick(index)}
{...props}
>
<InsertDriveFile />
@ -117,7 +117,7 @@ export default function FolderViewer() {
setBreadcrumbs((prev) => [...prev, folder])
}
const handleDocumentClick = async (doc: IDocument, index: number) => {
const handleDocumentClick = async (index: number) => {
setCurrentFileNo(index)
setFileViewerModal(true)
}

View File

@ -3,7 +3,6 @@ import { IServer } from '../interfaces/servers'
import { useServerIps } from '../hooks/swrHooks'
import FullFeaturedCrudGrid from './TableEditable'
import { GridColDef } from '@mui/x-data-grid'
import { AxiosResponse } from 'axios'
function ServerData({ id }: IServer) {
const { serverIps } = useServerIps(id, 0, 10)
@ -24,14 +23,12 @@ function ServerData({ id }: IServer) {
initialRows={serverIps}
columns={serverIpsColumns}
actions
onRowClick={(params, event, details) => {
onRowClick={() => {
//setCurrentServerData(params.row)
//setServerDataOpen(true)
}}
onSave={undefined}
onDelete={function (data: any): Promise<AxiosResponse<any, any>> {
throw new Error('N/A.')
}}
onDelete={undefined}
loading={false}
/>
}

View File

@ -11,24 +11,12 @@ import ServerData from './ServerData'
export default function ServerHardware() {
const [open, setOpen] = useState(false)
const [options, setOptions] = useState<IRegion[]>([])
const [search, setSearch] = useState<string | null>("")
const [debouncedSearch, setDebouncedSearch] = useState<string | null>("")
const [selectedOption, setSelectedOption] = useState<IRegion | null>(null)
const { servers, isLoading } = useServers()
const [serverDataOpen, setServerDataOpen] = useState(false)
const [currentServerData, setCurrentServerData] = useState<any | null>(null)
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedSearch(search)
}, 500)
return () => {
clearTimeout(handler)
}
}, [search])
useEffect(() => {
if (servers) {
setOptions([...servers])
@ -36,7 +24,7 @@ export default function ServerHardware() {
}, [servers])
const handleInputChange = (value: string) => {
setSearch(value)
return value
}
const handleOptionChange = (value: IRegion | null) => {
@ -126,13 +114,13 @@ export default function ServerHardware() {
)
}} />
)} />}
onSave={(id: any) => {
onSave={() => {
}}
onDelete={ServerService.removeServer}
initialRows={hardwares}
columns={hardwareColumns}
actions
onRowClick={(params, event, details) => {
onRowClick={(params) => {
setCurrentServerData(params.row)
setServerDataOpen(true)
}} loading={false} />

View File

@ -11,24 +11,12 @@ import ServerData from './ServerData'
export default function ServerIpsView() {
const [open, setOpen] = useState(false)
const [options, setOptions] = useState<IRegion[]>([])
const [search, setSearch] = useState<string | null>("")
const [debouncedSearch, setDebouncedSearch] = useState<string | null>("")
const [selectedOption, setSelectedOption] = useState<IRegion | null>(null)
const { servers, isLoading } = useServers()
const [serverDataOpen, setServerDataOpen] = useState(false)
const [currentServerData, setCurrentServerData] = useState<any | null>(null)
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedSearch(search)
}, 500)
return () => {
clearTimeout(handler)
}
}, [search])
useEffect(() => {
if (servers) {
setOptions([...servers])
@ -36,7 +24,7 @@ export default function ServerIpsView() {
}, [servers])
const handleInputChange = (value: string) => {
setSearch(value)
return value
}
const handleOptionChange = (value: IRegion | null) => {
@ -124,13 +112,13 @@ export default function ServerIpsView() {
)
}} />
)} />}
onSave={(id: any) => {
onSave={() => {
}}
onDelete={ServerService.removeServer}
initialRows={serverIps}
columns={serverIpsColumns}
actions
onRowClick={(params, event, details) => {
onRowClick={(params) => {
setCurrentServerData(params.row)
setServerDataOpen(true)
}} loading={false} />

View File

@ -7,20 +7,16 @@ import ServerService from '../services/ServersService'
import { GridColDef } from '@mui/x-data-grid'
import { Close } from '@mui/icons-material'
import ServerData from './ServerData'
import { useDebounce } from '@uidotdev/usehooks'
export default function ServerStorage() {
const [open, setOpen] = useState(false)
const [options, setOptions] = useState<IRegion[]>([])
const [search, setSearch] = useState<string | null>("")
const [selectedOption, setSelectedOption] = useState<IRegion | null>(null)
const { hardwares, isLoading } = useHardwares()
const debouncedSearch = useDebounce(search, 500)
const [serverDataOpen, setServerDataOpen] = useState(false)
const [currentServerData, setCurrentServerData] = useState<any | null>(null)
useEffect(() => {
if (hardwares) {
setOptions([...hardwares])
@ -28,7 +24,7 @@ export default function ServerStorage() {
}, [hardwares])
const handleInputChange = (value: string) => {
setSearch(value)
return value
}
const handleOptionChange = (value: IRegion | null) => {
@ -115,13 +111,13 @@ export default function ServerStorage() {
)
}} />
)} />}
onSave={(id: any) => {
onSave={() => {
}}
onDelete={ServerService.removeServer}
initialRows={storages}
columns={storageColumns}
actions
onRowClick={(params, event, details) => {
onRowClick={(params) => {
setCurrentServerData(params.row)
setServerDataOpen(true)
}}

View File

@ -16,7 +16,6 @@ import { useDebounce } from '@uidotdev/usehooks'
export default function ServersView() {
const [options, setOptions] = useState<IRegion[]>([])
const [search, setSearch] = useState<string | null>("")
//const [debouncedSearch, setDebouncedSearch] = useState<string | null>("")
const debouncedSearch = useDebounce(search, 500)
@ -169,13 +168,13 @@ export default function ServersView() {
)}
/>
}
onSave={(id: any) => {
onSave={() => {
}}
onDelete={ServerService.removeServer}
initialRows={servers}
columns={serversColumns}
actions
onRowClick={(params, event, details) => {
onRowClick={(params) => {
setCurrentServerData(params.row)
setServerDataOpen(true)
}}

View File

@ -20,7 +20,6 @@ import {
GridRowEditStopReasons,
GridSlots,
} from '@mui/x-data-grid';
import { AxiosResponse } from 'axios';
interface EditToolbarProps {
setRows: (newRows: (oldRows: GridRowsProp) => GridRowsProp) => void;
@ -84,7 +83,7 @@ interface DataGridProps {
actions: boolean;
onRowClick: GridEventListener<"rowClick">;
onSave: any;
onDelete: (data: any) => Promise<AxiosResponse<any, any>>;
onDelete: any;
autoComplete?: React.ReactElement | null;
loading: boolean;
}
@ -119,8 +118,7 @@ export default function FullFeaturedCrudGrid({
const handleDeleteClick = (id: GridRowId) => () => {
setRows(rows.filter((row) => row.id !== id));
onDelete?.(id).then(response => {
})
onDelete?.(id)
};
const handleCancelClick = (id: GridRowId) => () => {

View File

@ -1,6 +1,4 @@
import { SubmitHandler, useForm } from 'react-hook-form';
import { AxiosResponse } from 'axios';
import { ApiResponse } from '../../interfaces/auth';
import RoleService from '../../services/RoleService';
import { Box, Button, Modal, Select, TextField, Typography } from '@mui/material';
import { ICompany } from '../../interfaces/documents';
@ -42,7 +40,7 @@ export default function CreateCompanyModal({
const onSubmit: SubmitHandler<ICompany> = async (data) => {
try {
const response: AxiosResponse<ApiResponse> = await RoleService.createRole(data)
await RoleService.createRole(data)
} catch (error) {
console.error(error)
}

View File

@ -1,6 +1,4 @@
import { SubmitHandler, useForm } from 'react-hook-form';
import { AxiosResponse } from 'axios';
import { ApiResponse } from '../../interfaces/auth';
import RoleService from '../../services/RoleService';
import { Box, Button, Modal, TextField, Typography } from '@mui/material';
import { ICompany } from '../../interfaces/documents';
@ -39,7 +37,7 @@ export default function CreateDepartmentModal({
const onSubmit: SubmitHandler<ICompany> = async (data) => {
try {
const response: AxiosResponse<ApiResponse> = await RoleService.createRole(data)
await RoleService.createRole(data)
} catch (error) {
console.error(error)
}

View File

@ -1,5 +1,3 @@
import React from 'react'
function CreateFromGridColModal() {
return (
<div>CreateFromGridColModal</div>

View File

@ -1,7 +1,5 @@
import { SubmitHandler, useForm } from 'react-hook-form';
import { IRoleCreate } from '../../interfaces/role';
import { AxiosResponse } from 'axios';
import { ApiResponse } from '../../interfaces/auth';
import RoleService from '../../services/RoleService';
import { Box, Button, Modal, TextField, Typography } from '@mui/material';
@ -38,7 +36,7 @@ export default function CreateRoleModal({
const onSubmit: SubmitHandler<IRoleCreate> = async (data) => {
try {
const response: AxiosResponse<ApiResponse> = await RoleService.createRole(data)
await RoleService.createRole(data)
} catch (error) {
console.error(error)
}

View File

@ -1,7 +1,5 @@
import { Box, Button, Modal, TextField, Typography } from '@mui/material'
import { AxiosResponse } from 'axios';
import { SubmitHandler, useForm } from 'react-hook-form';
import { ApiResponse } from '../../interfaces/auth';
import UserService from '../../services/UserService';
import { IUserCreate } from '../../interfaces/user';
@ -43,7 +41,7 @@ export default function CreateUserModal({
const onSubmit: SubmitHandler<IUserCreate> = async (data) => {
try {
const response: AxiosResponse<ApiResponse> = await UserService.createUser(data)
await UserService.createUser(data)
} catch (error) {
console.error(error)
}

View File

@ -1,7 +1,6 @@
import { Box, Button } from "@mui/material"
import { Box } from "@mui/material"
import { useCities } from "../hooks/swrHooks"
import { useEffect, useState } from "react"
import { useDebounce } from "@uidotdev/usehooks"
import { DataGrid, GridColDef } from "@mui/x-data-grid"
import axiosInstance from "../http/axiosInstance"
import { BASE_URL } from "../constants"

View File

@ -2,6 +2,7 @@ import { useState } from "react"
import { Box, Button } from "@mui/material"
import axiosInstance from "../http/axiosInstance"
import { DataGrid } from "@mui/x-data-grid"
import { BASE_URL } from "../constants"
export default function Reports() {
const [state, setState] = useState(null)
@ -9,6 +10,7 @@ export default function Reports() {
const fetch = async () => {
await axiosInstance.get(`/info/reports/0?to_export=true`, {
responseType: 'blob',
baseURL: BASE_URL.info
}).then(response => {
const url = window.URL.createObjectURL(response.data)
const link = document.createElement('a')
@ -67,11 +69,11 @@ export default function Reports() {
checkboxSelection={false}
disableRowSelectionOnClick
processRowUpdate={(updatedRow, originalRow) => {
processRowUpdate={(updatedRow) => {
return updatedRow
}}
onProcessRowUpdateError={(error) => {
onProcessRowUpdateError={() => {
}}
/>
}

View File

@ -48,11 +48,11 @@ export default function Roles() {
pageSizeOptions={[10, 20, 50, 100]}
disableRowSelectionOnClick
processRowUpdate={(updatedRow, originalRow) => {
processRowUpdate={(updatedRow) => {
return updatedRow
}}
onProcessRowUpdateError={(error) => {
onProcessRowUpdateError={() => {
}}
/>
</Box>

View File

@ -8,7 +8,7 @@ import ServerStorage from "../components/ServerStorages"
export default function Servers() {
const [currentTab, setCurrentTab] = useState(0)
const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {
const handleTabChange = (newValue: number) => {
setCurrentTab(newValue);
}
@ -38,7 +38,9 @@ export default function Servers() {
<Box sx={{ display: 'flex', flexDirection: 'column', gap: '16px', height: '100%' }}>
<Box sx={{ display: 'flex', flexDirection: 'column', gap: '16px', height: '100%', p: '16px' }}>
<Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
<Tabs value={currentTab} onChange={handleTabChange} aria-label="basic tabs example">
<Tabs value={currentTab} onChange={(_, value) =>
handleTabChange(value)
} aria-label="basic tabs example">
<Tab label="Серверы" />
<Tab label="IP-адреса" />
<Tab label="Hardware" />

View File

@ -69,11 +69,11 @@ export default function Settings() {
checkboxSelection
disableRowSelectionOnClick
processRowUpdate={(updatedRow, originalRow) => {
processRowUpdate={(updatedRow) => {
return updatedRow
}}
onProcessRowUpdateError={(error) => {
onProcessRowUpdateError={() => {
}}
/>
</Box>

View File

@ -64,11 +64,11 @@ export default function Users() {
checkboxSelection
disableRowSelectionOnClick
processRowUpdate={(updatedRow, originalRow) => {
processRowUpdate={(updatedRow) => {
return updatedRow
}}
onProcessRowUpdateError={(error) => {
onProcessRowUpdateError={() => {
}}
/>
</Box>

View File

@ -1,7 +1,5 @@
import { useForm, SubmitHandler } from 'react-hook-form';
import { TextField, Button, Container, Typography, Box } from '@mui/material';
import { AxiosResponse } from 'axios';
import { ApiResponse } from '../../interfaces/auth';
import UserService from '../../services/UserService';
import { IUserCreate } from '../../interfaces/user';
@ -21,7 +19,7 @@ const SignUp = () => {
const onSubmit: SubmitHandler<IUserCreate> = async (data) => {
try {
const response: AxiosResponse<ApiResponse> = await UserService.createUser(data)
await UserService.createUser(data)
} catch (error) {
console.error('Ошибка регистрации:', error);
}