diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cb22e3..baf2cc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,334 @@ +## v3.1.0, 2021-03-02 + +### 👍 Покращення + +- оновлено бібліотеку spaCy до версії 2.3.5; +- оновлено модель бібліотеки spaCy `en_core_web_sm` до версії 2.3.1; +- elementTree API оновлено до версії python 3.7.9; + +### 🔴 Виправлення помилок + +- виправлено xml declaration (elementTree API оновлено до версії python 3.7.9); +- дрібні виправлення. + +## v3.0.3, 2020-10-16 + + +### 🔴 Виправлення помилок + +- Дрібні виправлення. + +## v3.0.2, 2020-10-16 + +### 👍 Покращення + +- Оновлено платформу `Python` до версії `Python 3.7.9`. + +### 🔴 Виправлення помилок + +- Дрібні виправлення. + +## v3.0.1, 2020-10-16 + +### 🏭 Нові можливості + +- UKR🇺🇦 Додано функцию заповнення контекстів в онтологічному шаблоні (вхідні структури: `allterms.xml` та `structure.xml`). + +### 🔴 Виправлення помилок + +- Дрібні виправлення. + +## v3.0.0-beta-6, 2020-08-21 + +### 📚 Документація + +- UKR🇺🇦 Створено окрему документацію по API та використанню API-ендпоентів - `HELP.md`. + +### 🔴 Виправлення помилок + +- Дрібні виправлення. + +## v3.0.0-beta-5, 2020-08-20 + +### 🏭 Нові можливості + +- UKR🇺🇦 Додано API для обробки/аналізу текстів у вигляді повідомлень. Приклад вхідних даних: + ```json + { + "message": "Не зважаючи на стрімкий розвиток індустрії інформатики протягом останніх кількох десятків років, процес самовизначення інформатики як науки все ще не можна вважати завершеним." + } + ``` + Кінцева точка: `http://IP:PORT/kua/api/task/message/queued` + +## v3.0.0-beta-4, 2020-05-19 + +### 🏭 Нові можливості + +- UKR🇺🇦 ENG🇬🇧 Додано можливість завантаження таблиці з зовнішнього XLSX документу. + +## v3.0.0-beta-3, 2020-05-14 + +### 🔴 Виправлення помилок + +- UKR🇺🇦 ENG🇬🇧 Виправлено помилку при збереженні таблиці в формат EXCEL (встановлено формат файлу `xlsx` замість `xls`) з використанням [FileSaver.js](https://github.com/eligrey/FileSaver.js) та [xlsx.full.min.js](https://github.com/SheetJS/sheetjs). + +## v3.0.0-beta-2, 2020-05-14 + +### 🔴 Виправлення помилок + +- UKR🇺🇦 ENG🇬🇧 Виправлено помилку при збереженні таблиці в формат EXCEL (встановлено розширення файлу `xls` замість `xlsx`). + +## v3.0.0-beta-1, 2020-05-07 + +### 🏭 Нові можливості + +- UKR🇺🇦 ENG🇬🇧 Здійснено перехід проекту на актуальну версію Python 3 та відповідне оновлення початкового коду. + +### 👍 Покращення + +- ENG🇬🇧 Здійснено перехід на актуальну версію бібліотеки spaCy та її моделей. + +----- + +## v2.0.0-beta-73, 2020-04-16 + +### ⚠️ Зауваження + +- UKR🇺🇦 ENG🇬🇧 Встановлені постійні залежності в `requirements.txt` (для підтримки Python 2.7.17). + +## v2.0.0-beta-72, 2020-04-16 + +### 🔴 Виправлення помилок + +- ENG🇬🇧 Виправлено помилку при збереженні локально файлів `allterms.xml`, `parce.xml`. + +### 👍 Покращення + +- UKR🇺🇦 Прискорено аналіз документів розміром від 50000 до 100000 байт. + +## v2.0.0-beta-71, 2020-03-08 + +### 🔴 Виправлення помилок + +- UKR🇺🇦 Виправлено помилку інтерактивного підсвічування термінів (при виборі терміна в елементі `#term-tree`). + +## v2.0.0-beta-70, 2020-02-27 + +### 🔴 Виправлення помилок + +- UKR🇺🇦 Протестовано та виправлено роботу бібліотеки Konspekt.exe (для української мови версії від 03-11-2018) з файлами великого розміру. +- UKR🇺🇦 Вимкнено режим налагодження `wine` (додано змінну середовища `export WINEDEBUG=-all`). +- UKR🇺🇦 Виправлено помилку інтерактивного підсвічування термінів (якщо частота появи терміна в тексті перевищує 300 разів, в цьому випадку буде відключене інтерактивне підсвічування терміна задля коректного роботи інтерфейсу веб-застосунку). + +## v2.0.0-beta-67, 2020-02-24 + +### 👍 Покращення + +- UKR🇺🇦 ENG🇬🇧 На головну веб-сторінку додатка додано номер бета-версії. + +## v2.0.0-beta-66, 2020-02-22 + +### 🔴 Виправлення помилок + +- UKR🇺🇦 Виправлено список змін. + +## v2.0.0-beta-65, 2020-02-22 + +### ⚠️ Зауваження + +- UKR🇺🇦 Додано обмеження на розмір оброблюваного файлу, яке становить 2 мб. +- UKR🇺🇦 Протестовано роботу бібліотеки Konspekt.exe (для української мови версії від 03-11-2018) з файлами великого розміру. +- UKR🇺🇦 Змінено специфікацію `JSON`-файлу проекту (Konspekt.exe для української мови версії від 03-11-2018). + Результати роботи Konspekt.exe (для української мови версії від 03-11-2018), а саме файли `allterms.xml` та `parce.xml` відтепер зберігаються як `blob` в IndexedDB, з використанням бібліотеки localforage; унікальні ідентифікатори на ці `blob` містяться у структурі `JSON`-файлу проекту, відповідно `"alltermsxmlAlias": ""` - аліас для `allterms.xml` та `"parcexmlAlias": ""` - аліас для `parce.xml`. +
Специфікація `JSON`-файлу проекту (Konspekt.exe для української мови версії від 03-11-2018): +

+ +```json +{ + "project": { + "name": "", + "notes": "", + "content": { + "documents": [ + { + "names": { + "original": "", + "unique": "" + }, + "results": { + "alltermsxmlAlias": "", + "parcexmlAlias": "", + "alltermsjson": {}, + "parcejson": {} + } + }, + { + "names": { + "original": "", + "unique": "" + }, + "results": { + "alltermsxmlAlias": "", + "parcexmlAlias": "", + "alltermsjson": {}, + "parcejson": {} + } + } + ] + } + } +} +``` +

+
+ +### 👍 Покращення + +- UKR🇺🇦 ENG🇬🇧 Додана стартова сторінка вибору мови Конспекту (для обробки документів української або англійською). +- UKR🇺🇦 Зменшено час аналізу файлів бібліотекою Konspekt.exe (для української мови версії від 03-11-2018). +- UKR🇺🇦 При виборі терміна в елементах `` `#term-tree` (дерево термінів), якщо обчислення займає тривалий час, то інтерфейс відображає процес завантаження. + +### 🔴 Виправлення помилок + +- UKR🇺🇦 Виправлені функції сортування в елементі `"); + $("body").append($temp); + $temp.val(valueOfSelectedElementOfUploadResultListIfCtrlC.selectedElementValue).select(); + document.execCommand("copy"); + $temp.remove(); + + } + } + } +}); + +$uploadUnknownTerms.keydown(function (e) { + if ($uploadUnknownTerms.has('option').length > 0) { + if (e.keyCode == keyC && e.ctrlKey) { + + let copyCommandSupported = document.queryCommandSupported('copy'); + + if (copyCommandSupported) { + + valueOfSelectedElementOfUploadResultListIfCtrlC.selectedElementValue = $uploadUnknownTerms.prop('value'); + + let $temp = $(""); + $("body").append($temp); + $temp.val(valueOfSelectedElementOfUploadResultListIfCtrlC.selectedElementValue).select(); + document.execCommand("copy"); + $temp.remove(); + + } + } + } +}); + +$projectFileList.keydown(function (e) { + if ($projectFileList.has('option').length > 0) { + if (e.keyCode == keyC && e.ctrlKey) { + + let copyCommandSupported = document.queryCommandSupported('copy'); + + if (copyCommandSupported) { + + valueOfSelectedElementOfUploadResultListIfCtrlC.selectedElementValue = $projectFileList.prop('text'); + + let $temp = $(""); + $("body").append($temp); + $temp.val(valueOfSelectedElementOfUploadResultListIfCtrlC.selectedElementValue).select(); + document.execCommand("copy"); + $temp.remove(); + + } + } + } +}); + +function ClearAllForNewProject() { + $('option', $uploadResultList).remove(); + $('option', $uploadUnknownTerms).remove(); + $textContent.text(''); + $textareaNotes.val(''); + $('input').val(''); + $termTree.treeview({}); + localStorage.clear(); + localforage.clear().then(function () { + console.log('Database is now empty.'); + location.reload(); + }).catch(function (err) { + console.log(err); + }); +} + +function truncate(n, len) { + let ext = n.substring(n.lastIndexOf(".") + 1, n.length).toLowerCase(); + let filename = n.replace('.' + ext, ''); + if (filename.length <= len) { + return n; + } + filename = filename.substr(0, len) + (n.length > len ? '[...]' : ''); + return filename + '.' + ext; +} + +function copyTermTreeToTable(termTreeText) { + // Mouse handler for table (DROP): + $('#table-body').on('mouseup', 'td', function () { + if (termTreeText != '') { + $(this).html(termTreeText); + termTreeText = ''; + } + }); +} + +// XML to JSON -------------------------------------------------------------------------------------------------------- +// Modified version from here: http://davidwalsh.name/convert-xml-json +function xmlToJson(xml) { + + // Create the return object + var obj = {}; + + if (xml.nodeType == 1) { // element + // do attributes + if (xml.attributes.length > 0) { + obj["@attributes"] = {}; + for (var j = 0; j < xml.attributes.length; j++) { + var attribute = xml.attributes.item(j); + obj["@attributes"][attribute.nodeName] = attribute.nodeValue; + } + } + } else if (xml.nodeType == 3) { // text + obj = xml.nodeValue; + } + + // do children + // If just one text node inside + if (xml.hasChildNodes() && xml.childNodes.length === 1 && xml.childNodes[0].nodeType === 3) { + obj = xml.childNodes[0].nodeValue; + } + else if (xml.hasChildNodes()) { + for (var i = 0; i < xml.childNodes.length; i++) { + var item = xml.childNodes.item(i); + var nodeName = item.nodeName; + if (typeof (obj[nodeName]) == "undefined") { + obj[nodeName] = xmlToJson(item); + } else { + if (typeof (obj[nodeName].push) == "undefined") { + var old = obj[nodeName]; + obj[nodeName] = []; + obj[nodeName].push(old); + } + obj[nodeName].push(xmlToJson(item)); + } + } + } + return obj; +} +// XML to JSON -------------------------------------------------------------------------------------------------------- + +// Sort terms --------------------------------------------------------------------------------------------------------- +$sortSelect.on('change', function () { + + if (this.value == 1) { + $(".container_adapter_for_one_page_view").addClass("disabledbutton"); + $("body").css("cursor", "progress"); + setTimeout(function () { + let my_options = $("#uploadResultList option"); + my_options.sort(function (a, b) { + if (a.text.toLowerCase() > b.text.toLowerCase()) return 1; + if (a.text.toLowerCase() < b.text.toLowerCase()) return -1; + return 0; + }); + $uploadResultList.empty(); + $.each(my_options, (i, item) => { + $uploadResultList.append($('