Untitled
unknown
plain_text
a year ago
10 kB
6
Indexable
update the code so that depending on the offering selected and prograramList & categoryList , filter the list of program and category which are present for the selected offering. depending upon the selected offering's code, filter the option in prograramList/categoryList which have value as Y and save that as filteredPrograms/filteredCategory and use them to render check box values for category and program.
prograramList:
0: {EE: "Y", CS: "N", CODE: "AU", CW: "N", DESCRIPTION: "AU"}
1: {EE: "Y", CS: "N", CODE: "SNAP", CW: "N", DESCRIPTION: "SNAP"}
2: {EE: "Y", CS: "N", CODE: "MA", CW: "N", DESCRIPTION: "MA"}
3: {EE: "Y", CS: "N", CODE: "LIHEAP", CW: "N", DESCRIPTION: "LIHEAP"}
4: {EE: "Y", CS: "N", CODE: "CC", CW: "N", DESCRIPTION: "CC"}
5: {EE: "Y", CS: "N", CODE: "PIPP", CW: "N", DESCRIPTION: "PIPP"}
6: {EE: "Y", CS: "Y", CODE: "ALL", CW: "Y", DESCRIPTION: "ALL"}
categoryList:
0: {EE: "Y", CS: "N", CODE: "FO", CW: "N", DESCRIPTION: "Font Office"}
1: {EE: "Y", CS: "N", CODE: "AL", CW: "N", DESCRIPTION: "All"}
2: {EE: "Y", CS: "N", CODE: "MA", CW: "N", DESCRIPTION: "Macho"}
import ConstantKeys from '@/Constants/ConstantKeys';
import { useAppState, Util } from '@d-lift/core';
import { CheckboxGroup, Date, Group, Label, Selectbox, Checkbox } from '@d-lift/uxcomponents';
import React, { useEffect, useState } from 'react';
import webService from '@/Services/WebService';
import PropTypes from 'prop-types';
const RFIFilters = ({ rfiRequest, updateRFIRequest }) => {
const [filteredStates, setFilteredStates] = useState([]);
const [filteredOfferings, setFilteredOfferings] = useState([]);
const [categoryList, setCategoryList] = useState([]);
const [prograramList, setPrograramList] = useState([]);
const [filteredCategory, setFilteredCategory] = useState([]);
const [filteredPrograms, setFilteredPrograms] = useState([]);
useEffect(() => {
const refTableContent = JSON.parse(
Util.getSessionData(ConstantKeys.REF_TABLE.GET_OFFERING),
);
console.log('refTableContent:', refTableContent);
const loginDetails = getLoginData();
console.log('loginDetails:', loginDetails);
if (refTableContent && loginDetails) {
const stateCodes = loginDetails.map((detail) => detail.state);
const filteredStateValues = refTableContent.STATE.filter((state) =>
stateCodes.includes(state.CODE),
);
setFilteredStates(filteredStateValues);
// useAppState('filteredStates', filteredStateValues);
console.log('filteredStateValues:', filteredStateValues);
const programs = refTableContent.PROGRAM;
setPrograramList(programs);
console.log('programs:', programs);
const category = refTableContent.CATEGORY;
setCategoryList(category);
console.log('category:', category);
}
}, []);
const getLoginData = () => {
// const loginDetails = webService.getLoginDetails({
// requestBody: '',
// });
return [
{
state: 'SS',
offering: ['EE'],
},
{
state: 'WI',
offering: ['EE', 'CW'],
},
{
state: 'ND',
offering: ['EE', 'EF'],
},
{
state: 'MD',
offering: ['CW'],
},
{
state: 'WY',
offering: ['CW', 'EF'],
},
{
state: 'AB',
offering: ['EE', 'CW'],
},
{
state: 'ST',
offering: ['EE', 'EF'],
},
{
state: 'IN',
offering: ['EE', 'EF', 'CW'],
},
{
state: 'AL',
offering: ['EE', 'EF', 'CW'],
},
{
state: 'AK',
offering: ['EE', 'EF', 'CW'],
},
{
state: 'AS',
offering: ['EE', 'EF', 'CW'],
},
];
};
const getStateValue = (event) => {
const selectedState = event.target.value;
const loginDetails = getLoginData();
const selectedStateDetails = loginDetails.find((detail) => detail.state === selectedState);
if (selectedStateDetails) {
const availableOfferings = selectedStateDetails.offering;
setFilteredOfferings(availableOfferings);
//useAppState('filteredOfferings', availableOfferings);
console.log('availableOfferings:', availableOfferings);
}
};
const getOfferingValue = (event) => {
const selectedOffering = event.target.value;
const offering = getLoginData();
};
const programRefTable = [
{ DESCRIPTION: 'ALL', CODE: 'ALL' },
{ DESCRIPTION: 'AU', CODE: 'AU' },
{ DESCRIPTION: 'MA', CODE: 'MA' },
{ DESCRIPTION: 'LIHEAP', CODE: 'LIHEAP' },
{ DESCRIPTION: 'CC', CODE: 'CC' },
{ DESCRIPTION: 'PIPP', CODE: 'PIPP' },
];
useAppState('programList', programRefTable);
const categoryRefTable = [
{ DESCRIPTION: 'ALL', CODE: 'ALL' },
{ DESCRIPTION: 'Eligibility', CODE: 'EG' },
{ DESCRIPTION: 'Front Office', CODE: 'FO' },
{ DESCRIPTION: 'Interfaces', CODE: 'IF' },
{ DESCRIPTION: 'Reports', CODE: 'RP' },
{ DESCRIPTION: 'General/Other', CODE: 'GO' },
];
useAppState('categoryList', categoryRefTable);
// Handler for category selection
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);
};
// Handler for program selection
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) => getStateValue(event)}></Selectbox>
<Group width="3,9">
<Label className="pt-4" labelKey="needed_by"></Label>
<div className="ux-rfi-calendar">
<Date
id="neededByDate"
model="rfiRequest.neededBy"
// className="mandatory_field"
// required
monthDropdown
yearDropdown></Date>
</div>
</Group>
<Selectbox
id="offering"
labelKey="offering"
model="rfiRequest.offering"
className="ux-w-100 pt-3"
defaultOption="true"
// list={filteredOfferings}
list={filteredOfferings.map((code) => ({
CODE: code,
DESCRIPTION:
code === 'EE'
? 'Eligibility and Enrollment'
: code === 'CS'
? 'Child Support'
: code === 'CW'
? 'Child Welfare'
: 'Unknown',
}))}
optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
change={(event) => getOfferingValue(event)}></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">
{categoryRefTable.map((cateegoryItem, index) => (
<Checkbox
id={'category-item-' + index}
text={cateegoryItem[ConstantKeys.REF_TABLE_COLS.DESCRIPTION]}
value={cateegoryItem[ConstantKeys.REF_TABLE_COLS.CODE]}
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">
{programRefTable.map((programsItem, index) => (
<Checkbox
id={'program-item-' + index}
text={programsItem[ConstantKeys.REF_TABLE_COLS.DESCRIPTION]}
value={programsItem[ConstantKeys.REF_TABLE_COLS.CODE]}
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