EN · DE · RU · FR · ES

#2702: ListPage.jsx

projectforge-webapp/src/containers/page/list/ListPage.jsx Typ: JavaScript/React · Rolle: Seite · Quelle: projectforge-webapp/src/containers/page/list/ListPage.jsx 65 Zeilen · 56 Code · 2 Kommentare · 7 leer
React-Listen-Seitencontainer, der Daten-Tabellen-Rendering, Such-/Filter-Integration und Navigation für die Auflistung von Entitäten bereitstellt.

Codestruktur

Verwendete Hooks: Dispatch, Params, Location, Selector, Effect

Importe von: ../../../actions, ../../../components/base/dynamicLayout, ../../../components/design, ./ListPage.module.scss, ./searchFilter/SearchFilter, prop-types, react, react-markdown, react-redux, react-router, rehype-raw, remark-gfm

Hat PropTypes für: ListPage

Verwendet CSS-Module für das Styling.

Quellcode (gekürzt)

import PropTypes from 'prop-types';
import React from 'react';
import ReactMarkdown from 'react-markdown';
import remarkGfm from 'remark-gfm';
import rehypeRaw from 'rehype-raw';
import { useDispatch, useSelector } from 'react-redux';
import { useLocation, useParams } from 'react-router';
import { callAction, loadList } from '../../../actions';
import DynamicLayout from '../../../components/base/dynamicLayout';
import { Card, Container } from '../../../components/design';
import SearchFilter from './searchFilter/SearchFilter';
import styles from './ListPage.module.scss';

function ListPage() {
    const dispatch = useDispatch();
    const onCallAction = (...args) => dispatch(callAction(...args));
    const onCategoryChange = (...args) => dispatch(loadList(...args));
    const { category: paramsCategory } = useParams();
    const location = useLocation();

    const category = useSelector(({ list }) => list.categories[paramsCategory]);

    // Nur die Liste neu laden, wenn sich die Kategorie oder der Suchstring ändert.
    React.useEffect(
        () => {
            onCategoryChange(paramsCategory, true, (location.state || {}).variables);
        },
        [paramsCategory, location.search, location.state],
    );

    // TODO FEHLERBEHANDLUNG HINZUFÜGEN

    return (
        <Container fluid>
            <Card>
                {category && (
                    <DynamicLayout
                        callAction={onCallAction}
                        ui={category.ui}
                        data={category.data}
                        setData={undefined}
                        options={{
                            displayPageMenu: false,
                            setBrowserTitle: true,
                            showActionButtons: false,
                        }}
                        variables={category.variables}
                    >
                        <h4 className={styles.uiTitle}>{category.ui.title}</h4>
                        {!category.ui.hideSearchFilter && (
                            <SearchFilter />
                        )}
                        <ReactMarkdown remarkPlugins={[remarkGfm]} rehypePlugins={[rehypeRaw]}>
                            {category.data.resultInfo}
                        </ReactMarkdown>
                    </DynamicLayout>
                )}
            </Card>
        </Container>
    );
}

ListPage.propTypes = {};

export default ListPage;

Git-Verlauf

bf988bc6d 43 npm-Sicherheitslücken beseitigt: react-scripts→Vite, ESLint 9, Abhängigkeitsbereinigung, Fehlerbehebungen
7c88abd0f wip Abhängigkeiten aktualisiert
329d41bba wip ListPage repariert
f867698d3 wip: Paketversionen aktualisiert
3685edd6c auf React 18 aktualisiert wip