diff --git a/res/main.html b/res/main.html
index dd3fdbd..2aa18b5 100644
--- a/res/main.html
+++ b/res/main.html
@@ -61,6 +61,7 @@ var entry = {"content": `
The test was interesting.
Preizkus je bil zanimiv.
+ Drugi prevod.
diff --git a/res/main.less b/res/main.less
index 2daced0..f37d3d0 100644
--- a/res/main.less
+++ b/res/main.less
@@ -152,6 +152,10 @@
.example-text {
._hoverable();
}
+
+ .example-translation-list {
+ ._hoverable();
+ }
}
}
}
diff --git a/src/message/__init__.py b/src/message/__init__.py
index 46b6e16..93acfc4 100644
--- a/src/message/__init__.py
+++ b/src/message/__init__.py
@@ -1,7 +1,8 @@
from message.simple_messages import NoReset, Reset, ModalNotOkClose
from message.translation_edit import EditTranslation, MoveRight, MoveLeft, BinTranslation
-from message.show_messages import ShowMenu, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation, ShowSenseAdd, ShowExampleEdit
-from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample
+from message.show_messages import ShowMenu, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation, ShowSenseAdd, ShowExampleEdit, ShowExampleTranslationEdit
+from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample, AddExampleTranslation, EditExampleTranslation
+
from message.message import msg
diff --git a/src/message/show_messages.py b/src/message/show_messages.py
index bfc126c..9eee028 100644
--- a/src/message/show_messages.py
+++ b/src/message/show_messages.py
@@ -51,6 +51,7 @@ class ShowSenseAdd(GenericShowModal):
model.modal = lambda: modals.add_sense(NewSense())
+# I don't need GenericShowModal since there is only one comment
class ShowCommentEdit(ClickMessage):
def update_model(self, model):
model.modal_shown = True
@@ -63,6 +64,14 @@ class ShowExampleEdit(GenericShowModal):
model.modal = lambda: modals.edit_example(self.arg)
+class ShowExampleTranslationEdit(GenericShowModal):
+ def update_model(self, model):
+ super().update_model(model)
+ example = self.arg
+ example.make_copy()
+ model.modal = lambda: modals.edit_example_translation(example)
+
+
class ShowEditTranslation(GenericShowModal):
def update_model(self, model):
model.modal_shown = True
diff --git a/src/message/simple_edits.py b/src/message/simple_edits.py
index 9fe3df0..c34c5e3 100644
--- a/src/message/simple_edits.py
+++ b/src/message/simple_edits.py
@@ -32,6 +32,30 @@ class AddSenseLabel(NoReset):
def update_model(self, model):
# just adding to the copy to show in the modal
self.sense.copy().labels.append("")
+
+
+class AddExampleTranslation(NoReset):
+ def __init__(self, _, prop):
+ assert(type(prop) is Example)
+ self.example = prop
+
+ def update_model(self, model):
+ # just adding to the copy to show in the modal
+ self.example.copy().translations.append("")
+
+
+class EditExampleTranslation(Message):
+ def __init__(self, _, prop):
+ assert(type(prop) is Example)
+ self.example = prop
+
+ def update_model(self, model):
+ self.example.translations = []
+ for input_el in document.getElementsByClassName("example-translation-edit-input"):
+ new_example_translation = input_el.value
+ if new_example_translation != "":
+ self.example.translations.append(new_example_translation)
+
class AddSense(SimpleEditMessage):
diff --git a/src/modals.py b/src/modals.py
index 7945022..b1d8926 100644
--- a/src/modals.py
+++ b/src/modals.py
@@ -81,6 +81,16 @@ def edit_sense_label(sense):
return modal_template(content, "Sense", message.EditSenseLabel, 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)}}, "+"))
+ return modal_template(content, "Example Translations", message.EditExampleTranslation, example)
+
+
def add_sense(sense):
return one_question_modal("Add sense", message.AddSense, "Add sense with a label", "", sense)
diff --git a/src/model/example.py b/src/model/example.py
index a6e9865..ac759b8 100644
--- a/src/model/example.py
+++ b/src/model/example.py
@@ -1,8 +1,10 @@
-class Example:
+from model.editable import Editable
+
+class Example(Editable):
def __init__(self, example_xml):
example = example_xml.querySelector("example")
- translation = example_xml.querySelector("translationContainer translation")
-
self.example = example.textContent if example else ""
- self.translation = translation.textContent if translation else ""
+ self.translations = []
+ for translation in example_xml.querySelectorAll("translationContainer translation"):
+ self.translations.append(translation.textContent)
diff --git a/src/view.py b/src/view.py
index 6d68ef4..91f749c 100644
--- a/src/view.py
+++ b/src/view.py
@@ -56,9 +56,11 @@ class View:
h("div.example-dot", {}, "▣"),
h("div.example-rest", {}, [
h("span.example-text", {"on": {"click": msg(ShowExampleEdit, example)} }, example.example),
- h("div.example-translation", {}, [
- h("span.example-arrow", {}, "↪"),
- h("span", {}, example.translation)])])])
+ h("div.example-translation-list", { "on": {"click": msg(ShowExampleTranslationEdit, example)} }, [
+ h("div.example-translation", {}, [
+ h("span.example-arrow", {}, "↪"),
+ h("span", {}, t)])
+ for t in example.translations])])])
@staticmethod
def view_translations(translations, sense):