fix(nucleus): trigger update when Cell is ready

This commit is contained in:
Miralem Drek
2019-05-08 19:25:59 +02:00
parent 86227a7b80
commit ab62826575
2 changed files with 18 additions and 20 deletions

View File

@@ -48,30 +48,26 @@ const Content = ({ children }) => (
export default function Cell({
api,
}) {
const [state, setState] = useState({
objectProps: api.objectProps(),
userProps: api.userProps(),
});
const [, setChanged] = useState(0);
useEffect(() => {
const onChanged = () => {
setState({
objectProps: api.objectProps(),
userProps: api.userProps(),
});
};
const onChanged = () => setChanged(Date.now());
api.on('changed', onChanged);
api.emit('ready');
return () => {
api.removeListener('changed', onChanged);
};
}, [api]);
const SN = (showRequirements(state.objectProps.sn, state.objectProps.layout) ? Requirements : Supernova);
const Comp = !state.objectProps.sn ? Placeholder : SN;
const err = state.objectProps.error || false;
const objectProps = api.objectProps();
const userProps = api.userProps();
const SN = (showRequirements(objectProps.sn, objectProps.layout) ? Requirements : Supernova);
const Comp = !objectProps.sn ? Placeholder : SN;
const err = objectProps.error || false;
return (
<Grid container direction="column" spacing={0} style={{ height: '100%', padding: '8px', boxSixing: 'borderBox' }}>
<Grid item style={{ maxWidth: '100%' }}>
<Header layout={state.objectProps.layout} sn={state.objectProps.sn}>&nbsp;</Header>
<Header layout={objectProps.layout} sn={objectProps.sn}>&nbsp;</Header>
</Grid>
<Grid item xs>
<Content>
@@ -79,17 +75,17 @@ export default function Cell({
? (<CError {...err} />)
: (
<Comp
key={state.objectProps.layout.visualization}
sn={state.objectProps.sn}
snContext={state.userProps.context}
snOptions={state.userProps.options}
layout={state.objectProps.layout}
key={objectProps.layout.visualization}
sn={objectProps.sn}
snContext={userProps.context}
snOptions={userProps.options}
layout={objectProps.layout}
/>
)
}
</Content>
</Grid>
<Footer layout={state.objectProps.layout} />
<Footer layout={objectProps.layout} />
</Grid>
);
}

View File

@@ -64,6 +64,8 @@ export default function ({
cellApi.emit('changed');
};
cellApi.once('ready', () => cellApi.emit('changed'));
const setUserProps = (up) => {
userProps = {
...userProps,