+const MAX_PROMPT_ITEMS = 20;
+
function undisplay(element) {
element.style.display="none";
}
const category_input = this.category.current;
const category = category_input.value;
- if (/[0-9]/.test(category))
- category_input.setCustomValidity("");
+ const match = category.match(/[0-9]+/);
+ if (match) {
+ const num_items = parseInt(match[0], 10);
+ if (num_items <= MAX_PROMPT_ITEMS)
+ category_input.setCustomValidity("");
+ }
}
- handle_submit(event) {
+ async handle_submit(event) {
const form = event.currentTarget;
const category_input = this.category.current;
const category = category_input.value;
return;
}
- fetch_post_json("prompts", {
- items: parseInt(match[0], 10),
+ const num_items = parseInt(match[0], 10);
+
+ if (num_items > MAX_PROMPT_ITEMS) {
+ category_input.setCustomValidity(`Maximum number of items is ${MAX_PROMPT_ITEMS}`);
+ form.reportValidity();
+ return;
+ }
+
+ const response = await fetch_post_json("prompts", {
+ items: num_items,
prompt: category
});
+ if (response.status === 200) {
+ const result = await response.json();
+ console.log(result);
+ if (! result.valid) {
+ add_message("danger", result.message);
+ return;
+ }
+ } else {
+ add_message("danger", "An error occurred submitting your category");
+ }
+
form.reset();
}
}
async handle_submit() {
- const response = await fetch_post_json(`judging/${this.props.prompt.id}`,
- this.state.word_groups);
+ const response = await fetch_post_json(
+ `judging/${this.props.prompt.id}`,{
+ word_groups: this.state.word_groups
+ }
+ );
if (response.status === 200) {
const result = await response.json();
{state.scores.words.map(word => {
return (
<li key={word.word}>
- {word.word}:
- {word.players.map(p => {
- return (
- <span key={p}>{p}{" "}</span>
- );
- })}
+ {`${word.word}: ${word.players.join(', ')}`}
</li>
);
})}