Editing explanation and examples, adding senses
This commit is contained in:
parent
78a80c03a7
commit
f0f95b16c0
|
@ -1,7 +1,7 @@
|
||||||
from message.simple_messages import NoReset, Reset, ModalNotOkClose
|
from message.simple_messages import NoReset, Reset, ModalNotOkClose
|
||||||
from message.translation_edit import EditTranslation, MoveRight, MoveLeft, BinTranslation
|
from message.translation_edit import EditTranslation, MoveRight, MoveLeft, BinTranslation
|
||||||
from message.show_messages import ShowMenu, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation
|
from message.show_messages import ShowMenu, ShowEditTranslation, ShowSenseLabelEdit, ShowSenseDefinitionEdit, ShowCommentEdit, ShowAddTranslation, ShowSenseAdd, ShowExampleEdit
|
||||||
from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel
|
from message.simple_edits import EditSenseLabel, EditSenseDefinition, EditComment, AddSenseLabel, AddSense, EditExample
|
||||||
from message.message import msg
|
from message.message import msg
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from message.message import Message, ClickMessage
|
from message.message import Message, ClickMessage
|
||||||
from message.translation_edit import AddTranslation ,EditTranslation
|
from message.translation_edit import AddTranslation ,EditTranslation
|
||||||
|
|
||||||
|
from model.sense import NewSense
|
||||||
import modals
|
import modals
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,7 +17,10 @@ class GenericShowModal(ClickMessage):
|
||||||
class ShowMenu(ClickMessage):
|
class ShowMenu(ClickMessage):
|
||||||
def __init__(self, event, translation):
|
def __init__(self, event, translation):
|
||||||
super().__init__(event)
|
super().__init__(event)
|
||||||
self.menu_location = (event.layerX, event.layerY)
|
location_x = event.currentTarget.offsetLeft
|
||||||
|
location_y = event.currentTarget.offsetTop + event.currentTarget.offsetHeight
|
||||||
|
self.menu_location = (location_x, location_y)
|
||||||
|
console.log(self.menu_location, event.currentTarget)
|
||||||
self.translation = translation
|
self.translation = translation
|
||||||
|
|
||||||
def update_model(self, model):
|
def update_model(self, model):
|
||||||
|
@ -39,6 +43,12 @@ class ShowSenseDefinitionEdit(GenericShowModal):
|
||||||
super().update_model(model)
|
super().update_model(model)
|
||||||
model.sense = self.arg
|
model.sense = self.arg
|
||||||
model.modal = lambda: modals.edit_sense_definition(self.arg)
|
model.modal = lambda: modals.edit_sense_definition(self.arg)
|
||||||
|
|
||||||
|
|
||||||
|
class ShowSenseAdd(GenericShowModal):
|
||||||
|
def update_model(self, model):
|
||||||
|
super().update_model(model)
|
||||||
|
model.modal = lambda: modals.add_sense(NewSense())
|
||||||
|
|
||||||
|
|
||||||
class ShowCommentEdit(ClickMessage):
|
class ShowCommentEdit(ClickMessage):
|
||||||
|
@ -47,6 +57,12 @@ class ShowCommentEdit(ClickMessage):
|
||||||
model.modal = lambda: modals.edit_comment(model.entry.comment)
|
model.modal = lambda: modals.edit_comment(model.entry.comment)
|
||||||
|
|
||||||
|
|
||||||
|
class ShowExampleEdit(GenericShowModal):
|
||||||
|
def update_model(self, model):
|
||||||
|
super().update_model(model)
|
||||||
|
model.modal = lambda: modals.edit_example(self.arg)
|
||||||
|
|
||||||
|
|
||||||
class ShowEditTranslation(GenericShowModal):
|
class ShowEditTranslation(GenericShowModal):
|
||||||
def update_model(self, model):
|
def update_model(self, model):
|
||||||
model.modal_shown = True
|
model.modal_shown = True
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from message.message import Message
|
from message.message import Message
|
||||||
from message.simple_messages import NoReset
|
from message.simple_messages import NoReset
|
||||||
from browser import document
|
from browser import document
|
||||||
from model import Sense
|
from model import Sense, Example
|
||||||
|
|
||||||
|
|
||||||
class SimpleEditMessage(Message):
|
class SimpleEditMessage(Message):
|
||||||
|
@ -32,6 +32,13 @@ class AddSenseLabel(NoReset):
|
||||||
def update_model(self, model):
|
def update_model(self, model):
|
||||||
# just adding to the copy to show in the modal
|
# just adding to the copy to show in the modal
|
||||||
self.sense.copy().labels.append("")
|
self.sense.copy().labels.append("")
|
||||||
|
|
||||||
|
|
||||||
|
class AddSense(SimpleEditMessage):
|
||||||
|
def update_model(self, model):
|
||||||
|
sense = self.prop
|
||||||
|
sense.labels = [self.new_text]
|
||||||
|
model.entry.senses.append(sense)
|
||||||
|
|
||||||
|
|
||||||
class EditSenseDefinition(SimpleEditMessage):
|
class EditSenseDefinition(SimpleEditMessage):
|
||||||
|
@ -44,3 +51,11 @@ class EditSenseDefinition(SimpleEditMessage):
|
||||||
class EditComment(SimpleEditMessage):
|
class EditComment(SimpleEditMessage):
|
||||||
def update_model(self, model):
|
def update_model(self, model):
|
||||||
model.entry.comment = self.new_text
|
model.entry.comment = self.new_text
|
||||||
|
|
||||||
|
|
||||||
|
class EditExample(SimpleEditMessage):
|
||||||
|
def update_model(self, model):
|
||||||
|
example = self.prop
|
||||||
|
assert(type(example) is Example)
|
||||||
|
example.example = self.new_text
|
||||||
|
|
||||||
|
|
|
@ -22,10 +22,11 @@ class EditTranslation(TranslationActionMessage):
|
||||||
self.translation, self.old_cluster_idx = prop
|
self.translation, self.old_cluster_idx = prop
|
||||||
|
|
||||||
def update_model(self, model):
|
def update_model(self, model):
|
||||||
self.translation.translation = document.getElementById("etv").value;
|
self.translation.translation = document.getElementById("etv").value
|
||||||
|
self.translation.explanation = document.getElementById("ete").value
|
||||||
for tag in TAGS.keys():
|
for tag in TAGS.keys():
|
||||||
select = document.getElementById("{}-s".format(tag));
|
select = document.getElementById("{}-s".format(tag))
|
||||||
other = document.getElementById("{}-o".format(tag));
|
other = document.getElementById("{}-o".format(tag))
|
||||||
|
|
||||||
if other.value:
|
if other.value:
|
||||||
self.translation.tags[tag] = other.value
|
self.translation.tags[tag] = other.value
|
||||||
|
@ -35,7 +36,7 @@ class EditTranslation(TranslationActionMessage):
|
||||||
if tag in self.translation.tags:
|
if tag in self.translation.tags:
|
||||||
del self.translation.tags[tag]
|
del self.translation.tags[tag]
|
||||||
|
|
||||||
new_cluster_idx = int(document.getElementById("cluster-num").value) - 1;
|
new_cluster_idx = int(document.getElementById("cluster-num").value) - 1
|
||||||
self.handle_cluster_change(new_cluster_idx, model)
|
self.handle_cluster_change(new_cluster_idx, model)
|
||||||
|
|
||||||
def handle_cluster_change(self, new_cluster_idx, model):
|
def handle_cluster_change(self, new_cluster_idx, model):
|
||||||
|
|
|
@ -53,7 +53,9 @@ def edit_translation(translation, cluster_idx, num_clusters, cls, prop):
|
||||||
|
|
||||||
# first line: transalation itself
|
# first line: transalation itself
|
||||||
content = [split_line2("Prevedek:",
|
content = [split_line2("Prevedek:",
|
||||||
h("input#etv", {"props": {"type": "text", "value": translation.translation}}, ""))]
|
h("input#etv", {"props": {"type": "text", "value": translation.translation}}, "")),
|
||||||
|
split_line2("Razlaga:",
|
||||||
|
h("input#ete", {"props": {"type": "text", "value": translation.explanation}}, ""))]
|
||||||
|
|
||||||
# cluster number
|
# cluster number
|
||||||
options = [h("option", {"props": {"selected": idx == cluster_idx}}, str(idx + 1)) for idx in range(num_clusters + 1)]
|
options = [h("option", {"props": {"selected": idx == cluster_idx}}, str(idx + 1)) for idx in range(num_clusters + 1)]
|
||||||
|
@ -79,9 +81,17 @@ def edit_sense_label(sense):
|
||||||
return modal_template(content, "Sense", message.EditSenseLabel, sense)
|
return modal_template(content, "Sense", message.EditSenseLabel, sense)
|
||||||
|
|
||||||
|
|
||||||
|
def add_sense(sense):
|
||||||
|
return one_question_modal("Add sense", message.AddSense, "Add sense with a label", "", sense)
|
||||||
|
|
||||||
|
|
||||||
def edit_sense_definition(sense):
|
def edit_sense_definition(sense):
|
||||||
return one_question_modal("Sense definition", message.EditSenseDefinition, "Edit sense definition", sense.definition, sense)
|
return one_question_modal("Sense definition", message.EditSenseDefinition, "Edit sense definition", sense.definition, sense)
|
||||||
|
|
||||||
|
|
||||||
def edit_comment(comment):
|
def edit_comment(comment):
|
||||||
return one_question_modal("Comment", message.EditComment, "Edit comment", comment, None)
|
return one_question_modal("Comment", message.EditComment, "Edit comment", comment, None)
|
||||||
|
|
||||||
|
|
||||||
|
def edit_example(example):
|
||||||
|
return one_question_modal("Example", message.EditExample, "Edit example", example.example, example)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
from model.model import Model
|
from model.model import Model
|
||||||
from model.sense import Sense
|
from model.sense import Sense
|
||||||
from model.translation import Translation
|
from model.translation import Translation
|
||||||
|
from model.example import Example
|
||||||
|
|
|
@ -25,3 +25,10 @@ class Sense(Editable):
|
||||||
for clusterNum, translation in translations:
|
for clusterNum, translation in translations:
|
||||||
self.translations[clusterNum - 1].append(translation)
|
self.translations[clusterNum - 1].append(translation)
|
||||||
|
|
||||||
|
|
||||||
|
class NewSense(Sense):
|
||||||
|
def __init__(self):
|
||||||
|
self.translations = []
|
||||||
|
self.labels = []
|
||||||
|
self.definition = []
|
||||||
|
self.examples= []
|
||||||
|
|
15
src/view.py
15
src/view.py
|
@ -34,7 +34,8 @@ class View:
|
||||||
h("span#headword", {}, entry.headword),
|
h("span#headword", {}, entry.headword),
|
||||||
h("span#grammar", {}, entry.grammar),
|
h("span#grammar", {}, entry.grammar),
|
||||||
h("button#comment.warning", {"on": {"click": msg(ShowCommentEdit)}}, entry.comment)]),
|
h("button#comment.warning", {"on": {"click": msg(ShowCommentEdit)}}, entry.comment)]),
|
||||||
h("div#sense-container", {}, view_sense_list)])
|
h("div#sense-container", {}, view_sense_list),
|
||||||
|
h("button.add-button", {"on": {"click": msg(ShowSenseAdd)}}, "+")])
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def view_sense(sense, senseNum):
|
def view_sense(sense, senseNum):
|
||||||
|
@ -54,7 +55,7 @@ class View:
|
||||||
return h("div.example", {}, [
|
return h("div.example", {}, [
|
||||||
h("div.example-dot", {}, "▣"),
|
h("div.example-dot", {}, "▣"),
|
||||||
h("div.example-rest", {}, [
|
h("div.example-rest", {}, [
|
||||||
h("span.example-text", {}, example.example),
|
h("span.example-text", {"on": {"click": msg(ShowExampleEdit, example)} }, example.example),
|
||||||
h("div.example-translation", {}, [
|
h("div.example-translation", {}, [
|
||||||
h("span.example-arrow", {}, "↪"),
|
h("span.example-arrow", {}, "↪"),
|
||||||
h("span", {}, example.translation)])])])
|
h("span", {}, example.translation)])])])
|
||||||
|
@ -65,7 +66,7 @@ class View:
|
||||||
for cluster in translations:
|
for cluster in translations:
|
||||||
result.append(h("div.translation-div-cluster", {}, [View.view_one_translation(t) for t in cluster]))
|
result.append(h("div.translation-div-cluster", {}, [View.view_one_translation(t) for t in cluster]))
|
||||||
|
|
||||||
result.append(h("button", {"on": {"click": msg(ShowAddTranslation, sense)}}, "+"))
|
result.append(h("button.add-button", {"on": {"click": msg(ShowAddTranslation, sense)}}, "+"))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -79,6 +80,12 @@ class View:
|
||||||
elements.append(tags)
|
elements.append(tags)
|
||||||
|
|
||||||
elements.append(h("span.translation-text", {}, translation.translation))
|
elements.append(h("span.translation-text", {}, translation.translation))
|
||||||
|
if translation.source:
|
||||||
|
elements.append(h("span.translation-source", {}, translation.source))
|
||||||
|
|
||||||
|
explanation_class = ".translation-explanation" if translation.translation else ""
|
||||||
|
elements.append(h("span{}".format(explanation_class), {}, translation.explanation))
|
||||||
|
|
||||||
return h("div.translation-div", {"on": {"click": msg(ShowMenu, translation) }}, elements)
|
return h("div.translation-div", {"on": {"click": msg(ShowMenu, translation) }}, elements)
|
||||||
|
|
||||||
|
|
||||||
|
@ -104,5 +111,5 @@ class View:
|
||||||
return h("div.modal", {}, [
|
return h("div.modal", {}, [
|
||||||
h("input", { "props": {"type": "checkbox", "checked": modal_shown} }, ""),
|
h("input", { "props": {"type": "checkbox", "checked": modal_shown} }, ""),
|
||||||
h("label.overlay", {}, ""),
|
h("label.overlay", {}, ""),
|
||||||
h("article", {"on": { "click": NoReset }}, modal())])
|
h("article", {"on": { "click": msg(NoReset) }}, modal())])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user