Skip to content

ATLAS-5049: [React UI] Unable to add single value type attributes in … #369

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dashboard/src/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
@use "@styles/errorPage.scss" as *;
@use "@styles/errorPage.scss" as *;
@use "@styles/customdatepPicker.scss" as *;
@use "@styles/administration.scss" as *;

@font-face {
font-family: "Source Sans 3";
Expand Down
10 changes: 5 additions & 5 deletions dashboard/src/styles/administration.scss
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@
padding-left: 20px;
}

.audit-results-lsit-item {
display: list-item;
padding-left: 0;
}

.audit-results-entityid {
display: block;
}

.enum-value-selector {
display: inline-grid !important;
grid-template-columns: 1fr !important;
}
22 changes: 22 additions & 0 deletions dashboard/src/utils/CommonViewFunction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -305,3 +305,25 @@ export const generateObjectForSaveSearchApi = (options) => {
return obj;
}
};

export const getTypeName = (
multiValueSelect: boolean,
enumType: string,
rest: any
) => {
if (multiValueSelect) {
switch (rest.typeName) {
case "enumeration":
return `array<${enumType}>`;
default:
return `array<${rest.typeName}>`;
}
} else {
switch (rest.typeName) {
case "enumeration":
return enumType;
default:
return rest.typeName;
}
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -154,13 +154,23 @@ const BusinessMetadataAttributeForm = ({
await updateEnum(data);
toast.dismiss(toastId.current);
toastId.current = toast.success(
`Enumeration ${enumType} updated
successfully`
`Enumeration ${enumType} updated successfully`
);
} else {
toast.dismiss(toastId.current);
toastId.current = toast.success("No updated values");
}
fields?.forEach((fieldItem: any, idx: number) => {
const fieldEnumType =
attributeDefsWatch &&
attributeDefsWatch(`attributeDefs.${idx}.enumType`);
if (fieldEnumType === enumType) {
attributeDefsSetValue(
`attributeDefs.${idx}.enumValues`,
elementValues
);
}
});
handleCloseEnumModal();
reset({ enumType: "", enumValues: [] });
dispatchState(fetchEnumData());
Expand All @@ -170,6 +180,7 @@ const BusinessMetadataAttributeForm = ({
}
};
const handleCloseEnumModal = () => {
reset({ enumType: "", enumValues: [] });
setEnumModal(false);
};

Expand Down Expand Up @@ -258,7 +269,13 @@ const BusinessMetadataAttributeForm = ({
data-cy={`attributeDefs.${index}.name`}
key={`attributeDefs.${index}.name`}
defaultValue={field?.name}
render={({ field: { value, onChange } }) => (
rules={{
required: true
}}
render={({
field: { value, onChange },
fieldState: { error }
}) => (
<Grid
container
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
Expand All @@ -281,6 +298,7 @@ const BusinessMetadataAttributeForm = ({
}}
onChange={onChange}
margin="none"
error={!!error}
fullWidth
variant="outlined"
size="small"
Expand All @@ -297,6 +315,9 @@ const BusinessMetadataAttributeForm = ({
data-cy={`attributeDefs.${index}.typeName`}
key={`attributeDefs.${index}.typeName`}
defaultValue={field?.typeName}
rules={{
required: true
}}
render={({ field: { value, onChange } }) => (
<>
<Grid
Expand Down Expand Up @@ -547,7 +568,13 @@ const BusinessMetadataAttributeForm = ({
data-cy={`attributeDefs.${index}.enumType`}
key={`attributeDefs.${index}.enumType`}
defaultValue={field?.enumType}
render={({ field: { value, onChange } }) => (
rules={{
required: true
}}
render={({
field: { value, onChange },
fieldState: { error }
}) => (
<>
<Grid
container
Expand All @@ -571,7 +598,7 @@ const BusinessMetadataAttributeForm = ({
}}
size="small"
id="search-by-type"
value={value || []}
value={value || null}
clearIcon={null}
onChange={(_event, newValue) => {
onChange(newValue);
Expand All @@ -596,9 +623,6 @@ const BusinessMetadataAttributeForm = ({
}
}}
filterSelectedOptions
isOptionEqualToValue={(option, value) =>
option === value
}
options={
!isEmpty(enumTypes)
? enumTypes.map((option: any) => option)
Expand All @@ -608,11 +632,11 @@ const BusinessMetadataAttributeForm = ({
renderInput={(params) => (
<TextField
{...params}
error={!!error}
fullWidth
disabled={
isEmpty(editbmAttribute) ? false : true
}
// label="Select type"
InputLabelProps={{
style: {
top: "unset",
Expand Down Expand Up @@ -663,9 +687,6 @@ const BusinessMetadataAttributeForm = ({
data-cy={`attributeDefs.${index}.enumValues`}
key={`attributeDefs.${index}.enumValues` as const}
defaultValue={field?.enumValues}
rules={{
required: true
}}
render={({ field }) => {
return (
<>
Expand All @@ -681,11 +702,15 @@ const BusinessMetadataAttributeForm = ({
<Grid item md={7}>
<Autocomplete
size="small"
className="enum-value-selector"
readOnly
disableClearable={true}
multiple={true}
value={watched?.[index]?.enumValues || []}
getOptionLabel={(option) => option.value}
isOptionEqualToValue={(option, value) =>
option.value === value.value
}
data-cy="enumValueSelector"
options={
!isEmpty(enumTypeOptions)
Expand Down
62 changes: 41 additions & 21 deletions dashboard/src/views/BusinessMetadata/BusinessMetadataForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import { setEditBMAttribute } from "@redux/slice/createBMSlice";
import { cloneDeep } from "@utils/Helper";
import { fetchBusinessMetaData } from "@redux/slice/typeDefSlices/typedefBusinessMetadataSlice";
import { defaultType } from "@utils/Enum";
import { getTypeName } from "@utils/CommonViewFunction";

const BusinessMetaDataForm = ({
setForm,
Expand Down Expand Up @@ -77,7 +78,7 @@ const BusinessMetaDataForm = ({
: "enumeration";
let selectedEnumObj = !isEmpty(enumDefs)
? enumDefs.find((obj: { name: any }) => {
return obj.name == typeName;
return obj.name == (str.indexOf("<") != -1 ? extracted : str);
})
: {};
let selectedEnumValues = !isEmpty(selectedEnumObj)
Expand Down Expand Up @@ -108,7 +109,9 @@ const BusinessMetaDataForm = ({
: defaultType.includes(typeName)
? typeName
: "enumeration",
...(currentTypeName == "enumeration" && { enumType: typeName }),
...(currentTypeName == "enumeration" && {
enumType: str.indexOf("<") != -1 ? extracted : str
}),
...(currentTypeName == "enumeration" && {
enumValues: enumTypeOptions
}),
Expand Down Expand Up @@ -152,7 +155,10 @@ const BusinessMetaDataForm = ({

const { fields, append, remove } = useFieldArray({
control,
name: "attributeDefs"
name: "attributeDefs",
rules: {
required: true
}
});

useEffect(() => {
Expand All @@ -164,9 +170,11 @@ const BusinessMetaDataForm = ({
: defaultType.includes(typeName)
? typeName
: "enumeration";
let selectedEnumObj = enumDefs.find((obj: { name: any }) => {
return obj.name == typeName;
});
let selectedEnumObj = !isEmpty(enumDefs)
? enumDefs.find((obj: { name: any }) => {
return obj.name == (str.indexOf("<") != -1 ? extracted : str);
})
: {};
let selectedEnumValues = !isEmpty(selectedEnumObj)
? selectedEnumObj?.elementDefs
: [];
Expand All @@ -189,7 +197,9 @@ const BusinessMetaDataForm = ({
: []
},
typeName: currentTypeName,
...(currentTypeName == "enumeration" && { enumType: typeName }),
...(currentTypeName == "enumeration" && {
enumType: str.indexOf("<") != -1 ? extracted : str
}),
...(currentTypeName == "enumeration" && {
enumValues: enumTypeOptions
}),
Expand Down Expand Up @@ -233,6 +243,7 @@ const BusinessMetaDataForm = ({

const onSubmit = async (values: any) => {
let formData = { ...values };

let bmData = cloneDeep(bmAttribute);

const { name, description, attributeDefs } = formData;
Expand All @@ -243,24 +254,33 @@ const BusinessMetaDataForm = ({
let attributeDefsData = !isEmpty(attributeDefs) ? [...attributeDefs] : [];

let attributes = !isEmpty(attributeDefsData)
? attributeDefsData.map((item) => ({
...item,
...{
? attributeDefsData.map((item) => {
const { multiValueSelect, enumType, enumValues, ...rest } = item;

const baseObj = {
...rest,
options: {
applicableEntityTypes: JSON.stringify(
item.options.applicableEntityTypes
rest.options.applicableEntityTypes
),
maxStrLength: item.options.maxStrLength
maxStrLength: rest.options.maxStrLength
},
typeName: item.multiValueSelect
? item.typeName == "enumeration"
? item.enumType
: `array<${item.typeName}>`
: item.typeName == "enumeration"
? item.enumType
: `array<${item.typeName}>`
}
}))
...(multiValueSelect && {
multiValueSelect: true,
multiValued: true
}),
...(enumType && {
enumValues: !isEmpty(enumValues)
? enumValues.map((enums: { value: any }) => {
return enums.value;
})
: []
}),
typeName: getTypeName(multiValueSelect, enumType, rest)
};

return baseObj;
})
: [];

let data = {
Expand Down
9 changes: 7 additions & 2 deletions dashboard/src/views/BusinessMetadata/EnumCreateUpdate.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,12 @@ const EnumCreateUpdate = ({
sx={{ flex: "1" }}
size="small"
value={value}
onChange={(_event, newValue) => {
onChange={(_event, newValue, reason) => {
if (reason == "clear") {
onChange("");
setValue("enumValues", []);
return;
}
if (!isEmpty(newValue.label)) {
onChange(newValue.value);
} else {
Expand Down Expand Up @@ -170,6 +175,7 @@ const EnumCreateUpdate = ({

return filtered;
}}
clearIcon={null}
filterSelectedOptions
onBlur={onBlur}
options={
Expand Down Expand Up @@ -261,7 +267,6 @@ const EnumCreateUpdate = ({
: []
}
onBlur={onBlur}
className="advanced-search-autocomplete"
renderInput={(params) => (
<TextField
{...params}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ const BusinessMetadataAtrribute = ({ componentProps, row }: any) => {
<span>N/A</span>
),
header: "Type Name",
enableSorting: true
enableSorting: true,
width: "30%"
},
{
accessorKey: "searchWeight",
Expand Down Expand Up @@ -176,7 +177,9 @@ const BusinessMetadataAtrribute = ({ componentProps, row }: any) => {
: "enumeration";
let selectedEnumObj = !isEmpty(enumDefs)
? enumDefs.find((obj: { name: any }) => {
return obj.name == typeName;
return (
obj.name == (str.indexOf("<") != -1 ? extracted : str)
);
})
: {};
let selectedEnumValues = !isEmpty(selectedEnumObj)
Expand Down Expand Up @@ -208,7 +211,7 @@ const BusinessMetadataAtrribute = ({ componentProps, row }: any) => {
? typeName
: "enumeration",
...(currentTypeName == "enumeration" && {
enumType: typeName
enumType: str.indexOf("<") != -1 ? extracted : str
}),
...(currentTypeName == "enumeration" && {
enumValues: enumTypeOptions
Expand Down
Loading
Loading