Untitled
unknown
plain_text
a year ago
7.5 kB
8
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