From 5924096e0f9637e6c9740ccd647e30855b984737 Mon Sep 17 00:00:00 2001 From: viktorstrate Date: Mon, 22 Feb 2021 19:11:48 +0100 Subject: [PATCH] Add UI for detaching faces from face group --- .../SingleFaceGroup/DetachImageFacesModal.js | 96 +++++++++++++++++++ .../SingleFaceGroup/FaceGroupTitle.js | 9 +- 2 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 ui/src/Pages/PeoplePage/SingleFaceGroup/DetachImageFacesModal.js diff --git a/ui/src/Pages/PeoplePage/SingleFaceGroup/DetachImageFacesModal.js b/ui/src/Pages/PeoplePage/SingleFaceGroup/DetachImageFacesModal.js new file mode 100644 index 00000000..7a53d872 --- /dev/null +++ b/ui/src/Pages/PeoplePage/SingleFaceGroup/DetachImageFacesModal.js @@ -0,0 +1,96 @@ +import { gql, useMutation } from '@apollo/client' +import PropTypes from 'prop-types' +import React, { useEffect, useState } from 'react' +import { useHistory } from 'react-router-dom' +import { Button, Modal } from 'semantic-ui-react' +import { MY_FACES_QUERY } from '../PeoplePage' +import SelectImageFacesTable from './SelectImageFacesTable' + +const DETACH_IMAGE_FACES_MUTATION = gql` + mutation detachImageFaces($faceIDs: [ID!]!) { + detachImageFaces(imageFaceIDs: $faceIDs) { + id + label + } + } +` + +const DetachImageFacesModal = ({ open, setOpen, faceGroup }) => { + const [selectedImageFaces, setSelectedImageFaces] = useState([]) + let history = useHistory() + + const [detachImageFacesMutation] = useMutation(DETACH_IMAGE_FACES_MUTATION, { + variables: {}, + refetchQueries: [ + { + query: MY_FACES_QUERY, + }, + ], + }) + + useEffect(() => { + if (!open) { + setSelectedImageFaces([]) + } + }, [open]) + + if (open == false) return null + + const detachImageFaces = () => { + const faceIDs = selectedImageFaces.map(face => face.id) + + detachImageFacesMutation({ + variables: { + faceIDs, + }, + }).then(({ data }) => { + setOpen(false) + history.push(`/people/${data.detachImageFaces.id}`) + }) + } + + const imageFaces = faceGroup?.imageFaces ?? [] + + return ( + setOpen(false)} + onOpen={() => setOpen(true)} + open={open} + > + Detach Image Faces + + +

+ Detach selected images of this face group and move them to a new + face group +

+ +
+
+ + +