-
-
-
- {list.length} / {curatedSets.length}
-
-
-
- {filter.map((tag) => (
-
removeFilter(tag)} color="success" hoverColor="error" key={tag}>
- {tag}
-
- ))}
-
-
@@ -224,6 +235,131 @@ export const CuratedSets = ({ href = false }) => {
)
}
+// Component for the maintaining the list of curated-sets
+export const CuratedSetsList = ({ href = false }) => {
+ // Hooks
+ const { t } = useTranslation(ns)
+ const backend = useBackend()
+ const { setLoadingStatus, LoadingProgress } = useContext(LoadingStatusContext)
+ const [refresh, setRefresh] = useState(0)
+
+ // State
+ const [sets, setSets] = useState([])
+ const [selected, setSelected] = useState(false)
+
+ // Effects
+ useEffect(() => {
+ const getSets = async () => {
+ setLoadingStatus([true, 'contactingBackend'])
+ const result = await backend.getCuratedSets()
+ if (result.success) {
+ const allSets = []
+ for (const set of result.data.curatedSets) allSets.push(set)
+ setSets(allSets)
+ setLoadingStatus([true, 'status:dataLoaded', true, true])
+ } else setLoadingStatus([true, 'status:backendError', true, false])
+ }
+ getSets()
+ }, [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 === selected.length) setSelected({})
+ else {
+ const newSelected = {}
+ for (const set of selected) newSelected[set.id] = 1
+ setSelected(newSelected)
+ }
+ }
+
+ // Helper to delete one or more sets
+ const removeSelected = async () => {
+ let i = 0
+ for (const key in selected) {
+ i++
+ await backend.removeCuratedMeasurementsSet(key)
+ setLoadingStatus([
+ true,
+
,
+ ])
+ }
+ setSelected({})
+ setRefresh(refresh + 1)
+ setLoadingStatus([true, 'nailedIt', true, true])
+ }
+
+ const lineupProps = {
+ sets: Object.values(sets),
+ }
+ if (typeof href === 'function') lineupProps.href = href
+ else lineupProps.onClick = setSelected
+
+ return (
+
+ {selCount ? (
+
+ ) : null}
+
+
+
+ )
+}
+
export const EditCuratedSet = ({ id }) => {
// Hooks
const { account } = useAccount()
diff --git a/sites/shared/components/workbench/views/measies/index.mjs b/sites/shared/components/workbench/views/measies/index.mjs
index aba05b62da0..9cd7ef2a8ad 100644
--- a/sites/shared/components/workbench/views/measies/index.mjs
+++ b/sites/shared/components/workbench/views/measies/index.mjs
@@ -9,9 +9,9 @@ import { useTranslation } from 'next-i18next'
import {
UserSetPicker,
BookmarkedSetPicker,
- CuratedSetPicker,
ns as setsNs,
} from 'shared/components/account/sets.mjs'
+import { CuratedSetPicker } from 'shared/components/curated-sets.mjs'
import { MeasiesEditor } from './editor.mjs'
import { Popout } from 'shared/components/popout/index.mjs'
import { Accordion } from 'shared/components/accordion.mjs'