Untitled
unknown
plain_text
2 years ago
7.5 kB
12
Indexable
update the below code so that on change of requested as field value reset the vaue of offering and program to default value
import ConstantKeys from '@/Constants/ConstantKeys';
import rfiUtil from '@/Util/RFIUtil';
import { AppContext } from '@d-lift/core';
import { Checkbox, CheckboxGroup, Date, Group, Label, Selectbox } from '@d-lift/uxcomponents';
import PropTypes from 'prop-types';
import React, { useEffect, useState } from 'react';
const RFIFilters = ({ rfiRequest, updateRFIRequest }) => {
const [filteredStates, setFilteredStates] = useState([]);
const [filteredOfferings, setFilteredOfferings] = useState([]);
const [filteredCategory, setFilteredCategory] = useState([]);
const [filteredPrograms, setFilteredPrograms] = useState([]);
const refTableContent = rfiUtil.getRefTableDataByCacheName(
ConstantKeys.REF_TABLE.CREATE_RFI_REF_TABLES,
);
useEffect(() => {
const stateList = rfiUtil.getAuthorizedStateList();
if (refTableContent) {
const filteredStateValues = refTableContent.STATE.filter((state) =>
stateList.includes(state.CODE),
);
setFilteredStates(filteredStateValues);
}
}, []);
const filterAuthOfferings = (event) => {
const selectedState = event.target.value;
let filteredOfferingData = [];
if (!rfiUtil.isAdmin()) {
const privilegeData = AppContext.security.getProfile().profile;
const matchedPrivileagedata = privilegeData.find(
(detail) => detail.state === selectedState,
);
filteredOfferingData = refTableContent.OFFERING.filter((offering) =>
matchedPrivileagedata.offering.includes(offering.CODE),
);
} else {
filteredOfferingData = refTableContent.OFFERING;
}
if (filteredOfferingData) {
setFilteredOfferings(filteredOfferingData);
}
//on change of requested as reset the vaue of offering and program to default value
setFilteredPrograms();
setFilteredCategory();
};
const filterProgramAndCategory = (event) => {
const selectedOffering = event.target.value;
const filteredProg = rfiUtil.getTableDataForOffering(
ConstantKeys.REF_TABLE_NAMES.PROGRAM,
selectedOffering,
);
setFilteredPrograms(filteredProg);
const filteredCategories = rfiUtil.getTableDataForOffering(
ConstantKeys.REF_TABLE_NAMES.CATEGORY,
selectedOffering,
);
setFilteredCategory(filteredCategories);
};
const handleCategoryChange = (event) => {
const selectedCategory = event.target.value;
let updatedCategory = [...rfiRequest.category];
if (selectedCategory === 'ALL') {
updatedCategory = ['ALL'];
} else if (updatedCategory.includes('ALL')) {
updatedCategory = updatedCategory.filter((item) => item !== 'ALL');
}
const newList = { ...rfiRequest, category: updatedCategory };
updateRFIRequest(newList);
};
const handleProgramChange = (event) => {
const value = event.target.value;
let selectedPrograms = [...rfiRequest.programs];
if (value === 'ALL') {
selectedPrograms = ['ALL'];
} else if (selectedPrograms.includes('ALL')) {
selectedPrograms = selectedPrograms.filter((program) => program !== 'ALL');
}
const newList = { ...rfiRequest, programs: selectedPrograms };
updateRFIRequest(newList);
};
return (
<>
<Label className="pt-3 mandatory_field" labelKey="requesting_as"></Label>
<Selectbox
id="requestedBy"
model="rfiRequest.requestedBy"
className="w-100"
defaultOptionLabelKey="select_state"
list={filteredStates}
optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
defaultOption="true"
required
change={(event) => filterAuthOfferings(event)}></Selectbox>
<div className="ux-rfi-calendar">
<Date
id="neededByDate"
model="rfiRequest.neededBy"
className="pt-4"
labelKey="needed_by"
minDate="today"
monthDropdown
yearDropdown
required></Date>
</div>
{filteredOfferings && (
<Selectbox
id="offering"
labelKey="offering"
model="rfiRequest.offering"
className="ux-w-100 pt-3"
defaultOption="true"
list={filteredOfferings}
optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
change={(event) => filterProgramAndCategory(event)}
disabled={!AppContext.model.getValue('rfiRequest.requestedBy')}
required></Selectbox>
)}
<div className="ux-rfi-grey-border w-100 mt-3">
<Label labelKey="category"></Label>
<div className="ux-rfi-grey-border">
<CheckboxGroup model="rfiRequest.category">
{filteredCategory.map((categoryItem, index) => (
<Checkbox
key={index}
id={'category-item-' + index}
text={categoryItem[ConstantKeys.REF_TABLE_COLS.DESCRIPTION]}
value={categoryItem[ConstantKeys.REF_TABLE_COLS.CODE]}
//disabled={!AppContext.model.getValue('rfiRequest.offering')}
change={(event) => handleCategoryChange(event)}></Checkbox>
))}
</CheckboxGroup>
</div>
</div>
<div className="ux-rfi-grey-border w-100 mt-4 pt-1">
<Label labelKey="program"></Label>
<div className="ux-rfi-grey-border">
<CheckboxGroup model="rfiRequest.programs">
{filteredPrograms.map((programItem, index) => (
<Checkbox
key={index}
id={'program-item-' + index}
text={programItem[ConstantKeys.REF_TABLE_COLS.DESCRIPTION]}
value={programItem[ConstantKeys.REF_TABLE_COLS.CODE]}
//disabled={!AppContext.model.getValue('rfiRequest.offering')}
change={(event) => handleProgramChange(event)}></Checkbox>
))}
</CheckboxGroup>
</div>
</div>
</>
);
};
RFIFilters.propTypes = {
rfiRequest: PropTypes.object.isRequired,
updateRFIRequest: PropTypes.func.isRequired,
};
export default RFIFilters;
Editor is loading...
Leave a Comment