p_accountではミーティング検索の完了画面

このコミットが含まれているのは:
トランギャー 2021-10-08 15:50:18 +07:00
コミット cce08e030b
2個のファイルの変更81行の追加44行の削除

ファイルの表示

@ -331,7 +331,7 @@ class MeetingsController extends Controller {
$result[] = $l;
$result[$i]['meeting_image'] = MeetingImage::select($meeting_images_select)->where('meeting_id', $l['id'])->get();
$result[$i]['meeting_approvals'] = MeetingApprovals::select($meeting_approvals_select)->where('meeting_id', $l['id'])->whereNull('approval_at')->get();
$result[$i]['total'] = MeetingApprovals::where('meeting_id', $l['id'])->count();
foreach ($result[$i]['meeting_approvals'] as $ii => $ra) {
$result[$i]['meeting_approvals'][$ii]['child'] = Child::select($child_select)->where('id', $result[$i]['meeting_approvals'][$ii]['child_id'])->first();
}
@ -350,7 +350,7 @@ class MeetingsController extends Controller {
}
$result = [];
$meeting_select = ['id', 'father_id', 'title', 'text', 'memo', 'updated_at'];
$meeting_select = ['id', 'father_id', 'title', 'text', 'memo', 'updated_at', 'is_favorite'];
$meeting_images_select = ['image'];
$meeting_approvals_select = ['approval_at', 'child_id'];
$child_select = ['image'];
@ -361,6 +361,7 @@ class MeetingsController extends Controller {
$result[] = $l;
$result[$i]['meeting_image'] = MeetingImage::select($meeting_images_select)->where('meeting_id', $l['id'])->get();
$result[$i]['meeting_approvals'] = MeetingApprovals::select($meeting_approvals_select)->where('meeting_id', $l['id'])->whereNotNull('approval_at')->get();
$result[$i]['total'] = MeetingApprovals::where('meeting_id', $l['id'])->count();
foreach ($result[$i]['meeting_approvals'] as $ii => $ra) {
$result[$i]['meeting_approvals'][$ii]['child'] = Child::select($child_select)->where('id', $result[$i]['meeting_approvals'][$ii]['child_id'])->first();
@ -380,7 +381,7 @@ class MeetingsController extends Controller {
}
$result = [];
$meeting_select = ['id', 'father_id', 'title', 'text', 'memo', 'pdf', 'updated_at'];
$meeting_select = ['id', 'father_id', 'title', 'text', 'memo', 'pdf', 'updated_at', 'is_favorite'];
$meeting_images_select = ['image'];
$meeting_approvals_select = ['approval_at', 'child_id'];
$child_select = ['image'];

ファイルの表示

@ -10,6 +10,7 @@ const Search = () => {
const [loading, setLoading] = useState(false);
const [keyword, setKeyword] = useState('');
const [finish, setFinish] = useState(false);
const fatherId = document.getElementById('father_id').value;
const [completeOfFather, setCompleteOfFather ] = useState(null);
const [inCompleteOfFather, setInCompleteOfFather ] = useState(null);
@ -24,46 +25,71 @@ const Search = () => {
// });
// }, []);
// useEffect(() => {
// axios.get('/api/meetings/searchOfIncompleteOfFather', {params: { father_id: 1, keyword: '' }}).then((response) => {
// if(response.data.status_code==200){
// console.log(response.data.params);
// setInCompleteOfFather(response.data.params);
// } else if(response.data.status_code==400){
// //TODO
// }
// setLoading(false);
// });
// }, []);
async function search() {
setLoading(true);
finish
? axios.get('/api/meetings/searchOfCompleteOfFather', {params: { father_id: 1, keyword: keyword }}).then((response) => {
if(response.data.status_code==200){
console.log(response.data.params);
setCompleteOfFather(response.data.params);
} else if(response.data.status_code==400){
//TODO
}
setLoading(false);
? axios.get('/api/meetings/searchOfCompleteOfFather', {params: { father_id: fatherId, keyword: keyword }})
.then((response) => {
if(response.data.status_code==200){
console.log(response.data.params);
setCompleteOfFather(response.data.params);
} else if(response.data.status_code==400){
//TODO
}
setLoading(false);
})
: axios.get('/api/meetings/searchOfIncompleteOfFather', {params: { father_id: 1, keyword: keyword }}).then((response) => {
if(response.data.status_code==200){
console.log(response.data.params);
setInCompleteOfFather(response.data.params);
} else if(response.data.status_code==400){
//TODO
}
setLoading(false);
: axios.get('/api/meetings/searchOfIncompleteOfFather', {params: { father_id: fatherId, keyword: keyword }})
.then((response) => {
if(response.data.status_code==200){
console.log(response.data.params);
setInCompleteOfFather(response.data.params);
} else if(response.data.status_code==400){
//TODO
}
setLoading(false);
});
};
async function handleFavorite(meetingId, currentFavorite, stateName) {
const formdata = new FormData();
formdata.append('meeting_id', meetingId);
formdata.append('is_favorite', currentFavorite == 1 ? 0 : 1);
axios.post('/api/meetings/registerFavorite', formdata).then((response) => {})
if(stateName == "inCompleteOfFather") {
const newList = inCompleteOfFather.map((item) => {
if (item.id === meetingId) {
const updatedItem = {
...item,
is_favorite: currentFavorite == 1 ? 0 : 1,
};
return updatedItem;
}
return item;
});
setInCompleteOfFather(newList);
} else {
const newList = completeOfFather.map((item) => {
if (item.id === meetingId) {
const updatedItem = {
...item,
is_favorite: currentFavorite == 1 ? 0 : 1,
};
return updatedItem;
}
return item;
});
setCompleteOfFather(newList);
}
};
return (
<div className="l-content">
<div className="l-content__ttl">
<div className="l-content__ttl__left">
<h2>検索</h2>
<h2>ミーティング検索</h2>
</div>
<Notification/>
</div>
@ -104,8 +130,8 @@ const Search = () => {
</div>
<div className="meeting-content">
<div className={ `meeting-content-wrap ${!finish ? "is-active" : ""}` } id="item01">
{ !loading ? inCompleteOfFather?.map((item, index) => {
<div className={ `meeting-content-wrap ${!finish ? "is-active" : ""}` } id="item01">
{ !loading ? inCompleteOfFather?.map((item, index) => {
return (
<div className="meeting-item">
<a
@ -126,15 +152,15 @@ const Search = () => {
<div className="meeting-member-wrap">
<div data-url="login.html" className="meeting-member-link">
<ul className="meeting-member-count">
<li className="numerator">3</li>
<li className="denominator">4</li>
<li className="numerator">{item?.meeting_approvals.length}</li>
<li className="denominator">{item?.total}</li>
</ul>
<ul className="meeting-member-list" role="list">
{ item?.meeting_image.map((v, inx) => {
{ item?.meeting_approvals.map((v, inx) => {
return (<li className="meeting-member__item" role="listitem">
<div className="avatar">
<img alt="name" className="avatar-img" src={v.image} />
<img alt="name" className="avatar-img" src={v?.child.image} />
</div>
</li>);
}) }
@ -143,7 +169,12 @@ const Search = () => {
</div>
</div>
</a>
<button type="button" aria-label="お気に入り" data-tooltip="お気に入り" aria-pressed="false" className="icon a-icon like-icon icon-star a-icon-size_medium"></button>
<button type="button" aria-label="お気に入り" data-tooltip="お気に入り" aria-pressed="false"
onClick={e => {
e.preventDefault();
handleFavorite(item.id, item.is_favorite, 'inCompleteOfFather');
}}
className={`icon a-icon like-icon ${item.is_favorite == 1 ? "icon-starFill" : "icon-star"} a-icon-size_medium`}></button>
</div>
);
}) : <CircularProgress /> }
@ -171,15 +202,15 @@ const Search = () => {
<div className="meeting-member-wrap">
<div data-url="login.html" className="meeting-member-link">
<ul className="meeting-member-count">
<li className="numerator">3</li>
<li className="denominator">4</li>
<li className="numerator">{item?.meeting_approvals.length}</li>
<li className="denominator">{item?.total}</li>
</ul>
<ul className="meeting-member-list" role="list">
{ item?.meeting_image.map((v, inx2) => {
{ item?.meeting_approvals.map((v, inx2) => {
return (<li className="meeting-member__item" role="listitem">
<div className="avatar">
<img alt="name" className="avatar-img" src={v.image} />
<img alt="name" className="avatar-img" src={v?.child.image} />
</div>
</li>);
}) }
@ -188,7 +219,12 @@ const Search = () => {
</div>
</div>
</a>
<button type="button" aria-label="お気に入り" data-tooltip="お気に入り" aria-pressed="false" className="icon a-icon like-icon icon-star a-icon-size_medium"></button>
<button type="button" aria-label="お気に入り" data-tooltip="お気に入り" aria-pressed="false"
onClick={e => {
e.preventDefault();
handleFavorite(item.id, item.is_favorite, 'completeOfFather');
}}
className={`icon a-icon like-icon ${item.is_favorite == 1 ? "icon-starFill" : "icon-star"} a-icon-size_medium`}></button>
</div>
);
}) }