Fixed following issues for Workspace:

1. On the welcome page, the Password should be cleared when the user/db is changed.
2. Added a spinner when we tried to connect to the existing remote server.
3. Details should be cleared when we select the existing server but cancel when it asks for the password.
4) Return from the chageWorkspace function if clicking on the same workspace button multiple times.
This commit is contained in:
Akshay Joshi 2025-01-02 13:24:13 +05:30
parent 621d66fb57
commit eb517e6df8
2 changed files with 18 additions and 10 deletions

View File

@ -146,15 +146,16 @@ class AdHocConnectionSchema extends BaseUISchema {
self.flatServers, (s) => s.value == state.sid
);
return {
server_name: selectedServer?.label,
server_name: null,
did: null,
user: null,
role: null,
sid: null,
host: selectedServer?.host,
port: selectedServer?.port,
service: selectedServer?.service,
connection_params: selectedServer?.connection_params,
host: null,
port: null,
service: null,
connection_params: null,
password: null,
connected: selectedServer?.connected
};
},
@ -165,13 +166,13 @@ class AdHocConnectionSchema extends BaseUISchema {
if(sid && !_.find(self.flatServers, (s) => s.value == sid)?.connected) {
this.connectExistingServer(sid, state.user, null, (data) => {
self.setServerConnected(sid, data.icon);
resolve(() => ({ sid: sid, host: selectedServer?.host,
resolve(() => ({ sid: sid, server_name:selectedServer?.label, host: selectedServer?.host,
port: selectedServer?.port, service: selectedServer?.service,
connection_params: selectedServer?.connection_params, connected: true
}));
});
} else {
resolve(()=>({ sid: sid, host: selectedServer?.host,
resolve(()=>({ sid: sid, server_name:selectedServer?.label, host: selectedServer?.host,
port: selectedServer?.port, service: selectedServer?.service,
connection_params: selectedServer?.connection_params, connected: true
}));
@ -236,7 +237,12 @@ class AdHocConnectionSchema extends BaseUISchema {
maxLength: null,
autoComplete: 'new-password'
},
deps: ['sid', 'connected'],
deps: ['sid', 'did', 'user', 'role'],
depChange: (state, source)=> {
if (source == 'sid' || source == 'did' || source == 'user' || source == 'role') {
state.password = null;
}
}
},{
id: 'role', label: gettext('Role'), deps: ['sid', 'connected'],
controlProps: {creatable: true},
@ -433,19 +439,21 @@ export default function AdHocConnection({mode}) {
};
const onSaveClick = async (isNew, formData) => {
setConnecting(true);
try {
let {data: respData} = await api({
method: 'POST',
url: url_for('workspace.adhoc_connect_server'),
data: JSON.stringify(formData)
});
setConnecting(false);
if (mode == 'Query Tool') {
openQueryTool(respData, formData);
} else if (mode == 'PSQL') {
openPSQLTool(respData, formData);
}
} catch (error) {
setConnecting(false);
if(!error.response) {
pgAdmin.Browser.notifier.pgNotifier('error', error, 'Connection error', gettext('Connect to server.'));
} else {

View File

@ -56,6 +56,7 @@ export function WorkspaceProvider({children}) {
const changeWorkspace = (newVal)=>{
// Set the currentWorkspace flag.
if (currentWorkspace == newVal) return;
pgAdmin.Browser.docker.currentWorkspace = newVal;
if (newVal == WORKSPACES.DEFAULT) {
setTimeout(() => {
@ -76,7 +77,6 @@ export function WorkspaceProvider({children}) {
const hasOpenTabs = (forWs)=>{
const wsConfig = config.find((i)=>i.workspace == forWs);
if(wsConfig) {
//return Boolean(pgAdmin.Browser.docker[wsConfig.docker]?.layoutObj?.getRootElement().querySelector('.dock-tab'));
return Boolean(pgAdmin.Browser.docker[wsConfig.docker]?.layoutObj?.getLayout()?.dockbox?.children?.[0]?.tabs?.length);
}
return true;