codekingpro/portable-devtools
114k
1/////////////////////////////////////////////////////////////2//3// pgAdmin 4 - PostgreSQL Tools4//5// Copyright (C) 2013 - 2024, The pgAdmin Development Team6// This software is released under the PostgreSQL Licence7//8//////////////////////////////////////////////////////////////9 10import { makeStyles } from '@mui/styles';11import React from 'react';12import PropTypes from 'prop-types';13import gettext from 'sources/gettext';14import BaseUISchema from '../SchemaView/base_schema.ui';15import SchemaView from '../SchemaView';16import { isEmptyString } from 'sources/validators';17 18class ChangeOwnershipSchema extends BaseUISchema {19 constructor(deletedUser, adminUserList, noOfSharedServers) {20 super({21 newUser: '',22 });23 this.deletedUser = deletedUser;24 this.adminUserList = adminUserList;25 this.noOfSharedServers = noOfSharedServers;26 }27 28 get baseFields() {29 let self = this;30 return [31 {32 id: 'note', type: 'note',33 text: gettext('Select the user that will take ownership of the shared servers created by <b>' + self.deletedUser + '</b>. <b>' + self.noOfSharedServers + '</b> shared servers are currently owned by this user. </br></br> Clicking on the “Change” button will either change ownership if a user is selected or delete any shared servers if no user is selected. There is no way to reverse this action.'),34 }, {35 id: 'newUser', label: gettext('User'),36 type: 'select', controlProps: {allowClear: true},37 options: self.adminUserList38 }39 ];40 }41 validate(state) {42 let obj = this;43 44 /* mview definition validation*/45 if (isEmptyString(state.newUser)) {46 obj.warningText = gettext('The shared servers owned by <b>'+ obj.deletedUser +'</b> will be deleted. Do you wish to continue?');47 } else {48 obj.warningText = null;49 }50 }51}52 53const useStyles = makeStyles((theme)=>({54 root: {55 ...theme.mixins.tabPanel,56 },57}));58 59export default function ChangeOwnershipContent({onSave, onClose, deletedUser, userList, noOfSharedServers}) {60 const classes = useStyles();61 const objChangeOwnership = new ChangeOwnershipSchema(deletedUser, userList, noOfSharedServers);62 63 return<SchemaView64 formType={'dialog'}65 getInitData={() => { /*This is intentional (SonarQube)*/ }}66 schema={objChangeOwnership}67 viewHelperProps={{68 mode: 'create',69 }}70 customSaveBtnName={'Change'}71 onSave={onSave}72 onClose={onClose}73 hasSQL={false}74 disableSqlHelp={true}75 disableDialogHelp={true}76 isTabView={false}77 formClassName={classes.root}78 />;79}80ChangeOwnershipContent.propTypes = {81 onSave: PropTypes.func,82 onClose: PropTypes.func,83 userList: PropTypes.array,84 noOfSharedServers: PropTypes.number,85 deletedUser: PropTypes.string86};87 