diff --git a/client/packages/lowcoder/src/pages/setting/environments/EnvironmentDetail.tsx b/client/packages/lowcoder/src/pages/setting/environments/EnvironmentDetail.tsx
index 2106d8d3d..89f32f495 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/EnvironmentDetail.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/EnvironmentDetail.tsx
@@ -27,7 +27,7 @@ import UserGroupsTab from "./components/UserGroupsTab";
import EnvironmentHeader from "./components/EnvironmentHeader";
import ModernBreadcrumbs from "./components/ModernBreadcrumbs";
import { getEnvironmentTagColor } from "./utils/environmentUtils";
-const { Title, Text } = Typography;
+import ErrorComponent from './components/ErrorComponent';
const { TabPane } = Tabs;
/**
@@ -80,50 +80,18 @@ const EnvironmentDetail: React.FC = () => {
if (isLoading) {
return (
-
+
);
}
if (error || !environment) {
- const errorItems = [
- {
- key: 'environments',
- title: (
-
- Environments
-
- ),
- onClick: () => history.push("/setting/environments")
- },
- {
- key: 'notFound',
- title: 'Not Found'
- }
- ];
-
return (
-
-
-
-
-
-
- Environment Not Found
-
-
- {error || "The environment you're looking for doesn't exist or you don't have permission to view it."}
-
-
-
-
-
+
);
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/EnvironmentsList.tsx b/client/packages/lowcoder/src/pages/setting/environments/EnvironmentsList.tsx
index 613ed47a2..cc7a9dc00 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/EnvironmentsList.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/EnvironmentsList.tsx
@@ -139,10 +139,7 @@ const EnvironmentsList: React.FC = () => {
borderRadius: '12px',
boxShadow: '0 2px 8px rgba(0,0,0,0.05)'
}}
- headStyle={{
- borderBottom: '1px solid #f0f0f0',
- padding: '16px 24px'
- }}
+ styles={{ header: { borderBottom: '1px solid #f0f0f0', padding: '16px 24px' } }}
bodyStyle={{ padding: '24px' }}
>
@@ -191,10 +188,7 @@ const EnvironmentsList: React.FC = () => {
borderRadius: '12px',
boxShadow: '0 2px 8px rgba(0,0,0,0.05)',
}}
- headStyle={{
- borderBottom: '1px solid #f0f0f0',
- padding: '16px 24px'
- }}
+ styles={{ header: { borderBottom: '1px solid #f0f0f0', padding: '16px 24px' } }}
bodyStyle={{ padding: '24px' }}
extra={
{
const { workspace, isLoading, error, toggleManagedStatus } = useWorkspaceContext();
const { openDeployModal } = useDeployModal();
- console.log("workspace render", workspace);
const [isToggling, setIsToggling] = useState(false);
@@ -58,18 +58,18 @@ const WorkspaceDetail: React.FC = () => {
if (isLoading) {
return (
-
+
);
}
if (error || !environment || !workspace) {
return (
-
-
- {error || "Workspace not found"}
-
-
+
);
}
diff --git a/client/packages/lowcoder/src/pages/setting/environments/components/ErrorComponent.tsx b/client/packages/lowcoder/src/pages/setting/environments/components/ErrorComponent.tsx
new file mode 100644
index 000000000..2f4d5fbac
--- /dev/null
+++ b/client/packages/lowcoder/src/pages/setting/environments/components/ErrorComponent.tsx
@@ -0,0 +1,38 @@
+import React from 'react';
+import { Card, Button, Typography } from 'antd';
+import { HomeOutlined } from '@ant-design/icons';
+import history from '@lowcoder-ee/util/history';
+
+const { Title, Text } = Typography;
+
+interface ErrorComponentProps {
+ errorMessage: string;
+ returnPath: string;
+ returnLabel: string;
+}
+
+const ErrorComponent: React.FC = ({ errorMessage, returnPath, returnLabel }) => {
+ return (
+
+
+
+
+ {errorMessage}
+
+
+ The item you're looking for doesn't exist or you don't have permission to view it.
+
+
+
+
+
+ );
+};
+
+export default ErrorComponent;
diff --git a/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx b/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx
index 1a09691c2..b2459abb7 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/config/apps.config.tsx
@@ -50,6 +50,7 @@ export const appsConfig: DeployableItemConfig = {
publishOnTarget: values.publishOnTarget,
publicToAll: values.publicToAll,
publicToMarketplace: values.publicToMarketplace,
+ applicationGid: item.applicationGid,
};
},
execute: (params: any) => deployApp(params)
diff --git a/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx b/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx
index 11e9e54fc..3ae507dd8 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/config/data-sources.config.tsx
@@ -23,7 +23,8 @@ export const dataSourcesConfig: DeployableItemConfig = {
envId: sourceEnv.environmentId,
targetEnvId: targetEnv.environmentId,
datasourceId: item.id,
- updateDependenciesIfNeeded: values.updateDependenciesIfNeeded
+ updateDependenciesIfNeeded: values.updateDependenciesIfNeeded,
+ datasourceGid: item.gid
};
},
execute: (params: any) => deployDataSource(params)
diff --git a/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx b/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx
index 5396bd877..35189c8c9 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx
+++ b/client/packages/lowcoder/src/pages/setting/environments/config/query.config.tsx
@@ -24,7 +24,8 @@ export const queryConfig: DeployableItemConfig = {
envId: sourceEnv.environmentId,
targetEnvId: targetEnv.environmentId,
queryId: item.id,
- updateDependenciesIfNeeded: values.updateDependenciesIfNeeded
+ updateDependenciesIfNeeded: values.updateDependenciesIfNeeded,
+ queryGid: item.gid,
};
},
execute: (params: any) => deployQuery(params)
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts
index bfd7ae348..8accb9db1 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/apps.service.ts
@@ -18,6 +18,7 @@ export interface DeployAppParams {
envId: string;
targetEnvId: string;
applicationId: string;
+ applicationGid: string;
updateDependenciesIfNeeded?: boolean;
publishOnTarget?: boolean;
publicToAll?: boolean;
@@ -79,7 +80,7 @@ export async function getMergedWorkspaceApps(
// Fetch managed objects instead of managed apps
let managedObjects: ManagedObject[] = [];
try {
- managedObjects = await getManagedObjects(environmentId);
+ managedObjects = await getManagedObjects(environmentId, ManagedObjectType.APP);
} catch (error) {
console.error("Failed to fetch managed objects:", error);
// Continue with empty managed list
@@ -125,7 +126,7 @@ export const deployApp = async (params: DeployAppParams): Promise => {
if (response.status === 200) {
await transferManagedObject(
- params.applicationId,
+ params.applicationGid,
params.envId,
params.targetEnvId,
ManagedObjectType.APP
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts
index 694c28dd1..cca28176d 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/datasources.service.ts
@@ -20,7 +20,9 @@ export interface DeployDataSourceParams {
envId: string;
targetEnvId: string;
datasourceId: string;
+ datasourceGid: string;
updateDependenciesIfNeeded?: boolean;
+
}
// Get data sources for a workspace - using your correct implementation
export async function getWorkspaceDataSources(
@@ -54,7 +56,6 @@ export async function getWorkspaceDataSources(
orgId: workspaceId
}
});
- console.log("data source response",response);
// Check if response is valid
if (!response.data) {
@@ -157,12 +158,12 @@ export async function deployDataSource(params: DeployDataSourceParams): Promise<
envId: params.envId,
targetEnvId: params.targetEnvId,
datasourceId: params.datasourceId,
- updateDependenciesIfNeeded: params.updateDependenciesIfNeeded ?? false
+ updateDependenciesIfNeeded: params.updateDependenciesIfNeeded ?? false,
}
});
if (response.status === 200) {
await transferManagedObject(
- params.datasourceId,
+ params.datasourceGid,
params.envId,
params.targetEnvId,
ManagedObjectType.DATASOURCE
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts
index 1448e0bae..f0f9f1939 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/enterprise.service.ts
@@ -204,7 +204,6 @@ export async function getManagedQueries(environmentId: string): Promise
environmentId
}
});
- console.log("Managed queries response function:", response.data);
if (!response.data.data || !Array.isArray(response.data.data)) {
return [];
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts
index af1268918..e34c168b3 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/environments.service.ts
@@ -195,7 +195,6 @@ export async function getEnvironmentUserGroups(
// Make the API request to get user groups
const response = await axios.get(`${apiServiceUrl}/api/groups/list`, { headers });
- console.log(response);
// Check if response is valid
if (!response.data) {
@@ -359,8 +358,7 @@ export async function getWorkspaceDataSources(
orgId: workspaceId
}
});
- console.log("data source response",response);
-
+
// Check if response is valid
if (!response.data) {
return [];
@@ -434,7 +432,7 @@ export async function getWorkspaceQueries(
if (!response.data) {
return { queries: [], total: 0 };
}
- console.log("RESPONSE DATA QUERIES",response.data.data);
+
// Map the response to include id field required by DeployableItem
const queries = response.data.data.map(query => ({
...query,
@@ -444,8 +442,6 @@ export async function getWorkspaceQueries(
managed: false // Default to unmanaged
}));
- console.log("queries",queries);
-
return {
queries,
total: response.data.total
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts
index 6801097be..4cf7a29be 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/query.service.ts
@@ -15,6 +15,7 @@ export interface MergedQueriesResult {
targetEnvId: string;
queryId: string;
updateDependenciesIfNeeded?: boolean;
+ queryGid: string;
}
@@ -28,19 +29,15 @@ export interface MergedQueriesResult {
// Fetch regular queries
const regularQueries = await getWorkspaceQueries(workspaceId, apiKey, apiServiceUrl);
- console.log("Regular queries response:", regularQueries);
const managedObjects = await getManagedObjects(environmentId, ManagedObjectType.QUERY);
- console.log("Managed queries response:", managedObjects);
// Create a set of managed query GIDs for quick lookup
const managedQueryGids = new Set(managedObjects.map(obj => obj.objGid));
- console.log("Managed query GIDs:", Array.from(managedQueryGids));
// Mark regular queries as managed if they exist in managed queries
const mergedQueries = regularQueries.queries.map((query: Query) => {
const isManaged = managedQueryGids.has(query.gid);
- console.log(`Query ${query.name} (gid: ${query.gid}) is ${isManaged ? "managed" : "not managed"}`);
return {
...query,
@@ -51,11 +48,6 @@ export interface MergedQueriesResult {
// Calculate stats
const total = mergedQueries.length;
const managed = mergedQueries.filter(query => query.managed).length;
- console.log("Generated stats:", {
- total,
- managed,
- unmanaged: total - managed
- });
return {
queries: mergedQueries,
@@ -84,7 +76,7 @@ export interface MergedQueriesResult {
});
if (response.status === 200) {
await transferManagedObject(
- params.queryId,
+ params.queryGid,
params.envId,
params.targetEnvId,
ManagedObjectType.QUERY
diff --git a/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts b/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts
index 4f7978f3b..871c0e036 100644
--- a/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts
+++ b/client/packages/lowcoder/src/pages/setting/environments/services/workspace.service.ts
@@ -99,7 +99,7 @@ export async function deployWorkspace(params: {
// After successful deployment, set the managed object in target environment
if (response.status === 200) {
await transferManagedObject(
- params.workspaceId,
+ params.workspaceId, // first param has to be GID
params.envId,
params.targetEnvId,
ManagedObjectType.ORG