Skip to content

Commit c1ab2b4

Browse files
committed
add edit functionality environment
1 parent d5035d6 commit c1ab2b4

File tree

1 file changed

+65
-3
lines changed

1 file changed

+65
-3
lines changed

client/packages/lowcoder/src/pages/setting/environments/EnvironmentDetail.tsx

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import {
88
Tabs,
99
Alert,
1010
Descriptions,
11+
Dropdown,
12+
Menu,
13+
Button,
1114
} from "antd";
1215
import {
1316
ReloadOutlined,
@@ -16,18 +19,22 @@ import {
1619
TeamOutlined,
1720
UserOutlined,
1821
SyncOutlined,
22+
EditOutlined,
23+
EllipsisOutlined,
24+
MoreOutlined,
1925
} from "@ant-design/icons";
2026

2127
import { useEnvironmentContext } from "./context/EnvironmentContext";
2228
import { workspaceConfig } from "./config/workspace.config";
2329
import { userGroupsConfig } from "./config/usergroups.config";
2430
import DeployableItemsTab from "./components/DeployableItemsTab";
25-
26-
31+
import EditEnvironmentModal from "./components/EditEnvironmentModal";
32+
import { Environment } from "./types/environment.types";
2733

2834
const { Title, Text } = Typography;
2935
const { TabPane } = Tabs;
3036

37+
3138
/**
3239
* Environment Detail Page Component
3340
* Shows detailed information about a specific environment
@@ -37,11 +44,48 @@ const EnvironmentDetail: React.FC = () => {
3744
const {
3845
environment,
3946
isLoadingEnvironment,
40-
error
47+
error,
48+
updateEnvironmentData
4149
} = useEnvironmentContext();
4250

4351

4452

53+
const [isEditModalVisible, setIsEditModalVisible] = useState(false);
54+
const [isUpdating, setIsUpdating] = useState(false);
55+
56+
// Handle edit menu item click
57+
const handleEditClick = () => {
58+
setIsEditModalVisible(true);
59+
};
60+
61+
// Handle modal close
62+
const handleCloseModal = () => {
63+
setIsEditModalVisible(false);
64+
};
65+
66+
// Handle save environment
67+
const handleSaveEnvironment = async (environmentId: string, data: Partial<Environment>) => {
68+
setIsUpdating(true);
69+
try {
70+
await updateEnvironmentData(environmentId, data);
71+
handleCloseModal();
72+
} catch (error) {
73+
console.error('Failed to update environment:', error);
74+
} finally {
75+
setIsUpdating(false);
76+
}
77+
};
78+
79+
// Dropdown menu for environment actions
80+
const actionsMenu = (
81+
<Menu>
82+
<Menu.Item key="edit" icon={<EditOutlined />} onClick={handleEditClick}>
83+
Edit Environment
84+
</Menu.Item>
85+
{/* Add more menu items here if needed */}
86+
</Menu>
87+
);
88+
4589
if (isLoadingEnvironment) {
4690
return (
4791
<div style={{ display: 'flex', justifyContent: 'center', padding: '50px' }}>
@@ -78,6 +122,13 @@ const EnvironmentDetail: React.FC = () => {
78122
</Title>
79123
<Text type="secondary">ID: {environment.environmentId}</Text>
80124
</div>
125+
<Dropdown overlay={actionsMenu} trigger={['click']}>
126+
<Button
127+
icon={<MoreOutlined />}
128+
shape="circle"
129+
size="large"
130+
/>
131+
</Dropdown>
81132
</div>
82133

83134
{/* Basic Environment Information Card */}
@@ -156,6 +207,17 @@ const EnvironmentDetail: React.FC = () => {
156207

157208
</TabPane>
158209
</Tabs>
210+
{/* Edit Environment Modal */}
211+
{environment && (
212+
<EditEnvironmentModal
213+
visible={isEditModalVisible}
214+
environment={environment}
215+
onClose={handleCloseModal}
216+
onSave={handleSaveEnvironment}
217+
loading={isUpdating}
218+
/>
219+
)}
220+
159221
</div>
160222
);
161223
};

0 commit comments

Comments
 (0)