diff --git a/src/message/show_messages.py b/src/message/show_messages.py index 9eee028..6345208 100644 --- a/src/message/show_messages.py +++ b/src/message/show_messages.py @@ -2,7 +2,7 @@ from message.message import Message, ClickMessage from message.translation_edit import AddTranslation ,EditTranslation from model.sense import NewSense -import modals +from view import modals class GenericShowModal(ClickMessage): diff --git a/src/message/simple_edits.py b/src/message/simple_edits.py index c34c5e3..5d7bf0d 100644 --- a/src/message/simple_edits.py +++ b/src/message/simple_edits.py @@ -51,7 +51,7 @@ class EditExampleTranslation(Message): def update_model(self, model): self.example.translations = [] - for input_el in document.getElementsByClassName("example-translation-edit-input"): + for input_el in document.getElementsByClassName("list-adder-input"): new_example_translation = input_el.value if new_example_translation != "": self.example.translations.append(new_example_translation) diff --git a/src/message/simple_messages.py b/src/message/simple_messages.py index 809474e..f07e41d 100644 --- a/src/message/simple_messages.py +++ b/src/message/simple_messages.py @@ -1,6 +1,5 @@ from message.message import Message, ClickMessage, msg from browser import window -import modals class Reset(ClickMessage): diff --git a/src/view/__init__.py b/src/view/__init__.py new file mode 100644 index 0000000..9ec756c --- /dev/null +++ b/src/view/__init__.py @@ -0,0 +1,2 @@ +import view.modals +from view.view import View diff --git a/src/view/modal_templates.py b/src/view/modal_templates.py new file mode 100644 index 0000000..4fefdf0 --- /dev/null +++ b/src/view/modal_templates.py @@ -0,0 +1,30 @@ +import message +from lib.snabbdom import h + +def modal_template(content, title, msg, prop): + reset = message.msg(message.ModalNotOkClose) + 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, prop)}}, "OK"), + h("label.button.dangerous", {"on": {"click": reset}}, "Cancel")])] + + +def one_question_modal(title, msg, question, current_value, prop): + content = [ + h("span", {}, question), + h("label", {}, [ + h("input#modal-input", {"props": {"type": "text", "value": current_value}}, "")])] + return modal_template(content, title, msg, prop) + + +def list_adder(title, element_list_getter, add_click_message): + content = [h("span", {}, title)] + for slabel in element_list_getter(): + content.append(h("label", {}, [ + h("input.list-adder-input", {"props": {"type": "text", "value": slabel}}, "")])) + content.append(h("button", {"on": {"click": add_click_message}}, "+")) + return content diff --git a/src/modals.py b/src/view/modals.py similarity index 73% rename from src/modals.py rename to src/view/modals.py index b1d8926..8f5d042 100644 --- a/src/modals.py +++ b/src/view/modals.py @@ -1,27 +1,7 @@ from lib.snabbdom import h import message -from browser import document from model.translation import TAGS - - -def modal_template(content, title, msg, prop): - reset = message.msg(message.ModalNotOkClose) - 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, prop)}}, "OK"), - h("label.button.dangerous", {"on": {"click": reset}}, "Cancel")])] - - -def one_question_modal(title, msg, question, current_value, prop): - content = [ - h("span", {}, question), - h("label", {}, [ - h("input#modal-input", {"props": {"type": "text", "value": current_value}}, "")])] - return modal_template(content, title, msg, prop) +from view.modal_templates import * def edit_translation(translation, cluster_idx, num_clusters, cls, prop): @@ -82,12 +62,8 @@ def edit_sense_label(sense): def edit_example_translation(example): - content = [h("span", {}, "Edit example translations")] - for slabel in example.copy().translations: - content.append(h("label", {}, [ - h("input.example-translation-edit-input", {"props": {"type": "text", "value": slabel}}, "")])) - - content.append(h("button", {"on": {"click": message.msg(message.AddExampleTranslation, example)}}, "+")) + etl_getter = lambda: example.copy().translations + content = list_adder("Edit example translations", etl_getter, message.msg(message.AddExampleTranslation, example)) return modal_template(content, "Example Translations", message.EditExampleTranslation, example) diff --git a/src/view.py b/src/view/view.py similarity index 100% rename from src/view.py rename to src/view/view.py