diff --git a/src/api.ts b/src/api.ts index 74a9b0b..4454f41 100644 --- a/src/api.ts +++ b/src/api.ts @@ -81,6 +81,7 @@ export interface StratRequest { title: string, description: string, stratType: string, + mapId: string, } export interface MapRequest { diff --git a/src/components/StratItem.module.css b/src/components/StratItem.module.css index d6a735e..c5c7472 100644 --- a/src/components/StratItem.module.css +++ b/src/components/StratItem.module.css @@ -1,22 +1,22 @@ .layout { - display: grid; + display: flex; width: 100%; - + margin-bottom: 0.5em; } .title { font-weight: bold; - grid-column: 1; + width: 20%; } .description { - grid-column: 2; + width: 55%; } .stratType { - grid-column: 3; + width: 20%; } .deleteButton { - grid-column: 4; + width: 5%; } \ No newline at end of file diff --git a/src/components/StratItem.tsx b/src/components/StratItem.tsx index c7c1b55..b80a4fa 100644 --- a/src/components/StratItem.tsx +++ b/src/components/StratItem.tsx @@ -43,8 +43,8 @@ const StratItem: Component = (props) => { return (
navigate('/group/' + props.group.id + '/strat/' + props.strat.id)} /> - - + navigate('/group/' + props.group.id + '/strat/' + props.strat.id)} /> + navigate('/group/' + props.group.id + '/strat/' + props.strat.id)} />
diff --git a/src/pages/GroupPage.tsx b/src/pages/GroupPage.tsx index 37d20a4..3990e0e 100644 --- a/src/pages/GroupPage.tsx +++ b/src/pages/GroupPage.tsx @@ -18,15 +18,9 @@ const GroupPage: Component = () => { const [editing, setEditing] = createSignal(false); const [name, setName] = createSignal(''); - const [membersIsExpanded, setMembersIsExpanded] = createSignal(false); - const [mapsIsExpanded, setMapsIsExpanded] = createSignal(false); - const [stratsIsExpanded, setStratsIsExpanded] = createSignal(false); - const [profilesIsExpanded, setProfilesIsExpanded] = createSignal(false); - const [stratTypesIsExpanded, setStratTypesIsExpanded] = createSignal(false); - const [filters, setFilters] = createSignal({ name: "", - Map: "All", + map: "All", stratType: "All" }); @@ -74,10 +68,28 @@ const GroupPage: Component = () => { }); }; + function filterStrats(): Strat[] { + console.log("sus") + let filter = filters(); + let s = group().strats.filter(s => s.title.includes(filter.name)); + if (filter.map !== "All") { + s = s.filter(s => s.map?.id === filter.map); + console.log(s); + } + if (filter.stratType != "All") { + s = s.filter(s => s.stratType === filter.stratType); + } + console.log(s) + console.log(filter) + return s; + } + + const createStrat = async () => { const [title, setTitle] = createSignal(''); const [description, setDescription] = createSignal(''); const [stratType, setStratType] = createSignal(''); + const [map, setMap] = createSignal({} as Map) showDialog({ title: 'Add a strat to Group', @@ -92,13 +104,19 @@ const GroupPage: Component = () => { name: 'description' }], onDismiss: async () => { - const newGroup = await api().addStrat(group().id, { title: title(), description: description(), stratType: stratType() }); + const newGroup = await api().addStrat(group().id, { title: title(), description: description(), stratType: stratType(), mapId: map().id }); const strat = newGroup.strats.find(s => s.description === description() && s.title === title() && s.stratType === stratType()); navigate('/group/' + group().id + '/strat/' + strat!.id); }, - content: , + content:
+ +
, buttons: ['confirm'], }); @@ -137,10 +155,10 @@ const GroupPage: Component = () => { const handleFilters = (filter: string, val: any) => { if (val === "Add") { switch (filter) { - case "Map": + case "map": addMap(group(), (g) => setGroup(g)); break; - case "StratType": + case "stratType": addStratType(group(), (g) => setGroup(g)); default: break; @@ -167,19 +185,19 @@ const GroupPage: Component = () => {
Filter
- handleFilters(e.target.name, e.target.value)}> {group().maps.map(m => )} - handleFilters(e.target.name, e.target.value)}> {group().stratTypes.map(s => )}
- {group().strats.map(s => )} + {filterStrats().map(s => )}

Member

diff --git a/src/pages/StratPage.tsx b/src/pages/StratPage.tsx index d083e41..e7f4334 100644 --- a/src/pages/StratPage.tsx +++ b/src/pages/StratPage.tsx @@ -1,9 +1,9 @@ import styles from './StratPage.module.css' import { useNavigate, useParams } from "@solidjs/router"; import { Component, createSignal, onMount, Show } from "solid-js"; -import { api, Group, Map, PlayerType, Strat } from "../api"; +import { api, Group, Map, PlayerType, Strat, StratRequest } from "../api"; import { showDialog, showMessageDialog } from "../state"; -import { errorToString, normalize } from "../util"; +import { addMap, addStratType, errorToString, normalize } from "../util"; import { BsCheck2, BsPencil } from 'solid-icons/bs'; const StratPage: Component = () => { @@ -26,6 +26,7 @@ const StratPage: Component = () => { try { setGroup(await api().getGroup(params.groupId)); const strat = group().strats.find((s) => s.id === params.stratId); + console.log(strat) if (!strat) throw Error('strat not found'); setStrat(strat); setAttempts(strat.attempts); @@ -43,7 +44,13 @@ const StratPage: Component = () => { const updateStrat = async (newValue: Strat) => { try { - await api().updateStrat(group().id, strat().id, newValue); + var newV: StratRequest = { + description: newValue.description, + mapId: newValue.map.id, + stratType: newValue.stratType, + title: newValue.title + } + await api().updateStrat(group().id, strat().id, newV); setStrat(newValue); } catch (e) { showMessageDialog('Failed to update strat', errorToString(e)); @@ -93,16 +100,50 @@ const StratPage: Component = () => { }); }; + const handleStratType = (value: any) => { + if (value === "Add") { + addStratType(group(), (g) => setGroup(g)); + } else { + setStratType(value); + } + } + + const handleMap = (value: any) => { + if (value === "Add") { + addMap(group(), (g) => setGroup(g)); + } else { + setMap(group().maps.find(m => m.id === value)!); + } + } + return <> Loading...
}> -

setTitle(normalize(e.currentTarget.innerText, 50, true))} /> - {editing() && {title().length}/50}

- setDescription(normalize(e.currentTarget.innerText, 512, false))} /> - {editing() && {description().length}/512} +
setTitle(normalize(e.currentTarget.innerText, 50, true))} /> + {editing() && {title().length}/50} +
+ setDescription(normalize(e.currentTarget.innerText, 512, false))} /> + {editing() && {description().length}/512} +
+ {editing() ? + : {strat().stratType}} +
+ {editing() ? + : {strat().map?.name}} +
+
+ }