import React, { useState } from "react" import { MTableToolbar } from "material-table" import { useTheme } from "@material-ui/core/styles" import { CommonTableDefaultProps as DefaultProps } from "@/components/CommonTable/models/defaultProps" import CommonTable, { CommonTableHead } from "@/components/CommonTable" import tableIcons from "@/components/CommonTable/models/tableIcons" import { Columns } from "./columns" import { Schema } from "./schema" import { Data } from "./data" import EvaIcon from "react-eva-icons" import rxDb from "@/utils/database/rxConnect" import IconButton from "@material-ui/core/IconButton" import { fsDownload } from "@/utils/scripts/fs" import { Type } from "./types" // @ts-ignore import JSONInput from "react-json-editor-ajrm" // @ts-ignore import locale from "react-json-editor-ajrm/locale/en" import MigrationDialogs from "./components/Dialog" import { useTranslation } from "react-i18next" export default function MigrationContainer() { const { t } = useTranslation("table") const theme = useTheme() const color: string = theme.bunadmin.iconColor const [selData, setSelData] = useState({ name: "schema", mode: "Export" }) const [modalState, setModalState] = useState({ open: 0, title: "", msg: "" }) const [uploadModal, setUploadModal] = useState({ open: 0, title: "", msg: "" }) return ( <> <> ( ), onClick: async (_evt, data: Type[] | Type) => { if (!("name" in data)) return const db = await rxDb() const collection = data.name db[collection] .dump() .then((json: any) => fsDownload(json, collection, "application/json") ) } }, { tooltip: "Import", icon: () => ( ), onClick: async (_evt, data: Type[] | Type) => { if (!("name" in data)) return const msg = `Do you want to restore ${data.name}?` setUploadModal({ title: "Import / Restore", open: uploadModal.open + 1, msg }) setSelData({ name: data.name, mode: "Export DB" }) } } ]} components={{ Toolbar: props => (
{ const msg = "Do you want to backup Local Database?" setModalState({ title: "Clone / Backup", open: modalState.open + 1, msg }) setSelData({ name: "Database", mode: "Export DB" }) }} color="inherit" > { const msg = "Do you want to overwrite Local Database?" setUploadModal({ title: "Restore Local Database", open: uploadModal.open + 1, msg }) setSelData({ name: "ALL", mode: "Import DB" }) }} color="inherit" >
) }} // detailPanel detailPanel={[ { icon: "code", render: rowData => { if (!rowData.columns) { return (
{rowData.columns || "COLUMNS IS EMPTY"}
) } else { const json = rowData.columns || {} return ( ) } // check columns } // render } // item ]} /> ) }