Skip to content

Commit 539e883

Browse files
authored
fix: Info panel not showing when some apps miss infoPanel config (parse-community#2627)
1 parent c2728f2 commit 539e883

File tree

5 files changed

+27
-18
lines changed

5 files changed

+27
-18
lines changed

src/components/BrowserCell/BrowserCell.react.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ export default class BrowserCell extends Component {
294294
this.props.setShowAggregatedData(true);
295295
this.props.setSelectedObjectId(this.props.objectId);
296296
if (this.props.isPanelVisible) {
297-
this.props.callCloudFunction(this.props.objectId, this.props.className);
297+
this.props.callCloudFunction(this.props.objectId, this.props.className, this.props.appId);
298298
}
299299
}
300300

@@ -649,7 +649,7 @@ export default class BrowserCell extends Component {
649649
isPanelVisible &&
650650
((e.shiftKey && !this.props.firstSelectedCell) || !e.shiftKey)
651651
) {
652-
callCloudFunction(this.props.objectId, this.props.className);
652+
callCloudFunction(this.props.objectId, this.props.className, this.props.appId);
653653
}
654654
}
655655
handleCellClick(e, row, col);

src/components/Toolbar/Toolbar.react.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { useNavigate, useNavigationType, NavigationType } from 'react-router-dom
1515

1616
const POPOVER_CONTENT_ID = 'toolbarStatsPopover';
1717

18-
const Stats = ({ data, classwiseCloudFunctions, className }) => {
18+
const Stats = ({ data, classwiseCloudFunctions, className, appId , appName}) => {
1919
const [selected, setSelected] = React.useState(null);
2020
const [open, setOpen] = React.useState(false);
2121
const buttonRef = React.useRef();
@@ -98,7 +98,7 @@ const Stats = ({ data, classwiseCloudFunctions, className }) => {
9898
setSelected(statsOptions[0]);
9999
}, []);
100100

101-
const rightMarginStyle = classwiseCloudFunctions && classwiseCloudFunctions[className] ? '120px' : 'initial';
101+
const rightMarginStyle = classwiseCloudFunctions && classwiseCloudFunctions[`${appId}${appName}`] && classwiseCloudFunctions[`${appId}${appName}`][className] ? '120px' : 'initial';
102102

103103
return (
104104
<>
@@ -140,9 +140,9 @@ const Toolbar = props => {
140140
</div>
141141
</div>
142142
</div>
143-
{props?.selectedData?.length ? <Stats data={props.selectedData} classwiseCloudFunctions={props.classwiseCloudFunctions} className={props.className} /> : null}
143+
{props?.selectedData?.length ? <Stats data={props.selectedData} classwiseCloudFunctions={props.classwiseCloudFunctions} className={props.className} appId={props.appId} appName={props.appName}/> : null}
144144
<div className={styles.actions}>{props.children}</div>
145-
{props.classwiseCloudFunctions && props.classwiseCloudFunctions[props.className] && (
145+
{props.classwiseCloudFunctions && props.classwiseCloudFunctions[`${props.appId}${props.appName}`] && props.classwiseCloudFunctions[`${props.appId}${props.appName}`][props.className] && (
146146
<button
147147
onClick={props.togglePanel}
148148
className={styles.btn}

src/dashboard/Data/Browser/Browser.react.js

+10-7
Original file line numberDiff line numberDiff line change
@@ -266,15 +266,15 @@ class Browser extends DashboardView {
266266
});
267267
}
268268

269-
fetchAggregationPanelData(objectId, className) {
269+
fetchAggregationPanelData(objectId, className, appId) {
270270
this.setState({
271271
isLoading: true,
272272
});
273273
const params = {
274274
objectId: objectId,
275275
};
276-
const cloudCodeFunction = this.state.classwiseCloudFunctions[className][0].cloudCodeFunction;
277-
276+
const appName = this.props.params.appId;
277+
const cloudCodeFunction = this.state.classwiseCloudFunctions[`${appId}${appName}`]?.[className][0].cloudCodeFunction;
278278
Parse.Cloud.run(cloudCodeFunction, params).then(
279279
result => {
280280
if (result && result.panel && result.panel && result.panel.segments) {
@@ -328,12 +328,14 @@ class Browser extends DashboardView {
328328
classAndCloudFuntionMap(data) {
329329
const classMap = {};
330330
data.apps.forEach(app => {
331-
app.infoPanel.forEach(panel => {
331+
const appName = app.appName;
332+
classMap[`${app.appId}${appName}`] = {};
333+
app.infoPanel && app.infoPanel.forEach(panel => {
332334
panel.classes.forEach(className => {
333-
if (!classMap[className]) {
334-
classMap[className] = [];
335+
if (!classMap[`${app.appId}${appName}`][className]) {
336+
classMap[`${app.appId}${appName}`][className] = [];
335337
}
336-
classMap[className].push({
338+
classMap[`${app.appId}${appName}`][className].push({
337339
title: panel.title,
338340
cloudCodeFunction: panel.cloudCodeFunction,
339341
classes: panel.classes,
@@ -2066,6 +2068,7 @@ class Browser extends DashboardView {
20662068
setAggregationPanelData={this.setAggregationPanelData}
20672069
setErrorAggregatedData={this.setErrorAggregatedData}
20682070
errorAggregatedData={this.state.errorAggregatedData}
2071+
appName = {this.props.params.appId}
20692072
/>
20702073
);
20712074
}

src/dashboard/Data/Browser/BrowserToolbar.react.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ const BrowserToolbar = ({
7979

8080
togglePanel,
8181
isPanelVisible,
82-
classwiseCloudFunctions
82+
classwiseCloudFunctions,
83+
appId,
84+
appName
8385
}) => {
8486
const selectionLength = Object.keys(selection).length;
8587
const isPendingEditCloneRows = editCloneRows && editCloneRows.length > 0;
@@ -276,6 +278,8 @@ const BrowserToolbar = ({
276278
togglePanel={togglePanel}
277279
isPanelVisible={isPanelVisible}
278280
classwiseCloudFunctions={classwiseCloudFunctions}
281+
appId={appId}
282+
appName = {appName}
279283
>
280284
{onAddRow && (
281285
<a className={classes.join(' ')} onClick={onClick}>

src/dashboard/Data/Browser/DataBrowser.react.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export default class DataBrowser extends React.Component {
103103
this.setState({ order });
104104
}
105105
if (props && props.className) {
106-
if (!props.classwiseCloudFunctions[props.className]) {
106+
if (!props.classwiseCloudFunctions?.[`${props.app.applicationId}${props.appName}`]?.[props.className]) {
107107
this.setState({ isPanelVisible: false });
108108
this.setState({ selectedObjectId: undefined });
109109
}
@@ -198,7 +198,7 @@ export default class DataBrowser extends React.Component {
198198
if(this.props.errorAggregatedData != {}){
199199
this.props.setErrorAggregatedData({});
200200
}
201-
this.props.callCloudFunction(this.state.selectedObjectId, this.props.className);
201+
this.props.callCloudFunction(this.state.selectedObjectId, this.props.className,this.props.app.applicationId);
202202
}
203203
}
204204

@@ -364,7 +364,7 @@ export default class DataBrowser extends React.Component {
364364
showAggregatedData:true
365365
})
366366
if(prevObjectID !== this.state.selectedObjectId && this.state.isPanelVisible){
367-
this.props.callCloudFunction(this.state.selectedObjectId,this.props.className)
367+
this.props.callCloudFunction(this.state.selectedObjectId,this.props.className,this.props.app.applicationId)
368368
}
369369
e.preventDefault();
370370
break;
@@ -405,7 +405,7 @@ export default class DataBrowser extends React.Component {
405405
showAggregatedData: true,
406406
});
407407
if (prevObjectID !== this.state.selectedObjectId && this.state.isPanelVisible) {
408-
this.props.callCloudFunction(this.state.selectedObjectId, this.props.className);
408+
this.props.callCloudFunction(this.state.selectedObjectId, this.props.className,this.props.app.applicationId);
409409
}
410410

411411
e.preventDefault();
@@ -642,6 +642,8 @@ export default class DataBrowser extends React.Component {
642642
allClassesSchema={this.state.allClassesSchema}
643643
togglePanel={this.togglePanelVisibility}
644644
isPanelVisible={this.state.isPanelVisible}
645+
appId={this.props.app.applicationId}
646+
appName = {this.props.appName}
645647
{...other}
646648
/>
647649

0 commit comments

Comments
 (0)