import React, { useEffect, useState } from 'react'; import { CircularProgress } from '@material-ui/core'; import moment from 'moment'; import axios from 'axios'; import { useHistory, Link } from 'react-router-dom'; import IconButton from '@mui/material/IconButton'; import SearchIcon from '@mui/icons-material/Search'; import InfiniteScroll from "react-infinite-scroll-component"; import Alert from '../../component/alert'; const INFINITE = 10; const SCROLL_DELAY_TIME = 1500; const Meeting = (props) => { const [keyword, setKeyword] = useState('') const [loaded, setLoaded] = useState(false); const [meeting_list, setMeetingList ] = useState([]); const [fetch_meeting_list, setFetchMeetingList ] = useState([]); const [_400error, set400Error] = useState(''); const [_422errors, set422errors] = useState({keyword:''}); const [_success, setSuccess] = useState(props.history.location.state); useEffect(()=>{ if(localStorage.getItem("from_login")){ setSuccess("ログインに成功しました!"); localStorage.removeItem("from_login"); } },[]); useEffect(() => { setLoaded(false); axios.get('/api/admin/meetings/list').then(response => { setLoaded(true); if(response.data.status_code==200){ //------------Calculate Numerator & Denominator-------------- var list = response.data.params; var arr = []; for(var i in list){ var total=0, num=0; for(var j in list[i].approval) { if(list[i].approval[j].approval_at) num ++; total ++; } arr.push({...list[i], denominator:total, numerator:num}) } setMeetingList(arr); var len = arr.length; if(len > INFINITE) setFetchMeetingList(arr.slice(0, INFINITE)); else setFetchMeetingList(arr.slice(0, len)); } else { set400Error("失敗しました。"); } }); }, []); const fetchMoreMeetingList = () => { setTimeout(() => { var x = fetch_meeting_list.length; var y = meeting_list.length; var c = 0; if(x+INFINITE < y) c = INFINITE; else c = y - x; setFetchMeetingList(meeting_list.slice(0, x+c)); }, SCROLL_DELAY_TIME); }; const handleSearch = (e) => { e.preventDefault(); if(keyword == '') { document.getElementById('keyword').focus(); return; } set422errors({keyword:''}); setLoaded(false); setMeetingList([]); axios.get('/api/admin/meetings/search',{params:{keyword: keyword}}) .then((response) => { setLoaded(true); if(response.data.status_code==200){ //------------Calculate Numerator & Denominator-------------- var list = response.data.params; var arr = []; for(var i in list){ var total=0, num=0; for(var j in list[i].approval) { if(list[i].approval[j].approval_at) num ++; total ++; } arr.push({...list[i], denominator:total, numerator:num}) } setMeetingList(arr); var len = arr.length; if(len > INFINITE) setFetchMeetingList(arr.slice(0, INFINITE)); else setFetchMeetingList(arr.slice(0, len)); } }); } return (

ミーティング一覧

setKeyword(e.target.value)} />
{ !loaded && } { loaded &&
} style={{overflow:'none', position:'relative'}} > { fetch_meeting_list.length > 0 ? fetch_meeting_list.map((item, ki) =>

{ item.title }

{ item.text }

  • {item.numerator}
  • {item.denominator}
    { item.approval?.map((x, kj)=>
  • name
  • ) }
) :

データが存在していません。

} }
{ _400error && set400Error('')}>{_400error} } { _success && setSuccess('')}>{_success} }
) } export default Meeting;