Skip to content

Commit eb517e6

Browse files
committed
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.
1 parent 621d66f commit eb517e6

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

web/pgadmin/misc/workspaces/static/js/AdHocConnection.jsx

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,16 @@ class AdHocConnectionSchema extends BaseUISchema {
146146
self.flatServers, (s) => s.value == state.sid
147147
);
148148
return {
149-
server_name: selectedServer?.label,
149+
server_name: null,
150150
did: null,
151151
user: null,
152152
role: null,
153153
sid: null,
154-
host: selectedServer?.host,
155-
port: selectedServer?.port,
156-
service: selectedServer?.service,
157-
connection_params: selectedServer?.connection_params,
154+
host: null,
155+
port: null,
156+
service: null,
157+
connection_params: null,
158+
password: null,
158159
connected: selectedServer?.connected
159160
};
160161
},
@@ -165,13 +166,13 @@ class AdHocConnectionSchema extends BaseUISchema {
165166
if(sid && !_.find(self.flatServers, (s) => s.value == sid)?.connected) {
166167
this.connectExistingServer(sid, state.user, null, (data) => {
167168
self.setServerConnected(sid, data.icon);
168-
resolve(() => ({ sid: sid, host: selectedServer?.host,
169+
resolve(() => ({ sid: sid, server_name:selectedServer?.label, host: selectedServer?.host,
169170
port: selectedServer?.port, service: selectedServer?.service,
170171
connection_params: selectedServer?.connection_params, connected: true
171172
}));
172173
});
173174
} else {
174-
resolve(()=>({ sid: sid, host: selectedServer?.host,
175+
resolve(()=>({ sid: sid, server_name:selectedServer?.label, host: selectedServer?.host,
175176
port: selectedServer?.port, service: selectedServer?.service,
176177
connection_params: selectedServer?.connection_params, connected: true
177178
}));
@@ -236,7 +237,12 @@ class AdHocConnectionSchema extends BaseUISchema {
236237
maxLength: null,
237238
autoComplete: 'new-password'
238239
},
239-
deps: ['sid', 'connected'],
240+
deps: ['sid', 'did', 'user', 'role'],
241+
depChange: (state, source)=> {
242+
if (source == 'sid' || source == 'did' || source == 'user' || source == 'role') {
243+
state.password = null;
244+
}
245+
}
240246
},{
241247
id: 'role', label: gettext('Role'), deps: ['sid', 'connected'],
242248
controlProps: {creatable: true},
@@ -433,19 +439,21 @@ export default function AdHocConnection({mode}) {
433439
};
434440

435441
const onSaveClick = async (isNew, formData) => {
442+
setConnecting(true);
436443
try {
437444
let {data: respData} = await api({
438445
method: 'POST',
439446
url: url_for('workspace.adhoc_connect_server'),
440447
data: JSON.stringify(formData)
441448
});
442-
449+
setConnecting(false);
443450
if (mode == 'Query Tool') {
444451
openQueryTool(respData, formData);
445452
} else if (mode == 'PSQL') {
446453
openPSQLTool(respData, formData);
447454
}
448455
} catch (error) {
456+
setConnecting(false);
449457
if(!error.response) {
450458
pgAdmin.Browser.notifier.pgNotifier('error', error, 'Connection error', gettext('Connect to server.'));
451459
} else {

web/pgadmin/misc/workspaces/static/js/WorkspaceProvider.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export function WorkspaceProvider({children}) {
5656

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

0 commit comments

Comments
 (0)