pgadmin4/web/pgadmin/preferences/static/js/components/binary_path.ui.js

83 lines
2.6 KiB
JavaScript

/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2025, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import gettext from 'sources/gettext';
import _ from 'lodash';
import url_for from 'sources/url_for';
import BaseUISchema from 'sources/SchemaView/base_schema.ui';
import getApiInstance from '../../../../static/js/api_instance';
import pgAdmin from 'sources/pgadmin';
export function getBinaryPathSchema() {
return new BinaryPathSchema();
}
export default class BinaryPathSchema extends BaseUISchema {
constructor() {
super({
isDefault: false,
serverType: undefined,
binaryPath: null,
});
}
get baseFields() {
return [
{
id: 'isDefault', label: gettext('Set as default'), type: 'radio',
width: 32,
radioType: true,
disabled: function (state) {
return !(state?.binaryPath && state?.binaryPath.length > 0);
},
cell: 'radio',
deps: ['binaryPath'],
},
{
id: 'serverType',
label: gettext('Database Server'),
type: 'text', cell: '',
width: 40,
},
{
id: 'binaryPath', label: gettext('Binary Path'), cell: 'file', type: 'file',
isvalidate: true,
disabled: function (state) {
// If Fixed path is assigned, user will not able to edit it.
return state?.isFixed ? state.isFixed : false;
},
controlProps: {
dialogType: 'select_folder',
supportedTypes: ['*', 'sql', 'backup'],
dialogTitle: gettext('Select folder'),
placeholder: pgAdmin.server_mode == 'False' ? gettext('Select binary path...') : gettext('Enter binary path...')
},
hideBrowseButton: pgAdmin.server_mode == 'True',
validate: (data) => {
const api = getApiInstance();
if (_.isNull(data) || data.trim() === '') {
pgAdmin.Browser.notifier.alert(gettext('Validate Path'), gettext('Path should not be empty.'));
} else {
api.post(url_for('misc.validate_binary_path'),
JSON.stringify({ 'utility_path': data }))
.then(function (res) {
pgAdmin.Browser.notifier.alert(gettext('Validate binary path'), gettext(res.data.data));
})
.catch(function (error) {
pgAdmin.Browser.notifier.pgNotifier('error', error, gettext('Failed to validate binary path.'));
});
}
return true;
}
},
];
}
}