From 0dc849af660d0b5ca1c5d3cb8fe1f3cc1d62b04d Mon Sep 17 00:00:00 2001 From: Ozbolt Menegatti Date: Tue, 14 Jan 2020 21:57:11 +0100 Subject: [PATCH] On choosing examples, now radio buttons --- src/message/simple_edits.py | 12 +++++++++++- src/view/modal_templates.py | 10 +++++++--- src/view/modals.py | 16 ++++++++-------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/message/simple_edits.py b/src/message/simple_edits.py index 08a3f7d..0e66820 100644 --- a/src/message/simple_edits.py +++ b/src/message/simple_edits.py @@ -72,7 +72,17 @@ class EditExample(QuestionMessage): class DoChosenExamples(Message): def update_model(self, model): chosen_examples = self.get_arg(0, list) - selected = document.getElementById("chosen-examples-select").selectedIndex + + inputs = document.getElementsByClassName("checkable-input") + selected = None + for idx, el in enumerate(inputs): + if el.checked: + selected = idx + break + + # none was selected + if selected is None: + return # first, remove the selected examples from wherever they were for sense in model.entry.senses: diff --git a/src/view/modal_templates.py b/src/view/modal_templates.py index 4bb6e89..17a6b1e 100644 --- a/src/view/modal_templates.py +++ b/src/view/modal_templates.py @@ -5,14 +5,18 @@ from browser import document def modal_template(content, title, msg): reset = message.msg(message.ModalNotOkClose()) + + footer = [] + if msg is not None: + footer.append(h("a#modal-ok.button", {"on": {"click": message.msg(msg)}}, "OK")) + footer.append(h("label.button.dangerous", {"on": {"click": reset}}, "Cancel")) + return [ h("header", {}, [ h("h3", {}, title), h("label.close", {"on": {"click": reset}}, "×")]), h("section.content", {}, content ), - h("footer", {}, [ - h("a.button", {"on": {"click": message.msg(msg)}}, "OK"), - h("label.button.dangerous", {"on": {"click": reset}}, "Cancel")])] + h("footer", {}, footer)] def question(question, current_value): diff --git a/src/view/modals.py b/src/view/modals.py index 4fb1d03..088ac0c 100644 --- a/src/view/modals.py +++ b/src/view/modals.py @@ -59,14 +59,14 @@ def edit_example(example): def do_chosen_examples(example_list, entry): - options = [] + options = [h("p", {}, "Choose sense for examples")] for idx, sense in enumerate(entry.senses): text = "{}: {}".format(idx, sense.definition["indicator"]) - options.append(h("option", {}, text)) + id_ = "choose-example-{}".format(idx) - content = [ - h("span", {}, "Choose sense for examples"), - h("label", {}, [ - h("select#chosen-examples-select", {}, options)])] - - return modal_template(content, "Examples picker", message.DoChosenExamples(example_list)) + options.append(h("input#{}.checkable-input".format(id_), + {"props": {"type": "radio", "name": "choose-example"}}, [])) + options.append(h("label.checkable", {"attrs": {"for": id_}}, text)) + options.append(h("br", {}, [])) + + return modal_template(options, "Examples picker", message.DoChosenExamples(example_list))