ソースを参照

Filtering files by content completed

FE_dev
Dzenis Hadzifejzovic 3年前
コミット
f157c5e7e8

+ 3
- 3
src/assets/styles/components/_candidatesPage.scss ファイルの表示

border-radius: 10px; border-radius: 10px;
padding: 20px; padding: 20px;
background-color: white; background-color: white;
position: absolute;
top: 112px;
right: 70px;
// position: absolute;
// top: 112px;
// right: 70px;
z-index: 1000; z-index: 1000;
} }



+ 5
- 1
src/assets/styles/components/_files.scss ファイルの表示

} }


.filesPage { .filesPage {
align-self: flex-end;
align-self: flex-start;
} }


.document-container p { .document-container p {


.files-custom-modal-buttons button { .files-custom-modal-buttons button {
margin-left: 8px; margin-left: 8px;
}

.pg-viewer-wrapper .document-container{
margin:0 !important;
} }

+ 38
- 29
src/pages/FilesPage/FileTable.js ファイルの表示

import IconButton from "../../components/IconButton/IconButton"; import IconButton from "../../components/IconButton/IconButton";
import deleteIcon from "../../assets/images/delete.png"; import deleteIcon from "../../assets/images/delete.png";
import editIcon from "../../assets/images/edit.png"; import editIcon from "../../assets/images/edit.png";
import PropTypes from "prop-types";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import PropTypes from "prop-types";
import { useSelector, useDispatch } from "react-redux"; import { useSelector, useDispatch } from "react-redux";
import { import {
deleteFileReq, deleteFileReq,
import { FETCH_FILES_LOADING } from "../../store/actions/files/fileActionConstants"; import { FETCH_FILES_LOADING } from "../../store/actions/files/fileActionConstants";
import { useHistory } from "react-router"; import { useHistory } from "react-router";


const FileTable = () => {
const FileTable = ({ trigger }) => {
const [file, setFile] = useState(null); const [file, setFile] = useState(null);
const { data } = useSelector((s) => s.files); const { data } = useSelector((s) => s.files);
const { filters } = useSelector((s) => s.fileFilters); const { filters } = useSelector((s) => s.fileFilters);
const dispatch = useDispatch(); const dispatch = useDispatch();
const history = useHistory(); const history = useHistory();


useEffect(() => {
if (trigger) {
handleChangeVisibility();
}
}, [trigger]);

const handleToggleFiltersDrawer = () => { const handleToggleFiltersDrawer = () => {
setToggleFiltersDrawer((oldState) => !oldState); setToggleFiltersDrawer((oldState) => !oldState);
setFile(null); setFile(null);
); );


const handleChangeVisibility = () => { const handleChangeVisibility = () => {
setIsSearchFieldVisible(!isSearchFieldVisible);
setIsSearchFieldVisible(false);
}; };


const stopPropagation = (e) => { const stopPropagation = (e) => {
payload: { payload: {
pageSize: 3, pageSize: 3,
currentPage: page, currentPage: page,
categories: catFilters,
categories: catFilters,
extensions: extFilters, extensions: extFilters,
tags: tagFilters, tags: tagFilters,
content: filters.content, content: filters.content,
</div> </div>
</div> </div>
) : ( ) : (
<>
<div>
<ConfirmDialog <ConfirmDialog
open={fileForDelete.open} open={fileForDelete.open}
title="Brisanje dokumenta" title="Brisanje dokumenta"
setPage={setPage} setPage={setPage}
category={null} category={null}
/> />

<div <div
className="flex-center"
style={{ style={{
paddingTop: "36px",
display: "flex",
justifyContent: "space-between", justifyContent: "space-between",
postion: "relative",
position: "relative",
width: "100%",
}} }}
> >
<h1 className="page-heading">Pregled dokumenata</h1>
<div style={{ postion: "relative" }}>
<div>
<Fade in={isSearchFieldVisible} timeout={500} className="proba"> <Fade in={isSearchFieldVisible} timeout={500} className="proba">
{input} {input}
</Fade> </Fade>
style={{ style={{
position: "absolute", position: "absolute",
zIndex: 10000, zIndex: 10000,
right: 95,
left: 780,
top: 20,
marginTop: 0, marginTop: 0,
}} }}
> >
</div> </div>
</Fade> </Fade>
</div> </div>
<div className="flex-center">
<IconButton
className="c-btn c-btn--primary-outlined candidate-btn search-field userPageBtn ml-20px no-padding custom-filter-button"
onClick={handleChangeVisibility}
>
{t("candidates.search")}
<img src={searchImage} alt="filter" className="candidates-image" />
</IconButton>
<div style={{ display: "flex" }}>
{isSearchFieldVisible ? (
""
) : (
<IconButton
className="c-btn c-btn--primary-outlined candidate-btn search-field userPageBtn ml-20px no-padding custom-filter-button"
onClick={() => setIsSearchFieldVisible(true)}
>
{t("candidates.search")}
<img
src={searchImage}
alt="filter"
className="candidates-image"
/>
</IconButton>
)}
<FilterButton onShowFilters={handleToggleFiltersDrawer} /> <FilterButton onShowFilters={handleToggleFiltersDrawer} />
</div> </div>
</div> </div>
flexDirection: "column", flexDirection: "column",
justifyContent: "space-between", justifyContent: "space-between",
minHeight: "500px", minHeight: "500px",
width: "100%",
}} }}
> >
<div className="table-cont"> <div className="table-cont">
shape="rounded" shape="rounded"
page={page} page={page}
/> />
<IconButton <IconButton
className="c-btn ads-page-btn c-btn--primary add-ad-btn filesPage" className="c-btn ads-page-btn c-btn--primary add-ad-btn filesPage"
onClick={() => history.push(ADD_FILE)} onClick={() => history.push(ADD_FILE)}
}} }}
></div> ></div>
</div> </div>
</>
</div>
); );
}; };


FileTable.propTypes = { FileTable.propTypes = {
// history: PropTypes.shape({
// replace: PropTypes.func,
// push: PropTypes.func,
// location: PropTypes.shape({
// pathname: PropTypes.string,
// }),
// }),
files: PropTypes.array,
trigger: PropTypes.number,
}; };


export default FileTable; export default FileTable;

+ 9
- 2
src/pages/FilesPage/FilesPage.js ファイルの表示

const categories = useSelector(selectCategories); const categories = useSelector(selectCategories);
const [categoryName, setCategoryName] = useState(""); const [categoryName, setCategoryName] = useState("");
const dispatch = useDispatch(); const dispatch = useDispatch();
const [trigger, setTrigger] = useState(0);


useEffect(() => { useEffect(() => {
dispatch(setCategoriesReq()); dispatch(setCategoriesReq());
<> <>
<div className="l-t-rectangle"></div> <div className="l-t-rectangle"></div>
<div className="r-b-rectangle"></div> <div className="r-b-rectangle"></div>
<div className="pl-144" style={{ paddingTop: "36px" }}>
<div
className="pl-144"
style={{ paddingTop: "36px" }}
onClick={() => {
setTrigger((trigger) => trigger + 1);
}}
>
<div style={{ marginBottom: "50px" }}> <div style={{ marginBottom: "50px" }}>
<div style={{ marginBottom: "30px" }}> <div style={{ marginBottom: "30px" }}>
<h1 className="page-heading">Folderi</h1> <h1 className="page-heading">Folderi</h1>
<h1 className="page-heading">Fajlovi</h1> <h1 className="page-heading">Fajlovi</h1>
</div> </div>
<div className="files-page-categories"> <div className="files-page-categories">
<FileTable />
<FileTable trigger={trigger} />
</div> </div>
</div> </div>
</div> </div>

読み込み中…
キャンセル
保存