Skip to content

Commit 8c5155b

Browse files
authored
(feat) column preference for data browser (#1625)
1 parent 2394ea9 commit 8c5155b

File tree

4 files changed

+21
-8
lines changed

4 files changed

+21
-8
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -1124,10 +1124,12 @@ class Browser extends DashboardView {
11241124
columnsObject[column.name] = column
11251125
});
11261126
// get ordered list of class columns
1127+
const columnPreferences = this.context.currentApp.columnPreference || {}
11271128
const columns = ColumnPreferences.getOrder(
11281129
columnsObject,
11291130
this.context.currentApp.applicationId,
1130-
className
1131+
className,
1132+
columnPreferences[className]
11311133
);
11321134
// extend columns with their type and targetClass properties
11331135
columns.forEach(column => {

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

+9-4
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ export default class DataBrowser extends React.Component {
2424
constructor(props, context) {
2525
super(props, context);
2626

27+
const columnPreferences = context.currentApp.columnPreference || {}
2728
let order = ColumnPreferences.getOrder(
2829
props.columns,
2930
context.currentApp.applicationId,
30-
props.className
31+
props.className,
32+
columnPreferences[props.className]
3133
);
32-
3334
this.state = {
3435
order: order,
3536
current: null,
@@ -52,10 +53,12 @@ export default class DataBrowser extends React.Component {
5253

5354
componentWillReceiveProps(props, context) {
5455
if (props.className !== this.props.className) {
56+
const columnPreferences = context.currentApp.columnPreference || {}
5557
let order = ColumnPreferences.getOrder(
5658
props.columns,
5759
context.currentApp.applicationId,
58-
props.className
60+
props.className,
61+
columnPreferences[props.className]
5962
);
6063
this.setState({
6164
order: order,
@@ -65,10 +68,12 @@ export default class DataBrowser extends React.Component {
6568
});
6669
} else if (Object.keys(props.columns).length !== Object.keys(this.props.columns).length
6770
|| (props.isUnique && props.uniqueField !== this.props.uniqueField)) {
71+
const columnPreferences = context.currentApp.columnPreference || {}
6872
let order = ColumnPreferences.getOrder(
6973
props.columns,
7074
context.currentApp.applicationId,
71-
props.className
75+
props.className,
76+
columnPreferences[props.className]
7277
);
7378
this.setState({ order });
7479
}

src/lib/ColumnPreferences.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,12 @@ export function getColumnSort(sortBy, appId, className) {
7171
return currentSort;
7272
}
7373

74-
export function getOrder(cols, appId, className) {
74+
export function getOrder(cols, appId, className, defaultPrefs) {
75+
7576
let prefs = getPreferences(appId, className) || [ { name: 'objectId', width: DEFAULT_WIDTH, visible: true } ];
77+
if (defaultPrefs) {
78+
prefs = defaultPrefs;
79+
}
7680
let order = [].concat(prefs);
7781
let seen = {};
7882
for (let i = 0; i < order.length; i++) {
@@ -83,7 +87,7 @@ export function getOrder(cols, appId, className) {
8387
for (let name in cols) {
8488
requested[name] = true;
8589
if (!seen[name]) {
86-
order.push({ name: name, width: DEFAULT_WIDTH, visible: true });
90+
order.push({ name: name, width: DEFAULT_WIDTH, visible: !defaultPrefs });
8791
seen[name] = true;
8892
updated = true;
8993
}

src/lib/ParseApp.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ export default class ParseApp {
4343
secondaryBackgroundColor,
4444
supportedPushLocales,
4545
preventSchemaEdits,
46-
graphQLServerURL
46+
graphQLServerURL,
47+
columnPreference
4748
}) {
4849
this.name = appName;
4950
this.createdAt = created_at ? new Date(created_at) : new Date();
@@ -69,6 +70,7 @@ export default class ParseApp {
6970
this.supportedPushLocales = supportedPushLocales ? supportedPushLocales : [];
7071
this.preventSchemaEdits = preventSchemaEdits || false;
7172
this.graphQLServerURL = graphQLServerURL;
73+
this.columnPreference = columnPreference;
7274

7375
if(!supportedPushLocales) {
7476
console.warn('Missing push locales for \'' + appName + '\', see this link for details on setting localizations up. https://github.com/parse-community/parse-dashboard#configuring-localized-push-notifications');

0 commit comments

Comments
 (0)