Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
8a5ab9a
Improve performance of context components re-rendering
T4rk1n Nov 7, 2024
378fec3
Fix list as layout
T4rk1n Nov 7, 2024
65ffabd
memo wrapper, merge loading state selector, add back _dashprivate_layout
T4rk1n Dec 10, 2024
011ded9
Add get_props, extras to wrapper, set_props takes path
T4rk1n Dec 12, 2024
603cbce
get_props -> get_layout
T4rk1n Dec 13, 2024
e1cbc68
take loading_state out of selector
T4rk1n Dec 16, 2024
5424fe0
Rework loading component
T4rk1n Dec 19, 2024
1a56d4f
Add useLoading
T4rk1n Dec 19, 2024
1f56612
useLoading in html components
T4rk1n Dec 19, 2024
9741a69
Add LoadingDiv
T4rk1n Dec 19, 2024
957ec39
replace loading for data-dash-is-loading
T4rk1n Dec 20, 2024
19167a8
Fix forwardRef for LoadingElement
T4rk1n Jan 7, 2025
84700ea
Fix children not undefined rcap003
T4rk1n Jan 7, 2025
9cc9627
Fix multioutput loading
T4rk1n Jan 8, 2025
d5dddff
fix rdarp001
T4rk1n Jan 8, 2025
61b8ea6
Fix clipboard context
T4rk1n Jan 9, 2025
e616001
Fix confirm dialog provider
T4rk1n Jan 9, 2025
9954a2a
Fix loading target selector
T4rk1n Jan 9, 2025
e023e4f
Takes extras props directly from DashWrapper rest props
T4rk1n Jan 10, 2025
232c3c0
Refactor wrapper selectors to use path sums as equality comparator
T4rk1n Jan 14, 2025
5a68ecd
fix cbmo002
T4rk1n Jan 15, 2025
2bcb14d
Refactor TextArea to functional + new loading
T4rk1n Jan 16, 2025
f0b4908
Refactor upload to LoadingElement
T4rk1n Jan 16, 2025
fbdd794
Remove leftover loading_state from graph.
T4rk1n Jan 16, 2025
c520a82
Fix table loading.
T4rk1n Jan 17, 2025
5dce073
Fix missing export for Textarea.
T4rk1n Jan 20, 2025
71e70c3
Fix table.
T4rk1n Jan 20, 2025
b00668e
Merge branch 'dev' into fix/wrapper
T4rk1n Jan 21, 2025
a1f6b5e
Merge branch 'dash-3.0' into fix/wrapper
T4rk1n Jan 22, 2025
6af9973
Take persistence from dashPersistence on element
T4rk1n Jan 22, 2025
8b3c153
Remove defaultProps from internal DataTable.
T4rk1n Jan 22, 2025
9874f8a
Mock dash_component_api in table tests.
T4rk1n Jan 22, 2025
51dfddf
build
T4rk1n Jan 23, 2025
eb65854
Merge branch 'dash-3.0' into fix/wrapper
T4rk1n Jan 23, 2025
664e6dd
Fix tab new loading
T4rk1n Jan 24, 2025
5194e18
Move getLayout to dash_component_api
T4rk1n Jan 24, 2025
efbb5b1
fix prop typing generation
T4rk1n Jan 27, 2025
3249e22
fix table generation
T4rk1n Jan 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 10 additions & 47 deletions dash/dash-renderer/src/APIController.react.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {batch, connect} from 'react-redux';
import {includes, isEmpty} from 'ramda';
import React, {useEffect, useRef, useState, createContext} from 'react';
import React, {useEffect, useRef, useState} from 'react';

import PropTypes from 'prop-types';
import TreeContainer from './TreeContainer';
import GlobalErrorContainer from './components/error/GlobalErrorContainer.react';
import {
dispatchError,
Expand All @@ -19,11 +19,9 @@ import {EventEmitter} from './actions/utils';
import {applyPersistence} from './persistence';
import {getAppState} from './reducers/constants';
import {STATUS} from './constants/constants';
import {getLoadingState, getLoadingHash} from './utils/TreeContainer';
import wait from './utils/wait';
import isSimpleComponent from './isSimpleComponent';

export const DashContext = createContext({});
import DashWrapper from './wrapper/DashWrapper';

/**
* Fire off API calls for initialization
Expand All @@ -37,8 +35,7 @@ const UnconnectedContainer = props => {
dependenciesRequest,
error,
layoutRequest,
layout,
loadingMap
layout
} = props;

const [errorLoading, setErrorLoading] = useState(false);
Expand All @@ -49,18 +46,6 @@ const UnconnectedContainer = props => {
}
const renderedTree = useRef(false);

const propsRef = useRef({});
propsRef.current = props;

const provider = useRef({
fn: () => ({
_dashprivate_config: propsRef.current.config,
_dashprivate_dispatch: propsRef.current.dispatch,
_dashprivate_graphs: propsRef.current.graphs,
_dashprivate_loadingMap: propsRef.current.loadingMap
})
});

useEffect(storeEffect.bind(null, props, events, setErrorLoading));

useEffect(() => {
Expand Down Expand Up @@ -97,46 +82,26 @@ const UnconnectedContainer = props => {
renderedTree.current = true;

content = (
<DashContext.Provider value={provider.current}>
<>
{Array.isArray(layout) ? (
layout.map((c, i) =>
isSimpleComponent(c) ? (
c
) : (
<TreeContainer
<DashWrapper
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, new component - is this going to break any legacy code?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't as this is an internal component.

_dashprivate_error={error}
_dashprivate_layout={c}
_dashprivate_loadingState={getLoadingState(
c,
[i],
loadingMap
)}
_dashprivate_loadingStateHash={getLoadingHash(
[i],
loadingMap
)}
_dashprivate_path={`[${i}]`}
_dashprivate_path={[i]}
key={i}
/>
)
)
) : (
<TreeContainer
<DashWrapper
_dashprivate_error={error}
_dashprivate_layout={layout}
_dashprivate_loadingState={getLoadingState(
layout,
[],
loadingMap
)}
_dashprivate_loadingStateHash={getLoadingHash(
[],
loadingMap
)}
_dashprivate_path={'[]'}
_dashprivate_path={[]}
/>
)}
</DashContext.Provider>
</>
);
} else {
content = <div className='_dash-loading'>Loading...</div>;
Expand Down Expand Up @@ -242,7 +207,6 @@ UnconnectedContainer.propTypes = {
hooks: PropTypes.object,
layoutRequest: PropTypes.object,
layout: PropTypes.any,
loadingMap: PropTypes.any,
history: PropTypes.any,
error: PropTypes.object,
config: PropTypes.object
Expand All @@ -256,7 +220,6 @@ const Container = connect(
hooks: state.hooks,
layoutRequest: state.layoutRequest,
layout: state.layout,
loadingMap: state.loadingMap,
graphs: state.graphs,
history: state.history,
error: state.error,
Expand Down
Loading