import {Select, createOptions, createAsyncOptions} from "@thisbeyond/solid-select"; import {Api, SteamUser} from "./api"; import {createEffect, createSignal} from "solid-js"; export interface FilterBarProps { maps: string[], api: Api, initialFilter: FilterSet, onChange: (FilterSet) => void, } export const FilterBar = ({maps, api, onChange, initialFilter}: FilterBarProps) => { const modes = createOptions(["4v4", "6v6", "Highlander"]); const mapOptions = createOptions(maps, { createable: true }); const playerOptions = createAsyncOptions(search => api.searchPlayer(search)); const playerFormat = player => player.name; const [initialMode, setInitialMode] = createSignal(initialFilter.mode, {equals: false}); const [initialMap, setInitialMap] = createSignal(initialFilter.map, {equals: false}); const [filterSet, setFilterSet] = createSignal(initialFilter); createEffect(() => onChange(filterSet())); return
; } export const Reset = ({reset}) => { return ; } export interface FilterSet { mode: string, map: string, players: SteamUser[], uploader: string, } export function queryForFilter(filter: FilterSet): URLSearchParams { let queryParams = new URLSearchParams({ players: filter.players.map(player => player.steamid).join(','), mode: (filter.mode || "").toLowerCase(), map: filter.map || "", }); if (filter.uploader) { queryParams.set("uploader", filter.uploader); } return queryParams; }