53 lines
1.3 KiB
JavaScript
Raw Normal View History

'use strict';
const { isEmpty, pick, pipe, propOr } = require('lodash/fp');
const { isSortable, getDefaultMainField } = require('./attributes');
2019-10-22 17:27:33 +02:00
/** General settings */
const DEFAULT_SETTINGS = {
bulkable: true,
filterable: true,
searchable: true,
pageSize: 10,
};
const settingsFields = [
'searchable',
'filterable',
'bulkable',
'pageSize',
'mainField',
'defaultSortBy',
'defaultSortOrder',
];
const getModelSettings = pipe([propOr({}, 'config.settings'), pick(settingsFields)]);
module.exports = {
async createDefaultSettings(schema) {
const defaultField = getDefaultMainField(schema);
return {
...DEFAULT_SETTINGS,
mainField: defaultField,
defaultSortBy: defaultField,
defaultSortOrder: 'ASC',
...getModelSettings(schema),
};
},
async syncSettings(configuration, schema) {
if (isEmpty(configuration.settings)) return this.createDefaultSettings(schema);
const defaultField = getDefaultMainField(schema);
const { mainField = defaultField, defaultSortBy = defaultField } = configuration.settings || {};
return {
...configuration.settings,
mainField: isSortable(schema, mainField) ? mainField : defaultField,
defaultSortBy: isSortable(schema, defaultSortBy) ? defaultSortBy : defaultField,
};
},
};