mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fix issues found when testing Flask upgrade and wcDocker changes. #6479
This commit is contained in:
parent
ef0b30b1ca
commit
85dd1e92ad
@ -415,6 +415,8 @@ SECURITY_EMAIL_SUBJECT_PASSWORD_CHANGE_NOTICE = \
|
||||
# Email address validation
|
||||
##########################################################################
|
||||
CHECK_EMAIL_DELIVERABILITY = False
|
||||
SECURITY_EMAIL_VALIDATOR_ARGS = \
|
||||
{"check_deliverability": CHECK_EMAIL_DELIVERABILITY}
|
||||
|
||||
##########################################################################
|
||||
# Upgrade checks
|
||||
|
@ -491,6 +491,8 @@ def create_app(app_name=None):
|
||||
# CSRF Token expiration till session expires
|
||||
'WTF_CSRF_TIME_LIMIT': getattr(config, 'CSRF_TIME_LIMIT', None),
|
||||
'WTF_CSRF_METHODS': ['GET', 'POST', 'PUT', 'DELETE'],
|
||||
# Disable deliverable check for email addresss
|
||||
'SECURITY_EMAIL_VALIDATOR_ARGS': config.SECURITY_EMAIL_VALIDATOR_ARGS
|
||||
}))
|
||||
|
||||
if 'SCRIPT_NAME' in os.environ and os.environ["SCRIPT_NAME"]:
|
||||
|
@ -590,6 +590,11 @@ function getFinalTheme(baseTheme) {
|
||||
color: baseTheme.otherVars.activeColor,
|
||||
},
|
||||
}
|
||||
},
|
||||
MuiBackdrop: {
|
||||
root: {
|
||||
backgroundColor: baseTheme.otherVars.loader.backgroundColor,
|
||||
}
|
||||
}
|
||||
}
|
||||
}, baseTheme);
|
||||
|
@ -11,6 +11,7 @@ export default function rcdockOverride(theme) {
|
||||
return {
|
||||
'.dock-layout': {
|
||||
height: '100%',
|
||||
...theme.mixins.panelBorder.top,
|
||||
'& .dock-ink-bar': {
|
||||
height: '2px',
|
||||
backgroundColor: theme.otherVars.activeBorder,
|
||||
|
@ -86,7 +86,7 @@ export default function(basicSettings) {
|
||||
},
|
||||
borderColor: '#dde0e6',
|
||||
loader: {
|
||||
backgroundColor: alpha('#000', 0.65),
|
||||
backgroundColor: alpha('#090d11', 0.6),
|
||||
color: '#fff',
|
||||
},
|
||||
errorColor: '#E53935',
|
||||
|
@ -35,7 +35,7 @@ ExternalIcon.propTypes = {
|
||||
export const QueryToolIcon = ({style})=><ExternalIcon Icon={QueryToolSvg} style={{height: '1rem', ...style}} data-label="QueryToolIcon" />;
|
||||
QueryToolIcon.propTypes = {style: PropTypes.object};
|
||||
|
||||
export const ViewDataIcon = ({style})=><ExternalIcon Icon={ViewDataSvg} style={{height: '0.8rem', ...style}} data-label="ViewDataIcon" />;
|
||||
export const ViewDataIcon = ({style})=><ExternalIcon Icon={ViewDataSvg} style={{height: '0.85rem', ...style}} data-label="ViewDataIcon" />;
|
||||
ViewDataIcon.propTypes = {style: PropTypes.object};
|
||||
|
||||
export const SaveDataIcon = ({style})=><ExternalIcon Icon={SaveDataSvg} style={{height: '1rem', ...style}} data-label="SaveDataIcon" />;
|
||||
|
@ -17,9 +17,6 @@ export const tabPanelStyles = makeStyles((theme)=>({
|
||||
root: {
|
||||
...theme.mixins.tabPanel,
|
||||
},
|
||||
content: {
|
||||
height: '100%',
|
||||
}
|
||||
}));
|
||||
|
||||
/* Material UI does not have any tabpanel component, we create one for us */
|
||||
|
@ -1,4 +1,4 @@
|
||||
import React, { useEffect, useLayoutEffect, useState } from 'react';
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { usePgAdmin } from '../BrowserComponent';
|
||||
import { Box } from '@material-ui/core';
|
||||
import { QueryToolIcon, RowFilterIcon, TerminalIcon, ViewDataIcon } from '../components/ExternalIcon';
|
||||
@ -51,13 +51,12 @@ export default function ObjectExplorerToolbar() {
|
||||
|
||||
useEffect(()=>{
|
||||
const deregister = pgAdmin.Browser.Events.on('pgadmin:nw-enable-disable-menu-items', _.debounce(checkMenuState, 100));
|
||||
checkMenuState();
|
||||
return ()=>{
|
||||
deregister();
|
||||
};
|
||||
}, []);
|
||||
|
||||
useLayoutEffect(_.debounce(checkMenuState, 100), []);
|
||||
|
||||
return (
|
||||
<Box display="flex" alignItems="center" gridGap={'2px'}>
|
||||
<PgButtonGroup size="small">
|
||||
@ -65,7 +64,7 @@ export default function ObjectExplorerToolbar() {
|
||||
<ToolbarButton icon={<ViewDataIcon />} menuItem={menus['view_all_rows_context_table']} />
|
||||
<ToolbarButton icon={<RowFilterIcon />} menuItem={menus['view_filtered_rows_context_table']} />
|
||||
<ToolbarButton icon={<SearchOutlinedIcon style={{height: '1.4rem'}} />} menuItem={menus['search_objects']} />
|
||||
<ToolbarButton icon={<TerminalIcon />} menuItem={menus['psql']} />
|
||||
{!_.isUndefined(menus['psql']) && <ToolbarButton icon={<TerminalIcon />} menuItem={menus['psql']} />}
|
||||
</PgButtonGroup>
|
||||
</Box>
|
||||
);
|
||||
|
@ -15,7 +15,7 @@ import { usePgAdmin } from '../../../static/js/BrowserComponent';
|
||||
export default function withStandardTabInfo(Component, tabId) {
|
||||
// eslint-disable-next-line react/display-name
|
||||
const HOCComponent = (props)=>{
|
||||
const [[isStale, nodeItem, nodeData], setNodeInfo] = useState([]);
|
||||
const [[isStale, nodeItem, nodeData], setNodeInfo] = useState([true, undefined, undefined]);
|
||||
const pgAdmin = usePgAdmin();
|
||||
const node = nodeData && pgAdmin.Browser.Nodes[nodeData?._type];
|
||||
const treeNodeInfo = pgAdmin.Browser.tree?.getTreeNodeHierarchy(nodeItem);
|
||||
@ -29,11 +29,11 @@ export default function withStandardTabInfo(Component, tabId) {
|
||||
}
|
||||
setIsActive(layoutDocker.isTabVisible(tabId));
|
||||
|
||||
const onTabActive = _.debounce((currentTabId)=>{
|
||||
if(currentTabId == tabId) {
|
||||
setIsActive(true);
|
||||
const onTabActive = _.debounce(()=>{
|
||||
if(layoutDocker.isTabVisible(tabId)) {
|
||||
!isActive && setIsActive(true);
|
||||
} else {
|
||||
setIsActive(false);
|
||||
isActive && setIsActive(false);
|
||||
}
|
||||
}, 100);
|
||||
|
||||
@ -45,14 +45,7 @@ export default function withStandardTabInfo(Component, tabId) {
|
||||
});
|
||||
let deregisterActive = layoutDocker.eventBus.registerListener(LAYOUT_EVENTS.ACTIVE, onTabActive);
|
||||
// if there is any dock changes to the tab and it appears to be active/inactive
|
||||
let deregisterChange = layoutDocker.eventBus.registerListener(LAYOUT_EVENTS.CHANGE, (currentTabId)=>{
|
||||
if(currentTabId != tabId) return;
|
||||
if(layoutDocker.isTabVisible(tabId) && !isActive) {
|
||||
setIsActive(true);
|
||||
} else {
|
||||
setIsActive(false);
|
||||
}
|
||||
});
|
||||
let deregisterChange = layoutDocker.eventBus.registerListener(LAYOUT_EVENTS.CHANGE, onTabActive);
|
||||
|
||||
return ()=>{
|
||||
onTabActive?.cancel();
|
||||
|
@ -316,7 +316,7 @@ $scrollbar-width: 1rem;
|
||||
$security-text-color: $white;
|
||||
$security-btn-color: #038bba;
|
||||
|
||||
$loading-bg : rgba($black,0.6);
|
||||
$loading-bg : rgba(#090d11, 0.6);
|
||||
$loading-fg : $white;
|
||||
|
||||
$loader-icon : url("data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' encoding='utf-8'?%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 38 38' style='enable-background:new 0 0 38 38;' xml:space='preserve'%3e%3cstyle type='text/css'%3e .st0%7bfill:none;stroke:%23ebeef3;stroke-width:2;%7d .st1%7bfill:none;stroke:%23326690;stroke-width:2;%7d %3c/style%3e%3cg%3e%3cg transform='translate(1 1)'%3e%3ccircle class='st0' cx='18' cy='18' r='18'/%3e%3cpath class='st1' d='M36,18c0-9.9-8.1-18-18-18 '%3e%3canimateTransform accumulate='none' additive='replace' attributeName='transform' calcMode='linear' dur='0.7s' fill='remove' from='0 18 18' repeatCount='indefinite' restart='always' to='360 18 18' type='rotate'%3e%3c/animateTransform%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e ") !default;
|
||||
|
@ -28,6 +28,7 @@ import { BROWSER_PANELS } from '../../../../browser/static/js/constants';
|
||||
import { NotifierProvider } from '../../../../static/js/helpers/Notifier';
|
||||
import usePreferences from '../../../../preferences/static/js/store';
|
||||
import pgAdmin from 'sources/pgadmin';
|
||||
import { PgAdminContext } from '../../../../static/js/BrowserComponent';
|
||||
|
||||
export default class DebuggerModule {
|
||||
static instance;
|
||||
@ -588,18 +589,20 @@ export default class DebuggerModule {
|
||||
|
||||
ReactDOM.render(
|
||||
<Theme>
|
||||
<ModalProvider>
|
||||
<NotifierProvider pgAdmin={pgAdmin} pgWindow={pgWindow} />
|
||||
<DebuggerComponent pgAdmin={pgWindow.pgAdmin} selectedNodeInfo={selectedNodeInfo}
|
||||
panelId={`${BROWSER_PANELS.DEBUGGER_TOOL}_${this.trans_id}`}
|
||||
panelDocker={pgWindow.pgAdmin.Browser.docker}
|
||||
layout={layout} params={{
|
||||
transId: trans_id,
|
||||
directDebugger: this,
|
||||
funcArgsInstance: this.funcArgs
|
||||
}}
|
||||
/>
|
||||
</ModalProvider>
|
||||
<PgAdminContext.Provider value={pgAdmin}>
|
||||
<ModalProvider>
|
||||
<NotifierProvider pgAdmin={pgAdmin} pgWindow={pgWindow} />
|
||||
<DebuggerComponent pgAdmin={pgWindow.pgAdmin} selectedNodeInfo={selectedNodeInfo}
|
||||
panelId={`${BROWSER_PANELS.DEBUGGER_TOOL}_${this.trans_id}`}
|
||||
panelDocker={pgWindow.pgAdmin.Browser.docker}
|
||||
layout={layout} params={{
|
||||
transId: trans_id,
|
||||
directDebugger: this,
|
||||
funcArgsInstance: this.funcArgs
|
||||
}}
|
||||
/>
|
||||
</ModalProvider>
|
||||
</PgAdminContext.Provider>
|
||||
</Theme>,
|
||||
container
|
||||
);
|
||||
|
@ -20,6 +20,7 @@ import { BROWSER_PANELS } from '../../../../browser/static/js/constants';
|
||||
import { NotifierProvider } from '../../../../static/js/helpers/Notifier';
|
||||
import usePreferences, { listenPreferenceBroadcast } from '../../../../preferences/static/js/store';
|
||||
import pgAdmin from 'sources/pgadmin';
|
||||
import { PgAdminContext } from '../../../../static/js/BrowserComponent';
|
||||
|
||||
export function setPanelTitle(docker, panelId, panelTitle) {
|
||||
docker.setTitle(panelId, panelTitle);
|
||||
@ -142,16 +143,18 @@ export default class ERDModule {
|
||||
await listenPreferenceBroadcast();
|
||||
ReactDOM.render(
|
||||
<Theme>
|
||||
<ModalProvider>
|
||||
<NotifierProvider pgAdmin={this.pgAdmin} pgWindow={pgWindow} />
|
||||
<ERDTool
|
||||
params={params}
|
||||
pgWindow={pgWindow}
|
||||
pgAdmin={this.pgAdmin}
|
||||
panelId={`${BROWSER_PANELS.ERD_TOOL}_${params.trans_id}`}
|
||||
panelDocker={pgWindow.pgAdmin.Browser.docker}
|
||||
/>
|
||||
</ModalProvider>
|
||||
<PgAdminContext.Provider value={pgAdmin}>
|
||||
<ModalProvider>
|
||||
<NotifierProvider pgAdmin={this.pgAdmin} pgWindow={pgWindow} />
|
||||
<ERDTool
|
||||
params={params}
|
||||
pgWindow={pgWindow}
|
||||
pgAdmin={this.pgAdmin}
|
||||
panelId={`${BROWSER_PANELS.ERD_TOOL}_${params.trans_id}`}
|
||||
panelDocker={pgWindow.pgAdmin.Browser.docker}
|
||||
/>
|
||||
</ModalProvider>
|
||||
</PgAdminContext.Provider>
|
||||
</Theme>,
|
||||
container
|
||||
);
|
||||
|
@ -61,7 +61,7 @@ function setPanelTitle(docker, panelId, title, qtState, dirty=false) {
|
||||
title = title.slice(0, -1);
|
||||
}
|
||||
} else {
|
||||
title = qtState.params.title;
|
||||
title = title ?? qtState.params.title;
|
||||
}
|
||||
|
||||
title = title + (dirty ? '*': '');
|
||||
|
Loading…
Reference in New Issue
Block a user