- }>
+ }>
{t("CollectionPanel.CollectionAdd")}
diff --git a/web/src/pages/app/database/CollectionDataList/mods/DataPannel/index.tsx b/web/src/pages/app/database/CollectionDataList/mods/DataPannel/index.tsx
index e1413f0c3d..f4f2555430 100644
--- a/web/src/pages/app/database/CollectionDataList/mods/DataPannel/index.tsx
+++ b/web/src/pages/app/database/CollectionDataList/mods/DataPannel/index.tsx
@@ -1,20 +1,24 @@
import { useMemo, useState } from "react";
import SyntaxHighlighter from "react-syntax-highlighter";
-import { AddIcon, EditIcon, Search2Icon } from "@chakra-ui/icons";
-import { Button, HStack, Input, InputGroup, InputLeftElement, Text } from "@chakra-ui/react";
-import clsx from "clsx";
+import { AddIcon, Search2Icon } from "@chakra-ui/icons";
+import { Button, HStack, Input, InputGroup, InputLeftElement } from "@chakra-ui/react";
import { debounce } from "lodash";
import JsonEditor from "@/components/Editor/JsonEditor";
-import IconWrap from "@/components/IconWrap";
import Pagination from "@/components/Pagination";
import Panel from "@/components/Panel";
import getPageInfo from "@/utils/getPageInfo";
-import { useAddDataMutation, useEntryDataQuery, useUpdateDataMutation } from "../../../service";
+import RightPanelEditBox from "../../../RightComponent/EditBox";
+import RightPanelList from "../../../RightComponent/List";
+import {
+ useAddDataMutation,
+ useDeleteDataMutation,
+ useEntryDataQuery,
+ useUpdateDataMutation,
+} from "../../../service";
import useDBMStore from "../../../store";
-import DeleteButton from "./DeleteButton";
export default function DataPannel() {
const [currentData, setCurrentData] = useState
(undefined);
@@ -46,8 +50,12 @@ export default function DataPannel() {
setCurrentData({});
});
const addDataMutation = useAddDataMutation();
-
const updateDataMutation = useUpdateDataMutation();
+ const deleteDataMutation = useDeleteDataMutation({
+ onSuccess() {
+ setCurrentData(undefined);
+ },
+ });
const handleData = async () => {
if (currentData?._id) {
@@ -60,8 +68,8 @@ export default function DataPannel() {
};
return (
-
-
+ <>
+
- {/*
总数: {entryDataQuery.data?.total} */}
-
-
-
- {(entryDataQuery?.data?.list || [])?.map((item: any, index: number) => {
+
+
currentData?._id === item._id}
+ onClick={(data: any) => {
+ setCurrentData(data);
+ }}
+ deleteRuleMutation={deleteDataMutation}
+ component={(item: any) => {
return (
- {
- setCurrentData(item);
- }}
- >
-
-
- {JSON.stringify(item, null, 2)}
-
-
+
+ {JSON.stringify(item, null, 2)}
+
);
- })}
-
-
+
-
-
- {currentData?._id ? "编辑" : "新增"}
-
-
-
- {/* */}
-
-
-
+
-
+ >
);
}
diff --git a/web/src/pages/app/database/CollectionListPanel/MoreButton/index.tsx b/web/src/pages/app/database/CollectionListPanel/MoreButton/index.tsx
index afb7e05e61..e3a98ad6cc 100644
--- a/web/src/pages/app/database/CollectionListPanel/MoreButton/index.tsx
+++ b/web/src/pages/app/database/CollectionListPanel/MoreButton/index.tsx
@@ -18,7 +18,7 @@ export default function MoreButton(props: { data?: any; fn?: any }) {
closeOnBlur={true}
placement="bottom"
>
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+ 复制
+
+
+
+ 删除
+
diff --git a/web/src/pages/app/database/CollectionListPanel/index.tsx b/web/src/pages/app/database/CollectionListPanel/index.tsx
index a5f3bf3139..bd6c752027 100644
--- a/web/src/pages/app/database/CollectionListPanel/index.tsx
+++ b/web/src/pages/app/database/CollectionListPanel/index.tsx
@@ -33,7 +33,12 @@ export default function CollectionListPanel() {
const [search, setSearch] = useState("");
return (
-
+ {
+ store.setCurrentShow("DB");
+ }}
+ >
-
+
{(collectionListQuery?.data?.data || [])
.filter((db: any) => db.name.indexOf(search) >= 0)
.map((db: any) => {
return (
{
store.setCurrentDB(db);
@@ -80,7 +85,7 @@ export default function CollectionListPanel() {
diff --git a/web/src/pages/app/database/PolicyDataList/index.tsx b/web/src/pages/app/database/PolicyDataList/index.tsx
new file mode 100644
index 0000000000..94ff04b6bc
--- /dev/null
+++ b/web/src/pages/app/database/PolicyDataList/index.tsx
@@ -0,0 +1,133 @@
+import { useState } from "react";
+import SyntaxHighlighter from "react-syntax-highlighter";
+import { AddIcon } from "@chakra-ui/icons";
+import { Button, Select, Text } from "@chakra-ui/react";
+
+import JsonEditor from "@/components/Editor/JsonEditor";
+import Panel from "@/components/Panel";
+
+import RightPanelEditBox from "../RightComponent/EditBox";
+import RightPanelList from "../RightComponent/List";
+import {
+ useCollectionListQuery,
+ useCreateRulesMutation,
+ useDeleteRuleMutation,
+ useRulesListQuery,
+ useUpdateRulesMutation,
+} from "../service";
+import useDBMStore from "../store";
+
+export default function PolicyDataList() {
+ const collectionListQuery = useCollectionListQuery();
+ const [currentData, setCurrentData] = useState
(undefined);
+ const [record, setRecord] = useState("");
+ const [collectionName, setCollectionName] = useState(collectionListQuery?.data?.data[0]?.name);
+
+ const store = useDBMStore((state) => state);
+
+ const rulesListQuery = useRulesListQuery((data: any) => {
+ if (data?.data.length === 0) {
+ setCurrentData({});
+ setCollectionName(collectionListQuery?.data?.data[0]?.name);
+ }
+ });
+ const deleteRuleMutation = useDeleteRuleMutation(() => {
+ rulesListQuery.refetch();
+ });
+ const createRulesMutation = useCreateRulesMutation();
+ const updateRulesMutation = useUpdateRulesMutation();
+
+ const handleData = async () => {
+ if (currentData?.id) {
+ await updateRulesMutation.mutateAsync({ collection: collectionName, value: record });
+ } else {
+ await createRulesMutation.mutateAsync({ collectionName: collectionName, value: record });
+ }
+ rulesListQuery.refetch();
+ };
+
+ return (
+ <>
+
+ }
+ onClick={() => {
+ setCurrentData({});
+ setCollectionName(collectionListQuery?.data?.data[0]?.name);
+ }}
+ >
+ 添加规则
+
+ 规则数:{rulesListQuery?.data?.data?.length || 0}
+
+
+
currentData?.id === item.id}
+ onClick={(data: any) => {
+ setCurrentData(data);
+ }}
+ deleteRuleMutation={deleteRuleMutation}
+ deleteData={(item) => ({ collection: item.collectionName })}
+ component={(item: any) => {
+ return (
+ <>
+
+
+ 集合:{item.collectionName}
+
+
+
+ {JSON.stringify(item.value, null, 2)}
+
+ >
+ );
+ }}
+ />
+
+
+ 选择集合
+
+
+
+ 规则内容
+
+
+ {
+ setRecord(values!);
+ }}
+ />
+
+
+
+ >
+ );
+}
diff --git a/web/src/pages/app/database/PolicyListPanel/index.tsx b/web/src/pages/app/database/PolicyListPanel/index.tsx
new file mode 100644
index 0000000000..e82321c6fd
--- /dev/null
+++ b/web/src/pages/app/database/PolicyListPanel/index.tsx
@@ -0,0 +1,88 @@
+/****************************
+ * cloud functions list sidebar
+ ***************************/
+import { AddIcon, DeleteIcon, EditIcon } from "@chakra-ui/icons";
+import { t } from "i18next";
+
+import ConfirmButton from "@/components/ConfirmButton";
+import FileTypeIcon from "@/components/FileTypeIcon";
+import IconWrap from "@/components/IconWrap";
+import Panel from "@/components/Panel";
+import SectionList from "@/components/SectionList";
+
+import AddPolicyModal from "../mods/AddPolicyModal";
+import { useDeletePolicyMutation, usePolicyListQuery } from "../service";
+import useDBMStore from "../store";
+export default function PolicyListPanel() {
+ const policyQuery = usePolicyListQuery((data) => {
+ if (data.data.length > 0) {
+ store.setCurrentPolicy(data.data[0]);
+ } else {
+ store.setCurrentPolicy(undefined);
+ }
+ });
+
+ const deletePolicyMutation = useDeletePolicyMutation();
+ const store = useDBMStore((state) => state);
+ return (
+ {
+ store.setCurrentShow("Policy");
+ }}
+ >
+
+
+
+
+ ,
+ ]}
+ />
+
+ {policyQuery?.data?.data.map((item: any) => {
+ return (
+ {
+ store.setCurrentPolicy(item);
+ }}
+ >
+
+
+
+ {item.name}
+
+
+
+
+
+
+
+
{
+ await deletePolicyMutation.mutateAsync(item.name);
+ }}
+ headerText={String(t("Delete"))}
+ bodyText="确定删除该策略?"
+ >
+
+
+
+
+
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/web/src/pages/app/database/CollectionDataList/mods/DataPannel/DeleteButton.tsx b/web/src/pages/app/database/RightComponent/DeleteButton.tsx
similarity index 79%
rename from web/src/pages/app/database/CollectionDataList/mods/DataPannel/DeleteButton.tsx
rename to web/src/pages/app/database/RightComponent/DeleteButton.tsx
index 659d3559e0..8dc9052b8c 100644
--- a/web/src/pages/app/database/CollectionDataList/mods/DataPannel/DeleteButton.tsx
+++ b/web/src/pages/app/database/RightComponent/DeleteButton.tsx
@@ -10,16 +10,8 @@ import {
import IconWrap from "@/components/IconWrap";
-import { useDeleteDataMutation } from "../../../service";
-
-export default function DeleteButton(props: { data: any; fn: any }) {
+export default function DeleteButton(props: { data: any; deleteMethod: any }) {
const { isOpen, onOpen, onClose } = useDisclosure();
- const deleteDataMutation = useDeleteDataMutation({
- onSuccess(data) {
- props.fn(undefined);
- },
- });
-
return (
<>