Untitled
unknown
plain_text
a year ago
7.8 kB
5
Indexable
import BodySection from '@/Layout/BodySection';
import RightSection from '@/Layout/RightSection';
import { useAppState, withPage, Lift, Util } from '@d-lift/core';
import { Page } from '@d-lift/uxcomponents';
import React, { useEffect, useState } from 'react';
import RFIFilters from './Components/RFIFilters';
import RFIRequestForm from './Components/RFIRequestForm';
import './create-rfi.scss';
import ConstantKeys from '@/Constants/ConstantKeys';
import RFIUtil from '@/Util/RFIUtil';
const RFIRequest = () => {
const defaultRFIRequest = {
title: '',
reqDescription: '',
questionsList: [{ question: '', description: '' }],
requestedBy: '',
neededBy: '',
offering: ConstantKeys.DEFAULT_OPTION.OFFERING,
category: ConstantKeys.DEFAULT_OPTION.CATEGORY,
programs: ConstantKeys.DEFAULT_OPTION.PROGRAM,
status: '',
};
const [rfiRequest, setRFIRequest] = useAppState('rfiRequest', defaultRFIRequest);
const [filteredPrograms, setFilteredPrograms] = useState([]);
const updateRFIRequest = (newState) => {
setRFIRequest(newState);
};
useEffect(() => {
const refTableContent = JSON.parse(Util.getSessionData(ConstantKeys.REF_TABLE.GET_OFFERING));
console.log('refTableContent:', refTableContent);
}, []);
const filterPrograms = (selectedOffering) => {
const refTableContent = JSON.parse(Util.getSessionData(ConstantKeys.REF_TABLE.GET_OFFERING));
const programs = refTableContent.PROGRAM;
const filtered = programs.filter(program => program[selectedOffering] === 'Y');
setFilteredPrograms(filtered);
};
useEffect(() => {
filterPrograms(rfiRequest.offering);
}, [rfiRequest.offering]);
return (
<Page ref-table-list="PROGRAM, CATEGORY, OFFERING">
<div className="d-flex">
<BodySection>
<RFIRequestForm
rfiRequest={rfiRequest}
updateRFIRequest={updateRFIRequest}
resetRFIRequest={defaultRFIRequest}></RFIRequestForm>
</BodySection>
<RightSection>
<RFIFilters
rfiRequest={rfiRequest}
updateRFIRequest={updateRFIRequest}
filteredPrograms={filteredPrograms}></RFIFilters>
</RightSection>
</div>
</Page>
);
};
export default withPage(
{
Description: 'Make a Request Page',
ContentManager: true,
LayoutStyle: 'rfi-dashboard',
},
RFIRequest,
);
import ConstantKeys from '@/Constants/ConstantKeys';
import { useAppState } from '@d-lift/core';
import { CheckboxGroup, Date, Group, Label, Selectbox, Checkbox } from '@d-lift/uxcomponents';
import React from 'react';
import PropTypes from 'prop-types';
const RFIFilters = ({ rfiRequest, updateRFIRequest, filteredPrograms }) => {
const offeringList = [
{ DESCRIPTION: 'Eligibility and Enrollment', CODE: 'EE' },
{ DESCRIPTION: 'Child Support', CODE: 'CS' },
{ DESCRIPTION: 'Child Welfare', CODE: 'CW' },
];
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"
placeholder="-Select A State -"
list="stateList"
optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
required></Selectbox>
<Group width="3,9">
<Label className="pt-4" labelKey="needed_by"></Label>
<div className="ux-rfi-calendar">
<Date
id="neededByDate"
model="rfiRequest.neededBy"
monthDropdown
yearDropdown></Date>
</div>
</Group>
<Selectbox
model="rfiRequest.offering"
labelKey="offering"
list={offeringList}
optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
className="ux-w-100 pt-3"
change={(event) => updateRFIRequest({ ...rfiRequest, offering: event.target.value })}
/>
<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((categoryItem, index) => (
<Checkbox
id={'category-item-' + index}
text={categoryItem[ConstantKeys.REF_TABLE_COLS.DESCRIPTION]}
value={categoryItem[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">
{filteredPrograms.map((programsItem, index) => (
<Checkbox
id={'program-item-' + index}
text={programsItem[ConstantKeys.REF_TABLE_COLS.DESC]}
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,
filteredPrograms: PropTypes.array.isRequired,
};
export default RFIFilters;
Editor is loading...
Leave a Comment