diff --git a/main.css b/main.css
index dbf9a2c..8502441 100644
--- a/main.css
+++ b/main.css
@@ -2,6 +2,14 @@
font-size: 1em
}
+#myed-status {
+ border-bottom: 1px dotted #999999;
+ margin-bottom: 0.4em;
+ margin-top: 0.4em;
+ padding-bottom: 0.4em;
+ text-align: center;
+}
+
#myed-freq-start {
float: right;
}
@@ -49,6 +57,22 @@
display: block;
}
+.myed-indikator {
+ cursor: pointer;
+}
+
+.myed-indikator:hover {
+ background-color: #eee;
+}
+
+.myed-indikator:before {
+ content: " (";
+}
+
+.myed-indikator:after {
+ content: ") ";
+}
+
.clanek {
font-family: Verdana, sans-serif;
font-size: 1rem;
@@ -101,6 +125,14 @@
content: "(";
}
+.myed-prevod-razlaga[taksonomija='true'] {
+ color: grey;
+}
+
+#myed-tax {
+ margin-bottom: 1em;
+}
+
.myed-prevod-semicolon {}
.myed-prevod-semicolon-hidden {
display: none;
@@ -119,12 +151,23 @@
}
.myed-oznaka:not(:empty) {
- color: #666666;
- text-transform: uppercase;
+ color: #387434;
+ text-transform: lowercase;
font-size: 0.85em;
margin-right: 0.2em;
}
+.myed-oznaka-div select {
+ width: 15em;
+ margin-right: 1em;
+}
+
+.myed-oznaka-key {
+ width: 5em;
+ display: inline-block;
+}
+
+
.clanek label:hover {box-shadow: 0px 0px 4px #666666;}
.clanek label:active {box-shadow: 0px 0px 2px #666666;}
.clanek label input {position: relative; top: 0.15em;}
diff --git a/main.js b/main.js
index d2db600..e9d9ebb 100644
--- a/main.js
+++ b/main.js
@@ -1,7 +1,8 @@
{
-prevodi: null,
-zgledi: null,
-vecjez: null,
+prevodi: [],
+zgledi: [],
+vecjez: [],
+indikatorji: [],
xml: null,
original: null,
freq_start: null,
@@ -10,36 +11,62 @@ prevod_locations: [
'pomen > vecjez',
'pomen > skladenjske_skupine > skladenjska_struktura > kolokacije > vecjez',
'pomen > stalne_zveze > stalna_zveza > vecjez',
- 'frazeoloske_zveze > frazeoloska_enota > vecjez'
+ 'skladenjske_zveze > skladenjska_zveza > vecjez',
+ 'frazeoloske_zveze > frazeoloska_enota > vecjez',
+ 'pomen > podpomen > skladenjske_skupine > skladenjska_struktura > kolokacije > vecjez'
],
zgledi_locations: [
'zgledi > vecjez',
'zgledi'
],
-empty_prevod: '',
-oznake: ["a", "b", "c", "iztok", "ozbo", "hhhh"],
+oznake: OZNAKE_JSON,
freq_stars_limits: [0, 552, 5206, 8613, 22561],
+empty_prevod: function() {
+ var result = '';
+ for(let oznaka_tip in this.oznake) {
+ result += ``;
+ }
+ result += '';
+ return result;
+},
storeXml: function(xml) {
this.xml = xml;
- this.prevodi = [];
- this.vecjez = [];
- this.zgledi = [];
-
+
+ for(let loznaka of xml.find("prevod > oznaka")) {
+ var oznaka = $(loznaka);
+ var tip = oznaka.attr('tip');
+ if (!(tip in this.oznake)) {
+ oznaka.attr('tip', 'star');
+ }
+ }
+
for(let fstring of this.prevod_locations) {
for(let vecjez of xml.find(fstring)) {
for(let pp of $(vecjez).find('pp')) {
- $(pp).prev().attr('semicolon', 'true');
+ $(pp).parent().attr('semicolon', 'true');
}
for(let lprevod of $(vecjez).find("prevod")) {
var prevod = $(lprevod);
- if(prevod.text()) {
+ if(true) {
prevod.attr('prevod_id', this.prevodi.length);
this.prevodi.push(prevod);
}
prevod.attr('line_num', this.vecjez.length);
prevod.attr('semicolon', prevod.attr('semicolon') || false);
+
+ for(let oznaka_tip in this.oznake) {
+ var old = prevod.find(`oznaka[tip="${ oznaka_tip }"]`);
+ if(!old.length) {
+ to_prepend = ``;
+ prevod.prepend($(to_prepend, xml));
+ }
+ }
+
+ if(prevod.find('rzg').length == 0) {
+ prevod.append($("", xml));
+ }
}
this.vecjez.push($(vecjez));
}
@@ -61,11 +88,30 @@ storeXml: function(xml) {
}
}
+ for(let lpomen of xml.find("pomen")) {
+ var pomen = $(lpomen);
+ var indikator = pomen.children(':first');
+ if(indikator.prop("tagName") != "indikator") {
+ indikator = $(``, xml)
+ pomen.prepend(indikator);
+ }
+
+ indikator.attr('indikator_id', this.indikatorji.length);
+ this.indikatorji.push(indikator);
+ }
+
var opomba = xml.find('glava > opomba');
if(!opomba.length) {
var zaglavje = xml.find('glava > zaglavje');
zaglavje.after($('', xml));
}
+
+ for(let lclanek of xml.find('clanek')) {
+ var clanek = $(lclanek);
+ if(!clanek.find('status').length) {
+ clanek.prepend($("A-HU", xml));
+ }
+ }
},
loadDependencies: function(url) {
this.loadJs("https://cdn.jsdelivr.net/npm/sweet-modal@1.3.2/dist/min/jquery.sweet-modal.min.js");
@@ -89,10 +135,13 @@ loadJs: function(url) {
render_freq_start: function() {
var element = $("#myed-freq-start");
var freq = element.attr("freq");
+ element.text('FREKVENCA: ' + freq);
+ /*
for(let f_lim of this.freq_stars_limits) {
var cls = (f_lim > freq) ? "s0" : "s1";
element.append($(`*`));
}
+ */
},
isLast: function(el) {
return el.next().hasClass("myed-prevod-add") || el.next().hasClass('myed-prevod-bin');
@@ -145,12 +194,24 @@ bin: function(el) {
change: function(el, func_after) {
var text_el = el.find('.myed-prevod-text');
var razlaga_el = el.find('.myed-prevod-razlaga');
+ var oznake_el = el.find('.myed-oznaka').map(function() {
+ var result = $(this).text();
+ if(result.length)
+ return result;
+ });
var self = this;
- self.show_modal(text_el.text(), razlaga_el.text(), function(status, text, razlaga) {
+ self.show_modal(text_el.text(), razlaga_el, oznake_el, function(status, data) {
+ var text = data["prevedek"];
+ var razlaga = data['razlaga'];
+ var razlaga_tax = data['razlaga_tax'];
+ var deleteOld = data['remove_old'];
+ var oznake = data['oznake'];
+
if(status) {
text_el.text(text);
razlaga_el.text(razlaga);
+ razlaga_el.attr('taksonomija', razlaga_tax);
var xml_el = self.prevodi[el.attr('prevod_id')];
xml_el.find('tekst').text(text);
@@ -159,7 +220,31 @@ change: function(el, func_after) {
xml_el.append("", this.xml);
}
xml_el.find('rzg').text(razlaga);
+ xml_el.find('rzg').attr('taksonomija', razlaga_tax);
+
+ for (let oznaka of oznake) {
+ var tip = oznaka[0];
+ var value = oznaka[1];
+
+ // remove --
+ while(value.startsWith('-') || value.startsWith(' ')) {
+ value = value.substring(1, );
+ }
+
+ // write into xml
+ var oznaka_xml = xml_el.find(`oznaka[tip="${ tip }"]`);
+ oznaka_xml.text(value);
+
+ // write into html
+ var oznaka_html = el.find(`span[title="${ tip }"]`);
+ oznaka_html.text(value);
+ }
+ if(deleteOld) {
+ xml_el.find(`oznaka[tip="star"]`).text("");
+ el.find(`span[title="star"]`).text("");
+ }
+
Screenful.Editor.changed();
}
@@ -180,7 +265,7 @@ add: function(el) {
clone.insertBefore(el);
var xml_container = this.vecjez[el.attr('line_num')];
- var new_child = $(this.empty_prevod, this.xml);
+ var new_child = $(this.empty_prevod(), this.xml);
xml_container.append(new_child);
this.prevodi.push(new_child);
@@ -213,6 +298,11 @@ action: function(el, action) {
this.semicolon(el);
}
},
+indikatorEdit: function(el, val) {
+ this.indikatorji[$(el).attr('indikator_id')].text(val);
+ $(el).text(val);
+ Screenful.Editor.changed();
+},
zgledPrevod: function(el, val) {
var zgled_id = el.attr('zgled_id');
var zgled = this.zgledi[zgled_id];
@@ -249,6 +339,13 @@ registerCallbacks: function() {
self.add($(this));
});
+ root.on('click', '.myed-indikator', function() {
+ var el = $(this);
+ $.sweetModal.prompt('Indikator', 'Vstavi:', el.text(), function(val) {
+ self.indikatorEdit(el, val);
+ });
+ });
+
root.on('keydown', '.myed-prevod-div', function(e) {
var action = {
13: "edit",
@@ -278,7 +375,7 @@ registerCallbacks: function() {
Screenful.Editor.changed();
});
});
-
+
// fixing modal stuff
$('body').on('keydown', '.sweet-modal-prompt', function(e) {
if(e.keyCode == 13) {
@@ -351,7 +448,7 @@ editor: function(div, entry, uneditable) {
// for "dodajanje prevodov" we need a model div to copy.
// we create one here, that is then made invisible, but is
// available for copying
- $(this.empty_prevod, xml).insertBefore(xml.find('prevod').first());
+ $(this.empty_prevod(), xml).insertBefore(xml.find('prevod').first());
// adding prevod_id to prevodi
this.storeXml(xml);
@@ -380,25 +477,66 @@ editor: function(div, entry, uneditable) {
// select nothing in all hamburger dropdowns
$('.myed-clanek-select').prop("selectedIndex", -1);
},
-show_modal: function(prevedek, razlaga, callback) {
+oznaka_callback: function(el) {
+ var select = el.parent().find('select');
+ var text = window.prompt("Nova oznaka");
+ select.append($('`;
+ for(let [key, value] of Object.entries(this.oznake)) {
+ options += `
${key}
";
}
+ var tax = razlaga.attr('taksonomija') == "true" ? "checked" : "";
+ var izbrisiStareOznake = '';
+
$.sweetModal({
title: 'Spreminjanje Prevedka',
content: `
Prevedek:
- Razlaga:
- Oznaka:
+
+ Oznake: ${ options }
${ izbrisiStareOznake }`,
buttons: {
save: {
label: 'Shrani',
@@ -411,7 +549,10 @@ show_modal: function(prevedek, razlaga, callback) {
action: function() { grabContent(false); },
}
},
- onOpen: function() { $('#myed-sm-prevedek').focus(); }
+ onOpen: function() {
+ $('#myed-sm-prevedek').focus();
+ $('.myed-oznaka-input').on('click', function(e) { self.oznaka_callback($(this)); });
+ }
});
},
harvester: function(div) {
@@ -421,17 +562,35 @@ harvester: function(div) {
$(pp).remove();
}
- for(let lprevod of $(vecjez).find("prevod")) {
+ var all_prevod = $(vecjez).find("prevod");
+ // if only one prevod and that one is deleted, just create an empty one.
+ if(all_prevod.length == 1 && $(all_prevod[0]).attr('bin') == 'true') {
+ var empty = this.empty_prevod();
+ all_prevod.append(empty);
+ $(all_prevod[0]).after(empty);
+ }
+
+ for(let lprevod of all_prevod) {
var prevod = $(lprevod);
+ if(prevod.attr('bin') == 'true') {
+ prevod.remove();
+ continue;
+ }
+
if(prevod.attr('semicolon') == 'true') {
prevod.append($("", this.xml));
}
+
+ prevod.removeAttr('semicolon');
+ prevod.removeAttr('bin');
}
}
}
+
+ // save status
+ var status_txt = $('input[name=status]:checked', '#myed-status').val();
+ this.xml.find('status').text(status_txt);
- // console.log((new XMLSerializer()).serializeToString(this.xml[0]));
- // return sessionStorage.myed_original;
return (new XMLSerializer()).serializeToString(this.xml[0]);
},
xslt: XSLFILE,
diff --git a/main.xslt b/main.xslt
index 828c2e7..cd11f6f 100644
--- a/main.xslt
+++ b/main.xslt
@@ -8,13 +8,64 @@
+
+
+
+
-
+
+
+
+
+
myed-freq-start
@@ -92,33 +143,30 @@
-
-
-
-
- (
+
+
+
+ myed-indikator
+
- )
-
-
+
-
-
-
-
-
-
+
+
+ myed-oznaka
+
+
+
-
-
- (
+
+
+ myed-prevod-razlaga
+
- )
-
+
-
-
+
@@ -131,10 +179,10 @@
1
-
+
-
+