Skip to content

Commit ff8bc10

Browse files
authored
Merge pull request #1712 from iamfaran/feat/manual-env
[Feat] Add Environments Manually
2 parents fb687bc + 923338b commit ff8bc10

25 files changed

+1405
-429
lines changed

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

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {useState} from "react";
1+
import React, {useState, useEffect} from "react";
22
import {
33
Spin,
44
Typography,
@@ -9,17 +9,23 @@ import {
99
Menu,
1010
Button,
1111
Tag,
12+
Result,
1213
} from "antd";
1314
import {
1415
LinkOutlined,
1516
HomeOutlined,
1617
AppstoreOutlined,
1718
UsergroupAddOutlined,
1819
EditOutlined,
20+
CheckCircleOutlined,
21+
CloseCircleOutlined,
22+
ExclamationCircleOutlined,
23+
SyncOutlined,
1924
} from "@ant-design/icons";
2025

2126
import { useSingleEnvironmentContext } from "./context/SingleEnvironmentContext";
2227
import EditEnvironmentModal from "./components/EditEnvironmentModal";
28+
import UnlicensedEnvironmentView from "./components/UnlicensedEnvironmentView";
2329
import { Environment } from "./types/environment.types";
2430
import history from "@lowcoder-ee/util/history";
2531
import WorkspacesTab from "./components/WorkspacesTab";
@@ -95,6 +101,29 @@ const EnvironmentDetail: React.FC = () => {
95101
);
96102
}
97103

104+
// Check if environment is not licensed and show modern UI
105+
if (environment.isLicensed === false) {
106+
return (
107+
<>
108+
<UnlicensedEnvironmentView
109+
environment={environment}
110+
onEditClick={handleEditClick}
111+
/>
112+
113+
{/* Edit Environment Modal */}
114+
{environment && (
115+
<EditEnvironmentModal
116+
visible={isEditModalVisible}
117+
environment={environment}
118+
onClose={handleCloseModal}
119+
onSave={handleSaveEnvironment}
120+
loading={isUpdating}
121+
/>
122+
)}
123+
</>
124+
);
125+
}
126+
98127
const breadcrumbItems = [
99128
{
100129
key: 'environments',
@@ -114,7 +143,7 @@ const EnvironmentDetail: React.FC = () => {
114143
return (
115144
<div
116145
className="environment-detail-container"
117-
style={{ padding: "24px", flex: 1 }}
146+
style={{ padding: "24px", flex: 1, minWidth: "1000px" }}
118147
>
119148
{/* Environment Header Component */}
120149
<EnvironmentHeader
@@ -157,6 +186,22 @@ const EnvironmentDetail: React.FC = () => {
157186
{environment.environmentType}
158187
</Tag>
159188
</Descriptions.Item>
189+
<Descriptions.Item label="License Status">
190+
{(() => {
191+
switch (environment.licenseStatus) {
192+
case 'checking':
193+
return <Tag icon={<SyncOutlined spin />} color="blue" style={{ borderRadius: '12px' }}>Checking...</Tag>;
194+
case 'licensed':
195+
return <Tag icon={<CheckCircleOutlined />} color="green" style={{ borderRadius: '12px' }}>Licensed</Tag>;
196+
case 'unlicensed':
197+
return <Tag icon={<CloseCircleOutlined />} color="red" style={{ borderRadius: '12px' }}>Not Licensed</Tag>;
198+
case 'error':
199+
return <Tag icon={<ExclamationCircleOutlined />} color="orange" style={{ borderRadius: '12px' }}>License Error</Tag>;
200+
default:
201+
return <Tag color="default" style={{ borderRadius: '12px' }}>Unknown</Tag>;
202+
}
203+
})()}
204+
</Descriptions.Item>
160205
<Descriptions.Item label="API Key Status">
161206
{environment.environmentApikey ? (
162207
<Tag color="green" style={{ borderRadius: '12px' }}>Configured</Tag>

0 commit comments

Comments
 (0)