// Dependencies
import { cloudflareImageUrl, nsMerge } from 'shared/utils.mjs'
// Context
import { LoadingStatusContext } from 'shared/context/loading-status-context.mjs'
// Hooks
import { useTranslation } from 'next-i18next'
import { useEffect, useState, useContext } from 'react'
import { useBackend } from 'shared/hooks/use-backend.mjs'
import { useRouter } from 'next/router'
// Components
import { AuthWrapper } from 'shared/components/wrappers/auth/index.mjs'
import { Loading } from 'shared/components/spinner.mjs'
import { DisplayRow } from 'shared/components/account/shared.mjs'
import { PageLink } from 'shared/components/link.mjs'
import Markdown from 'react-markdown'
import { Error404, ns as errNs } from 'shared/components/errors/404.mjs'
import { TrashIcon } from 'shared/components/icons.mjs'
import { Popout } from 'shared/components/popout/index.mjs'
export const ns = nsMerge('account', 'submissions', errNs)
export const CsetSubmissions = () => {
const { t } = useTranslation(ns)
const { setLoadingStatus, LoadingProgress } = useContext(LoadingStatusContext)
const backend = useBackend()
const [suggested, setSuggested] = useState([])
const [selected, setSelected] = useState({})
const [refresh, setRefresh] = useState(0)
useEffect(() => {
const loadSuggestedSets = async () => {
setLoadingStatus([true, 'status:loadingData'])
const result = await backend.getSuggestedSets()
if (result.success) {
setLoadingStatus([true, 'status:dataLoaded', true, true])
setSuggested(result.data.suggested)
} else setLoadingStatus([true, 'status:backendError', true, false])
}
loadSuggestedSets()
}, [refresh])
// Helper var to see how many are selected
const selCount = Object.keys(selected).length
// Helper method to toggle single selection
const toggleSelect = (id) => {
const newSelected = { ...selected }
if (newSelected[id]) delete newSelected[id]
else newSelected[id] = 1
setSelected(newSelected)
}
// Helper method to toggle select all
const toggleSelectAll = () => {
if (selCount === suggested.length) setSelected({})
else {
const newSelected = {}
for (const sug of suggested) newSelected[sug.id] = 1
setSelected(newSelected)
}
}
// Helper to delete one or more apikeys
const removeSelectedSuggestions = async () => {
let i = 0
for (const key in selected) {
i++
await backend.removeSuggestedMeasurementsSet(key)
setLoadingStatus([
true,
There are no suggested measurements sets
{t('curate:img')} | {t('curate:name')} | {t('curate:user')} | {t('curate:set')} | {t('curate:height')} | {t('curate:createdAt')} | |
---|---|---|---|---|---|---|
toggleSelect(sug.id)} /> |
|
|
|
|
{sug.data.height} |