import React, { useRef, useEffect, useState, useContext } from 'react'; import { Link } from 'react-router-dom'; import moment from 'moment'; import { HeaderContext } from '../../context'; import Notification from '../../component/notification'; import Alert from '../../component/alert'; import PageLoader from '../../component/page_loader'; import InfiniteScroll from "react-infinite-scroll-component"; const INFINITE = 10; const SCROLL_DELAY_TIME = 1500; const ParentMeetings = () => { const { isAuthenticate } = useContext(HeaderContext); const [notice, setNotice] = useState(-1); const father_id = localStorage.getItem('father_id'); const [tab_status, setTabStatus] = useState(false); const [loaded, setLoaded] = useState(false); const [loaded1, setLoaded1] = useState(false); const [loaded2, setLoaded2] = useState(false); const [meeting_list_incomplete, setMeetingListOfIncomplete] = useState([]); const [meeting_list_complete, setMeetingListOfComplete] = useState([]); const [fetch_meeting_list_incomplete, setFetchMeetingListOfIncomplete] = useState([]); const [fetch_meeting_list_complete, setFetchMeetingListOfComplete] = useState([]); const [_success, setSuccess] = useState(''); const [_400error, set400Error] = useState(''); const isMountedRef = useRef(true); useEffect(()=>{ setLoaded(loaded1 && loaded2); },[loaded1, loaded2]) useEffect(() => { isMountedRef.current = false; if(isAuthenticate()){ setLoaded(false); axios.get('/api/fathers/meetings/listOfIncompleteOfFather', {params:{father_id: father_id}}) .then(response => { if(isMountedRef.current) return; setLoaded1(true); setNotice(response.data.notice); if(response.data.status_code==200){ var list = response.data.params; var arr = []; for(var i in list){ var total=0, num=0; for(var j in list[i].approvals) { if(list[i].approvals[j].approval_at) num ++; total ++; } arr.push({...list[i], denominator:total, numerator:num}) } setMeetingListOfIncomplete(arr); var len = arr.length; if(len > INFINITE) setFetchMeetingListOfIncomplete(arr.slice(0, INFINITE)); else setFetchMeetingListOfIncomplete(arr.slice(0, len)); } }) .catch(err=>console.log(err)); axios.get('/api/fathers/meetings/listOfCompleteOfFather', {params:{father_id: father_id}}) .then(response => { if(isMountedRef.current) return; setLoaded2(true); setNotice(response.data.notice); if(response.data.status_code==200){ var list = response.data.params; var arr = []; for(var i in list){ var total=0, num=0; for(var j in list[i].approvals) { if(list[i].approvals[j].approval_at) num ++; total ++; } arr.push({...list[i], denominator:total, numerator:num}) } setMeetingListOfComplete(arr); var len = arr.length; if(len > INFINITE) setFetchMeetingListOfComplete(arr.slice(0, INFINITE)); else setFetchMeetingListOfComplete(arr.slice(0, len)); } }) .catch(err=>console.log(err)); } return () => { isMountedRef.current = true; } },[]); const fetchMoreListNonApproval = () => { setTimeout(() => { var x = fetch_meeting_list_incomplete.length; var y = meeting_list_incomplete.length; var c = 0; if(x+INFINITE < y) c = INFINITE; else c = y - x; setFetchMeetingListOfIncomplete(meeting_list_incomplete.slice(0, x+c)); }, SCROLL_DELAY_TIME); }; const fetchMoreListApproval = () => { setTimeout(() => { var x = fetch_meeting_list_complete.length; var y = meeting_list_complete.length; var c = 0; if(x+INFINITE < y) c = INFINITE; else c = y - x; setFetchMeetingListOfComplete(meeting_list_complete.slice(0, x+c)); }, SCROLL_DELAY_TIME); }; const handleFavorite = (meetingId, currentFavorite, stateName) => { if(isAuthenticate()){ const formdata = new FormData(); formdata.append('meeting_id', meetingId); formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1); axios.post('/api/fathers/meetings/registerFavorite', formdata) if(stateName == "inCompleteOfFather") { const newList1 = meeting_list_incomplete.map((item) => { if (item.id === meetingId) { const updatedItem = { ...item, is_favorite: item.is_favorite == 1 ? 0 : 1, }; return updatedItem; } return item; }); setMeetingListOfIncomplete(newList1); setFetchMeetingListOfIncomplete(newList1.slice(0, fetch_meeting_list_incomplete.length)); } else { const newList2 = meeting_list_complete.map((item) => { if (item.id === meetingId) { const updatedItem = { ...item, is_favorite: item.is_favorite == 1 ? 0 : 1, }; return updatedItem; } return item; }); setMeetingListOfComplete(newList2); setFetchMeetingListOfComplete(newList2.slice(0, fetch_meeting_list_complete.length)); } } }; return (

ミーティング一覧

ミーティングを追加
{ !loaded && } { loaded &&
{ !tab_status &&
} style={{overflow:'none', position:'relative'}} > { fetch_meeting_list_incomplete.length > 0 ? fetch_meeting_list_incomplete?.map((item, id) =>

{ item.title }

{ item.text }

  • {item.numerator}
  • {item.denominator}
    { item.approvals?.map((v, inx1) => { if(v.approval_at) return(
  • name
  • ) }) }
) :

データはありません。

}
} { tab_status &&
} style={{overflow:'none', position:'relative'}} > { fetch_meeting_list_complete.length > 0 ? fetch_meeting_list_complete?.map((item, id) =>

{ item.title }

{ item.text }

  • {item.numerator}
  • {item.denominator}
    { item.approvals?.map((v, inx1) => { if(v.approval_at) return(
  • name
  • ) }) }
) :

データはありません。

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