Moving last one: translation to new view

This commit is contained in:
Ozbolt Menegatti 2020-02-17 00:07:48 +01:00
parent 46fd628f11
commit f822aed45a
2 changed files with 37 additions and 8 deletions

View File

@ -62,7 +62,7 @@ class ShowAddTranslation(ClickMessage):
def update_model(self, model): def update_model(self, model):
chosen_sense_or_example = self.get_arg(0) chosen_sense_or_example = self.get_arg(0)
translation = Translation.new_empty() translation = Translation()
translation.make_copy() translation.make_copy()
model.modal_set(lambda: modals.edit_translation( model.modal_set(lambda: modals.edit_translation(
translation, translation,

View File

@ -1,5 +1,9 @@
from model.tags import import_label_list from model.tags import import_label_list
from model.data import Data as Editable from model.data import Data
from lib.snabbdom import h
from view.utils import clean_label
import message as M
def from_container_list(translation_list_container_xml): def from_container_list(translation_list_container_xml):
@ -12,7 +16,9 @@ def from_container_list(translation_list_container_xml):
num_cluster = int(translation_xml.getAttribute("cluster")) num_cluster = int(translation_xml.getAttribute("cluster"))
max_num_cluster = max(max_num_cluster, num_cluster) max_num_cluster = max(max_num_cluster, num_cluster)
translations.append((num_cluster, Translation(translation_xml))) t = Translation()
t.import_xml(translation_xml)
translations.append((num_cluster, t))
result = [[] for _ in range(max_num_cluster)] result = [[] for _ in range(max_num_cluster)]
for clusterNum, translation in translations: for clusterNum, translation in translations:
@ -21,23 +27,46 @@ def from_container_list(translation_list_container_xml):
return result return result
class Translation(Editable): class Translation(Data):
def __init__(self, translation_xml): def __init__(self, translation_xml):
self.translation = ""
self.source = ""
self.targetLang = ""
self.explanation = ""
self.tags = []
def import_xml(self, translation_xml):
translation = translation_xml.querySelector("translation") translation = translation_xml.querySelector("translation")
if translation: if translation:
self.translation = translation.textContent self.translation = translation.textContent
self.source = translation.getAttribute("source") if translation.hasAttribute("source") else "" self.source = translation.getAttribute("source") if translation.hasAttribute("source") else ""
self.targetLang = translation.getAttribute("targetLang") if translation.hasAttribute("targetLang") else "" self.targetLang = translation.getAttribute("targetLang") if translation.hasAttribute("targetLang") else ""
else:
self.translation = ""
self.source = ""
self.targetLang = ""
explanation = translation_xml.querySelector("explanation") explanation = translation_xml.querySelector("explanation")
self.explanation = explanation.textContent if explanation else "" self.explanation = explanation.textContent if explanation else ""
self.tags = import_label_list("labelList label", translation_xml) self.tags = import_label_list("labelList label", translation_xml)
def view(self, model):
elements = []
if self.tags:
tags = h("div.translation-tags", {}, [
h("span", {"attr": {"title": key}}, clean_label(value))
for key, value in self.tags])
elements.append(tags)
elements.append(h("span.translation-text", {}, self.translation))
if self.source:
elements.append(h("span.translation-source", {}, self.source))
explanation_class = ".translation-explanation" if self.translation else ""
elements.append(h("span{}".format(explanation_class), {}, self.explanation))
return h("div.translation-div", {"on": {"click": M.msg(M.ShowTranslationMenu, self) }}, elements)
def is_empty(self): def is_empty(self):
result = True result = True
result = result and self.translation == "" result = result and self.translation == ""