explanationList
This commit is contained in:
parent
752ec44d43
commit
ec811028ab
|
@ -169,11 +169,14 @@
|
|||
.explanations:not(:empty) {
|
||||
font-style: italic;
|
||||
|
||||
&:before {
|
||||
content: '[';
|
||||
}
|
||||
&:after {
|
||||
content: ']';
|
||||
&:not(.solo) {
|
||||
&:before {
|
||||
content: '[';
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: ']';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ from model.tags import export_tag
|
|||
def export_to_xml(model):
|
||||
xml_document = export_entry(model.entry)
|
||||
serializer = __new__(XMLSerializer())
|
||||
return serializer.serializeToString(xml_document);
|
||||
return serializer.serializeToString(xml_document)
|
||||
|
||||
|
||||
def export_entry(entry):
|
||||
|
@ -155,17 +155,21 @@ def export_translation(doc, translation):
|
|||
actual_t.setAttribute("source", translation.source)
|
||||
translation_xml.appendChild(actual_t)
|
||||
|
||||
explanationList = doc.createElement("explanationList")
|
||||
|
||||
for explanation in translation.explanationList:
|
||||
explanationList.appendChild(explanation.export(doc))
|
||||
|
||||
translation_xml.appendChild(explanationList)
|
||||
if len(translation.explanationList) > 0 :
|
||||
explanationList = _export_explanation_list(doc, translation.explanationList)
|
||||
translation_xml.appendChild(explanationList)
|
||||
|
||||
|
||||
|
||||
return translation_xml
|
||||
|
||||
def _export_explanation_list(doc, lst):
|
||||
result = doc.createElement('explanationList')
|
||||
for explanation in lst:
|
||||
console.log(explanation)
|
||||
result.appendChild(explanation.export(doc))
|
||||
|
||||
return result
|
||||
|
||||
def _export_label_list(doc, lst):
|
||||
result = doc.createElement("labelList")
|
||||
|
|
|
@ -4,6 +4,7 @@ import message.common_accessors as common_accessors
|
|||
from browser import document, window
|
||||
from model.translation import Translation
|
||||
from model.sense import Sense
|
||||
from model.explanation import Explanation
|
||||
|
||||
|
||||
|
||||
|
@ -14,8 +15,13 @@ class EditTranslation(DataChgClickMessage):
|
|||
|
||||
self.translation.translation = document.getElementById("etv").value
|
||||
# This could be dangerous if double_list_getter is getting data from any other list as well.
|
||||
self.translation.explanationList = common_accessors.double_list_getter('value', 'language', True)
|
||||
|
||||
explanations = common_accessors.double_list_getter('value', 'language', True)
|
||||
self.translation.explanationList = []
|
||||
for entry in explanations:
|
||||
explanation = Explanation()
|
||||
explanation.value = entry.value
|
||||
explanation.language = entry.language
|
||||
self.translation.explanationList.append(explanation)
|
||||
# common_accessors.label_list_getter()
|
||||
self.translation.tags = common_accessors.label_list_getter()
|
||||
|
||||
|
|
|
@ -2,3 +2,4 @@ from model.model import Model
|
|||
from model.sense import Sense
|
||||
from model.translation import Translation
|
||||
from model.example import Example
|
||||
from model.explanation import Explanation
|
||||
|
|
|
@ -25,7 +25,13 @@ class Entry(Data):
|
|||
self.senses = []
|
||||
|
||||
def import_xml(self, entry_xml):
|
||||
# console.log(entry_xml)
|
||||
# xmlClone = entry_xml.cloneNode(True)
|
||||
|
||||
status = entry_xml.querySelector("head status")
|
||||
|
||||
# xmlClone.removeChild(status)
|
||||
# console.log(xmlClone)
|
||||
headword = entry_xml.querySelector("head headword lemma")
|
||||
|
||||
grammar = entry_xml.querySelector("head grammar category")
|
||||
|
|
|
@ -16,7 +16,6 @@ class Explanation(Data):
|
|||
def export(self, doc):
|
||||
result = doc.createElement("explanation")
|
||||
result.textContent = self.value
|
||||
console.log(self.language)
|
||||
if self.language != "": result.setAttribute('language', self.language)
|
||||
|
||||
return result
|
||||
|
|
|
@ -15,37 +15,37 @@ class Sense(Data):
|
|||
self.labels = []
|
||||
self.translations = []
|
||||
self.examples = []
|
||||
|
||||
|
||||
def import_xml(self, sense_xml, idx):
|
||||
self.original_idx = idx
|
||||
|
||||
for definition in sense_xml.querySelectorAll("definitionList definition"):
|
||||
key = definition.getAttribute("type")
|
||||
self.definition[key] = definition.textContent
|
||||
|
||||
|
||||
self.labels = import_label_list("sense > labelList label", sense_xml)
|
||||
self.translations = from_container_list(
|
||||
sense_xml.querySelectorAll("translationContainerList translationContainer"))
|
||||
|
||||
for example_xml in sense_xml.querySelectorAll("exampleContainerList exampleContainer"):
|
||||
example = Example()
|
||||
example.import_xml(example_xml)
|
||||
self.examples.append(example)
|
||||
|
||||
|
||||
|
||||
|
||||
def merge_labels(self):
|
||||
return ", ".join(val for _, val in self.labels)
|
||||
|
||||
|
||||
|
||||
|
||||
def view(self, model, sense_num):
|
||||
examples = [example.view(model, self) for example in self.examples]
|
||||
|
||||
|
||||
result = h("div.elm-div", {}, [
|
||||
h("div.sense-num", {"on": {"click": M.msg(M.ShowSenseMenu, self)}}, str(sense_num + 1)),
|
||||
h("div.sense", {}, [
|
||||
h("span.sense-label-list", { "on": { "click": M.msg(M.ShowSenseLabelEdit, self) }}, [
|
||||
h("span.sense-label", {}, clean_label(slabel)) for _, slabel in self.labels ]),
|
||||
h("span.sense-label", {}, clean_label(slabel)) for _, slabel in self.labels ]),
|
||||
h("span.sense-definition", { "on": { "click": M.msg(M.ShowSenseDefinitionEdit, self) }}, self.definition["indicator"]),
|
||||
h("div", {}, View.view_translations(self.translations, self, model)),
|
||||
h("div", {}, examples)])])
|
||||
return result
|
||||
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class Translation(Data):
|
|||
self.targetLang = ""
|
||||
self.audio = ""
|
||||
self.explanation = ""
|
||||
self.explanationList = []
|
||||
self.explanationList = set()
|
||||
self.tags = []
|
||||
|
||||
def import_xml(self, translation_xml):
|
||||
|
@ -48,7 +48,6 @@ class Translation(Data):
|
|||
self.audio = translation.getAttribute("audio") if translation.hasAttribute("audio") else ""
|
||||
|
||||
explanationList = translation_xml.querySelectorAll("explanationList explanation")
|
||||
|
||||
for explanation_dom in explanationList:
|
||||
explanation = Explanation()
|
||||
explanation.import_dom(explanation_dom)
|
||||
|
@ -69,9 +68,10 @@ class Translation(Data):
|
|||
if self.source:
|
||||
elements.append(h("span.translation-source", {}, self.source))
|
||||
|
||||
|
||||
explanations = [explanation.value for explanation in self.explanationList]
|
||||
elements.append(h("span.explanations", {}, ", ".join(explanations)))
|
||||
if (self.explanationList):
|
||||
explanation_class = ".explanations" if self.translation else ".explanations.solo"
|
||||
explanations = [explanation.value for explanation in self.explanationList]
|
||||
elements.append(h("span{}".format(explanation_class), {}, ", ".join(explanations)))
|
||||
|
||||
return h("div.translation-div", {"on": {"click": M.msg(M.ShowTranslationMenu, self) }}, elements)
|
||||
|
||||
|
@ -83,5 +83,6 @@ class Translation(Data):
|
|||
# result = result and self.source == ""
|
||||
# result = result and self.targetLang == ""
|
||||
result = result and self.explanation == ""
|
||||
result = result and len(self.explanationList) == 0
|
||||
result = result and len(self.tags) == 0
|
||||
return result
|
||||
|
|
Loading…
Reference in New Issue
Block a user