Untitled

mail@pastecode.io avatar
unknown
plain_text
12 days ago
7.5 kB
3
Indexable
Never
//for each number of object present in the questionsList we need to render this outer-accordian and on basis of answers object present in questionsList.answers, we need to render the inner-accordian. the statement "{+1} &nbsp Responses:" should be able to display the number objects in questionsList.answers as in the number of answers provided


import React, { useState, useEffect } from 'react';
import { withPage, useAppState, Lift } from '@d-lift/core';
import BodySection from '@/Layout/BodySection';
import webService from '@/Services/WebService';
import Questions from './Components/Questions';
import { Button, Label, Column, Page, Header, Row, Para } from '@d-lift/uxcomponents';
import './response.scss';

const RFIResponse = () => {
    useEffect(() => {
        loadResponseData();
    }, []);

    const [responseData, setResponseData] = useState(null);

    const loadResponseData = async () => {
        try {
            Lift.spinner.show();
            const data = [
                {
                    id: 0,
                    questionsList: [
                        {
                            rfiId: 0,
                            id: 0,
                            question: 'string',
                            description: 'string',
                            answers: [
                                {
                                    id: 0,
                                    quesnId: 0,
                                    answer: 'string',
                                    respondDt: '2024-06-06T05:46:37.758Z',
                                    state: 'string',
                                },
                            ],
                        },
                    ],
                    title: 'string',
                    description: 'string',
                    reqDT: '2024-06-06T05:46:37.758Z',
                    state: 'string',
                    programs: 'string',
                    category: 'string',
                    status: 'string',
                    dueDT: '2024-06-06',
                    pocId: 0,
                    offering: 'string',
                },
            ];

            // const data = await webService.getFullDetails();
            if (data) {
                console.log('data', data);
                console.log('data.data :', data.data);

                setResponseData(data);
                Lift.Application.Notification.success('Response Data loaded successfully');
            }
        } catch (error) {
            console.log(error);
            Lift.Application.Notification.error('Failed to load Response Data');
        } finally {
            Lift.spinner.hide();
        }
    };

    return (
        <Page>
            <BodySection>
                <div className="ux-rfi-grey-border w-100 mt-3">
                    <Header
                        className="pt-3 ux-rfi-font-header"
                        size="2"
                        labelKey="RFI_Title"></Header>
                    <Row>
                        <Column className="col-9">
                            <Row className="d-flex flex-wrap">
                                <Para
                                    labelKey="very_much_longer"
                                    className="mr-2 mt-2 p-1 ml-3 ux-rfi-label-normal ux-rfi-green-label"></Para>
                                <Para
                                    labelKey="selection_1"
                                    className="ux-rfi-green-label mt-2 mr-2 p-1 ux-rfi-label-normal"></Para>
                                <Para
                                    labelKey="selection_1"
                                    className="ux-rfi-green-label mt-2 mr-2 p-1 ux-rfi-label-normal"></Para>
                                <Para
                                    labelKey="selection_1"
                                    className="ux-rfi-green-label mt-2 mr-2 p-1 ux-rfi-label-normal"></Para>
                                <Para
                                    labelKey="selection_1"
                                    className="ux-rfi-green-label mt-2 p-1 ux-rfi-label-normal"></Para>
                            </Row>
                        </Column>

                        <Column>
                            <div className="ux-rfi-grey-border">
                                <Label
                                    labelKey="requested_by"
                                    className="mt-1 ux-rfi-label-normal ux-rfi-grey-font"></Label>
                                <Para labelKey="massachusetts" className="ux-rfi-bold"></Para>

                                <Label
                                    labelKey="due"
                                    className="mt-1 ux-rfi-label-normal ux-rfi-grey-font"></Label>
                                <Para labelKey="nov_15" className="ux-rfi-bold"></Para>

                                <Label
                                    labelKey="responses"
                                    className="mt-1 ux-rfi-label-normal ux-rfi-grey-font"></Label>
                                <Para labelKey="18_of_30" className="ux-rfi-bold"></Para>

                                <div className="m-0 p-1">
                                    <Button
                                        id="summarizeBtn"
                                        size="small"
                                        className="ux-rfi-green-button"
                                        // click={}
                                        labelKey="summarize_btn"></Button>
                                </div>
                            </div>
                        </Column>
                    </Row>
                </div>

                <div className="ux-rfi-grey-border w-100 mt-3">
                    <Para labelKey="content" className="mt-2 scrollable-content"></Para>
                </div>

                <Questions responseData={responseData}></Questions>
            </BodySection>
        </Page>
    );
};

export default withPage(
    {
        Description: 'Respond to an RFI page',
        ContentManager: true,
        LayoutStyle: 'rfi-dashboard',
    },
    RFIResponse,
);




import React from 'react';
import {
    Accordian,
    AccordianElement,
    AccordianElementData,
    Label,
    Para,
} from '@d-lift/uxcomponents';
import PropTypes from 'prop-types';
import '@/Validations/customValidations';

const Questions = ({responseData}) => {
    return (
        <div className="ux-rfi-green-border mt-4">
            <Label labelKey="question"></Label>

            {/* OUTER COLLAPSE PANEL COMPONENTS */}
            <Accordian id="outer-accordian" className="remove-padding">
                <AccordianElement headerText="Item 2">
                        <Label>{+1} &nbsp Responses:</Label>
                        <Accordian id="inner-accordian">
                            {/* INNER COLLAPSE PANEL COMPONENTS */}

                            <AccordianElement headerText="Item 1">
                                <AccordianElementData>This is a sample text</AccordianElementData>
                                <AccordianElementData>This is a sample text</AccordianElementData>
                            </AccordianElement>
                        </Accordian>
                </AccordianElement>
            </Accordian>
        </div>
    );
};

Questions.propTypes = {
    index: PropTypes.number.isRequired,
};
export default Questions;
Leave a Comment