pgadmin4/web/pgadmin/static/js/SchemaView/options/index.js

177 lines
3.6 KiB
JavaScript

/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2024, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import { evalFunc } from 'sources/utils';
import {
booleanEvaluator,
canAddOrDelete,
evalIfNotDisabled,
evalInNonPropertyMode,
FIELD_OPTIONS
} from './common';
import {
evaluateFieldOptions,
evaluateFieldsOption,
registerOptionEvaluator,
schemaOptionsEvalulator,
} from './registry';
export {
FIELD_OPTIONS,
booleanEvaluator,
canAddOrDelete,
evaluateFieldOptions,
evaluateFieldsOption,
evalIfNotDisabled,
registerOptionEvaluator,
schemaOptionsEvalulator,
};
const VISIBLE = 'visible';
// Default evaluators
// 1. disabled
// 2. visible (It also checks for the supported mode)
// 3. readonly
registerOptionEvaluator('disabled');
registerOptionEvaluator(
VISIBLE,
// Evaluator
({schema, field, value, viewHelperProps}) => (
(
!field.mode || field.mode.indexOf(viewHelperProps.mode) > -1
) && (
// serverInfo not found
_.isUndefined(viewHelperProps.serverInfo) ||
// serverInfo found and it's within range
((
_.isUndefined(field.server_type) ? true :
(viewHelperProps.serverInfo.type in field.server_type)
) && (
_.isUndefined(field.min_version) ? true :
(viewHelperProps.serverInfo.version >= field.min_version)
) && (
_.isUndefined(field.max_version) ? true :
(viewHelperProps.serverInfo.version <= field.max_version)
))
) && (
_.isUndefined(field[VISIBLE]) ? true :
Boolean(evalFunc(schema, field[VISIBLE], value))
)),
);
registerOptionEvaluator(
'readonly',
// Evaluator
({viewHelperProps, ...args}) => (
viewHelperProps.inCatalog ||
viewHelperProps.mode === 'properties' ||
booleanEvaluator({viewHelperProps, ...args })
),
// Default value
false
);
// Collection evaluators
// 1. canAdd
// 2. canEdit
// 3. canAddRow
// 4. expandEditOnAdd
// 5. addOnTop
// 6. canSearch
registerOptionEvaluator(
'canAdd',
// Evaluator
canAddOrDelete,
// Default value
true,
['collection']
);
registerOptionEvaluator(
'canEdit',
// Evaluator
({viewHelperProps, options, ...args}) => (
!viewHelperProps.inCatalog &&
viewHelperProps.mode !== 'properties' &&
!options.disabled &&
booleanEvaluator({viewHelperProps, options, ...args })
),
// Default value
false,
['collection']
);
registerOptionEvaluator(
'canAddRow',
// Evaluator
({options, ...args}) => (
options.canAdd &&
booleanEvaluator({options, ...args })
),
// Default value
true,
['collection']
);
registerOptionEvaluator(
'expandEditOnAdd',
// Evaluator
evalInNonPropertyMode,
// Default value
false,
['collection']
);
registerOptionEvaluator(
'addOnTop',
// Evaluator
evalInNonPropertyMode,
// Default value
false,
['collection']
);
registerOptionEvaluator(
'canSearch',
// Evaluator
evalInNonPropertyMode,
// Default value
false,
['collection']
);
// Row evaluators
// 1. canEditRow
registerOptionEvaluator(
'canEditRow',
// Evaluator
evalInNonPropertyMode,
// Default value
true,
['row']
);
// Grid cell evaluatiors
// 1. editable
registerOptionEvaluator(
'editable',
// Evaluator
({viewHelperProps, ...args}) => (
!viewHelperProps.inCatalog &&
viewHelperProps.mode !== 'properties' &&
booleanEvaluator({viewHelperProps, ...args })
),
// Default value
true,
['cell']
);