diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..72ef20f
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,18 @@
+[submodule "dependencies/MD_STD"]
+ path = dependencies/MD_STD
+ url = gitea:museum-digital/MD_STD.git
+[submodule "dependencies/MDAllowedValueSets"]
+ path = dependencies/MDAllowedValueSets
+ url = gitea:museum-digital/MDAllowedValueSets.git
+[submodule "dependencies/MDErrorReporter"]
+ path = dependencies/MDErrorReporter
+ url = gitea:museum-digital/MDErrorReporter.git
+[submodule "dependencies/MDImporterConcordanceLists"]
+ path = dependencies/MDImporterConcordanceLists
+ url = gitea:museum-digital/MDImporterConcordanceLists.git
+[submodule "dependencies/MDTlLoader"]
+ path = dependencies/MDTlLoader
+ url = gitea:museum-digital/MDTlLoader.git
+[submodule "l10n/translation-concordance"]
+ path = l10n/translation-concordance
+ url = gitea:museum-digital/translation-concordance.git
diff --git a/compile.php b/compile.php
index 26ebe04..a2588bf 100644
--- a/compile.php
+++ b/compile.php
@@ -1,6 +1,6 @@
$tlLoader->tl('concordance', 'concordance', 'concordance_checker'),
- ]);
+ 'intro' => $tlLoader->tl('concordance', 'concordance', 'intro'),
+ 'one_line_per_entry' => $tlLoader->tl('concordance', 'concordance', 'one_line_per_entry'),
+ 'submit' => $tlLoader->tl('concordance', 'concordance', 'submit'),
+ 'passed' => $tlLoader->tl('concordance', 'concordance', 'passed'),
+ 'not_yet_matched' => $tlLoader->tl('concordance', 'concordance', 'not_yet_matched'),
+ 'input' => $tlLoader->tl('concordance', 'concordance', 'input'),
+ 'generate_code_snippet' => $tlLoader->tl('concordance', 'concordance', 'generate_code_snippet'),
+ ];
+
+ foreach (ConcordanceChecker::getLists() as $list) {
+ $output[$list] = $tlLoader->tl('concordance', 'concordance', $list);
+ }
+
+ return MD_STD::json_encode($output);
}
@@ -39,7 +52,11 @@ function generateTranslationFilesForMatchOptions(string $lang):array {
$tlLoader = new MDTlLoader("mdConc", $lang);
$output = [];
foreach (ConcordanceChecker::getLists() as $list) {
- $output[$list] = MD_STD::json_encode((new ConcordanceChecker($list))->getMatchOptions($lang));
+ $options = [];
+ foreach ((new ConcordanceChecker($list))->getMatchOptions($lang) as $value) {
+ $options[(string)$value['id']] = $value['name'];
+ }
+ $output[$list] = MD_STD::json_encode($options);
}
return $output;
@@ -54,7 +71,10 @@ function generateTranslationFilesForMatchOptions(string $lang):array {
function generateAppShell():string {
return '
-
+
@@ -63,14 +83,14 @@ function generateAppShell():string {
- Quality assessment :: museum-digital
-
-
+ Concordance checker :: museum-digital
+
+
-
+
@@ -82,8 +102,9 @@ function generateAppShell():string {
-
+
+
@@ -91,7 +112,7 @@ function generateAppShell():string {
}
-const ALLOWED_LANGS = ['de', 'en', 'uk'];
+const ALLOWED_LANGS = ['de', 'en'];
const SERVED_ROOT = __DIR__ . '/public/';
const SERVED_JSON_ROOT = __DIR__ . '/public/static/json/';
diff --git a/dependencies/MDAllowedValueSets b/dependencies/MDAllowedValueSets
index 1b34e49..dbd15ea 160000
--- a/dependencies/MDAllowedValueSets
+++ b/dependencies/MDAllowedValueSets
@@ -1 +1 @@
-Subproject commit 1b34e49ff8add2afa7ca521bb92f4b844566be7d
+Subproject commit dbd15ea26baa4bc37bf31e99c6a17ec8ffa876e9
diff --git a/l10n/translation-concordance b/l10n/translation-concordance
index b3b894c..1d32171 160000
--- a/l10n/translation-concordance
+++ b/l10n/translation-concordance
@@ -1 +1 @@
-Subproject commit b3b894c247710d1aa53850020d9f0a193aa989fc
+Subproject commit 1d32171a5e10365eb73f4cc5b9f1e7282028da1b
diff --git a/public/api.php b/public/api.php
index b7b3ce0..4b7c562 100644
--- a/public/api.php
+++ b/public/api.php
@@ -6,48 +6,14 @@ declare(strict_types = 1);
require_once __DIR__ . '/../provideEnv.php';
+header('Content-Type: application/json; charset=utf-8');
+
$verb = MD_STD_IN::get_http_input_text("verb");
$subject = MD_STD_IN::get_http_input_text("subject");
-if (empty($verb) && empty($subject)) {
- header('Content-Type: application/json; charset=utf-8');
- readfile(__DIR__ . '/../static/json/openapi.json');
- return;
-}
+$output = match ($verb) {
+ 'evaluate' => (new ConcordanceChecker($subject))->evaluate(explode(PHP_EOL, $_POST['terms'] ?? $_GET['terms'] ?? [])),
+ default => throw new MDpageParameterNotFromListException(),
+};
-$availableLangs = MD_STD::scandir(__DIR__ . '/../l10n/musdb/');
-$lang = MD_STD_IN::get_http_input_text("lang", "en", $availableLangs);
-
-$parser = MD_STD_IN::get_http_input_text("parser");
-$data = trim(filter_input(INPUT_POST, "data"));
-
-if ($verb === 'evaluate' && in_array($subject, ['object', 'minimaldatensatz', 'count_vocabulary_entries_to_be_added'], true)) {
-
- $limitMode = match($subject) {
- 'object' => QARunnerLimitMode::main,
- 'minimaldatensatz' => QARunnerLimitMode::minimaldatensatz,
- 'count_vocabulary_entries_to_be_added' => QARunnerLimitMode::count_new_vocab_entries,
- };
-
- $runner = new QARunner($lang, $parser, $data, $limitMode);
-
- header('Content-Type: application/json; charset=utf-8');
- echo json_encode([
- 'results' => match($subject) {
- 'object' => $runner->evaluateObjects(),
- 'minimaldatensatz' => $runner->evaluateObjectsForMinimaldatensatz(),
- 'count_vocabulary_entries_to_be_added' => $runner->countNewlyRequestedVocabularyEntries(),
- },
- ]);
-
-}
-else if ($verb === 'convert_to_xml' && in_array($subject, QaConvertToXml::listAvailableOutputFormats(), true)) {
-
- $institution_name = MD_STD_IN::get_http_input_text("institution_name");
- $institution_identifier = MD_STD_IN::get_http_input_text("institution_identifier");
-
- $runner = new QARunner($lang, $parser, $data, null); // TODO: Add limit modes per format
- header('Content-Type: text/xml; charset=utf-8');
- echo $runner->convertToXml($subject, $institution_name, $institution_identifier);
-
-}
+echo MD_STD::json_encode($output);
diff --git a/public/index.htm b/public/index.htm
index 2635667..ea37160 100644
--- a/public/index.htm
+++ b/public/index.htm
@@ -1,21 +1,24 @@
-
+
-
+
- Quality assessment :: museum-digital
-
-
+ Concordance checker :: museum-digital
+
+
-
+
@@ -27,9 +30,10 @@
-
+
-
+
+
\ No newline at end of file
diff --git a/public/static/css/qa.css b/public/static/css/qa.css
index 90b66aa..d2d6b31 100644
--- a/public/static/css/qa.css
+++ b/public/static/css/qa.css
@@ -210,74 +210,9 @@ header#mainHeader h2 { display: inline-block; vertical-align: middle; font-weigh
header#mainHeader > a:focus > img,
header#mainHeader > a:hover > img { opacity: .7; }
-.summary { display: block;
- padding: 0 1em;
- border: 1px solid var(--color-borders);
- border-radius: .1em; }
-.accordion { max-height: 0; overflow-y: hidden;
- transition: max-height 0.2s ease-out, border 0.2s ease-out; }
-.accordion.active { display: block; padding: 1em 0; border-top: 1px dotted var(--color-borders);
- border-bottom: 1px dotted var(--color-borders); }
-
-.threeCol { display: grid; grid-template-columns: 1fr; grid-gap: 2em; }
-.threeCol > * { max-height: 300px; overflow-y: hidden; padding: 0 1em;
- transition: max-height 0.2s ease-out, border 0.2s ease-out;
- cursor: pointer; border: 1px solid var(--color-borders); border-bottom-style: dashed; }
-.threeCol > .active { border-bottom-style: solid; }
-.threeCol > :hover { border-color: var(--color-accent-hover); }
-
-.threeCol a { transition: color .4s; }
-.threeCol a:hover { color: var(--color-accent-hover); }
-
-@media screen and (min-width: 1024px) {
- .threeCol { display: block; overflow-x: auto; white-space: nowrap; }
- .threeCol > * { display: inline-block; margin-right: 5%; width: 30%; white-space: initial; vertical-align: top; }
- .threeCol > :last-child { margin-right: 0; }
-}
-
-
-/*
- * Accordions
- */
- /* Style the buttons that are used to open and close the accordion panel */
-.faq_question { position: relative; display: block; width: 100%;
- padding: .6rem .8rem .6rem 2.4rem; cursor: pointer;
- margin: .2em 0;
- border: 1px solid var(--color-borders); border-radius: .2rem;
- outline: none; transition: .4s ease-out; }
-
-.faq_question:before { display: inline-block; content: " > ";
- position: absolute; left: .8rem; top: 50%; transform: translate(0, -50%);
- font-size: 1.6rem;
- color: var(--color-accent-normal);
- font-weight: bold; }
-
-/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */
-.active, .faq_question:hover { background: var(--color-bg-raised2); }
-.accordion.faq_answer { padding-left: 18px; padding-right: 18px; white-space: pre-wrap; }
section h2 { margin-top: 2em; }
-#more { border-top: 1px solid var(--color-borders); margin-top: 2em;}
-
-.moreTiles { display: block; max-width: 100%; position: relative; }
-.moreTiles > a { display: inline-block; border: 1px solid var(--color-borders);
- border-radius: .1rem;
- font-size: .7em;
- transition: border .4s; }
-.moreTiles > a:hover,
-.moreTiles > a:focus { border-color: var(--color-accent-hover); }
-.moreTiles > a img { display: block; width: 400px; height: 225px; border-radius: inherit; }
-.moreTiles .moreTilesMeta { position: absolute; bottom: .5em;
- max-width: 400px;
- padding: .5em; background: rgba(0, 0, 0, .8);
- color: #FFF; }
-.moreTiles .moreTilesMeta p { margin: 0 0; padding: 0 0; font-weight: bold; }
-.moreTilesTitle { font-weight: bold; font-size: 1.15em; transition: color .4s; }
-
-.moreTiles > a:hover .moreTilesTitle,
-.moreTiles > a:focus .moreTilesTitle { color: var(--color-accent-hover); }
-
@media screen and (min-width: 768px) {
header nav > div > div { display: none; position: absolute; right: 0; top: 100%; width: 300px;
@@ -327,3 +262,5 @@ section h2 { margin-top: 2em; }
max-width: 1400px; margin: 0 auto;
}
}
+
+#resultsP { margin: 1em 0; padding: 1em; background: var(--color-bg-raised); }
diff --git a/public/static/css/qa.min.css/css/qa.css b/public/static/css/qa.min.css/css/qa.css
index c41d1ae..57e8f45 100644
--- a/public/static/css/qa.min.css/css/qa.css
+++ b/public/static/css/qa.min.css/css/qa.css
@@ -1 +1 @@
-@import 'editMenu.css';@import 'dialogue.css';:root{--color-bg-normal:#FFF;--color-bg-raised:#EEE;--color-bg-raised2:#FAFAFA;--color-fg-normal:#000;--color-fg-less:#212121;--color-borders:#D6D6D6;--color-borders-dark:#646464;--color-accent-normal:#1976D2;--color-accent-hover:#0D47A1;--color-green:#388E3C;--color-red:#D32F2F}@media(prefers-color-scheme:dark){:root{--color-bg-normal:#000;--color-bg-raised:#273000;--color-bg-raised2:#121212;--color-fg-normal:#FFF;--color-fg-less:#EEE;--color-borders:#37474F;--color-borders-dark:#BDBDBD;--color-accent-normal:#FFC107;--color-accent-hover:#FFA000;--color-green:#81C784;--color-red:#EF5350}}@font-face{font-family:sourceSansPro;src:local('Source-Sans-Pro'),local('Source Sans Pro'),url(../fonts/SourceSansPro-Regular.woff2)format('woff2'),url(../fonts/SourceSansPro-Regular.ttf)format('truetype');font-display:swap}*{box-sizing:border-box;z-index:1}body{margin:0;background:var(--color-bg-normal);color:var(--color-fg-normal);font-family:sourceSansPro,Arial,Helvetica,Times;font-size:1.2em;line-height:1.5em}#contentWrapper{display:grid;grid-template-columns:auto auto;grid-gap:2em 2em}a{text-decoration:none;color:inherit}h1{display:block;width:100%;text-align:center;margin:0 auto .8em;padding:1em 0;font-size:2.5em;line-height:1.2em}h1>*{display:inline-block;vertical-align:middle;color:var(--color-fg-less)}h1 img{margin-right:.5em;border-radius:.1em;opacity:.7;transition:opacity .4s}h1 img:hover{opacity:1}main,#contentWrapper>section,#contentWrapper>div,#contentWrapper>form{grid-row:auto;grid-column:1/span 2;display:block;width:90%;margin:0 auto 3em}div#uploader #uploaderMenu{display:block;padding:.5em 0}#parserList{display:block;margin:0;padding:0}#parserList>li{display:grid;grid-template-columns:15fr 1fr;margin:0;padding:0;border-bottom:1px solid var(--color-borders);cursor:pointer;transition:.2s ease-out}#parserList>li>:first-child:before{content:" > ";margin-right:.5em}#parserList>li>*{display:inline-block;grid-column:auto;grid-row:1;margin:0;padding:.3rem 1em}#parserList>li:hover{background:var(--color-bg-raised);color:var(--color-accent-hover)}main p,section p:not(.threeCol p){white-space:pre-wrap}@media screen and (min-width:768px){#contentWrapper{grid-template-columns:400px 1fr}#contentWrapper>div#uploader{position:relative;min-width:initial}#contentWrapper>main{padding-left:2em;border-left:1px dashed var(--color-fg-normal)}div#uploader #uploaderMenu{position:sticky;top:0}#contentWrapper>div#uploader,#contentWrapper>main{grid-column:auto;width:initial}#contentWrapper>div#uploader{margin-left:5vw}#contentWrapper>main{margin-right:5vw}}form>div{margin-bottom:1em}label{display:block;font-weight:700;margin-bottom:.5em}form>h4{margin-top:0}body>footer{padding:1em 5% 3em;background:var(--color-fg-normal);color:var(--color-bg-normal);border-top:.1em solid var(--color-borders)}body>footer>div{display:block}body>footer>div a,body>footer>div span{display:block;font-weight:700;cursor:pointer;color:inherit;transition:color .4s}body>footer>div a:hover,body>footer>div span:hover{color:var(--color-accent-hover)}.invisible{display:none!important;opacity:0}.buttonLike,select,button,textarea,input{display:block;width:100%;padding:.5em;border:2.5px solid var(--color-bg-raised);background:inherit;color:var(--color-fg-less);font-family:sourceSansPro;font-size:1em;border-radius:.2em;transition:border .2s}select:hover,textarea:hover,input:hover{border-color:#888}button{width:100%;padding:.5em .8em;border:1px solid var(--color-fg-normal);font-weight:700;border-radius:.1em;text-transform:uppercase;transition:color .2s,color .2s}textarea{line-height:1.2em}button:focus,button:hover{color:var(--color-accent-hover);border-color:var(--color-accent-hover)}button.backButton{margin-top:1.5em}button+button{margin-top:.5em}aside>h4:first-child{margin-top:0}select:focus,textarea:focus,input:focus{border-color:var(--color-accent-hover);box-shadow:none}textarea:invalid,input:invalid{box-shadow:none}textarea:invalid:focus,input:invalid:focus{border-right-width:1em}textarea{min-height:30vh}table{width:100%;max-height:60vh;margin:2em 0;border-collapse:collapse;overflow:auto}th{padding:.3em .5em;text-align:left;border-bottom:2px solid var(--color-fg-less)}tbody>tr:nth-child(2n+1){background:var(--color-bg-raised2)}td{padding:.3em .5em;border-bottom:1px solid var(--color-borders)}#contentWrapper>div.uploader{margin-bottom:0}#contentWrapper>div.uploader>form{border:1px solid var(--color-bg-raised);padding:1em;margin-bottom:0}.loading:before,.loading:after{content:" ";display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);height:64px;width:64px;margin:0;padding:0;border-radius:50%;border:8px solid var(--color-accent-hover);border-color:var(--color-accent-hover)transparent transparent transparent;z-index:100;animation:rotating 1.2s cubic-bezier(.5,0,.5,1)infinite;animation-delay:-.15s}.loading:after{animation-delay:-.45s}@keyframes rotating{from{transform:rotate(0)}to{transform:rotate(360deg)}}header{display:block;width:100%;padding:0 2em;font-size:1rem;z-index:2}header#mainHeader{margin-bottom:2em;background:var(--color-fg-less);color:var(--color-bg-raised2);display:table}header#mainHeader>*{display:table-cell}@media screen and (max-width:768px){header#mainHeader>*{min-width:20%}}header#mainHeader>*:last-child{text-align:right}header#mainHeader,header#mainHeader *{z-index:5}header#mainHeader:hover,header#mainHeader *:hover{z-index:6}header *{z-index:2}header>*{display:inline-block;vertical-align:middle}header h2{font-size:1.1em;color:inherit}main h2,section h2,#more h3{text-transform:uppercase;font-weight:400}header select{background:inherit;font-size:.85rem;border:0}header select option{color:var(--color-fg-normal)}header nav{color:var(--color-bg-raised2)}header nav>*{position:relative;display:inline-block;flex:1;font-size:1rem;padding:.7em 0}header#mainHeader img{display:inline-block;height:1.9em;margin-right:.5em;vertical-align:middle;filter:invert(1);transition:opacity .4s}header#mainHeader h2{display:inline-block;vertical-align:middle;font-weight:400}header#mainHeader>a:focus>img,header#mainHeader>a:hover>img{opacity:.7}.summary{display:block;padding:0 1em;border:1px solid var(--color-borders);border-radius:.1em}.accordion{max-height:0;overflow-y:hidden;transition:max-height .2s ease-out,border .2s ease-out}.accordion.active{display:block;padding:1em 0;border-top:1px dotted var(--color-borders);border-bottom:1px dotted var(--color-borders)}.threeCol{display:grid;grid-template-columns:1fr;grid-gap:2em}.threeCol>*{max-height:300px;overflow-y:hidden;padding:0 1em;transition:max-height .2s ease-out,border .2s ease-out;cursor:pointer;border:1px solid var(--color-borders);border-bottom-style:dashed}.threeCol>.active{border-bottom-style:solid}.threeCol>:hover{border-color:var(--color-accent-hover)}.threeCol a{transition:color .4s}.threeCol a:hover{color:var(--color-accent-hover)}@media screen and (min-width:1024px){.threeCol{display:block;overflow-x:auto;white-space:nowrap}.threeCol>*{display:inline-block;margin-right:5%;width:30%;white-space:initial;vertical-align:top}.threeCol>:last-child{margin-right:0}}.faq_question{position:relative;display:block;width:100%;padding:.6rem .8rem .6rem 2.4rem;cursor:pointer;margin:.2em 0;border:1px solid var(--color-borders);border-radius:.2rem;outline:none;transition:.4s ease-out}.faq_question:before{display:inline-block;content:" > ";position:absolute;left:.8rem;top:50%;transform:translate(0,-50%);font-size:1.6rem;color:var(--color-accent-normal);font-weight:700}.active,.faq_question:hover{background:var(--color-bg-raised2)}.accordion.faq_answer{padding-left:18px;padding-right:18px;white-space:pre-wrap}section h2{margin-top:2em}#more{border-top:1px solid var(--color-borders);margin-top:2em}.moreTiles{display:block;max-width:100%;position:relative}.moreTiles>a{display:inline-block;border:1px solid var(--color-borders);border-radius:.1rem;font-size:.7em;transition:border .4s}.moreTiles>a:hover,.moreTiles>a:focus{border-color:var(--color-accent-hover)}.moreTiles>a img{display:block;width:400px;height:225px;border-radius:inherit}.moreTiles .moreTilesMeta{position:absolute;bottom:.5em;max-width:400px;padding:.5em;background:rgba(0,0,0,.8);color:#fff}.moreTiles .moreTilesMeta p{margin:0;padding:0;font-weight:700}.moreTilesTitle{font-weight:700;font-size:1.15em;transition:color .4s}.moreTiles>a:hover .moreTilesTitle,.moreTiles>a:focus .moreTilesTitle{color:var(--color-accent-hover)}@media screen and (min-width:768px){header nav>div>div{display:none;position:absolute;right:0;top:100%;width:300px;background:var(--color-fg-less);text-align:left}header nav>div>a{padding:.95em 1em;transition:background .4s,color .4s}header nav>div:focus>a,header nav>div:hover>a{color:var(--color-gray)}header nav>div>a:focus+div,header nav>div:hover>div{display:block;animation:fade-in .4s}header nav>div>a:focus+div>a,header nav>div:hover>div>a{display:block;padding:.5em 1em;cursor:pointer;transition:background .4s,color .4s}header nav>div>a:focus+div>a:focus,header nav>div:hover>div>a:hover{background:var(--color-fg-normal);color:var(--color-bg-normal)}header{padding:0 10em}}@media screen and (max-width:768px){body{font-size:1.08em}h1 img{display:none}header .branding{padding:.7rem}header nav:before{content:" \2630 ";display:inline-block;position:absolute;right:3rem;top:0;padding:.8rem 0;font-size:1.5em;text-align:right}header nav>*{display:none}header nav:hover:before{display:none}header nav:hover{position:absolute;left:0;top:0;display:flex;width:100%;min-height:90vh;padding:2em 1em .5em;background:var(--color-bg-normal);color:var(--color-fg-normal);border-bottom:1px solid var(--color-borders);box-shadow:2px 2px 4px var(--color-borders);z-index:3;animation:fade-in .4s}header nav:hover>*{display:block;flex:1;min-width:40vw;padding:1em;font-size:1em}header nav:hover>div a{display:block;padding:.2em 0}header{padding:0 1em}}@media(prefers-color-scheme:dark){header#mainHeader,body>footer,header nav,header nav>div>div{background:inherit;color:inherit}header#mainHeader{border-bottom:1px solid var(--color-bg-raised2)}}@media screen and (min-width:1600px){#contentWrapper{max-width:1400px;margin:0 auto}}
\ No newline at end of file
+@import 'editMenu.css';@import 'dialogue.css';:root{--color-bg-normal:#FFF;--color-bg-raised:#EEE;--color-bg-raised2:#FAFAFA;--color-fg-normal:#000;--color-fg-less:#212121;--color-borders:#D6D6D6;--color-borders-dark:#646464;--color-accent-normal:#1976D2;--color-accent-hover:#0D47A1;--color-green:#388E3C;--color-red:#D32F2F}@media(prefers-color-scheme:dark){:root{--color-bg-normal:#000;--color-bg-raised:#273000;--color-bg-raised2:#121212;--color-fg-normal:#FFF;--color-fg-less:#EEE;--color-borders:#37474F;--color-borders-dark:#BDBDBD;--color-accent-normal:#FFC107;--color-accent-hover:#FFA000;--color-green:#81C784;--color-red:#EF5350}}@font-face{font-family:sourceSansPro;src:local('Source-Sans-Pro'),local('Source Sans Pro'),url(../fonts/SourceSansPro-Regular.woff2)format('woff2'),url(../fonts/SourceSansPro-Regular.ttf)format('truetype');font-display:swap}*{box-sizing:border-box;z-index:1}body{margin:0;background:var(--color-bg-normal);color:var(--color-fg-normal);font-family:sourceSansPro,Arial,Helvetica,Times;font-size:1.2em;line-height:1.5em}#contentWrapper{display:grid;grid-template-columns:auto auto;grid-gap:2em 2em}a{text-decoration:none;color:inherit}h1{display:block;width:100%;text-align:center;margin:0 auto .8em;padding:1em 0;font-size:2.5em;line-height:1.2em}h1>*{display:inline-block;vertical-align:middle;color:var(--color-fg-less)}h1 img{margin-right:.5em;border-radius:.1em;opacity:.7;transition:opacity .4s}h1 img:hover{opacity:1}main,#contentWrapper>section,#contentWrapper>div,#contentWrapper>form{grid-row:auto;grid-column:1/span 2;display:block;width:90%;margin:0 auto 3em}div#uploader #uploaderMenu{display:block;padding:.5em 0}#parserList{display:block;margin:0;padding:0}#parserList>li{display:grid;grid-template-columns:15fr 1fr;margin:0;padding:0;border-bottom:1px solid var(--color-borders);cursor:pointer;transition:.2s ease-out}#parserList>li>:first-child:before{content:" > ";margin-right:.5em}#parserList>li>*{display:inline-block;grid-column:auto;grid-row:1;margin:0;padding:.3rem 1em}#parserList>li:hover{background:var(--color-bg-raised);color:var(--color-accent-hover)}main p,section p:not(.threeCol p){white-space:pre-wrap}@media screen and (min-width:768px){#contentWrapper{grid-template-columns:400px 1fr}#contentWrapper>div#uploader{position:relative;min-width:initial}#contentWrapper>main{padding-left:2em;border-left:1px dashed var(--color-fg-normal)}div#uploader #uploaderMenu{position:sticky;top:0}#contentWrapper>div#uploader,#contentWrapper>main{grid-column:auto;width:initial}#contentWrapper>div#uploader{margin-left:5vw}#contentWrapper>main{margin-right:5vw}}form>div{margin-bottom:1em}label{display:block;font-weight:700;margin-bottom:.5em}form>h4{margin-top:0}body>footer{padding:1em 5% 3em;background:var(--color-fg-normal);color:var(--color-bg-normal);border-top:.1em solid var(--color-borders)}body>footer>div{display:block}body>footer>div a,body>footer>div span{display:block;font-weight:700;cursor:pointer;color:inherit;transition:color .4s}body>footer>div a:hover,body>footer>div span:hover{color:var(--color-accent-hover)}.invisible{display:none!important;opacity:0}.buttonLike,select,button,textarea,input{display:block;width:100%;padding:.5em;border:2.5px solid var(--color-bg-raised);background:inherit;color:var(--color-fg-less);font-family:sourceSansPro;font-size:1em;border-radius:.2em;transition:border .2s}select:hover,textarea:hover,input:hover{border-color:#888}button{width:100%;padding:.5em .8em;border:1px solid var(--color-fg-normal);font-weight:700;border-radius:.1em;text-transform:uppercase;transition:color .2s,color .2s}textarea{line-height:1.2em}button:focus,button:hover{color:var(--color-accent-hover);border-color:var(--color-accent-hover)}button.backButton{margin-top:1.5em}button+button{margin-top:.5em}aside>h4:first-child{margin-top:0}select:focus,textarea:focus,input:focus{border-color:var(--color-accent-hover);box-shadow:none}textarea:invalid,input:invalid{box-shadow:none}textarea:invalid:focus,input:invalid:focus{border-right-width:1em}textarea{min-height:30vh}table{width:100%;max-height:60vh;margin:2em 0;border-collapse:collapse;overflow:auto}th{padding:.3em .5em;text-align:left;border-bottom:2px solid var(--color-fg-less)}tbody>tr:nth-child(2n+1){background:var(--color-bg-raised2)}td{padding:.3em .5em;border-bottom:1px solid var(--color-borders)}#contentWrapper>div.uploader{margin-bottom:0}#contentWrapper>div.uploader>form{border:1px solid var(--color-bg-raised);padding:1em;margin-bottom:0}.loading:before,.loading:after{content:" ";display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);height:64px;width:64px;margin:0;padding:0;border-radius:50%;border:8px solid var(--color-accent-hover);border-color:var(--color-accent-hover)transparent transparent transparent;z-index:100;animation:rotating 1.2s cubic-bezier(.5,0,.5,1)infinite;animation-delay:-.15s}.loading:after{animation-delay:-.45s}@keyframes rotating{from{transform:rotate(0)}to{transform:rotate(360deg)}}header{display:block;width:100%;padding:0 2em;font-size:1rem;z-index:2}header#mainHeader{margin-bottom:2em;background:var(--color-fg-less);color:var(--color-bg-raised2);display:table}header#mainHeader>*{display:table-cell}@media screen and (max-width:768px){header#mainHeader>*{min-width:20%}}header#mainHeader>*:last-child{text-align:right}header#mainHeader,header#mainHeader *{z-index:5}header#mainHeader:hover,header#mainHeader *:hover{z-index:6}header *{z-index:2}header>*{display:inline-block;vertical-align:middle}header h2{font-size:1.1em;color:inherit}main h2,section h2,#more h3{text-transform:uppercase;font-weight:400}header select{background:inherit;font-size:.85rem;border:0}header select option{color:var(--color-fg-normal)}header nav{color:var(--color-bg-raised2)}header nav>*{position:relative;display:inline-block;flex:1;font-size:1rem;padding:.7em 0}header#mainHeader img{display:inline-block;height:1.9em;margin-right:.5em;vertical-align:middle;filter:invert(1);transition:opacity .4s}header#mainHeader h2{display:inline-block;vertical-align:middle;font-weight:400}header#mainHeader>a:focus>img,header#mainHeader>a:hover>img{opacity:.7}section h2{margin-top:2em}@media screen and (min-width:768px){header nav>div>div{display:none;position:absolute;right:0;top:100%;width:300px;background:var(--color-fg-less);text-align:left}header nav>div>a{padding:.95em 1em;transition:background .4s,color .4s}header nav>div:focus>a,header nav>div:hover>a{color:var(--color-gray)}header nav>div>a:focus+div,header nav>div:hover>div{display:block;animation:fade-in .4s}header nav>div>a:focus+div>a,header nav>div:hover>div>a{display:block;padding:.5em 1em;cursor:pointer;transition:background .4s,color .4s}header nav>div>a:focus+div>a:focus,header nav>div:hover>div>a:hover{background:var(--color-fg-normal);color:var(--color-bg-normal)}header{padding:0 10em}}@media screen and (max-width:768px){body{font-size:1.08em}h1 img{display:none}header .branding{padding:.7rem}header nav:before{content:" \2630 ";display:inline-block;position:absolute;right:3rem;top:0;padding:.8rem 0;font-size:1.5em;text-align:right}header nav>*{display:none}header nav:hover:before{display:none}header nav:hover{position:absolute;left:0;top:0;display:flex;width:100%;min-height:90vh;padding:2em 1em .5em;background:var(--color-bg-normal);color:var(--color-fg-normal);border-bottom:1px solid var(--color-borders);box-shadow:2px 2px 4px var(--color-borders);z-index:3;animation:fade-in .4s}header nav:hover>*{display:block;flex:1;min-width:40vw;padding:1em;font-size:1em}header nav:hover>div a{display:block;padding:.2em 0}header{padding:0 1em}}@media(prefers-color-scheme:dark){header#mainHeader,body>footer,header nav,header nav>div>div{background:inherit;color:inherit}header#mainHeader{border-bottom:1px solid var(--color-bg-raised2)}}@media screen and (min-width:1600px){#contentWrapper{max-width:1400px;margin:0 auto}}#resultsP{margin:1em 0;padding:1em;background:var(--color-bg-raised)}
\ No newline at end of file
diff --git a/public/static/js/qa.js b/public/static/js/qa.js
index c50cf66..b183fd6 100644
--- a/public/static/js/qa.js
+++ b/public/static/js/qa.js
@@ -7,19 +7,15 @@ if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js');
}
-class QaPage {
+class ConcPage {
lang;
tls;
domWrapper;
domUploaderWrapper;
- domUploaderCurrentWrapper;
+ domResultsWrapper;
domMainWrapper;
- parser;
- selectedActivity;
- selectedApi;
-
constructor(lang, tls) {
this.lang = lang;
@@ -34,92 +30,15 @@ class QaPage {
domUploaderWrapper.classList.add("uploader");
this.domUploaderWrapper = domUploaderWrapper;
- let domUploaderCurrentWrapper = document.createElement("div");
- domUploaderCurrentWrapper.id = "uploaderMenu";
- this.domUploaderCurrentWrapper = domUploaderCurrentWrapper;
+ let domResultsWrapper = document.createElement("div");
+ domResultsWrapper.id = "results";
+ domResultsWrapper.classList.add("results");
+ this.domResultsWrapper = domResultsWrapper;
let domMainWrapper = document.createElement("main");
this.domMainWrapper = domMainWrapper;
}
- goForwardInMenuPages(from) {
-
- const app = this;
-
- switch (from) {
- case "parserSelection":
- app.drawUpActivitySelection();
- break;
- case "activityTypeSelection":
- app.drawUpApiTypeSelection();
- break;
- case "apiTypeSelection":
- app.drawUpUploadTypeSelection();
- break;
- default:
- console.log("Invalid page to go forward from selected.");
- }
-
- }
-
- generateDialogueCloseButton() {
-
- const cancelB = document.createElement("a");
- cancelB.classList.add("icons");
- cancelB.classList.add("iconsClose");
- cancelB.classList.add("dialogueCloseX");
- cancelB.id = "dialogueClose";
- cancelB.textContent = "X";
- cancelB.title = this.tls.close;
- cancelB.href = "#" + location.href;
- cancelB.addEventListener('click', QaDialogue.closeDialogue);
- return cancelB;
-
- }
-
- /**
- * Setter for selectedActivity. Checks if the first argument of the API works with the intended
- * activity.
- */
- setSelectedActivity(selected) {
-
- if (['evaluate', 'convert_to_xml'].includes(selected)) {
- this.selectedActivity = selected;
- }
- else {
- window.alert("Invalid activity selected");
- }
-
- }
-
- /**
- * Setter for selectedApi. Checks if the second argument of the API works with the intended
- * activity.
- */
- setSelectedApi(selected) {
-
- let api_whitelist;
- switch (this.selectedActivity) {
- case "evaluate":
- api_whitelist = ['object', 'count_vocabulary_entries_to_be_added', 'minimaldatensatz'];
- break;
- case "convert_to_xml":
- const allowedXmlConversionTargets = document.documentElement.getAttribute("data-allowed-xml-conversion-targets").split(',');
- api_whitelist = allowedXmlConversionTargets;
- break;
- default:
- window.alert("Invalid activity set: " + this.selectedActivity);
- }
-
- if (api_whitelist.includes(selected)) {
- this.selectedApi = selected;
- }
- else {
- window.alert("Invalid activity selected");
- }
-
- }
-
downloadFromString(filename, text) {
const blob = new Blob([text], { type: "text/plain" });
@@ -140,367 +59,6 @@ class QaPage {
}
- generateValidationOutputsForCountNewToVocabs(results) {
-
- const validation_overlay_intro = document.getElementById("validation_overlay_intro");
- if (validation_overlay_intro !== undefined && validation_overlay_intro !== null) {
- validation_overlay_intro.parentElement.removeChild(validation_overlay_intro);
- }
-
- const resultsSection = document.createElement("div");
-
- const h5 = document.createElement("h5");
- h5.textContent = this.tls.count_new_to_vocabs;
- resultsSection.appendChild(h5);
-
- const table = document.createElement("table");
-
- function createTr(th_value, td_value) {
-
- const tr = document.createElement("tr");
-
- const th = document.createElement("th");
- th.textContent = th_value;
- tr.appendChild(th);
-
- const tdText = document.createElement("td");
- tdText.textContent = td_value;
- tr.appendChild(tdText);
-
- return tr;
-
- }
-
- for (let result of results.count) {
- table.appendChild(createTr(result.category_name, result.count));
- }
-
- resultsSection.appendChild(table);
-
- const h6 = document.createElement("h6");
- h6.textContent = this.tls.samples;
- resultsSection.appendChild(h6);
-
- const tableSamples = document.createElement("table");
-
- for (let result of results.samples) {
- tableSamples.appendChild(createTr(result.category_name, result.entries.join(", ")));
- }
-
- resultsSection.appendChild(tableSamples);
-
- return resultsSection;
-
- }
-
- generateValidationOutputsForMinimaldatensatz(results) {
-
- const resultsSection = document.createElement("div");
-
- for (let object of results) {
-
- const li = document.createElement("div");
-
- const h5 = document.createElement("h5");
- h5.textContent = this.tls.inventory_number + ': ' + object.invno;
- li.appendChild(h5);
-
- const table = document.createElement("table");
- for (let field of object.evaluations) {
-
- const tr = document.createElement("tr");
-
- const td = document.createElement("td");
- td.style.width = "40px";
- if (field.passed === true) {
- td.style.background = "var(--color-green)";
- }
- else td.style.background = "var(--color-red)";
- tr.appendChild(td);
-
- const tdText = document.createElement("td");
- tdText.textContent = field.text;
- tr.appendChild(tdText);
-
- table.appendChild(tr)
-
- }
- li.appendChild(table);
- resultsSection.appendChild(li);
-
- }
-
- return resultsSection;
-
- }
-
- generateRegularValidationOutputs(results) {
-
- const resultsSection = document.createElement("div");
-
- function createTr(thText, tdChild) {
-
- const tr = document.createElement("tr");
-
- const th = document.createElement("th");
- th.textContent = thText;
- tr.appendChild(th);
-
- const td = document.createElement("td");
- td.appendChild(tdChild);
- tr.appendChild(td);
-
- return tr;
-
- }
-
- for (let object of results) {
-
- const li = document.createElement("div");
-
- const h5 = document.createElement("h5");
- h5.textContent = this.tls.inventory_number + ': ' + object.invno;
- li.appendChild(h5);
-
- const liContent = document.createElement("div");
-
- const table = document.createElement("table");
-
- const score = document.createElement("span");
- score.textContent = object.puqi.score;
- table.appendChild(createTr(this.tls.puqi_score, score));
-
- const plausiStatus = document.createElement("span");
- if (object.plausi.warn === false) {
- plausiStatus.textContent = this.tls.check_passed;
- }
- else plausiStatus.textContent = this.tls.warning;
- table.appendChild(createTr(this.tls.plausi + ': ' + this.tls.status, plausiStatus));
-
- const plausiLegalStatus = document.createElement("span");
- if (object.plausi_legal.warn === false) {
- plausiLegalStatus.textContent = this.tls.check_passed;
- }
- else plausiLegalStatus.textContent = this.tls.warning;
- table.appendChild(createTr(this.tls.plausi_legal + ': ' + this.tls.status, plausiLegalStatus));
-
- liContent.appendChild(table);
-
- // Generate section for plausi warnings
- if (object.plausi.msg.length !== 0) {
-
- const h6plausi = document.createElement("h6");
- h6plausi.textContent = this.tls.plausibility_warnings;
- liContent.appendChild(h6plausi);
-
- const plausiMsgUl = document.createElement("ul");
- for (let msg of object.plausi.msg) {
-
- const plausiMsgLi = document.createElement("li");
- plausiMsgLi.textContent = msg;
- plausiMsgUl.appendChild(plausiMsgLi);
-
- }
- liContent.appendChild(plausiMsgUl);
-
- }
-
- // Generate section for plausiLegal warnings
- if (object.plausi_legal.warn === true) {
-
- const h6plausiLegal = document.createElement("h6");
- h6plausiLegal.textContent = this.tls.plausibility_warnings_licenses;
- liContent.appendChild(h6plausiLegal);
-
- const plausiLegalMsgUl = document.createElement("ul");
- for (let msg of object.plausi_legal.msg) {
-
- const plausiLegalMsgLi = document.createElement("li");
-
- if (msg.link !== '') {
- const plausiLegalA = document.createElement("a");
- plausiLegalA.href = msg.link;
- plausiLegalA.textContent = msg.text;
- plausiLegalMsgLi.appendChild(plausiLegalA);
- }
- else plausiLegalMsgLi.textContent = msg.text;
-
- plausiLegalMsgUl.appendChild(plausiLegalMsgLi);
-
- }
- liContent.appendChild(plausiLegalMsgUl);
-
- }
-
- const h6puq = document.createElement("h6");
- h6puq.textContent = this.tls.puqi_notices;
- liContent.appendChild(h6puq);
-
- const puqiMsgUl = document.createElement("ul");
-
- for (let msg of object.puqi.msg) {
-
- const puqiMsgLi = document.createElement("li");
- puqiMsgLi.textContent = msg.message;
- puqiMsgUl.appendChild(puqiMsgLi);
-
- }
-
- liContent.appendChild(puqiMsgUl);
-
- li.appendChild(liContent);
-
- resultsSection.appendChild(li);
-
- }
-
- return resultsSection;
-
- }
-
- listValidationOutputs(elements) {
-
- console.log("Listing validation errors");
-
- const dialogueContent = document.createElement("div");
-
- const headline = document.createElement("h3");
- headline.textContent = this.tls.validation_errors;
- headline.appendChild(this.generateDialogueCloseButton());
- dialogueContent.appendChild(headline);
-
- const intro = document.createElement("p");
- intro.id = "validation_overlay_intro";
- intro.textContent = this.tls.objects_identified.replace("[placeholder_for_count]", elements.results.length);
- dialogueContent.appendChild(intro);
-
- const resultsSection = document.createElement("section");
- dialogueContent.appendChild(resultsSection);
-
- const resultsSectionH4 = document.createElement("h4");
- resultsSectionH4.textContent = this.tls.results;
- resultsSection.appendChild(resultsSectionH4);
-
- switch (this.selectedApi) {
- case "count_vocabulary_entries_to_be_added":
- resultsSection.appendChild(this.generateValidationOutputsForCountNewToVocabs(elements.results));
- break;
- case "minimaldatensatz":
- resultsSection.appendChild(this.generateValidationOutputsForMinimaldatensatz(elements.results));
- break;
- default:
- resultsSection.appendChild(this.generateRegularValidationOutputs(elements.results));
- break;
- }
-
- dialogue = QaDialogue.drawDialogue(dialogueContent);
-
- }
-
- async runApiQuery(data) {
-
- if (navigator.onLine === false) {
- window.alert(this.tls.currently_offline_msg);
- document.body.classList.remove("loading");
- return false;
- }
-
- let app = this;
-
- (async function() {
- const result = data;
- if (result.includes('�')) {
- window.alert('The file encoding appears to not be UTF-8-encoded!');
- }
- })();
-
- let bodyParams = {
- parser: app.parser,
- lang: app.lang,
- data: data,
- };
-
- if (app.selectedActivity === 'convert_to_xml') {
- bodyParams.institution_name = window.prompt("The institution's name cannot automatically be reused from what may be stated in the uploaded data. If you would like to have one in the output data, please enter it here.");
- bodyParams.institution_identifier = window.prompt("The institution's identifier (e.g. an ISIL ID) cannot automatically be reused from what may be stated in the uploaded data. If you would like to have one in the output data, please enter it here.");
- }
-
- try {
-
- let requestBody = [];
- for (let param in bodyParams) {
- requestBody.push(param + '=' + encodeURIComponent(bodyParams[param]));
- }
- const response = await window.fetch('/api/' + app.selectedActivity + '/' + app.selectedApi, {
- method: 'POST', cache: 'no-cache',
- headers: {'Content-Type': 'application/x-www-form-urlencoded'},
- body: requestBody.join("&"),
- });
-
- document.body.classList.remove("loading");
- if (response.status === 200) {
-
- switch (app.selectedActivity) {
- case "evaluate":
- try {
- const elements = await response.json();
- app.listValidationOutputs(elements);
- }
- catch (error) {
- console.log(error);
- }
- break;
- case "convert_to_xml":
- const text = await response.text();
- app.downloadFromString('converted-' + app.selectedActivity + '.xml', text);
- break;
- default:
- window.alert("Invalid activity selected");
- }
- }
- else {
- const text = await response.text();
- window.alert(text);
- }
- }
- catch(error) {
- console.log(error);
- };
-
- app.drawUpParserSelection();
-
- }
-
- uploadFileForValidation(file) {
-
- let app = this;
-
- if (file.size >= MAX_INPUT_SIZE) {
- window.alert(this.tls.filesize_too_big.replace("[placeholder]", MAX_INPUT_SIZE));
- return false;
- }
-
- const reader = new FileReader();
- reader.readAsText(file, 'UTF-8');
-
- document.body.classList.add("loading");
-
- reader.onload = function() {
-
- function handleValidation() {
- app.runApiQuery(reader.result);
-
- }
-
- handleValidation();
-
- };
- reader.onerror = function() {
- alert(reader.error);
- };
-
- }
-
renderGenHeader() {
const header = document.createElement("header");
@@ -575,9 +133,7 @@ class QaPage {
img.alt = "";
h1.appendChild(img);
- const h1Span = document.createElement("span");
- h1Span.textContent = "museum-digital:qa";
- h1.appendChild(h1Span);
+ h1.appendChild(this.createPlainTextElem("span", "museum-digital:" + this.tls.concordance_checker));
appHeader.appendChild(h1);
@@ -603,381 +159,253 @@ class QaPage {
domH2.textContent = this.tls.quality_assessment_tools;
this.domMainWrapper.appendChild(domH2);
- this.domMainWrapper.appendChild(this.createP(this.tls.intro_text));
+ this.domMainWrapper.appendChild(this.createP(this.tls.intro));
this.domWrapper.appendChild(this.domMainWrapper);
}
+ generateBoilerplateForTableSection(hl) {
+
+ const passedSec = document.createElement("div");
+
+ const passedHl = document.createElement("h3");
+ passedHl.textContent = hl;
+ passedSec.appendChild(passedHl);
+
+ const passedTable = document.createElement("table");
+
+ const passedThead = document.createElement("thead");
+ passedTable.appendChild(passedThead);
+
+ const passedTBody = document.createElement("tbody");
+ passedTable.appendChild(passedTBody);
+
+ passedSec.appendChild(passedTable);
+
+ return {
+ section: passedSec,
+ thead: passedThead,
+ tbody: passedTBody,
+ };
+
+ }
+
+ generateListResponse(context, listOptionsEn, listOptions, elements) {
+
+ // Empty
+ while (this.domResultsWrapper.firstChild) {
+ this.domResultsWrapper.removeChild(this.domResultsWrapper.firstChild);
+ }
+
+ // Fill passed entries
+
+ if (elements.passed.length === undefined) {
+
+ const passedSec = this.generateBoilerplateForTableSection(this.tls.passed);
+
+ // TL TODO
+ const theadTr = document.createElement("tr");
+ for (const theadname of ['Input', 'Match']) {
+ const theadTd = document.createElement("th");
+ theadTd.textContent = theadname;
+ theadTr.appendChild(theadTd);
+ }
+ passedSec.thead.appendChild(theadTr);
+
+ for (const passedKey in elements.passed) {
+ const passedValue = elements.passed[passedKey];
+ const tr = document.createElement("tr");
+
+ tr.appendChild(this.createPlainTextElem("td", passedKey));
+
+ if (listOptions[passedValue]) {
+ tr.appendChild(this.createPlainTextElem("td", listOptions[passedValue]));
+ }
+ else {
+ valueTd.textContent = passedValue;
+ tr.appendChild(this.createPlainTextElem("td", passedValue));
+ }
+
+ passedSec.tbody.appendChild(tr);
+ }
+
+ this.domResultsWrapper.appendChild(passedSec.section);
+
+ }
+
+ // Fill unpassed entries
+ const app = this;
+
+ if (elements.not_passed.length !== 0) {
+
+ const nonpassedSec = this.generateBoilerplateForTableSection(this.tls.not_yet_matched);
+
+ const ntheadTr = document.createElement("tr");
+ for (const theadname of ['Input', 'Select Your Match']) {
+ const theadTd = document.createElement("th");
+ theadTd.textContent = theadname;
+ ntheadTr.appendChild(theadTd);
+ }
+ nonpassedSec.thead.appendChild(ntheadTr);
+
+ let matchSelects = [];
+ for (let nonpassedName of elements.not_passed) {
+ const tr = document.createElement("tr");
+
+ tr.appendChild(this.createPlainTextElem("td", nonpassedName));
+
+ const valueTd = document.createElement("td");
+
+ const valueSelect = document.createElement("select");
+ valueSelect.setAttribute('data-input', nonpassedName);
+
+ for (const key in listOptions) {
+ const opt = document.createElement("option");
+ opt.value = key;
+ opt.textContent = listOptions[key];
+ valueSelect.appendChild(opt);
+ }
+
+ matchSelects.push(valueSelect);
+ valueTd.appendChild(valueSelect);
+
+ tr.appendChild(valueTd);
+
+ nonpassedSec.tbody.appendChild(tr);
+ }
+
+ this.domResultsWrapper.appendChild(nonpassedSec.section);
+
+ const convertB = document.createElement("button");
+ convertB.textContent = this.tls.generate_code_snippet;
+ nonpassedSec.section.appendChild(convertB);
+
+ const resultsWrap = document.createElement("div");
+ convertB.addEventListener('click', function() {
+
+ let lines = [];
+ let keysAreNumeric = false;
+ if (listOptions[1] !== undefined && listOptions[1] !== null) {
+ keysAreNumeric = true;
+ }
+
+ for (let m of matchSelects) {
+
+ let line = ("'" + m.getAttribute("data-input") + "'").padEnd(40, " ") + " => ";
+ if (keysAreNumeric === true) {
+ line += m.value + ",";
+ }
+ else {
+ line += "'" + m.value + "',";
+ }
+ line += ' // ' + listOptionsEn[m.value];
+ lines.push(line);
+
+ m.setAttribute("readonly", "readonly");
+ }
+
+ const output = " ".repeat(8) + lines.join("\n" + " ".repeat(8));
+ console.log(output);
+
+ // Present output online
+
+ const resultsP = app.createP(output);
+ resultsP.id = "resultsP";
+ resultsP.style.fontFamily = "Monospace, Courier";
+ resultsP.style.whiteSpace = "pre-wrap";
+
+ resultsWrap.appendChild(resultsP);
+ resultsP.scrollIntoView({block: "start", behavior: "smooth"});
+
+ // Download
+ app.downloadFromString("new-concordance-" + context + '.htm', output);
+
+ });
+
+ this.domResultsWrapper.appendChild(resultsWrap);
+
+ }
+
+ this.domResultsWrapper.scrollIntoView({block: "start", behavior: "smooth"});
+
+ //
+
+ }
+
// Setup
renderUploader() {
+ const listSelect = document.createElement("select");
+
+ const listOptions = document.documentElement.getAttribute("data-lists").split(',');
+
+ for (const lOpt of listOptions) {
+ const opt = document.createElement("option");
+ opt.textContent = this.tls[lOpt];
+ opt.value = lOpt;
+ listSelect.appendChild(opt);
+ }
+ this.domUploaderWrapper.appendChild(listSelect);
+
const textarea = document.createElement("textarea");
+ textarea.placeholder = this.tls.one_line_per_entry;
this.domUploaderWrapper.appendChild(textarea);
const submitB = document.createElement("button");
- submitB.textContent = "Submittt";
+ submitB.textContent = this.tls.submit;
this.domUploaderWrapper.appendChild(submitB);
+ const app = this;
+
+ submitB.addEventListener('click', async function(e) {
+ e.stopPropagation();
+ e.preventDefault();
+
+ // Load translations in English
+ const listResponseEn = await window.fetch('/static/json/tls.' + listSelect.value + '.en.json', {
+ method: 'GET', cache: 'no-cache',
+ });
+
+ if (listResponseEn.status !== 200) {
+ const text = await response.text();
+ window.alert(text);
+ }
+ const tListOptionsEn = await listResponseEn.json();
+
+ // Load translations
+ const listResponse = await window.fetch('/static/json/tls.' + listSelect.value + '.' + app.lang + '.json', {
+ method: 'GET', cache: 'no-cache',
+ });
+
+ if (listResponse.status !== 200) {
+ const text = await response.text();
+ window.alert(text);
+ }
+ const tListOptions = await listResponse.json();
+
+ // Get API output
+
+ let requestBody = [];
+ requestBody.push('terms=' + encodeURIComponent(textarea.value));
+ const response = await window.fetch('/api/evaluate/' + listSelect.value, {
+ method: 'POST', cache: 'no-cache',
+ headers: {'Content-Type': 'application/x-www-form-urlencoded'},
+ body: requestBody.join("&"),
+ });
+
+ if (response.status !== 200) {
+ const text = await response.text();
+ window.alert(text);
+ }
+ const elements = await response.json();
+
+ app.generateListResponse(listSelect.value, tListOptionsEn, tListOptions, elements);
+
+ });
+
this.domWrapper.appendChild(this.domUploaderWrapper);
-
- }
-
- renderStartpageSectionTechBackground() {
-
- const app = this;
-
- function toggleAccordionBox(elem) {
-
- elem.classList.toggle("active");
- const panel = elem;
- if (panel.style.maxHeight) {
- panel.style.maxHeight = null
- } else {
- panel.style.maxHeight = panel.scrollHeight + "px"
- }
-
- }
-
- function appendTypesOfEvaluations(section) {
-
- section.appendChild(app.createPlainTextElem("h3", app.tls.types_of_evaluations));
-
- const threeColumnDiv = document.createElement("div");
- threeColumnDiv.classList.add("threeCol");
-
- function generatePuqiDiv() {
-
- const puqiDiv = document.createElement("div");
- puqiDiv.id = "puqi_ex";
- puqiDiv.appendChild(app.createPlainTextElem("h4", app.tls.puqi));
- puqiDiv.appendChild(app.createP(app.tls.puqi_explica));
- puqiDiv.appendChild(app.createPlainTextElem("h5", app.tls.see));
-
- const puqiCitUl = document.createElement("ul");
-
- const puqiCit3 = document.createElement("li");
- puqiCit3.innerHTML = 'Rohde-Enslin, S. (2014). "PuQi - Eine Versuchung." Paper presented at the Autumn Seminar of the Working Group Documentation of the German Museum Association, 2014 (Herbsttagung der FG Dokumentation des Deutschen Museumsbunds). https://files.museum-digital.org/de/Praesentationen/2014-10-06_PuQI-Eine-Versuchung_SRE.pdf';
- puqiCitUl.appendChild(puqiCit3);;
-
- const puqiCit1 = document.createElement("li");
- puqiCit1.innerHTML = 'Rohde-Enslin, S. (2015). "PuQI – A Smart Way to Create Better Data." Uncommon Culture, 6 (2), 122-129. https://uncommonculture.org/ojs/index.php/UC/article/view/6218';
- puqiCitUl.appendChild(puqiCit1);
-
- const puqiCit2 = document.createElement("li");
- puqiCit2.innerHTML = 'Rohde-Enslin, S. (2021). "PuQi – Verführung zu Qualität." museum-digital:blog, https://blog.museum-digital.org/de/2021/01/22/ein-publikations-qualitaets-index-fuer-museumsobjektinformationen/';
- puqiCitUl.appendChild(puqiCit2);;
- puqiDiv.appendChild(puqiCitUl);
-
- puqiDiv.addEventListener('click', function() { toggleAccordionBox(puqiDiv); }, {passive: true})
-
- return puqiDiv;
-
- }
- function generatePlausiDiv() {
-
- const plausiDiv = document.createElement("div");
- plausiDiv.id = "plausi_ex";
- plausiDiv.appendChild(app.createPlainTextElem("h4", app.tls.plausi));
- plausiDiv.appendChild(app.createP(app.tls.plausi_explica));
- plausiDiv.appendChild(app.createP(app.tls.plausi_explica_2));
- plausiDiv.appendChild(app.createPlainTextElem("h5", app.tls.see));
-
- const plausiCitUl = document.createElement("ul");
- const plausiCit1 = document.createElement("li");
- plausiCit1.innerHTML = 'Rohde-Enslin, S. (2017). "Plausi - PuQI hat einen Freund bekommen." Paper presented at the Autumn Seminar of the Working Group Documentation of the German Museum Association, 2017 (Herbsttagung der FG Dokumentation des Deutschen Museumsbunds). https://files.museum-digital.org/de/Praesentationen/2017-11_Plausi-FG-Doku-Berlin_SRE.pdf';
- plausiCitUl.appendChild(plausiCit1);;
- plausiDiv.appendChild(plausiCitUl);
-
- plausiDiv.addEventListener('click', function() { toggleAccordionBox(plausiDiv); }, {passive: true})
- return plausiDiv;
-
- }
- function generatePlausiLegalDiv() {
-
- const plausiLegalDiv = document.createElement("div");
- plausiLegalDiv.id = "plausi_legal_ex";
- plausiLegalDiv.appendChild(app.createPlainTextElem("h4", app.tls.plausi_legal));
- plausiLegalDiv.appendChild(app.createP(app.tls.plausi_legal_explica));
- plausiLegalDiv.appendChild(app.createP(app.tls.plausi_legal_explica_2));
-
- plausiLegalDiv.addEventListener('click', function() { toggleAccordionBox(plausiLegalDiv); }, {passive: true})
- return plausiLegalDiv;
-
- }
- function generateCountNewToVocabsDiv() {
-
- const div = document.createElement("div");
- div.id = "minimaldatensatz_ex";
- div.appendChild(app.createPlainTextElem("h4", app.tls.count_new_to_vocabs));
- div.appendChild(app.createP(app.tls.count_new_to_vocabs_explica_1));
- // div.appendChild(app.createPlainTextElem("h5", app.tls.see));
-
- div.addEventListener('click', function() { toggleAccordionBox(div); }, {passive: true})
- return div;
-
- }
- function generateMinimaldatensatzDiv() {
-
- const div = document.createElement("div");
- div.id = "minimaldatensatz_ex";
- div.appendChild(app.createPlainTextElem("h4", "AG Minimaldatensatz"));
- div.appendChild(app.createP(app.tls.minimaldatensatz_explica_1));
- div.appendChild(app.createP(app.tls.minimaldatensatz_explica_2));
- div.appendChild(app.createPlainTextElem("h5", app.tls.see));
-
- const citUl = document.createElement("ul");
- const cit1 = document.createElement("li");
- cit1.innerHTML = 'AG Minimaldatensatz. (2023). "Minimaldatensatz-Empfehlung." http://minimaldatensatz.de';
- citUl.appendChild(cit1);;
-
- const cit2 = document.createElement("li");
- cit2.innerHTML = 'Marchini C. & Greisinger S. (2023). "Ein Fuß in der Tür: Die Minimaldatensatz-Empfehlung für Museen und Sammlungen." Paper presented at the Autumn Seminar of the Working Group Documentation of the German Museum Association, 2023 (Herbsttagung der FG Dokumentation des Deutschen Museumsbunds).';
- citUl.appendChild(cit2);;
- div.appendChild(citUl);
-
- div.addEventListener('click', function() { toggleAccordionBox(div); }, {passive: true})
- return div;
-
- }
-
- threeColumnDiv.appendChild(generatePuqiDiv());
- threeColumnDiv.appendChild(generatePlausiDiv());
- threeColumnDiv.appendChild(generatePlausiLegalDiv());
- threeColumnDiv.appendChild(generateCountNewToVocabsDiv());
- threeColumnDiv.appendChild(generateMinimaldatensatzDiv());
-
- section.appendChild(threeColumnDiv);
-
- }
-
- function appendOtherFeatures(section) {
-
- section.appendChild(app.createPlainTextElem("h3", app.tls.other_features));
-
- const threeColumnDiv = document.createElement("div");
- threeColumnDiv.classList.add("threeCol");
-
- function generateXmlConversionExp() {
-
- const xmlCDiv = document.createElement("div");
- xmlCDiv.id = "xmlC_ex";
- xmlCDiv.appendChild(app.createPlainTextElem("h4", app.tls.convert_to_xml));
- xmlCDiv.appendChild(app.createP(app.tls.convert_to_xml_explica));
-
- xmlCDiv.appendChild(app.createPlainTextElem("h5", app.tls.see));
- const citUl = document.createElement("ul");
- const citLi = document.createElement("li");
-
- const eodemA = document.createElement("a");
- eodemA.textContent = "EODEM";
- eodemA.href = "https://cidoc.mini.icom.museum/working-groups/documentation-standards/eodem-home/";
- citLi.appendChild(eodemA);
-
- citUl.appendChild(citLi);
- xmlCDiv.appendChild(citUl);
-
- xmlCDiv.addEventListener('click', function() { toggleAccordionBox(xmlCDiv); }, {passive: true})
-
- return xmlCDiv;
-
- }
-
- threeColumnDiv.appendChild(generateXmlConversionExp());
-
- section.appendChild(threeColumnDiv);
-
- }
-
- const section = document.createElement("div");
- section.appendChild(this.createPlainTextElem("h2", this.tls.tech_background_hl));
-
- const summaryDiv = document.createElement("div");
- summaryDiv.classList.add("summary");
- summaryDiv.appendChild(this.createPlainTextElem("h3", this.tls.summary));
- summaryDiv.appendChild(this.createP(this.tls.tech_background_summary));
- summaryDiv.appendChild(this.createP(this.tls.click_read_more));
- section.appendChild(summaryDiv);
-
- const techBackgroundDetails = this.createP(this.tls.tech_background_text);
- techBackgroundDetails.classList.add("accordion");
- section.appendChild(techBackgroundDetails);
-
- summaryDiv.addEventListener('click', function() { toggleAccordionBox(techBackgroundDetails); }, {passive: true})
-
- appendTypesOfEvaluations(section);
- appendOtherFeatures(section);
-
- return section;
-
- }
-
- renderStartpageSectionFuture() {
-
- const section = document.createElement("div");
- section.appendChild(this.createPlainTextElem("h2", this.tls.outlook));
- section.appendChild(this.createP(this.tls.outlook_text));
- return section;
-
- }
-
- renderStartpageSectionFaq() {
-
- function toggleAccordionBox(elem) {
-
- elem.classList.toggle("active");
- const panel = elem;
- if (panel.style.maxHeight) {
- panel.style.maxHeight = null
- } else {
- panel.style.maxHeight = panel.scrollHeight + "px"
- }
-
- }
-
- function buildFaqEntry(question, answer) {
-
- const entry = document.createElement("div");
- entry.id = "faqEntry";
-
- const q = document.createElement("p");
- q.classList.add("faq_question");
- q.textContent = question;
- entry.appendChild(q);
-
- const a = document.createElement("div");
- a.classList.add("faq_answer", "accordion");
- a.textContent = answer;
- entry.appendChild(a);
-
- q.addEventListener('click', function() { toggleAccordionBox(a); }, {passive: true})
-
- return entry;
-
- }
-
- const section = document.createElement("div");
- section.id = "faq";
- section.appendChild(this.createPlainTextElem("h2", "FAQ"));
-
- section.appendChild(buildFaqEntry(this.tls.faq_q_1, this.tls.faq_a_1));
- section.appendChild(buildFaqEntry(this.tls.faq_q_2, this.tls.faq_a_2));
-
- return section;
-
- }
-
- renderStartpageSectionMore() {
-
- // More / Links to further content
-
- const moreSec = document.createElement("div");
- moreSec.id = "more";
-
- moreSec.appendChild(this.createPlainTextElem("h2", this.tls.more));
-
- const moreTiles = document.createElement("div");
- moreTiles.classList.add("moreTiles");
- moreTiles.setAttribute("property", "itemListElement");
- moreTiles.setAttribute("typeof", "http://schema.org/ListItem");
-
- let counter = 1;
- function createMoreTile(url, title, subtitle, img_url_webp, img_url_fallback, img_alt) {
-
- const tile = document.createElement("a");
- tile.href = url;
- tile.setAttribute("property", "position");
- tile.setAttribute("content", counter);
- counter++;
-
- const pic = document.createElement("picture");
- pic.loading = "lazy";
-
- const source_webp = document.createElement("source");
- source_webp.type = "image/webp";
- source_webp.srcset = img_url_webp;
- pic.appendChild(source_webp);
-
- const source_fallback = document.createElement("source");
- source_fallback.type = "image/png";
- source_fallback.srcset = img_url_fallback;
- pic.appendChild(source_fallback);
-
- const img = document.createElement("img");
- img.loading = "lazy";
- img.src = img_url_fallback;
- img.alt = img_alt;
- img.width = "400";
- img.height = "225";
- img.setAttribute("property", "image");
- pic.appendChild(img);
-
- tile.appendChild(pic);
-
- const meta = document.createElement("div");
- meta.classList.add("moreTilesMeta");
-
- const e_title = document.createElement("p");
- e_title.textContent = title;
- e_title.setAttribute("property", "name");
- e_title.classList.add("moreTilesTitle");
- meta.appendChild(e_title);
-
- const e_subtitle = document.createElement("p");
- e_subtitle.textContent = subtitle;
- e_subtitle.classList.add("moreTilesSubtitle");
- meta.appendChild(e_subtitle);
-
- tile.appendChild(meta);
-
- return tile;
-
- }
-
- moreTiles.appendChild(createMoreTile(
- "https://files.museum-digital.org/",
- "Vortragsfolien",
- "Vortrag auf der Herbsttagung der Fachgruppe Dokumentation des DMB, 10.10.2023.", "CC BY 4.0 @ Joshua Ramon Enslin, Freies Deutsches Hochstift",
- "/static/img/more/20231010-Presentation.webp",
- "/static/img/more/20231010-Presentation.png",
- "Folie zur Nachnutzbarkeit von vorliegendem Code im Vortrag auf der Herbsttagung der FG Doku.",
- )
- );
-
- moreSec.appendChild(moreTiles);
-
- // Log
-
- moreSec.appendChild(this.createPlainTextElem("h3", this.tls.log));
-
- const logUl = document.createElement("ul");
-
- const app = this;
- function generateLogEntry(date, text) {
- const logLi1 = document.createElement("li");
- logLi1.textContent = new Intl.DateTimeFormat([app.lang, 'de']).format(date) + ': ' + text;
- return logLi1;
- }
-
- logUl.appendChild(generateLogEntry(
- new Date(Date.UTC(2023, 11, 16, 3, 45, 0, 738)), "Add options to convert input data to XML formats"
- ));
-
- logUl.appendChild(generateLogEntry(
- new Date(Date.UTC(2023, 9, 10, 3, 45, 0, 738)), this.tls.launch // 9 = October
- ));
-
- moreSec.appendChild(logUl);
-
-
- // Say thanks
- moreSec.appendChild(this.createPlainTextElem("h3", this.tls.thanks));
-
- const thanksP = document.createElement("p");
-
- moreSec.appendChild(thanksP);
-
- return moreSec;
+ this.domWrapper.appendChild(this.domResultsWrapper);
}
@@ -1002,10 +430,12 @@ class QaPage {
footerOptions.appendChild(codeLink);
*/
+ /*
const codeLink = document.createElement("a");
codeLink.textContent = "API"; // TODO
codeLink.href = "/swagger";
footerOptions.appendChild(codeLink);
+ */
if ('serviceWorker' in navigator) {
const refreshB = document.createElement("span");
@@ -1013,7 +443,7 @@ class QaPage {
refreshB.setAttribute("tabindex", 1);
refreshB.addEventListener('click', function(e) {
- Promise.all(['qa-cache-v1'].map(function(cache) {
+ Promise.all(['conc-cache-v1'].map(function(cache) {
caches.has(cache).then(function(hasCache) {
if (hasCache === true) {
caches.delete(cache).then(function(deletionStatus) {});
@@ -1107,11 +537,11 @@ class QaPage {
document.body.classList.remove("loading");
- const page = new QaPage(lang, tls);
+ const page = new ConcPage(lang, tls);
page.renderGenHeader();
page.renderHeader();
- page.renderUploader();
page.renderText();
+ page.renderUploader();
document.body.appendChild(page.domWrapper);
page.renderFooter();
diff --git a/public/static/js/qa.min.js b/public/static/js/qa.min.js
index ae9790b..8cae36c 100644
--- a/public/static/js/qa.min.js
+++ b/public/static/js/qa.min.js
@@ -1 +1 @@
-"use strict";const MAX_INPUT_SIZE=1048576;'serviceWorker'in navigator&&(console.log("Registering service worker"),navigator.serviceWorker.register('/sw.js'));class QaPage{lang;tls;domWrapper;domUploaderWrapper;domUploaderCurrentWrapper;domMainWrapper;parser;selectedActivity;selectedApi;constructor(d,e){this.lang=d,this.tls=Object.freeze(e);let b=document.createElement("div");b.id="contentWrapper",this.domWrapper=b;let a=document.createElement("div");a.id="uploader",a.classList.add("uploader"),this.domUploaderWrapper=a;let c=document.createElement("div");c.id="uploaderMenu",this.domUploaderCurrentWrapper=c;let f=document.createElement("main");this.domMainWrapper=f}goForwardInMenuPages(b){const a=this;switch(b){case"parserSelection":a.drawUpActivitySelection();break;case"activityTypeSelection":a.drawUpApiTypeSelection();break;case"apiTypeSelection":a.drawUpUploadTypeSelection();break;default:console.log("Invalid page to go forward from selected.")}}generateDialogueCloseButton(){const a=document.createElement("a");return a.classList.add("icons"),a.classList.add("iconsClose"),a.classList.add("dialogueCloseX"),a.id="dialogueClose",a.textContent="X",a.title=this.tls.close,a.href="#"+location.href,a.addEventListener('click',QaDialogue.closeDialogue),a}setSelectedActivity(a){['evaluate','convert_to_xml'].includes(a)?this.selectedActivity=a:window.alert("Invalid activity selected")}setSelectedApi(b){let a;switch(this.selectedActivity){case"evaluate":a=['object','count_vocabulary_entries_to_be_added','minimaldatensatz'];break;case"convert_to_xml":const b=document.documentElement.getAttribute("data-allowed-xml-conversion-targets").split(',');a=b;break;default:window.alert("Invalid activity set: "+this.selectedActivity)}a.includes(b)?this.selectedApi=b:window.alert("Invalid activity selected")}downloadFromString(b,c){const d=new Blob([c],{type:"text/plain"}),a=document.createElement("a");a.download=b,a.href=window.URL.createObjectURL(d),a.dataset.downloadurl=["text/plain",a.download,a.href].join(":");const e=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});a.dispatchEvent(e),a.remove()}generateValidationOutputsForCountNewToVocabs(c){const b=document.getElementById("validation_overlay_intro");b!==void 0&&b!==null&&b.parentElement.removeChild(b);const a=document.createElement("div"),d=document.createElement("h5");d.textContent=this.tls.count_new_to_vocabs,a.appendChild(d);const e=document.createElement("table");function f(d,e){const a=document.createElement("tr"),b=document.createElement("th");b.textContent=d,a.appendChild(b);const c=document.createElement("td");return c.textContent=e,a.appendChild(c),a}for(let a of c.count)e.appendChild(f(a.category_name,a.count));a.appendChild(e);const g=document.createElement("h6");g.textContent=this.tls.samples,a.appendChild(g);const h=document.createElement("table");for(let a of c.samples)h.appendChild(f(a.category_name,a.entries.join(", ")));return a.appendChild(h),a}generateValidationOutputsForMinimaldatensatz(b){const a=document.createElement("div");for(let d of b){const c=document.createElement("div"),e=document.createElement("h5");e.textContent=this.tls.inventory_number+': '+d.invno,c.appendChild(e);const f=document.createElement("table");for(let c of d.evaluations){const b=document.createElement("tr"),a=document.createElement("td");a.style.width="40px",c.passed===!0?a.style.background="var(--color-green)":a.style.background="var(--color-red)",b.appendChild(a);const e=document.createElement("td");e.textContent=c.text,b.appendChild(e),f.appendChild(b)}c.appendChild(f),a.appendChild(c)}return a}generateRegularValidationOutputs(c){const b=document.createElement("div");function a(d,e){const a=document.createElement("tr"),b=document.createElement("th");b.textContent=d,a.appendChild(b);const c=document.createElement("td");return c.appendChild(e),a.appendChild(c),a}for(let d of c){const g=document.createElement("div"),j=document.createElement("h5");j.textContent=this.tls.inventory_number+': '+d.invno,g.appendChild(j);const e=document.createElement("div"),f=document.createElement("table"),k=document.createElement("span");k.textContent=d.puqi.score,f.appendChild(a(this.tls.puqi_score,k));const h=document.createElement("span");d.plausi.warn===!1?h.textContent=this.tls.check_passed:h.textContent=this.tls.warning,f.appendChild(a(this.tls.plausi+': '+this.tls.status,h));const i=document.createElement("span");if(d.plausi_legal.warn===!1?i.textContent=this.tls.check_passed:i.textContent=this.tls.warning,f.appendChild(a(this.tls.plausi_legal+': '+this.tls.status,i)),e.appendChild(f),d.plausi.msg.length!==0){const a=document.createElement("h6");a.textContent=this.tls.plausibility_warnings,e.appendChild(a);const b=document.createElement("ul");for(let c of d.plausi.msg){const a=document.createElement("li");a.textContent=c,b.appendChild(a)}e.appendChild(b)}if(d.plausi_legal.warn===!0){const a=document.createElement("h6");a.textContent=this.tls.plausibility_warnings_licenses,e.appendChild(a);const b=document.createElement("ul");for(let a of d.plausi_legal.msg){const c=document.createElement("li");if(a.link!==''){const b=document.createElement("a");b.href=a.link,b.textContent=a.text,c.appendChild(b)}else c.textContent=a.text;b.appendChild(c)}e.appendChild(b)}const l=document.createElement("h6");l.textContent=this.tls.puqi_notices,e.appendChild(l);const m=document.createElement("ul");for(let b of d.puqi.msg){const a=document.createElement("li");a.textContent=b.message,m.appendChild(a)}e.appendChild(m),g.appendChild(e),b.appendChild(g)}return b}listValidationOutputs(b){console.log("Listing validation errors");const c=document.createElement("div"),d=document.createElement("h3");d.textContent=this.tls.validation_errors,d.appendChild(this.generateDialogueCloseButton()),c.appendChild(d);const e=document.createElement("p");e.id="validation_overlay_intro",e.textContent=this.tls.objects_identified.replace("[placeholder_for_count]",b.results.length),c.appendChild(e);const a=document.createElement("section");c.appendChild(a);const f=document.createElement("h4");switch(f.textContent=this.tls.results,a.appendChild(f),this.selectedApi){case"count_vocabulary_entries_to_be_added":a.appendChild(this.generateValidationOutputsForCountNewToVocabs(b.results));break;case"minimaldatensatz":a.appendChild(this.generateValidationOutputsForMinimaldatensatz(b.results));break;default:a.appendChild(this.generateRegularValidationOutputs(b.results));break}dialogue=QaDialogue.drawDialogue(c)}async runApiQuery(c){if(navigator.onLine===!1)return window.alert(this.tls.currently_offline_msg),document.body.classList.remove("loading"),!1;let a=this;(async function(){const a=c;a.includes('�')&&window.alert('The file encoding appears to not be UTF-8-encoded!')})();let b={parser:a.parser,lang:a.lang,data:c};a.selectedActivity==='convert_to_xml'&&(b.institution_name=window.prompt("The institution's name cannot automatically be reused from what may be stated in the uploaded data. If you would like to have one in the output data, please enter it here."),b.institution_identifier=window.prompt("The institution's identifier (e.g. an ISIL ID) cannot automatically be reused from what may be stated in the uploaded data. If you would like to have one in the output data, please enter it here."));try{let d=[];for(let a in b)d.push(a+'='+encodeURIComponent(b[a]));const c=await window.fetch('/api/'+a.selectedActivity+'/'+a.selectedApi,{method:'POST',cache:'no-cache',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:d.join("&")});if(document.body.classList.remove("loading"),c.status===200)switch(a.selectedActivity){case"evaluate":try{const b=await c.json();a.listValidationOutputs(b)}catch(a){console.log(a)}break;case"convert_to_xml":const b=await c.text();a.downloadFromString('converted-'+a.selectedActivity+'.xml',b);break;default:window.alert("Invalid activity selected")}else{const a=await c.text();window.alert(a)}}catch(a){console.log(a)}a.drawUpParserSelection()}uploadFileForValidation(b){let c=this;if(b.size>=MAX_INPUT_SIZE)return window.alert(this.tls.filesize_too_big.replace("[placeholder]",MAX_INPUT_SIZE)),!1;const a=new FileReader;a.readAsText(b,'UTF-8'),document.body.classList.add("loading"),a.onload=function(){function b(){c.runApiQuery(a.result)}b()},a.onerror=function(){alert(a.error)}}renderGenHeader(){const b=document.createElement("header");b.id="mainHeader";const a=document.createElement("a");a.id="logoArea",a.href="https://www.museum-digital.org/";const d=document.createElement("img");d.src="/static/img/mdlogo-code.svg",d.alt="Logo of museum-digital",a.appendChild(d);const l=document.createElement("h2");l.textContent="museum-digital",a.appendChild(l),b.appendChild(a);const c=document.createElement("nav"),f=document.createElement("a");f.href="https://en.about.museum-digital.org/about",f.textContent=this.tls.about,c.appendChild(f);const g=document.createElement("div"),h=document.createElement("a");h.textContent=this.tls.contact,h.href="https://en.about.museum-digital.org/contact/",g.appendChild(h);const i=document.createElement("div"),e=document.createElement("a");e.textContent=this.tls.imprint,e.href="https://en.about.museum-digital.org/impressum",i.appendChild(e);const j=document.createElement("a");j.textContent=this.tls.privacy_policy,j.href="https://en.about.museum-digital.org/privacy/",i.appendChild(j),g.appendChild(i),c.appendChild(g);const k=document.createElement("a");k.textContent=this.tls.news,k.href="https://blog.museum-digital.org/",c.appendChild(k),b.appendChild(c),document.body.appendChild(b)}renderHeader(){const b=document.createElement("header");b.id="appHeader";const c=document.createElement("h1"),a=document.createElement("img");a.width="70",a.height="70",a.src="/static/img/mdlogo-code.svg",a.alt="",c.appendChild(a);const d=document.createElement("span");d.textContent="museum-digital:qa",c.appendChild(d),b.appendChild(c),document.body.appendChild(b)}createP(b){const a=document.createElement("p");return a.textContent=b,a}createPlainTextElem(b,c){const a=document.createElement(b);return a.textContent=c,a}renderText(){const a=document.createElement("h2");a.textContent=this.tls.quality_assessment_tools,this.domMainWrapper.appendChild(a),this.domMainWrapper.appendChild(this.createP(this.tls.intro_text)),this.domWrapper.appendChild(this.domMainWrapper)}renderUploader(){const b=document.createElement("textarea");this.domUploaderWrapper.appendChild(b);const a=document.createElement("button");a.textContent="Submittt",this.domUploaderWrapper.appendChild(a),this.domWrapper.appendChild(this.domUploaderWrapper)}renderStartpageSectionTechBackground(){const a=this;function b(b){b.classList.toggle("active");const a=b;a.style.maxHeight?a.style.maxHeight=null:a.style.maxHeight=a.scrollHeight+"px"}function f(d){d.appendChild(a.createPlainTextElem("h3",a.tls.types_of_evaluations));const c=document.createElement("div");c.classList.add("threeCol");function e(){const c=document.createElement("div");c.id="puqi_ex",c.appendChild(a.createPlainTextElem("h4",a.tls.puqi)),c.appendChild(a.createP(a.tls.puqi_explica)),c.appendChild(a.createPlainTextElem("h5",a.tls.see));const d=document.createElement("ul"),e=document.createElement("li");e.innerHTML='Rohde-Enslin, S. (2014). "PuQi - Eine Versuchung." Paper presented at the Autumn Seminar of the Working Group Documentation of the German Museum Association, 2014 (Herbsttagung der FG Dokumentation des Deutschen Museumsbunds). https://files.museum-digital.org/de/Praesentationen/2014-10-06_PuQI-Eine-Versuchung_SRE.pdf',d.appendChild(e);const f=document.createElement("li");f.innerHTML='Rohde-Enslin, S. (2015). "PuQI – A Smart Way to Create Better Data." Uncommon Culture, 6 (2), 122-129. https://uncommonculture.org/ojs/index.php/UC/article/view/6218',d.appendChild(f);const g=document.createElement("li");return g.innerHTML='Rohde-Enslin, S. (2021). "PuQi – Verführung zu Qualität." museum-digital:blog, https://blog.museum-digital.org/de/2021/01/22/ein-publikations-qualitaets-index-fuer-museumsobjektinformationen/',d.appendChild(g),c.appendChild(d),c.addEventListener('click',function(){b(c)},{passive:!0}),c}function f(){const c=document.createElement("div");c.id="plausi_ex",c.appendChild(a.createPlainTextElem("h4",a.tls.plausi)),c.appendChild(a.createP(a.tls.plausi_explica)),c.appendChild(a.createP(a.tls.plausi_explica_2)),c.appendChild(a.createPlainTextElem("h5",a.tls.see));const d=document.createElement("ul"),e=document.createElement("li");return e.innerHTML='Rohde-Enslin, S. (2017). "Plausi - PuQI hat einen Freund bekommen." Paper presented at the Autumn Seminar of the Working Group Documentation of the German Museum Association, 2017 (Herbsttagung der FG Dokumentation des Deutschen Museumsbunds). https://files.museum-digital.org/de/Praesentationen/2017-11_Plausi-FG-Doku-Berlin_SRE.pdf',d.appendChild(e),c.appendChild(d),c.addEventListener('click',function(){b(c)},{passive:!0}),c}function g(){const c=document.createElement("div");return c.id="plausi_legal_ex",c.appendChild(a.createPlainTextElem("h4",a.tls.plausi_legal)),c.appendChild(a.createP(a.tls.plausi_legal_explica)),c.appendChild(a.createP(a.tls.plausi_legal_explica_2)),c.addEventListener('click',function(){b(c)},{passive:!0}),c}function h(){const c=document.createElement("div");return c.id="minimaldatensatz_ex",c.appendChild(a.createPlainTextElem("h4",a.tls.count_new_to_vocabs)),c.appendChild(a.createP(a.tls.count_new_to_vocabs_explica_1)),c.addEventListener('click',function(){b(c)},{passive:!0}),c}function i(){const c=document.createElement("div");c.id="minimaldatensatz_ex",c.appendChild(a.createPlainTextElem("h4","AG Minimaldatensatz")),c.appendChild(a.createP(a.tls.minimaldatensatz_explica_1)),c.appendChild(a.createP(a.tls.minimaldatensatz_explica_2)),c.appendChild(a.createPlainTextElem("h5",a.tls.see));const d=document.createElement("ul"),e=document.createElement("li");e.innerHTML='AG Minimaldatensatz. (2023). "Minimaldatensatz-Empfehlung." http://minimaldatensatz.de',d.appendChild(e);const f=document.createElement("li");return f.innerHTML='Marchini C. & Greisinger S. (2023). "Ein Fuß in der Tür: Die Minimaldatensatz-Empfehlung für Museen und Sammlungen." Paper presented at the Autumn Seminar of the Working Group Documentation of the German Museum Association, 2023 (Herbsttagung der FG Dokumentation des Deutschen Museumsbunds).',d.appendChild(f),c.appendChild(d),c.addEventListener('click',function(){b(c)},{passive:!0}),c}c.appendChild(e()),c.appendChild(f()),c.appendChild(g()),c.appendChild(h()),c.appendChild(i()),d.appendChild(c)}function g(d){d.appendChild(a.createPlainTextElem("h3",a.tls.other_features));const c=document.createElement("div");c.classList.add("threeCol");function e(){const c=document.createElement("div");c.id="xmlC_ex",c.appendChild(a.createPlainTextElem("h4",a.tls.convert_to_xml)),c.appendChild(a.createP(a.tls.convert_to_xml_explica)),c.appendChild(a.createPlainTextElem("h5",a.tls.see));const e=document.createElement("ul"),f=document.createElement("li"),d=document.createElement("a");return d.textContent="EODEM",d.href="https://cidoc.mini.icom.museum/working-groups/documentation-standards/eodem-home/",f.appendChild(d),e.appendChild(f),c.appendChild(e),c.addEventListener('click',function(){b(c)},{passive:!0}),c}c.appendChild(e()),d.appendChild(c)}const c=document.createElement("div");c.appendChild(this.createPlainTextElem("h2",this.tls.tech_background_hl));const d=document.createElement("div");d.classList.add("summary"),d.appendChild(this.createPlainTextElem("h3",this.tls.summary)),d.appendChild(this.createP(this.tls.tech_background_summary)),d.appendChild(this.createP(this.tls.click_read_more)),c.appendChild(d);const e=this.createP(this.tls.tech_background_text);return e.classList.add("accordion"),c.appendChild(e),d.addEventListener('click',function(){b(e)},{passive:!0}),f(c),g(c),c}renderStartpageSectionFuture(){const a=document.createElement("div");return a.appendChild(this.createPlainTextElem("h2",this.tls.outlook)),a.appendChild(this.createP(this.tls.outlook_text)),a}renderStartpageSectionFaq(){function c(b){b.classList.toggle("active");const a=b;a.style.maxHeight?a.style.maxHeight=null:a.style.maxHeight=a.scrollHeight+"px"}function b(e,f){const a=document.createElement("div");a.id="faqEntry";const b=document.createElement("p");b.classList.add("faq_question"),b.textContent=e,a.appendChild(b);const d=document.createElement("div");return d.classList.add("faq_answer","accordion"),d.textContent=f,a.appendChild(d),b.addEventListener('click',function(){c(d)},{passive:!0}),a}const a=document.createElement("div");return a.id="faq",a.appendChild(this.createPlainTextElem("h2","FAQ")),a.appendChild(b(this.tls.faq_q_1,this.tls.faq_a_1)),a.appendChild(b(this.tls.faq_q_2,this.tls.faq_a_2)),a}renderStartpageSectionMore(){const a=document.createElement("div");a.id="more",a.appendChild(this.createPlainTextElem("h2",this.tls.more));const b=document.createElement("div");b.classList.add("moreTiles"),b.setAttribute("property","itemListElement"),b.setAttribute("typeof","http://schema.org/ListItem");let d=1;function f(o,n,m,l,j,k){const b=document.createElement("a");b.href=o,b.setAttribute("property","position"),b.setAttribute("content",d),d++;const c=document.createElement("picture");c.loading="lazy";const h=document.createElement("source");h.type="image/webp",h.srcset=l,c.appendChild(h);const g=document.createElement("source");g.type="image/png",g.srcset=j,c.appendChild(g);const a=document.createElement("img");a.loading="lazy",a.src=j,a.alt=k,a.width="400",a.height="225",a.setAttribute("property","image"),c.appendChild(a),b.appendChild(c);const f=document.createElement("div");f.classList.add("moreTilesMeta");const e=document.createElement("p");e.textContent=n,e.setAttribute("property","name"),e.classList.add("moreTilesTitle"),f.appendChild(e);const i=document.createElement("p");return i.textContent=m,i.classList.add("moreTilesSubtitle"),f.appendChild(i),b.appendChild(f),b}b.appendChild(f("https://files.museum-digital.org/","Vortragsfolien","Vortrag auf der Herbsttagung der Fachgruppe Dokumentation des DMB, 10.10.2023.","CC BY 4.0 @ Joshua Ramon Enslin, Freies Deutsches Hochstift","/static/img/more/20231010-Presentation.webp","/static/img/more/20231010-Presentation.png","Folie zur Nachnutzbarkeit von vorliegendem Code im Vortrag auf der Herbsttagung der FG Doku.")),a.appendChild(b),a.appendChild(this.createPlainTextElem("h3",this.tls.log));const c=document.createElement("ul"),g=this;function e(b,c){const a=document.createElement("li");return a.textContent=new Intl.DateTimeFormat([g.lang,'de']).format(b)+': '+c,a}c.appendChild(e(new Date(Date.UTC(2023,11,16,3,45,0,738)),"Add options to convert input data to XML formats")),c.appendChild(e(new Date(Date.UTC(2023,9,10,3,45,0,738)),this.tls.launch)),a.appendChild(c),a.appendChild(this.createPlainTextElem("h3",this.tls.thanks));const h=document.createElement("p");return a.appendChild(h),a}renderFooter(){const d=document.createElement("footer"),b=document.createElement("div"),e=document.createElement("a");if(e.textContent="API",e.href="/swagger",b.appendChild(e),'serviceWorker'in navigator){const a=document.createElement("span");a.textContent=this.tls.reload_application,a.setAttribute("tabindex",1),a.addEventListener('click',function(a){Promise.all(['qa-cache-v1'].map(function(a){caches.has(a).then(function(b){b===!0&&caches.delete(a).then(function(a){})})})),location.reload()},{passive:!0,once:!0}),b.appendChild(a)}const i=document.documentElement.getAttribute("data-allowed-langs").split(','),g=document.createElement("div");for(let b of i){const a=document.createElement("a");a.href="#"+b,a.textContent=b,a.style.textTranform="uppercase",a.addEventListener('click',function(a){a.preventDefault(),sessionStorage.setItem("lang",b),location.reload()}),g.appendChild(a)}b.appendChild(g),d.appendChild(b);const a=document.createElement("p"),f=document.createElement("a");f.textContent="CC BY 4.0",f.href="https://creativecommons.org/licenses/by/4.0/",a.appendChild(f),a.appendChild(this.createPlainTextElem("span"," @ "));const c=document.createElement("a");c.textContent="Joshua Ramon Enslin",c.href="https://www.jrenslin.de",c.setAttribute("rel","author"),a.appendChild(c),a.appendChild(this.createPlainTextElem("span",", "));const h=document.createElement("span");h.textContent="2023",a.appendChild(h),d.appendChild(a),document.body.appendChild(d)}}(async function(){function c(){const c=document.documentElement.getAttribute("data-allowed-langs").split(','),a=sessionStorage.getItem("lang");if(a!==void 0&&c.includes(a))return a;if(navigator.language===void 0)return'en';const b=navigator.language.toLowerCase().substr(0,2);return console.log(b),c.includes(b)?b:'en'}const a=c();document.documentElement.setAttribute("lang",a),document.body.classList.add("loading");let e=0,b;function d(){document.body.classList.remove("loading");const c=new QaPage(a,b);c.renderGenHeader(),c.renderHeader(),c.renderUploader(),c.renderText(),document.body.appendChild(c.domWrapper),c.renderFooter()}window.fetch('/static/json/tls.'+a+'.json',{method:'GET',cache:'no-cache',credentials:'same-origin'}).then(function(a){return a.json()}).then(function(a){b=a,d()})})()
\ No newline at end of file
+"use strict";const MAX_INPUT_SIZE=1048576;'serviceWorker'in navigator&&(console.log("Registering service worker"),navigator.serviceWorker.register('/sw.js'));class ConcPage{lang;tls;domWrapper;domUploaderWrapper;domResultsWrapper;domMainWrapper;constructor(d,e){this.lang=d,this.tls=Object.freeze(e);let c=document.createElement("div");c.id="contentWrapper",this.domWrapper=c;let a=document.createElement("div");a.id="uploader",a.classList.add("uploader"),this.domUploaderWrapper=a;let b=document.createElement("div");b.id="results",b.classList.add("results"),this.domResultsWrapper=b;let f=document.createElement("main");this.domMainWrapper=f}downloadFromString(b,c){const d=new Blob([c],{type:"text/plain"}),a=document.createElement("a");a.download=b,a.href=window.URL.createObjectURL(d),a.dataset.downloadurl=["text/plain",a.download,a.href].join(":");const e=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});a.dispatchEvent(e),a.remove()}renderGenHeader(){const b=document.createElement("header");b.id="mainHeader";const a=document.createElement("a");a.id="logoArea",a.href="https://www.museum-digital.org/";const d=document.createElement("img");d.src="/static/img/mdlogo-code.svg",d.alt="Logo of museum-digital",a.appendChild(d);const l=document.createElement("h2");l.textContent="museum-digital",a.appendChild(l),b.appendChild(a);const c=document.createElement("nav"),f=document.createElement("a");f.href="https://en.about.museum-digital.org/about",f.textContent=this.tls.about,c.appendChild(f);const g=document.createElement("div"),h=document.createElement("a");h.textContent=this.tls.contact,h.href="https://en.about.museum-digital.org/contact/",g.appendChild(h);const i=document.createElement("div"),e=document.createElement("a");e.textContent=this.tls.imprint,e.href="https://en.about.museum-digital.org/impressum",i.appendChild(e);const j=document.createElement("a");j.textContent=this.tls.privacy_policy,j.href="https://en.about.museum-digital.org/privacy/",i.appendChild(j),g.appendChild(i),c.appendChild(g);const k=document.createElement("a");k.textContent=this.tls.news,k.href="https://blog.museum-digital.org/",c.appendChild(k),b.appendChild(c),document.body.appendChild(b)}renderHeader(){const b=document.createElement("header");b.id="appHeader";const c=document.createElement("h1"),a=document.createElement("img");a.width="70",a.height="70",a.src="/static/img/mdlogo-code.svg",a.alt="",c.appendChild(a),c.appendChild(this.createPlainTextElem("span","museum-digital:"+this.tls.concordance_checker)),b.appendChild(c),document.body.appendChild(b)}createP(b){const a=document.createElement("p");return a.textContent=b,a}createPlainTextElem(b,c){const a=document.createElement(b);return a.textContent=c,a}renderText(){const a=document.createElement("h2");a.textContent=this.tls.quality_assessment_tools,this.domMainWrapper.appendChild(a),this.domMainWrapper.appendChild(this.createP(this.tls.intro)),this.domWrapper.appendChild(this.domMainWrapper)}generateBoilerplateForTableSection(f){const a=document.createElement("div"),c=document.createElement("h3");c.textContent=f,a.appendChild(c);const b=document.createElement("table"),d=document.createElement("thead");b.appendChild(d);const e=document.createElement("tbody");return b.appendChild(e),a.appendChild(b),{section:a,thead:d,tbody:e}}generateListResponse(d,e,a,b){while(this.domResultsWrapper.firstChild)this.domResultsWrapper.removeChild(this.domResultsWrapper.firstChild);if(b.passed.length===void 0){const c=this.generateBoilerplateForTableSection(this.tls.passed),d=document.createElement("tr");for(const b of['Input','Match']){const a=document.createElement("th");a.textContent=b,d.appendChild(a)}c.thead.appendChild(d);for(const f in b.passed){const d=b.passed[f],e=document.createElement("tr");e.appendChild(this.createPlainTextElem("td",f)),a[d]?e.appendChild(this.createPlainTextElem("td",a[d])):(valueTd.textContent=d,e.appendChild(this.createPlainTextElem("td",d))),c.tbody.appendChild(e)}this.domResultsWrapper.appendChild(c.section)}const c=this;if(b.not_passed.length!==0){const f=this.generateBoilerplateForTableSection(this.tls.not_yet_matched),h=document.createElement("tr");for(const b of['Input','Select Your Match']){const a=document.createElement("th");a.textContent=b,h.appendChild(a)}f.thead.appendChild(h);let i=[];for(let e of b.not_passed){const d=document.createElement("tr");d.appendChild(this.createPlainTextElem("td",e));const g=document.createElement("td"),c=document.createElement("select");c.setAttribute('data-input',e);for(const d in a){const b=document.createElement("option");b.value=d,b.textContent=a[d],c.appendChild(b)}i.push(c),g.appendChild(c),d.appendChild(g),f.tbody.appendChild(d)}this.domResultsWrapper.appendChild(f.section);const g=document.createElement("button");g.textContent=this.tls.generate_code_snippet,f.section.appendChild(g);const j=document.createElement("div");g.addEventListener('click',function(){let g=[],h=!1;a[1]!==void 0&&a[1]!==null&&(h=!0);for(let a of i){let b=("'"+a.getAttribute("data-input")+"'").padEnd(40," ")+" => ";h===!0?b+=a.value+",":b+="'"+a.value+"',",b+=' // '+e[a.value],g.push(b),a.setAttribute("readonly","readonly")}const f=" ".repeat(8)+g.join("\n"+" ".repeat(8));console.log(f);const b=c.createP(f);b.id="resultsP",b.style.fontFamily="Monospace, Courier",b.style.whiteSpace="pre-wrap",j.appendChild(b),b.scrollIntoView({block:"start",behavior:"smooth"}),c.downloadFromString("new-concordance-"+d+'.htm',f)}),this.domResultsWrapper.appendChild(j)}this.domResultsWrapper.scrollIntoView({block:"start",behavior:"smooth"})}renderUploader(){const a=document.createElement("select"),e=document.documentElement.getAttribute("data-lists").split(',');for(const c of e){const b=document.createElement("option");b.textContent=this.tls[c],b.value=c,a.appendChild(b)}this.domUploaderWrapper.appendChild(a);const b=document.createElement("textarea");b.placeholder=this.tls.one_line_per_entry,this.domUploaderWrapper.appendChild(b);const c=document.createElement("button");c.textContent=this.tls.submit,this.domUploaderWrapper.appendChild(c);const d=this;c.addEventListener('click',async function(h){h.stopPropagation(),h.preventDefault();const e=await window.fetch('/static/json/tls.'+a.value+'.en.json',{method:'GET',cache:'no-cache'});if(e.status!==200){const a=await c.text();window.alert(a)}const i=await e.json(),f=await window.fetch('/static/json/tls.'+a.value+'.'+d.lang+'.json',{method:'GET',cache:'no-cache'});if(f.status!==200){const a=await c.text();window.alert(a)}const j=await f.json();let g=[];g.push('terms='+encodeURIComponent(b.value));const c=await window.fetch('/api/evaluate/'+a.value,{method:'POST',cache:'no-cache',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:g.join("&")});if(c.status!==200){const a=await c.text();window.alert(a)}const k=await c.json();d.generateListResponse(a.value,i,j,k)}),this.domWrapper.appendChild(this.domUploaderWrapper),this.domWrapper.appendChild(this.domResultsWrapper)}renderFooter(){const e=document.createElement("footer"),c=document.createElement("div");if('serviceWorker'in navigator){const a=document.createElement("span");a.textContent=this.tls.reload_application,a.setAttribute("tabindex",1),a.addEventListener('click',function(a){Promise.all(['conc-cache-v1'].map(function(a){caches.has(a).then(function(b){b===!0&&caches.delete(a).then(function(a){})})})),location.reload()},{passive:!0,once:!0}),c.appendChild(a)}const h=document.documentElement.getAttribute("data-allowed-langs").split(','),f=document.createElement("div");for(let b of h){const a=document.createElement("a");a.href="#"+b,a.textContent=b,a.style.textTranform="uppercase",a.addEventListener('click',function(a){a.preventDefault(),sessionStorage.setItem("lang",b),location.reload()}),f.appendChild(a)}c.appendChild(f),e.appendChild(c);const a=document.createElement("p"),d=document.createElement("a");d.textContent="CC BY 4.0",d.href="https://creativecommons.org/licenses/by/4.0/",a.appendChild(d),a.appendChild(this.createPlainTextElem("span"," @ "));const b=document.createElement("a");b.textContent="Joshua Ramon Enslin",b.href="https://www.jrenslin.de",b.setAttribute("rel","author"),a.appendChild(b),a.appendChild(this.createPlainTextElem("span",", "));const g=document.createElement("span");g.textContent="2023",a.appendChild(g),e.appendChild(a),document.body.appendChild(e)}}(async function(){function c(){const c=document.documentElement.getAttribute("data-allowed-langs").split(','),a=sessionStorage.getItem("lang");if(a!==void 0&&c.includes(a))return a;if(navigator.language===void 0)return'en';const b=navigator.language.toLowerCase().substr(0,2);return console.log(b),c.includes(b)?b:'en'}const a=c();document.documentElement.setAttribute("lang",a),document.body.classList.add("loading");let e=0,b;function d(){document.body.classList.remove("loading");const c=new ConcPage(a,b);c.renderGenHeader(),c.renderHeader(),c.renderText(),c.renderUploader(),document.body.appendChild(c.domWrapper),c.renderFooter()}window.fetch('/static/json/tls.'+a+'.json',{method:'GET',cache:'no-cache',credentials:'same-origin'}).then(function(a){return a.json()}).then(function(a){b=a,d()})})()
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcActor.de.json b/public/static/json/tls.MDConcActor.de.json
index a5c1352..55aa80a 100644
--- a/public/static/json/tls.MDConcActor.de.json
+++ b/public/static/json/tls.MDConcActor.de.json
@@ -1 +1 @@
-[{"id":23,"name":"(allgemein)"},{"id":29,"name":"Dekor entworfen von"},{"id":12,"name":"Druckplatte erstellt von"},{"id":30,"name":"Form entworfen von"},{"id":4,"name":"Vorlagen erstellt von"},{"id":5,"name":"abgebildet"},{"id":13,"name":"abgeschickt von"},{"id":20,"name":"abgeschrieben von"},{"id":14,"name":"ausgefertigt von"},{"id":25,"name":"beauftragt von"},{"id":37,"name":"bemalt von"},{"id":45,"name":"besch\u00e4digt von"},{"id":42,"name":"besessen von"},{"id":11,"name":"empfangen von"},{"id":35,"name":"erdacht von"},{"id":16,"name":"erstbeschrieben von"},{"id":10,"name":"fotografiert von"},{"id":26,"name":"gedruckt von"},{"id":50,"name":"geerbt von"},{"id":2,"name":"gefunden von"},{"id":41,"name":"gekauft von"},{"id":9,"name":"gemalt von"},{"id":6,"name":"genutzt von"},{"id":8,"name":"gesammelt von"},{"id":49,"name":"gespendet \/ geschenkt von"},{"id":27,"name":"gesprochen von"},{"id":28,"name":"gesungen von"},{"id":19,"name":"gezeichnet von"},{"id":51,"name":"hat zum Hauptgegenstand"},{"id":48,"name":"herausgegeben von"},{"id":1,"name":"hergestellt von"},{"id":38,"name":"illustriert von"},{"id":31,"name":"modelliert von"},{"id":44,"name":"restauriert von"},{"id":32,"name":"signiert von"},{"id":15,"name":"unterzeichnet von"},{"id":7,"name":"verfasst von"},{"id":34,"name":"vergraben von"},{"id":43,"name":"verkauft von"},{"id":47,"name":"verloren von"},{"id":40,"name":"versteigert von"},{"id":3,"name":"ver\u00f6ffentlicht von"},{"id":33,"name":"wurde erw\u00e4hnt von"},{"id":46,"name":"zerst\u00f6rt von"},{"id":39,"name":"zusammengef\u00fcgt von"}]
\ No newline at end of file
+{"23":"(allgemein)","29":"Dekor entworfen von","12":"Druckplatte erstellt von","30":"Form entworfen von","4":"Vorlagen erstellt von","5":"abgebildet","13":"abgeschickt von","20":"abgeschrieben von","14":"ausgefertigt von","25":"beauftragt von","37":"bemalt von","45":"besch\u00e4digt von","42":"besessen von","11":"empfangen von","35":"erdacht von","16":"erstbeschrieben von","10":"fotografiert von","26":"gedruckt von","50":"geerbt von","2":"gefunden von","41":"gekauft von","9":"gemalt von","6":"genutzt von","8":"gesammelt von","49":"gespendet \/ geschenkt von","27":"gesprochen von","28":"gesungen von","19":"gezeichnet von","51":"hat zum Hauptgegenstand","48":"herausgegeben von","1":"hergestellt von","38":"illustriert von","31":"modelliert von","44":"restauriert von","32":"signiert von","15":"unterzeichnet von","7":"verfasst von","34":"vergraben von","43":"verkauft von","47":"verloren von","40":"versteigert von","3":"ver\u00f6ffentlicht von","33":"wurde erw\u00e4hnt von","46":"zerst\u00f6rt von","39":"zusammengef\u00fcgt von"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcActor.en.json b/public/static/json/tls.MDConcActor.en.json
index 2b9ff97..aeaa31e 100644
--- a/public/static/json/tls.MDConcActor.en.json
+++ b/public/static/json/tls.MDConcActor.en.json
@@ -1 +1 @@
-[{"id":29,"name":"Decor designed by"},{"id":30,"name":"Form designed by"},{"id":12,"name":"Printing plate produced by"},{"id":23,"name":"[general]"},{"id":39,"name":"assembled by"},{"id":40,"name":"auctioned by"},{"id":32,"name":"autographed by"},{"id":41,"name":"bought by"},{"id":34,"name":"buried by"},{"id":8,"name":"collected by"},{"id":25,"name":"commissioned by"},{"id":35,"name":"conceived by"},{"id":20,"name":"copied (by hand) by"},{"id":1,"name":"created by"},{"id":45,"name":"damaged by"},{"id":5,"name":"depicted"},{"id":46,"name":"destroyed by"},{"id":49,"name":"donated by"},{"id":19,"name":"drawn by"},{"id":48,"name":"edited by"},{"id":16,"name":"first described by"},{"id":2,"name":"found by"},{"id":51,"name":"had subject"},{"id":38,"name":"illustrated by"},{"id":50,"name":"inherited by"},{"id":14,"name":"issued by"},{"id":47,"name":"lost by"},{"id":33,"name":"mentioned by"},{"id":31,"name":"modelled by"},{"id":42,"name":"owned by"},{"id":9,"name":"painted by"},{"id":37,"name":"painted on by"},{"id":10,"name":"photographed by"},{"id":26,"name":"printed by"},{"id":3,"name":"published by"},{"id":11,"name":"received by"},{"id":27,"name":"recorded by"},{"id":44,"name":"restored by"},{"id":13,"name":"sent by"},{"id":15,"name":"signed by"},{"id":43,"name":"sold by"},{"id":28,"name":"sung by"},{"id":4,"name":"templates created by"},{"id":6,"name":"was used by"},{"id":7,"name":"written by"}]
\ No newline at end of file
+{"29":"Decor designed by","30":"Form designed by","12":"Printing plate produced by","23":"[general]","39":"assembled by","40":"auctioned by","32":"autographed by","41":"bought by","34":"buried by","8":"collected by","25":"commissioned by","35":"conceived by","20":"copied (by hand) by","1":"created by","45":"damaged by","5":"depicted","46":"destroyed by","49":"donated by","19":"drawn by","48":"edited by","16":"first described by","2":"found by","51":"had subject","38":"illustrated by","50":"inherited by","14":"issued by","47":"lost by","33":"mentioned by","31":"modelled by","42":"owned by","9":"painted by","37":"painted on by","10":"photographed by","26":"printed by","3":"published by","11":"received by","27":"recorded by","44":"restored by","13":"sent by","15":"signed by","43":"sold by","28":"sung by","4":"templates created by","6":"was used by","7":"written by"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcActor.uk.json b/public/static/json/tls.MDConcActor.uk.json
index 4110a83..2bb66b7 100644
--- a/public/static/json/tls.MDConcActor.uk.json
+++ b/public/static/json/tls.MDConcActor.uk.json
@@ -1 +1 @@
-[{"id":23,"name":"[\u0437\u0430\u0433\u0430\u043b\u044c\u043d\u0435]"},{"id":6,"name":"\u0431\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":14,"name":"\u0432\u0438\u043f\u0443\u0449\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":16,"name":"\u0432\u043f\u0435\u0440\u0448\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":13,"name":"\u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":48,"name":"\u0432\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":44,"name":"\u0432\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":29,"name":"\u0434\u0435\u043a\u043e\u0440 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":12,"name":"\u0434\u0440\u0443\u043a\u0430\u0440\u0441\u044c\u043a\u0443 \u0444\u043e\u0440\u043c\u0443 \u0432\u0438\u0433\u043e\u0442\u0435\u0432\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":47,"name":"\u0437\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":35,"name":"\u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":25,"name":"\u0437\u0430\u043c\u043e\u0432\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":27,"name":"\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":33,"name":"\u0437\u0433\u0430\u0434\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":31,"name":"\u0437\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":2,"name":"\u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":46,"name":"\u0437\u043d\u0438\u0449\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":5,"name":"\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e"},{"id":1,"name":"\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":8,"name":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":39,"name":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":41,"name":"\u043a\u0443\u043f\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":51,"name":"\u043c\u0430\u043b\u043e \u0442\u0435\u043c\u043e\u044e (\u043a\u043e\u0433\u043e)"},{"id":26,"name":"\u043d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":42,"name":"\u043d\u0430\u043b\u0435\u0436\u0430\u043b\u043e (\u043a\u043e\u043c\u0443)"},{"id":37,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":9,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":7,"name":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":19,"name":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e\/\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":3,"name":"\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":11,"name":"\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":49,"name":"\u043f\u043e\u0434\u0430\u0440\u043e\u0432\u043d\u043e (\u043a\u0438\u043c)"},{"id":34,"name":"\u043f\u043e\u0445\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":45,"name":"\u043f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":43,"name":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":40,"name":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e \u0437 \u0430\u0443\u043a\u0446\u0456\u043e\u043d\u0443 (\u043a\u0438\u043c)"},{"id":38,"name":"\u043f\u0440\u043e\u0456\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":32,"name":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444) (\u043a\u0438\u043c)"},{"id":15,"name":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":20,"name":"\u0441\u043f\u0438\u0441\u0430\u043d\u043e (\u0440\u0443\u043a\u043e\u044e) (\u043a\u0438\u043c)"},{"id":10,"name":"\u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":28,"name":"\u0443 \u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043d\u0456 (\u043a\u043e\u0433\u043e)"},{"id":50,"name":"\u0443\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)"},{"id":30,"name":"\u0444\u043e\u0440\u043c\u0443 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)"},{"id":4,"name":"\u0448\u0430\u0431\u043b\u043e\u043d\u0438, \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0456 (\u043a\u0438\u043c)"}]
\ No newline at end of file
+{"23":"[\u0437\u0430\u0433\u0430\u043b\u044c\u043d\u0435]","6":"\u0431\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043e (\u043a\u0438\u043c)","14":"\u0432\u0438\u043f\u0443\u0449\u0435\u043d\u043e (\u043a\u0438\u043c)","16":"\u0432\u043f\u0435\u0440\u0448\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)","13":"\u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","48":"\u0432\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","44":"\u0432\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","29":"\u0434\u0435\u043a\u043e\u0440 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","12":"\u0434\u0440\u0443\u043a\u0430\u0440\u0441\u044c\u043a\u0443 \u0444\u043e\u0440\u043c\u0443 \u0432\u0438\u0433\u043e\u0442\u0435\u0432\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","47":"\u0437\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","35":"\u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e (\u043a\u0438\u043c)","25":"\u0437\u0430\u043c\u043e\u0432\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","27":"\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)","33":"\u0437\u0433\u0430\u0434\u0430\u043d\u043e (\u043a\u0438\u043c)","31":"\u0437\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","2":"\u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e (\u043a\u0438\u043c)","46":"\u0437\u043d\u0438\u0449\u0435\u043d\u043e (\u043a\u0438\u043c)","5":"\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e","1":"\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","8":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e (\u043a\u0438\u043c)","39":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e (\u043a\u0438\u043c)","41":"\u043a\u0443\u043f\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","51":"\u043c\u0430\u043b\u043e \u0442\u0435\u043c\u043e\u044e (\u043a\u043e\u0433\u043e)","26":"\u043d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","42":"\u043d\u0430\u043b\u0435\u0436\u0430\u043b\u043e (\u043a\u043e\u043c\u0443)","37":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","9":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)","7":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)","19":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e\/\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","3":"\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","11":"\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e (\u043a\u0438\u043c)","49":"\u043f\u043e\u0434\u0430\u0440\u043e\u0432\u043d\u043e (\u043a\u0438\u043c)","34":"\u043f\u043e\u0445\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","45":"\u043f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e (\u043a\u0438\u043c)","43":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e (\u043a\u0438\u043c)","40":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e \u0437 \u0430\u0443\u043a\u0446\u0456\u043e\u043d\u0443 (\u043a\u0438\u043c)","38":"\u043f\u0440\u043e\u0456\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","32":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444) (\u043a\u0438\u043c)","15":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u043a\u0438\u043c)","20":"\u0441\u043f\u0438\u0441\u0430\u043d\u043e (\u0440\u0443\u043a\u043e\u044e) (\u043a\u0438\u043c)","10":"\u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","28":"\u0443 \u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043d\u0456 (\u043a\u043e\u0433\u043e)","50":"\u0443\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u0438\u043c)","30":"\u0444\u043e\u0440\u043c\u0443 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e (\u043a\u0438\u043c)","4":"\u0448\u0430\u0431\u043b\u043e\u043d\u0438, \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0456 (\u043a\u0438\u043c)"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCheckTypes.de.json b/public/static/json/tls.MDConcCheckTypes.de.json
index 80a3fff..d83683f 100644
--- a/public/static/json/tls.MDConcCheckTypes.de.json
+++ b/public/static/json/tls.MDConcCheckTypes.de.json
@@ -1 +1 @@
-[{"id":"location_accuracy_check","name":"Check der Korrektheit der Standortangaben"},{"id":"completeness_check","name":"Vollst\u00e4ndigkeits-Check"},{"id":"condition_check","name":"Zustands-Check"},{"id":"data_correctness_check","name":"\u00dcberpr\u00fcfung der Korrektheit der erfassten Daten"}]
\ No newline at end of file
+{"location_accuracy_check":"Check der Korrektheit der Standortangaben","completeness_check":"Vollst\u00e4ndigkeits-Check","condition_check":"Zustands-Check","data_correctness_check":"\u00dcberpr\u00fcfung der Korrektheit der erfassten Daten"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCheckTypes.en.json b/public/static/json/tls.MDConcCheckTypes.en.json
index 84b1017..5a6e465 100644
--- a/public/static/json/tls.MDConcCheckTypes.en.json
+++ b/public/static/json/tls.MDConcCheckTypes.en.json
@@ -1 +1 @@
-[{"id":"location_accuracy_check","name":"Check of location accuracy"},{"id":"completeness_check","name":"Completeness check"},{"id":"condition_check","name":"Condition check"},{"id":"data_correctness_check","name":"Data correctness check"}]
\ No newline at end of file
+{"location_accuracy_check":"Check of location accuracy","completeness_check":"Completeness check","condition_check":"Condition check","data_correctness_check":"Data correctness check"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCheckTypes.uk.json b/public/static/json/tls.MDConcCheckTypes.uk.json
index 2f229e0..d4cd2da 100644
--- a/public/static/json/tls.MDConcCheckTypes.uk.json
+++ b/public/static/json/tls.MDConcCheckTypes.uk.json
@@ -1 +1 @@
-[{"id":"data_correctness_check","name":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043a\u043e\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0456 \u0434\u0430\u043d\u0438\u0445"},{"id":"completeness_check","name":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043f\u043e\u0432\u043d\u043e\u0442\u0438 \u0437\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f"},{"id":"condition_check","name":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u0441\u0442\u0430\u043d\u0443"},{"id":"location_accuracy_check","name":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0456 \u043c\u0456\u0441\u0446\u0435\u0437\u043d\u0430\u0445\u043e\u0434\u0436\u0435\u043d\u043d\u044f"}]
\ No newline at end of file
+{"data_correctness_check":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043a\u043e\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0456 \u0434\u0430\u043d\u0438\u0445","completeness_check":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043f\u043e\u0432\u043d\u043e\u0442\u0438 \u0437\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f","condition_check":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u0441\u0442\u0430\u043d\u0443","location_accuracy_check":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0456 \u043c\u0456\u0441\u0446\u0435\u0437\u043d\u0430\u0445\u043e\u0434\u0436\u0435\u043d\u043d\u044f"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCloserLocationTypes.de.json b/public/static/json/tls.MDConcCloserLocationTypes.de.json
index 8536e13..c27f80b 100644
--- a/public/static/json/tls.MDConcCloserLocationTypes.de.json
+++ b/public/static/json/tls.MDConcCloserLocationTypes.de.json
@@ -1 +1 @@
-[{"id":0,"name":""},{"id":1,"name":"Aufnahmeort"},{"id":3,"name":"Fr\u00fcherer Ort"},{"id":2,"name":"Fundort"}]
\ No newline at end of file
+{"0":"","1":"Aufnahmeort","3":"Fr\u00fcherer Ort","2":"Fundort"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCloserLocationTypes.en.json b/public/static/json/tls.MDConcCloserLocationTypes.en.json
index 2f40596..ef8016a 100644
--- a/public/static/json/tls.MDConcCloserLocationTypes.en.json
+++ b/public/static/json/tls.MDConcCloserLocationTypes.en.json
@@ -1 +1 @@
-[{"id":0,"name":""},{"id":3,"name":"Former place"},{"id":2,"name":"Place of discovery"},{"id":1,"name":"Place of recording"}]
\ No newline at end of file
+{"0":"","3":"Former place","2":"Place of discovery","1":"Place of recording"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCloserLocationTypes.uk.json b/public/static/json/tls.MDConcCloserLocationTypes.uk.json
index 8f0572d..36b8e0f 100644
--- a/public/static/json/tls.MDConcCloserLocationTypes.uk.json
+++ b/public/static/json/tls.MDConcCloserLocationTypes.uk.json
@@ -1 +1 @@
-[{"id":0,"name":""},{"id":3,"name":"\u041a\u043e\u043b\u0438\u0448\u043d\u0454 \u043c\u0456\u0441\u0446\u0435 \u043f\u0435\u0440\u0435\u0431\u0443\u0432\u0430\u043d\u043d\u044f"},{"id":2,"name":"\u041c\u0456\u0441\u0446\u0435 \u0432\u0438\u044f\u0432\u043b\u0435\u043d\u043d\u044f"},{"id":1,"name":"\u041c\u0456\u0441\u0446\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u0437\u0430\u043f\u0438\u0441\u0443"}]
\ No newline at end of file
+{"0":"","3":"\u041a\u043e\u043b\u0438\u0448\u043d\u0454 \u043c\u0456\u0441\u0446\u0435 \u043f\u0435\u0440\u0435\u0431\u0443\u0432\u0430\u043d\u043d\u044f","2":"\u041c\u0456\u0441\u0446\u0435 \u0432\u0438\u044f\u0432\u043b\u0435\u043d\u043d\u044f","1":"\u041c\u0456\u0441\u0446\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u0437\u0430\u043f\u0438\u0441\u0443"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcColors.de.json b/public/static/json/tls.MDConcColors.de.json
index abcb28a..7b1fc9e 100644
--- a/public/static/json/tls.MDConcColors.de.json
+++ b/public/static/json/tls.MDConcColors.de.json
@@ -1 +1 @@
-[{"id":"blue","name":"Blau"},{"id":"teal","name":"Blaugr\u00fcn"},{"id":"maroon","name":"Braun"},{"id":"navy","name":"Dunkelblau"},{"id":"fuchsia","name":"Fuchsia"},{"id":"yellow","name":"Gelb"},{"id":"gray","name":"Grau"},{"id":"green","name":"Gr\u00fcn"},{"id":"lime","name":"Hellgr\u00fcn"},{"id":"purple","name":"Lila"},{"id":"olive","name":"Oliv"},{"id":"red","name":"Rot"},{"id":"black","name":"Schwarz"},{"id":"silver","name":"Silber"},{"id":"aqua","name":"T\u00fcrkis"},{"id":"white","name":"Wei\u00df"}]
\ No newline at end of file
+{"blue":"Blau","teal":"Blaugr\u00fcn","maroon":"Braun","navy":"Dunkelblau","fuchsia":"Fuchsia","yellow":"Gelb","gray":"Grau","green":"Gr\u00fcn","lime":"Hellgr\u00fcn","purple":"Lila","olive":"Oliv","red":"Rot","black":"Schwarz","silver":"Silber","aqua":"T\u00fcrkis","white":"Wei\u00df"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcColors.en.json b/public/static/json/tls.MDConcColors.en.json
index c108522..92be3bf 100644
--- a/public/static/json/tls.MDConcColors.en.json
+++ b/public/static/json/tls.MDConcColors.en.json
@@ -1 +1 @@
-[{"id":"aqua","name":"Aqua"},{"id":"black","name":"Black"},{"id":"blue","name":"Blue"},{"id":"fuchsia","name":"Fuchsia"},{"id":"gray","name":"Gray"},{"id":"green","name":"Green"},{"id":"lime","name":"Lime"},{"id":"maroon","name":"Maroon"},{"id":"navy","name":"Navy"},{"id":"olive","name":"Olive"},{"id":"purple","name":"Purple"},{"id":"red","name":"Red"},{"id":"silver","name":"Silver"},{"id":"teal","name":"Teal"},{"id":"white","name":"White"},{"id":"yellow","name":"Yellow"}]
\ No newline at end of file
+{"aqua":"Aqua","black":"Black","blue":"Blue","fuchsia":"Fuchsia","gray":"Gray","green":"Green","lime":"Lime","maroon":"Maroon","navy":"Navy","olive":"Olive","purple":"Purple","red":"Red","silver":"Silver","teal":"Teal","white":"White","yellow":"Yellow"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcColors.uk.json b/public/static/json/tls.MDConcColors.uk.json
index ccfa3e6..aa0f555 100644
--- a/public/static/json/tls.MDConcColors.uk.json
+++ b/public/static/json/tls.MDConcColors.uk.json
@@ -1 +1 @@
-[{"id":"blue","name":"\u0411\u043b\u0430\u043a\u0438\u0442\u043d\u0438\u0439"},{"id":"white","name":"\u0411\u0456\u043b\u0438\u0439"},{"id":"teal","name":"\u0411\u0456\u0440\u044e\u0437\u043e\u0432\u0438\u0439"},{"id":"yellow","name":"\u0416\u043e\u0432\u0442\u0438\u0439"},{"id":"green","name":"\u0417\u0435\u043b\u0435\u043d\u0438\u0439"},{"id":"lime","name":"\u041b\u0430\u0439\u043c"},{"id":"aqua","name":"\u041c\u043e\u0440\u0441\u044c\u043a\u0430 \u0445\u0432\u0438\u043b\u044f"},{"id":"olive","name":"\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u0438\u0439"},{"id":"purple","name":"\u041f\u0443\u0440\u043f\u0443\u0440\u043e\u0432\u0438\u0439"},{"id":"silver","name":"\u0421\u0440\u0456\u0431\u043d\u0438\u0439"},{"id":"gray","name":"\u0421\u0456\u0440\u0438\u0439"},{"id":"maroon","name":"\u0422\u0435\u043c\u043d\u043e-\u0431\u043e\u0440\u0434\u043e\u0432\u0438\u0439"},{"id":"navy","name":"\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0456\u0439"},{"id":"fuchsia","name":"\u0424\u0443\u043a\u0441\u0456\u044f"},{"id":"red","name":"\u0427\u0435\u0440\u0432\u043e\u043d\u0438\u0439"},{"id":"black","name":"\u0427\u043e\u0440\u043d\u0438\u0439"}]
\ No newline at end of file
+{"blue":"\u0411\u043b\u0430\u043a\u0438\u0442\u043d\u0438\u0439","white":"\u0411\u0456\u043b\u0438\u0439","teal":"\u0411\u0456\u0440\u044e\u0437\u043e\u0432\u0438\u0439","yellow":"\u0416\u043e\u0432\u0442\u0438\u0439","green":"\u0417\u0435\u043b\u0435\u043d\u0438\u0439","lime":"\u041b\u0430\u0439\u043c","aqua":"\u041c\u043e\u0440\u0441\u044c\u043a\u0430 \u0445\u0432\u0438\u043b\u044f","olive":"\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u0438\u0439","purple":"\u041f\u0443\u0440\u043f\u0443\u0440\u043e\u0432\u0438\u0439","silver":"\u0421\u0440\u0456\u0431\u043d\u0438\u0439","gray":"\u0421\u0456\u0440\u0438\u0439","maroon":"\u0422\u0435\u043c\u043d\u043e-\u0431\u043e\u0440\u0434\u043e\u0432\u0438\u0439","navy":"\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0456\u0439","fuchsia":"\u0424\u0443\u043a\u0441\u0456\u044f","red":"\u0427\u0435\u0440\u0432\u043e\u043d\u0438\u0439","black":"\u0427\u043e\u0440\u043d\u0438\u0439"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCurrencies.de.json b/public/static/json/tls.MDConcCurrencies.de.json
index 7f30889..3023102 100644
--- a/public/static/json/tls.MDConcCurrencies.de.json
+++ b/public/static/json/tls.MDConcCurrencies.de.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"by-BYN","name":"Belarussischer Rubel"},{"id":"de-DM","name":"Deutsche Mark"},{"id":"eu-EUR","name":"Euro"},{"id":"hu-Ft","name":"Forint"},{"id":"fr-FF","name":"Franz\u00f6sischer Franc"},{"id":"ua-UAH","name":"Hrywnja"},{"id":"id-IDR","name":"Indonesische Rupiah"},{"id":"hu-Lari","name":"Lari"},{"id":"ddr-MDN","name":"MDN (DDR)"},{"id":"ddr-Mark","name":"Mark (DDR)"},{"id":"hu-Peng\u0151","name":"Peng\u0151"},{"id":"uk-GBP","name":"Pfund Sterling"},{"id":"es-Real","name":"Real (Spanien)"},{"id":"de-RM","name":"Reichsmark (Deutsches Reich)"},{"id":"ru-RUB","name":"Russischer Rubel"},{"id":"ch-CHF","name":"Schweizer Franken"},{"id":"su-SUR","name":"Sowjetischer Rubel"},{"id":"us-USD","name":"US Dollar"},{"id":"ua-UAK","name":"Ukrainische Karbowanez"},{"id":"pl-Z\u0142oty","name":"Z\u0142oty"},{"id":"hu-Korona","name":"\u00d6sterreichisch-ungarische Krone"}]
\ No newline at end of file
+{"":"","by-BYN":"Belarussischer Rubel","de-DM":"Deutsche Mark","eu-EUR":"Euro","hu-Ft":"Forint","fr-FF":"Franz\u00f6sischer Franc","ua-UAH":"Hrywnja","id-IDR":"Indonesische Rupiah","hu-Lari":"Lari","ddr-MDN":"MDN (DDR)","ddr-Mark":"Mark (DDR)","hu-Peng\u0151":"Peng\u0151","uk-GBP":"Pfund Sterling","es-Real":"Real (Spanien)","de-RM":"Reichsmark (Deutsches Reich)","ru-RUB":"Russischer Rubel","ch-CHF":"Schweizer Franken","su-SUR":"Sowjetischer Rubel","us-USD":"US Dollar","ua-UAK":"Ukrainische Karbowanez","pl-Z\u0142oty":"Z\u0142oty","hu-Korona":"\u00d6sterreichisch-ungarische Krone"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCurrencies.en.json b/public/static/json/tls.MDConcCurrencies.en.json
index 9c997b8..ae5471c 100644
--- a/public/static/json/tls.MDConcCurrencies.en.json
+++ b/public/static/json/tls.MDConcCurrencies.en.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"hu-Korona","name":"Austro-Hungarian krone"},{"id":"by-BYN","name":"Belarusian ruble"},{"id":"de-DM","name":"Deutsche Mark"},{"id":"eu-EUR","name":"Euro"},{"id":"hu-Ft","name":"Forint"},{"id":"fr-FF","name":"French Franc"},{"id":"id-IDR","name":"Indonesian Rupiah"},{"id":"hu-Lari","name":"Lari"},{"id":"ddr-MDN","name":"MDN (GDR)"},{"id":"ddr-Mark","name":"Mark (GDR)"},{"id":"hu-Peng\u0151","name":"Peng\u0151"},{"id":"uk-GBP","name":"Pound Sterling"},{"id":"de-RM","name":"Reichsmark (Germany)"},{"id":"ru-RUB","name":"Russian ruble"},{"id":"su-SUR","name":"Soviet ruble"},{"id":"es-Real","name":"Spanish Real"},{"id":"ch-CHF","name":"Swiss franc"},{"id":"us-USD","name":"US Dollar"},{"id":"ua-UAH","name":"Ukrainian hryvnia"},{"id":"ua-UAK","name":"Ukrainian karbovanets"},{"id":"pl-Z\u0142oty","name":"Z\u0142oty"}]
\ No newline at end of file
+{"":"","hu-Korona":"Austro-Hungarian krone","by-BYN":"Belarusian ruble","de-DM":"Deutsche Mark","eu-EUR":"Euro","hu-Ft":"Forint","fr-FF":"French Franc","id-IDR":"Indonesian Rupiah","hu-Lari":"Lari","ddr-MDN":"MDN (GDR)","ddr-Mark":"Mark (GDR)","hu-Peng\u0151":"Peng\u0151","uk-GBP":"Pound Sterling","de-RM":"Reichsmark (Germany)","ru-RUB":"Russian ruble","su-SUR":"Soviet ruble","es-Real":"Spanish Real","ch-CHF":"Swiss franc","us-USD":"US Dollar","ua-UAH":"Ukrainian hryvnia","ua-UAK":"Ukrainian karbovanets","pl-Z\u0142oty":"Z\u0142oty"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcCurrencies.uk.json b/public/static/json/tls.MDConcCurrencies.uk.json
index 9da69e3..7a31d4b 100644
--- a/public/static/json/tls.MDConcCurrencies.uk.json
+++ b/public/static/json/tls.MDConcCurrencies.uk.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"ddr-MDN","name":"MDN (\u041d\u0414\u0420)"},{"id":"eu-EUR","name":"\u0404\u0432\u0440\u043e"},{"id":"id-IDR","name":"\u0406\u043d\u0434\u043e\u043d\u0435\u0437\u0456\u0439\u0441\u044c\u043a\u0430 \u0440\u0443\u043f\u0456\u044f"},{"id":"es-Real","name":"\u0406\u0441\u043f\u0430\u043d\u0441\u044c\u043a\u0438\u0439 \u0420\u0435\u0430\u043b"},{"id":"hu-Korona","name":"\u0410\u0432\u0441\u0442\u0440\u043e-\u0423\u0433\u043e\u0440\u0441\u044c\u043a\u0430 \u043a\u0440\u043e\u043d\u0430"},{"id":"us-USD","name":"\u0410\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u044c\u043a\u0438\u0439 \u0434\u043e\u043b\u0430\u0440"},{"id":"by-BYN","name":"\u0411\u0456\u043b\u043e\u0440\u0443\u0441\u044c\u043a\u0438\u0439 \u0440\u0443\u0431\u043b\u044c"},{"id":"pl-Z\u0142oty","name":"\u0417\u043b\u043e\u0442\u0438"},{"id":"hu-Lari","name":"\u041b\u0430\u0440\u0456"},{"id":"ddr-Mark","name":"\u041c\u0430\u0440\u043a\u0430 (\u041d\u0414\u0420)"},{"id":"de-DM","name":"\u041d\u0456\u043c\u0435\u0446\u044c\u043a\u0430 \u043c\u0430\u0440\u043a\u0430"},{"id":"hu-Peng\u0151","name":"\u041f\u0435\u043d\u0433\u0435"},{"id":"su-SUR","name":"\u0420\u0430\u0434\u044f\u043d\u0441\u044c\u043a\u0438\u0439 \u0440\u0443\u0431\u043b\u044c"},{"id":"de-RM","name":"\u0420\u0435\u0439\u0445\u0441\u043c\u0430\u0440\u043a\u0430 (\u041d\u0456\u043c\u0435\u0447\u0447\u0438\u043d\u0430)"},{"id":"ru-RUB","name":"\u0420\u043e\u0441\u0456\u0439\u0441\u044c\u043a\u0438\u0439 \u0440\u0443\u0431\u043b\u044c"},{"id":"ua-UAH","name":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 \u0433\u0440\u0438\u0432\u043d\u044f"},{"id":"ua-UAK","name":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0438\u0439 \u043a\u0430\u0440\u0431\u043e\u0432\u0430\u043d\u0435\u0446\u044c"},{"id":"hu-Ft","name":"\u0424\u043e\u0440\u0438\u043d\u0442"},{"id":"fr-FF","name":"\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u044c\u043a\u0438\u0439 \u0444\u0440\u0430\u043d\u043a"},{"id":"uk-GBP","name":"\u0424\u0443\u043d\u0442 \u0441\u0442\u0435\u0440\u043b\u0456\u043d\u0433\u0456\u0432"},{"id":"ch-CHF","name":"\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u044c\u043a\u0438\u0439 \u0444\u0440\u0430\u043d\u043a"}]
\ No newline at end of file
+{"":"","ddr-MDN":"MDN (\u041d\u0414\u0420)","eu-EUR":"\u0404\u0432\u0440\u043e","id-IDR":"\u0406\u043d\u0434\u043e\u043d\u0435\u0437\u0456\u0439\u0441\u044c\u043a\u0430 \u0440\u0443\u043f\u0456\u044f","es-Real":"\u0406\u0441\u043f\u0430\u043d\u0441\u044c\u043a\u0438\u0439 \u0420\u0435\u0430\u043b","hu-Korona":"\u0410\u0432\u0441\u0442\u0440\u043e-\u0423\u0433\u043e\u0440\u0441\u044c\u043a\u0430 \u043a\u0440\u043e\u043d\u0430","us-USD":"\u0410\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0441\u044c\u043a\u0438\u0439 \u0434\u043e\u043b\u0430\u0440","by-BYN":"\u0411\u0456\u043b\u043e\u0440\u0443\u0441\u044c\u043a\u0438\u0439 \u0440\u0443\u0431\u043b\u044c","pl-Z\u0142oty":"\u0417\u043b\u043e\u0442\u0438","hu-Lari":"\u041b\u0430\u0440\u0456","ddr-Mark":"\u041c\u0430\u0440\u043a\u0430 (\u041d\u0414\u0420)","de-DM":"\u041d\u0456\u043c\u0435\u0446\u044c\u043a\u0430 \u043c\u0430\u0440\u043a\u0430","hu-Peng\u0151":"\u041f\u0435\u043d\u0433\u0435","su-SUR":"\u0420\u0430\u0434\u044f\u043d\u0441\u044c\u043a\u0438\u0439 \u0440\u0443\u0431\u043b\u044c","de-RM":"\u0420\u0435\u0439\u0445\u0441\u043c\u0430\u0440\u043a\u0430 (\u041d\u0456\u043c\u0435\u0447\u0447\u0438\u043d\u0430)","ru-RUB":"\u0420\u043e\u0441\u0456\u0439\u0441\u044c\u043a\u0438\u0439 \u0440\u0443\u0431\u043b\u044c","ua-UAH":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430 \u0433\u0440\u0438\u0432\u043d\u044f","ua-UAK":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0438\u0439 \u043a\u0430\u0440\u0431\u043e\u0432\u0430\u043d\u0435\u0446\u044c","hu-Ft":"\u0424\u043e\u0440\u0438\u043d\u0442","fr-FF":"\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u044c\u043a\u0438\u0439 \u0444\u0440\u0430\u043d\u043a","uk-GBP":"\u0424\u0443\u043d\u0442 \u0441\u0442\u0435\u0440\u043b\u0456\u043d\u0433\u0456\u0432","ch-CHF":"\u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0441\u044c\u043a\u0438\u0439 \u0444\u0440\u0430\u043d\u043a"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcDamageTypes.de.json b/public/static/json/tls.MDConcDamageTypes.de.json
index 3f75025..913a213 100644
--- a/public/static/json/tls.MDConcDamageTypes.de.json
+++ b/public/static/json/tls.MDConcDamageTypes.de.json
@@ -1 +1 @@
-[{"id":"desiccation","name":"Austrocknung"},{"id":"breakage","name":"Bruchschaden"},{"id":"water_damage","name":"Wasserschaden"}]
\ No newline at end of file
+{"desiccation":"Austrocknung","breakage":"Bruchschaden","water_damage":"Wasserschaden"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcDamageTypes.en.json b/public/static/json/tls.MDConcDamageTypes.en.json
index ea2f223..7282dca 100644
--- a/public/static/json/tls.MDConcDamageTypes.en.json
+++ b/public/static/json/tls.MDConcDamageTypes.en.json
@@ -1 +1 @@
-[{"id":"breakage","name":"Breakage"},{"id":"desiccation","name":"Desiccation"},{"id":"water_damage","name":"Water damage"}]
\ No newline at end of file
+{"breakage":"Breakage","desiccation":"Desiccation","water_damage":"Water damage"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcDamageTypes.uk.json b/public/static/json/tls.MDConcDamageTypes.uk.json
index 0dff3fc..edd5aeb 100644
--- a/public/static/json/tls.MDConcDamageTypes.uk.json
+++ b/public/static/json/tls.MDConcDamageTypes.uk.json
@@ -1 +1 @@
-[{"id":"desiccation","name":"\u0412\u0438\u0441\u0438\u0445\u0430\u043d\u043d\u044f"},{"id":"breakage","name":"\u041f\u043e\u043b\u043e\u043c\u043a\u0430"},{"id":"water_damage","name":"\u041f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043d\u044f \u0432\u0456\u0434 \u0432\u043e\u0434\u0438"}]
\ No newline at end of file
+{"desiccation":"\u0412\u0438\u0441\u0438\u0445\u0430\u043d\u043d\u044f","breakage":"\u041f\u043e\u043b\u043e\u043c\u043a\u0430","water_damage":"\u041f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043d\u044f \u0432\u0456\u0434 \u0432\u043e\u0434\u0438"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcEntryTypes.de.json b/public/static/json/tls.MDConcEntryTypes.de.json
index ab46f18..fd53911 100644
--- a/public/static/json/tls.MDConcEntryTypes.de.json
+++ b/public/static/json/tls.MDConcEntryTypes.de.json
@@ -1 +1 @@
-[{"id":0,"name":""},{"id":99,"name":"Anderer rechtm\u00e4\u00dfiger Zugang"},{"id":16,"name":"Dauerleihgabe"},{"id":11,"name":"Eigenproduktion"},{"id":7,"name":"Enteignung"},{"id":5,"name":"Erbschaft \/ Nachlass"},{"id":15,"name":"Fund"},{"id":3,"name":"Grabung"},{"id":2,"name":"Kauf"},{"id":9,"name":"Leihgabe"},{"id":12,"name":"Material Strain (T\u00f6rzsanyag)"},{"id":4,"name":"Notbergung"},{"id":1,"name":"Schenkung"},{"id":6,"name":"Stiftung"},{"id":10,"name":"Tausch"},{"id":98,"name":"Ungekl\u00e4rt"},{"id":8,"name":"Ursprungsbestand"},{"id":14,"name":"Vorlass"}]
\ No newline at end of file
+{"0":"","99":"Anderer rechtm\u00e4\u00dfiger Zugang","16":"Dauerleihgabe","11":"Eigenproduktion","7":"Enteignung","5":"Erbschaft \/ Nachlass","15":"Fund","3":"Grabung","2":"Kauf","9":"Leihgabe","12":"Material Strain (T\u00f6rzsanyag)","4":"Notbergung","1":"Schenkung","6":"Stiftung","10":"Tausch","98":"Ungekl\u00e4rt","8":"Ursprungsbestand","14":"Vorlass"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcEntryTypes.en.json b/public/static/json/tls.MDConcEntryTypes.en.json
index 5acaad0..722a3f0 100644
--- a/public/static/json/tls.MDConcEntryTypes.en.json
+++ b/public/static/json/tls.MDConcEntryTypes.en.json
@@ -1 +1 @@
-[{"id":0,"name":""},{"id":7,"name":"Dispossession"},{"id":1,"name":"Donation"},{"id":4,"name":"Emergency Rescue"},{"id":6,"name":"Endowment"},{"id":3,"name":"Excavation"},{"id":10,"name":"Exchange"},{"id":15,"name":"Finding"},{"id":11,"name":"In-house production"},{"id":5,"name":"Inheritance"},{"id":9,"name":"Loan"},{"id":12,"name":"Material Strain (T\u00f6rzsanyag)"},{"id":8,"name":"Original condition"},{"id":99,"name":"Other legal acquisition"},{"id":16,"name":"Permanent loan"},{"id":2,"name":"Purchase"},{"id":98,"name":"To be checked"},{"id":14,"name":"Vorlass"}]
\ No newline at end of file
+{"0":"","7":"Dispossession","1":"Donation","4":"Emergency Rescue","6":"Endowment","3":"Excavation","10":"Exchange","15":"Finding","11":"In-house production","5":"Inheritance","9":"Loan","12":"Material Strain (T\u00f6rzsanyag)","8":"Original condition","99":"Other legal acquisition","16":"Permanent loan","2":"Purchase","98":"To be checked","14":"Vorlass"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcEntryTypes.uk.json b/public/static/json/tls.MDConcEntryTypes.uk.json
index b727ab5..456444f 100644
--- a/public/static/json/tls.MDConcEntryTypes.uk.json
+++ b/public/static/json/tls.MDConcEntryTypes.uk.json
@@ -1 +1 @@
-[{"id":0,"name":""},{"id":99,"name":"\u0406\u043d\u0448\u0435 \u0437\u0430\u043a\u043e\u043d\u043d\u0435 \u043f\u0440\u0438\u0434\u0431\u0430\u043d\u043d\u044f"},{"id":4,"name":"\u0410\u0432\u0430\u0440\u0456\u0439\u043d\u043e-\u0440\u044f\u0442\u0443\u0432\u0430\u043b\u044c\u043d\u0456 \u0440\u043e\u0431\u043e\u0442\u0438"},{"id":1,"name":"\u0411\u043b\u0430\u0433\u043e\u0434\u0456\u0439\u043d\u0438\u0439 \u0432\u043d\u0435\u0441\u043e\u043a"},{"id":11,"name":"\u0412\u043b\u0430\u0441\u043d\u0435 \u0432\u0438\u0440\u043e\u0431\u043d\u0438\u0446\u0442\u0432\u043e"},{"id":12,"name":"\u0414\u0435\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0443"},{"id":6,"name":"\u0415\u043d\u0434\u0430\u0443\u043c\u0435\u043d\u0442"},{"id":2,"name":"\u0417\u0430\u043a\u0443\u043f\u0456\u0432\u043b\u044f"},{"id":15,"name":"\u0417\u043d\u0430\u0445\u0456\u0434\u043a\u0430"},{"id":10,"name":"\u041e\u0431\u043c\u0456\u043d"},{"id":8,"name":"\u041e\u0440\u0438\u0433\u0456\u043d\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0442\u0430\u043d"},{"id":7,"name":"\u041f\u043e\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044f \u043f\u0440\u0430\u0432\u0430 \u0432\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u0456"},{"id":9,"name":"\u041f\u043e\u0437\u0438\u043a\u0430"},{"id":16,"name":"\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0430 \u043f\u043e\u0437\u0438\u043a\u0430"},{"id":14,"name":"\u041f\u0440\u0435\u0446\u0435\u0434\u0435\u043d\u0442"},{"id":98,"name":"\u041f\u0456\u0434\u043b\u044f\u0433\u0430\u0454 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0446\u0456"},{"id":3,"name":"\u0420\u043e\u0437\u043a\u043e\u043f\u043a\u0438"},{"id":5,"name":"\u0421\u043f\u0430\u0434\u0449\u0438\u043d\u0430"}]
\ No newline at end of file
+{"0":"","99":"\u0406\u043d\u0448\u0435 \u0437\u0430\u043a\u043e\u043d\u043d\u0435 \u043f\u0440\u0438\u0434\u0431\u0430\u043d\u043d\u044f","4":"\u0410\u0432\u0430\u0440\u0456\u0439\u043d\u043e-\u0440\u044f\u0442\u0443\u0432\u0430\u043b\u044c\u043d\u0456 \u0440\u043e\u0431\u043e\u0442\u0438","1":"\u0411\u043b\u0430\u0433\u043e\u0434\u0456\u0439\u043d\u0438\u0439 \u0432\u043d\u0435\u0441\u043e\u043a","11":"\u0412\u043b\u0430\u0441\u043d\u0435 \u0432\u0438\u0440\u043e\u0431\u043d\u0438\u0446\u0442\u0432\u043e","12":"\u0414\u0435\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043c\u0430\u0442\u0435\u0440\u0456\u0430\u043b\u0443","6":"\u0415\u043d\u0434\u0430\u0443\u043c\u0435\u043d\u0442","2":"\u0417\u0430\u043a\u0443\u043f\u0456\u0432\u043b\u044f","15":"\u0417\u043d\u0430\u0445\u0456\u0434\u043a\u0430","10":"\u041e\u0431\u043c\u0456\u043d","8":"\u041e\u0440\u0438\u0433\u0456\u043d\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0442\u0430\u043d","7":"\u041f\u043e\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044f \u043f\u0440\u0430\u0432\u0430 \u0432\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u0456","9":"\u041f\u043e\u0437\u0438\u043a\u0430","16":"\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0430 \u043f\u043e\u0437\u0438\u043a\u0430","14":"\u041f\u0440\u0435\u0446\u0435\u0434\u0435\u043d\u0442","98":"\u041f\u0456\u0434\u043b\u044f\u0433\u0430\u0454 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u0446\u0456","3":"\u0420\u043e\u0437\u043a\u043e\u043f\u043a\u0438","5":"\u0421\u043f\u0430\u0434\u0449\u0438\u043d\u0430"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcEventTypes.de.json b/public/static/json/tls.MDConcEventTypes.de.json
index 94c5ee0..d83d96c 100644
--- a/public/static/json/tls.MDConcEventTypes.de.json
+++ b/public/static/json/tls.MDConcEventTypes.de.json
@@ -1 +1 @@
-[{"id":13,"name":"Abgeschickt"},{"id":20,"name":"Abgeschrieben"},{"id":10,"name":"Aufgenommen"},{"id":14,"name":"Ausgefertigt"},{"id":25,"name":"Beauftragt"},{"id":37,"name":"Bemalt"},{"id":45,"name":"Besch\u00e4digt"},{"id":42,"name":"Besessen"},{"id":29,"name":"Dekor entworfen"},{"id":12,"name":"Druckplatte hergestellt"},{"id":11,"name":"Empfangen"},{"id":52,"name":"Entstanden"},{"id":16,"name":"Erstbeschreibung"},{"id":30,"name":"Form entworfen"},{"id":26,"name":"Gedruckt"},{"id":50,"name":"Geerbt"},{"id":2,"name":"Gefunden"},{"id":35,"name":"Geistige Sch\u00f6pfung"},{"id":41,"name":"Gekauft"},{"id":9,"name":"Gemalt"},{"id":8,"name":"Gesammelt"},{"id":49,"name":"Gespendet \/ Geschenkt"},{"id":27,"name":"Gesprochen"},{"id":28,"name":"Gesungen"},{"id":19,"name":"Gezeichnet"},{"id":21,"name":"Hat gelebt"},{"id":51,"name":"Hat zum Hauptgegenstand"},{"id":48,"name":"Herausgegeben"},{"id":1,"name":"Hergestellt"},{"id":38,"name":"Illustriert"},{"id":31,"name":"Modelliert"},{"id":44,"name":"Restauriert"},{"id":32,"name":"Signiert"},{"id":15,"name":"Unterzeichnet"},{"id":7,"name":"Verfasst"},{"id":34,"name":"Vergraben"},{"id":43,"name":"Verkauft"},{"id":47,"name":"Verschollen"},{"id":40,"name":"Versteigert"},{"id":3,"name":"Ver\u00f6ffentlicht"},{"id":4,"name":"Vorlagenerstellung"},{"id":5,"name":"Wurde abgebildet (Akteur)"},{"id":36,"name":"Wurde abgebildet (Ort)"},{"id":33,"name":"Wurde erw\u00e4hnt"},{"id":6,"name":"Wurde genutzt"},{"id":46,"name":"Zerst\u00f6rt"},{"id":39,"name":"Zusammengef\u00fcgt"},{"id":22,"name":"[Geographischer Bezug]"},{"id":23,"name":"[Person-K\u00f6rperschaft-Bezug]"},{"id":24,"name":"[Zeitbezug]"}]
\ No newline at end of file
+{"13":"Abgeschickt","20":"Abgeschrieben","10":"Aufgenommen","14":"Ausgefertigt","25":"Beauftragt","37":"Bemalt","45":"Besch\u00e4digt","42":"Besessen","29":"Dekor entworfen","12":"Druckplatte hergestellt","11":"Empfangen","52":"Entstanden","16":"Erstbeschreibung","30":"Form entworfen","26":"Gedruckt","50":"Geerbt","2":"Gefunden","35":"Geistige Sch\u00f6pfung","41":"Gekauft","9":"Gemalt","8":"Gesammelt","49":"Gespendet \/ Geschenkt","27":"Gesprochen","28":"Gesungen","19":"Gezeichnet","21":"Hat gelebt","51":"Hat zum Hauptgegenstand","48":"Herausgegeben","1":"Hergestellt","38":"Illustriert","31":"Modelliert","44":"Restauriert","32":"Signiert","15":"Unterzeichnet","7":"Verfasst","34":"Vergraben","43":"Verkauft","47":"Verschollen","40":"Versteigert","3":"Ver\u00f6ffentlicht","4":"Vorlagenerstellung","5":"Wurde abgebildet (Akteur)","36":"Wurde abgebildet (Ort)","33":"Wurde erw\u00e4hnt","6":"Wurde genutzt","46":"Zerst\u00f6rt","39":"Zusammengef\u00fcgt","22":"[Geographischer Bezug]","23":"[Person-K\u00f6rperschaft-Bezug]","24":"[Zeitbezug]"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcEventTypes.en.json b/public/static/json/tls.MDConcEventTypes.en.json
index 14cb59c..5794f6c 100644
--- a/public/static/json/tls.MDConcEventTypes.en.json
+++ b/public/static/json/tls.MDConcEventTypes.en.json
@@ -1 +1 @@
-[{"id":39,"name":"Assembled"},{"id":40,"name":"Auctioned"},{"id":32,"name":"Autographed\/Signed"},{"id":41,"name":"Bought"},{"id":34,"name":"Buried"},{"id":8,"name":"Collected"},{"id":25,"name":"Commissioned"},{"id":20,"name":"Copied (by hand)"},{"id":1,"name":"Created"},{"id":45,"name":"Damaged"},{"id":29,"name":"Decor designed"},{"id":46,"name":"Destroyed"},{"id":49,"name":"Donated \/ present"},{"id":19,"name":"Drawn"},{"id":48,"name":"Edited"},{"id":52,"name":"Emerged"},{"id":16,"name":"First description"},{"id":30,"name":"Form designed"},{"id":2,"name":"Found"},{"id":51,"name":"Had subject"},{"id":38,"name":"Illustrated"},{"id":10,"name":"Image taken"},{"id":50,"name":"Inherited"},{"id":35,"name":"Intellectual creation"},{"id":14,"name":"Issued"},{"id":21,"name":"Lived"},{"id":47,"name":"Lost"},{"id":33,"name":"Mentioned"},{"id":31,"name":"Modelled"},{"id":42,"name":"Owned"},{"id":9,"name":"Painted"},{"id":37,"name":"Painted on"},{"id":26,"name":"Printed"},{"id":12,"name":"Printing plate produced"},{"id":3,"name":"Published"},{"id":11,"name":"Received"},{"id":27,"name":"Recorded"},{"id":44,"name":"Restored"},{"id":13,"name":"Sent"},{"id":15,"name":"Signed"},{"id":43,"name":"Sold"},{"id":28,"name":"Sung"},{"id":4,"name":"Template creation"},{"id":36,"name":"Was depicted"},{"id":5,"name":"Was depicted (Actor)"},{"id":6,"name":"Was used"},{"id":7,"name":"Written"},{"id":23,"name":"[Relation to person or institution]"},{"id":24,"name":"[Relation to time]"},{"id":22,"name":"[Relationship to location]"}]
\ No newline at end of file
+{"39":"Assembled","40":"Auctioned","32":"Autographed\/Signed","41":"Bought","34":"Buried","8":"Collected","25":"Commissioned","20":"Copied (by hand)","1":"Created","45":"Damaged","29":"Decor designed","46":"Destroyed","49":"Donated \/ present","19":"Drawn","48":"Edited","52":"Emerged","16":"First description","30":"Form designed","2":"Found","51":"Had subject","38":"Illustrated","10":"Image taken","50":"Inherited","35":"Intellectual creation","14":"Issued","21":"Lived","47":"Lost","33":"Mentioned","31":"Modelled","42":"Owned","9":"Painted","37":"Painted on","26":"Printed","12":"Printing plate produced","3":"Published","11":"Received","27":"Recorded","44":"Restored","13":"Sent","15":"Signed","43":"Sold","28":"Sung","4":"Template creation","36":"Was depicted","5":"Was depicted (Actor)","6":"Was used","7":"Written","23":"[Relation to person or institution]","24":"[Relation to time]","22":"[Relationship to location]"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcEventTypes.uk.json b/public/static/json/tls.MDConcEventTypes.uk.json
index f9f1856..d3617de 100644
--- a/public/static/json/tls.MDConcEventTypes.uk.json
+++ b/public/static/json/tls.MDConcEventTypes.uk.json
@@ -1 +1 @@
-[{"id":24,"name":"[\u0412\u0456\u0434\u043d\u043e\u0448\u0435\u043d\u043d\u044f \u0434\u043e \u0447\u0430\u0441\u0443]"},{"id":23,"name":"[\u0412\u0456\u0434\u043d\u043e\u0448\u0435\u043d\u043d\u044f \u0437 \u043b\u044e\u0434\u0438\u043d\u043e\u044e \u0447\u0438 \u0456\u043d\u0441\u0442\u0438\u0442\u0443\u0446\u0456\u0454\u044e]"},{"id":22,"name":"[\u0412\u0456\u0434\u043d\u043e\u0448\u0435\u043d\u043d\u044f \u0437 \u043c\u0456\u0441\u0446\u0435\u0437\u043d\u0430\u0445\u043e\u0434\u0436\u0435\u043d\u043d\u044f\u043c]."},{"id":38,"name":"\u0406\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e"},{"id":35,"name":"\u0406\u043d\u0442\u0435\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0442\u0432\u043e\u0440\u0447\u0456\u0441\u0442\u044c"},{"id":5,"name":"\u0411\u0443\u0432 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (\u0430\u043a\u0442\u043e\u0440)"},{"id":6,"name":"\u0411\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043e"},{"id":25,"name":"\u0412\u0432\u0435\u0434\u0435\u043d\u043e \u0432 \u0435\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0456\u044e"},{"id":12,"name":"\u0412\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e \u0434\u0440\u0443\u043a\u0430\u0440\u0441\u044c\u043a\u0443 \u0444\u043e\u0440\u043c\u0443"},{"id":14,"name":"\u0412\u0438\u0434\u0430\u043d\u043e"},{"id":47,"name":"\u0412\u0442\u0440\u0430\u0447\u0435\u043d\u043e\/\u0417\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e"},{"id":13,"name":"\u0412\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e"},{"id":48,"name":"\u0412\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e"},{"id":44,"name":"\u0412\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e"},{"id":29,"name":"\u0414\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0441\u044c\u043a\u0438\u0439 \u0434\u0435\u043a\u043e\u0440"},{"id":32,"name":"\u0417 \u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u043c\/\u043f\u0456\u0434\u043f\u0438\u0441\u043e\u043c"},{"id":52,"name":"\u0417'\u044f\u0432\u0438\u043b\u043e\u0441\u044f"},{"id":27,"name":"\u0417\u0430\u043f\u0438\u0441\u0430\u043d\u043e"},{"id":33,"name":"\u0417\u0433\u0430\u0434\u0443\u0454\u0442\u044c\u0441\u044f"},{"id":31,"name":"\u0417\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e"},{"id":2,"name":"\u0417\u043d\u0430\u0439\u0434\u0435\u043d\u043e"},{"id":46,"name":"\u0417\u043d\u0438\u0449\u0435\u043d\u043e"},{"id":36,"name":"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e"},{"id":10,"name":"\u0417\u0440\u043e\u0431\u043b\u0435\u043d\u043e \u0437\u043d\u0456\u043c\u043e\u043a"},{"id":8,"name":"\u0417\u0456\u0431\u0440\u0430\u043d\u043e"},{"id":39,"name":"\u0417\u0456\u0431\u0440\u0430\u043d\u043e"},{"id":51,"name":"\u041c\u0430\u0432 \u0442\u0435\u043c\u0443"},{"id":26,"name":"\u041d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e"},{"id":19,"name":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e"},{"id":37,"name":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e"},{"id":9,"name":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u0434\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d)"},{"id":3,"name":"\u041e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e"},{"id":11,"name":"\u041e\u0442\u0440\u0438\u043c\u0430\u043d\u043e"},{"id":16,"name":"\u041f\u0435\u0440\u0448\u0438\u0439 \u043e\u043f\u0438\u0441"},{"id":7,"name":"\u041f\u0438\u0441\u044c\u043c\u043e\u0432\u0438\u0439"},{"id":49,"name":"\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u0443\u0432\u0430\u043d\u043e \/ \u043f\u043e\u0434\u0430\u0440\u043e\u0432\u0430\u043d\u043e"},{"id":34,"name":"\u041f\u043e\u0445\u043e\u0432\u0430\u043d\u043e"},{"id":45,"name":"\u041f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e"},{"id":41,"name":"\u041f\u0440\u0438\u0434\u0431\u0430\u043d\u043e"},{"id":43,"name":"\u041f\u0440\u043e\u0434\u0430\u043d\u043e"},{"id":40,"name":"\u041f\u0440\u043e\u0434\u0430\u043d\u043e \u043d\u0430 \u0430\u0443\u043a\u0446\u0456\u043e\u043d\u0456"},{"id":21,"name":"\u041f\u0440\u043e\u0436\u0438\u0432\u0430\u0432"},{"id":15,"name":"\u041f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e"},{"id":20,"name":"\u0421\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e (\u0432\u0456\u0434 \u0440\u0443\u043a\u0438)"},{"id":28,"name":"\u0421\u043f\u0456\u0432\u0430\u043d\u0438\u0439"},{"id":4,"name":"\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0443"},{"id":1,"name":"\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043e"},{"id":42,"name":"\u0423 \u0432\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u0456"},{"id":50,"name":"\u0423\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e"},{"id":30,"name":"\u0424\u043e\u0440\u043c\u0430 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e"}]
\ No newline at end of file
+{"24":"[\u0412\u0456\u0434\u043d\u043e\u0448\u0435\u043d\u043d\u044f \u0434\u043e \u0447\u0430\u0441\u0443]","23":"[\u0412\u0456\u0434\u043d\u043e\u0448\u0435\u043d\u043d\u044f \u0437 \u043b\u044e\u0434\u0438\u043d\u043e\u044e \u0447\u0438 \u0456\u043d\u0441\u0442\u0438\u0442\u0443\u0446\u0456\u0454\u044e]","22":"[\u0412\u0456\u0434\u043d\u043e\u0448\u0435\u043d\u043d\u044f \u0437 \u043c\u0456\u0441\u0446\u0435\u0437\u043d\u0430\u0445\u043e\u0434\u0436\u0435\u043d\u043d\u044f\u043c].","38":"\u0406\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e","35":"\u0406\u043d\u0442\u0435\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0442\u0432\u043e\u0440\u0447\u0456\u0441\u0442\u044c","5":"\u0411\u0443\u0432 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 (\u0430\u043a\u0442\u043e\u0440)","6":"\u0411\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043e","25":"\u0412\u0432\u0435\u0434\u0435\u043d\u043e \u0432 \u0435\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0456\u044e","12":"\u0412\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e \u0434\u0440\u0443\u043a\u0430\u0440\u0441\u044c\u043a\u0443 \u0444\u043e\u0440\u043c\u0443","14":"\u0412\u0438\u0434\u0430\u043d\u043e","47":"\u0412\u0442\u0440\u0430\u0447\u0435\u043d\u043e\/\u0417\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e","13":"\u0412\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e","48":"\u0412\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e","44":"\u0412\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e","29":"\u0414\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u0441\u044c\u043a\u0438\u0439 \u0434\u0435\u043a\u043e\u0440","32":"\u0417 \u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u043c\/\u043f\u0456\u0434\u043f\u0438\u0441\u043e\u043c","52":"\u0417'\u044f\u0432\u0438\u043b\u043e\u0441\u044f","27":"\u0417\u0430\u043f\u0438\u0441\u0430\u043d\u043e","33":"\u0417\u0433\u0430\u0434\u0443\u0454\u0442\u044c\u0441\u044f","31":"\u0417\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e","2":"\u0417\u043d\u0430\u0439\u0434\u0435\u043d\u043e","46":"\u0417\u043d\u0438\u0449\u0435\u043d\u043e","36":"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e","10":"\u0417\u0440\u043e\u0431\u043b\u0435\u043d\u043e \u0437\u043d\u0456\u043c\u043e\u043a","8":"\u0417\u0456\u0431\u0440\u0430\u043d\u043e","39":"\u0417\u0456\u0431\u0440\u0430\u043d\u043e","51":"\u041c\u0430\u0432 \u0442\u0435\u043c\u0443","26":"\u041d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e","19":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e","37":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e","9":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e (\u0434\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d)","3":"\u041e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e","11":"\u041e\u0442\u0440\u0438\u043c\u0430\u043d\u043e","16":"\u041f\u0435\u0440\u0448\u0438\u0439 \u043e\u043f\u0438\u0441","7":"\u041f\u0438\u0441\u044c\u043c\u043e\u0432\u0438\u0439","49":"\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u0443\u0432\u0430\u043d\u043e \/ \u043f\u043e\u0434\u0430\u0440\u043e\u0432\u0430\u043d\u043e","34":"\u041f\u043e\u0445\u043e\u0432\u0430\u043d\u043e","45":"\u041f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e","41":"\u041f\u0440\u0438\u0434\u0431\u0430\u043d\u043e","43":"\u041f\u0440\u043e\u0434\u0430\u043d\u043e","40":"\u041f\u0440\u043e\u0434\u0430\u043d\u043e \u043d\u0430 \u0430\u0443\u043a\u0446\u0456\u043e\u043d\u0456","21":"\u041f\u0440\u043e\u0436\u0438\u0432\u0430\u0432","15":"\u041f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e","20":"\u0421\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e (\u0432\u0456\u0434 \u0440\u0443\u043a\u0438)","28":"\u0421\u043f\u0456\u0432\u0430\u043d\u0438\u0439","4":"\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0443","1":"\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043e","42":"\u0423 \u0432\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u0456","50":"\u0423\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e","30":"\u0424\u043e\u0440\u043c\u0430 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLanguages.de.json b/public/static/json/tls.MDConcLanguages.de.json
index 365804d..e24e060 100644
--- a/public/static/json/tls.MDConcLanguages.de.json
+++ b/public/static/json/tls.MDConcLanguages.de.json
@@ -1 +1 @@
-[{"id":"aa","name":"Afar-\u00e1f"},{"id":"ab","name":"\u0430\u04a7\u0441\u0443\u0430 \u0431\u044b\u0437\u0448\u04d9\u0430"},{"id":"ae","name":"Avestan"},{"id":"af","name":"Afrikaans"},{"id":"ak","name":"Akan"},{"id":"am","name":"Amharic"},{"id":"an","name":"Aragonese"},{"id":"ar","name":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629"},{"id":"as","name":"Assamese"},{"id":"av","name":"Avaric"},{"id":"ay","name":"Aymara"},{"id":"az","name":"Azerbaijani"},{"id":"ba","name":"Bashkir"},{"id":"be","name":"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f \u043c\u043e\u0432\u0430"},{"id":"bg","name":"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0435\u0437\u0438\u043a"},{"id":"bh","name":"Bihari"},{"id":"bi","name":"Bislama"},{"id":"bm","name":"Bambara"},{"id":"bn","name":"Bengali"},{"id":"bo","name":"\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51"},{"id":"br","name":"Breton"},{"id":"bs","name":"Bosnian"},{"id":"ca","name":"catal\u00e0"},{"id":"ce","name":"Chechen"},{"id":"ch","name":"Chamorro"},{"id":"co","name":"Corsican"},{"id":"cr","name":"Cree"},{"id":"cs","name":"\u010de\u0161tina"},{"id":"cu","name":"\u0441\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a \u0469\u0437\u044b\u043a\u044a"},{"id":"cv","name":"Chuvash"},{"id":"cy","name":"Welsh"},{"id":"da","name":"Danish"},{"id":"de","name":"Deutsch"},{"id":"dsb","name":"Dolnoserb\u0161\u0107ina"},{"id":"dv","name":"Divehi; Dhivehi; Maldivian;"},{"id":"dz","name":"Dzongkha"},{"id":"ee","name":"Ewe"},{"id":"egy","name":"Egyptian language"},{"id":"el","name":"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},{"id":"en","name":"English"},{"id":"eo","name":"Esperanto"},{"id":"es","name":"Spanish; Castilian"},{"id":"et","name":"Estonian"},{"id":"eu","name":"Basque"},{"id":"fa","name":"Persian"},{"id":"ff","name":"Fula; Fulah; Pulaar; Pular"},{"id":"fi","name":"Finnish"},{"id":"fj","name":"Fijian"},{"id":"fo","name":"Faroese"},{"id":"fr","name":"Fran\u00e7ais"},{"id":"fy","name":"Western Frisian"},{"id":"ga","name":"Irish"},{"id":"gd","name":"Scottish Gaelic; Gaelic"},{"id":"gl","name":"Galician"},{"id":"gn","name":"Guaran\u00ed"},{"id":"grc","name":"Ancient Greek"},{"id":"gu","name":"Gujarati"},{"id":"gv","name":"Manx"},{"id":"ha","name":"Hausa"},{"id":"he","name":"Hebrew (modern)"},{"id":"hi","name":"Hindi"},{"id":"ho","name":"Hiri Motu"},{"id":"hr","name":"Croatian"},{"id":"hsb","name":"Hornjoserb\u0161\u0107ina"},{"id":"ht","name":"Haitian; Haitian Creole"},{"id":"hu","name":"Magyar"},{"id":"hy","name":"Armenian"},{"id":"hz","name":"Herero"},{"id":"ia","name":"Interlingua"},{"id":"id","name":"Bahasa Indonesia"},{"id":"ie","name":"Interlingue"},{"id":"ig","name":"Igbo"},{"id":"ii","name":"Nuosu"},{"id":"ik","name":"Inupiaq"},{"id":"io","name":"Ido"},{"id":"is","name":"Icelandic"},{"id":"it","name":"Italian"},{"id":"iu","name":"Inuktitut"},{"id":"ja","name":"Japanese (ja)"},{"id":"jv","name":"Javanese (jv)"},{"id":"ka","name":"Georgian"},{"id":"kg","name":"Kongo"},{"id":"ki","name":"Kikuyu, Gikuyu"},{"id":"kj","name":"Kwanyama, Kuanyama"},{"id":"kk","name":"Kazakh"},{"id":"kl","name":"Kalaallisut, Greenlandic"},{"id":"km","name":"Khmer"},{"id":"kn","name":"Kannada"},{"id":"ko","name":"Korean"},{"id":"kr","name":"Kanuri"},{"id":"ks","name":"Kashmiri"},{"id":"ku","name":"Kurdish"},{"id":"kv","name":"Komi"},{"id":"kw","name":"Cornish"},{"id":"ky","name":"Kirghiz, Kyrgyz"},{"id":"la","name":"Latin"},{"id":"lb","name":"L\u00ebtzebuergesch"},{"id":"lg","name":"Luganda"},{"id":"li","name":"Limburgish, Limburgan, Limburger"},{"id":"ln","name":"Lingala"},{"id":"lo","name":"Lao"},{"id":"lt","name":"lietuvi\u0173 kalba"},{"id":"lu","name":"Luba-Katanga"},{"id":"lv","name":"Latvian"},{"id":"mg","name":"Malagasy"},{"id":"mh","name":"Marshallese"},{"id":"mi","name":"Maori"},{"id":"mk","name":"Macedonian"},{"id":"ml","name":"Malayalam"},{"id":"mn","name":"Mongolian"},{"id":"mr","name":"Marathi (Mara?hi)"},{"id":"ms","name":"Malay"},{"id":"mt","name":"Maltese"},{"id":"my","name":"Burmese"},{"id":"na","name":"Nauru"},{"id":"nb","name":"Bokm\u00e5l"},{"id":"nd","name":"North Ndebele"},{"id":"nds","name":"Niederdeutsch"},{"id":"ne","name":"Nepali"},{"id":"ng","name":"Ndonga"},{"id":"nl","name":"Nederlands"},{"id":"nn","name":"Nynorsk"},{"id":"no","name":"Norsk"},{"id":"nr","name":"South Ndebele"},{"id":"nv","name":"Navajo, Navaho"},{"id":"ny","name":"Chichewa; Chewa; Nyanja"},{"id":"oc","name":"Occitan"},{"id":"oj","name":"Ojibwe, Ojibwa"},{"id":"om","name":"Oromo"},{"id":"or","name":"Oriya"},{"id":"os","name":"Ossetian, Ossetic"},{"id":"pa","name":"Panjabi, Punjabi"},{"id":"pdt","name":"Plautdietsch"},{"id":"pi","name":"Pali"},{"id":"pl","name":"Polski"},{"id":"ps","name":"Pashto, Pushto"},{"id":"pt","name":"Portugu\u00eas"},{"id":"qu","name":"Quechua"},{"id":"rm","name":"Romansh"},{"id":"rn","name":"Kirundi"},{"id":"ro","name":"Rom\u00e2n\u0103"},{"id":"ru","name":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},{"id":"rw","name":"Kinyarwanda"},{"id":"sa","name":"Sanskrit (\u0938\u0902\u0938\u094d\u0915\u0943\u0924)"},{"id":"sc","name":"Sardinian"},{"id":"sd","name":"Sindhi"},{"id":"se","name":"Northern Sami"},{"id":"sg","name":"Sango"},{"id":"si","name":"Sinhala, Sinhalese"},{"id":"sk","name":"Sloven\u010dina"},{"id":"sl","name":"Sloven\u0161\u010dina"},{"id":"sm","name":"Samoan"},{"id":"sn","name":"Shona"},{"id":"so","name":"Somali"},{"id":"sq","name":"Albanian"},{"id":"sr","name":"Serbian"},{"id":"ss","name":"Swati"},{"id":"st","name":"Southern Sotho"},{"id":"su","name":"Sundanese"},{"id":"sv","name":"Swedish"},{"id":"sw","name":"Swahili"},{"id":"ta","name":"Tamil"},{"id":"te","name":"Telugu"},{"id":"tg","name":"Tajik"},{"id":"th","name":"\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22"},{"id":"ti","name":"Tigrinya"},{"id":"tk","name":"Turkmen"},{"id":"tl","name":"Tagalog"},{"id":"tn","name":"Tswana"},{"id":"to","name":"Tonga (Tonga Islands)"},{"id":"tr","name":"T\u00fcrk\u00e7e"},{"id":"ts","name":"Tsonga"},{"id":"tt","name":"Tatar"},{"id":"tw","name":"Twi"},{"id":"ty","name":"Tahitian"},{"id":"ug","name":"Uighur, Uyghur"},{"id":"uk","name":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},{"id":"ur","name":"\u0627\u0631\u062f\u0648"},{"id":"uz","name":"Uzbek"},{"id":"ve","name":"Venda"},{"id":"vi","name":"Vietnamese"},{"id":"vo","name":"Volap\u00fck"},{"id":"wa","name":"Walloon"},{"id":"wen","name":"Sorbisch"},{"id":"wo","name":"Wolof"},{"id":"xh","name":"Xhosa"},{"id":"yi","name":"Yiddish"},{"id":"yo","name":"Yoruba"},{"id":"za","name":"Zhuang, Chuang"},{"id":"zh","name":"Chinese"},{"id":"zu","name":"Zulu"}]
\ No newline at end of file
+{"aa":"Afar-\u00e1f","ab":"\u0430\u04a7\u0441\u0443\u0430 \u0431\u044b\u0437\u0448\u04d9\u0430","ae":"Avestan","af":"Afrikaans","ak":"Akan","am":"Amharic","an":"Aragonese","ar":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629","as":"Assamese","av":"Avaric","ay":"Aymara","az":"Azerbaijani","ba":"Bashkir","be":"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f \u043c\u043e\u0432\u0430","bg":"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0435\u0437\u0438\u043a","bh":"Bihari","bi":"Bislama","bm":"Bambara","bn":"Bengali","bo":"\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51","br":"Breton","bs":"Bosnian","ca":"catal\u00e0","ce":"Chechen","ch":"Chamorro","co":"Corsican","cr":"Cree","cs":"\u010de\u0161tina","cu":"\u0441\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a \u0469\u0437\u044b\u043a\u044a","cv":"Chuvash","cy":"Welsh","da":"Danish","de":"Deutsch","dsb":"Dolnoserb\u0161\u0107ina","dv":"Divehi; Dhivehi; Maldivian;","dz":"Dzongkha","ee":"Ewe","egy":"Egyptian language","el":"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac","en":"English","eo":"Esperanto","es":"Spanish; Castilian","et":"Estonian","eu":"Basque","fa":"Persian","ff":"Fula; Fulah; Pulaar; Pular","fi":"Finnish","fj":"Fijian","fo":"Faroese","fr":"Fran\u00e7ais","fy":"Western Frisian","ga":"Irish","gd":"Scottish Gaelic; Gaelic","gl":"Galician","gn":"Guaran\u00ed","grc":"Ancient Greek","gu":"Gujarati","gv":"Manx","ha":"Hausa","he":"Hebrew (modern)","hi":"Hindi","ho":"Hiri Motu","hr":"Croatian","hsb":"Hornjoserb\u0161\u0107ina","ht":"Haitian; Haitian Creole","hu":"Magyar","hy":"Armenian","hz":"Herero","ia":"Interlingua","id":"Bahasa Indonesia","ie":"Interlingue","ig":"Igbo","ii":"Nuosu","ik":"Inupiaq","io":"Ido","is":"Icelandic","it":"Italian","iu":"Inuktitut","ja":"Japanese (ja)","jv":"Javanese (jv)","ka":"Georgian","kg":"Kongo","ki":"Kikuyu, Gikuyu","kj":"Kwanyama, Kuanyama","kk":"Kazakh","kl":"Kalaallisut, Greenlandic","km":"Khmer","kn":"Kannada","ko":"Korean","kr":"Kanuri","ks":"Kashmiri","ku":"Kurdish","kv":"Komi","kw":"Cornish","ky":"Kirghiz, Kyrgyz","la":"Latin","lb":"L\u00ebtzebuergesch","lg":"Luganda","li":"Limburgish, Limburgan, Limburger","ln":"Lingala","lo":"Lao","lt":"lietuvi\u0173 kalba","lu":"Luba-Katanga","lv":"Latvian","mg":"Malagasy","mh":"Marshallese","mi":"Maori","mk":"Macedonian","ml":"Malayalam","mn":"Mongolian","mr":"Marathi (Mara?hi)","ms":"Malay","mt":"Maltese","my":"Burmese","na":"Nauru","nb":"Bokm\u00e5l","nd":"North Ndebele","nds":"Niederdeutsch","ne":"Nepali","ng":"Ndonga","nl":"Nederlands","nn":"Nynorsk","no":"Norsk","nr":"South Ndebele","nv":"Navajo, Navaho","ny":"Chichewa; Chewa; Nyanja","oc":"Occitan","oj":"Ojibwe, Ojibwa","om":"Oromo","or":"Oriya","os":"Ossetian, Ossetic","pa":"Panjabi, Punjabi","pdt":"Plautdietsch","pi":"Pali","pl":"Polski","ps":"Pashto, Pushto","pt":"Portugu\u00eas","qu":"Quechua","rm":"Romansh","rn":"Kirundi","ro":"Rom\u00e2n\u0103","ru":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439","rw":"Kinyarwanda","sa":"Sanskrit (\u0938\u0902\u0938\u094d\u0915\u0943\u0924)","sc":"Sardinian","sd":"Sindhi","se":"Northern Sami","sg":"Sango","si":"Sinhala, Sinhalese","sk":"Sloven\u010dina","sl":"Sloven\u0161\u010dina","sm":"Samoan","sn":"Shona","so":"Somali","sq":"Albanian","sr":"Serbian","ss":"Swati","st":"Southern Sotho","su":"Sundanese","sv":"Swedish","sw":"Swahili","ta":"Tamil","te":"Telugu","tg":"Tajik","th":"\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22","ti":"Tigrinya","tk":"Turkmen","tl":"Tagalog","tn":"Tswana","to":"Tonga (Tonga Islands)","tr":"T\u00fcrk\u00e7e","ts":"Tsonga","tt":"Tatar","tw":"Twi","ty":"Tahitian","ug":"Uighur, Uyghur","uk":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430","ur":"\u0627\u0631\u062f\u0648","uz":"Uzbek","ve":"Venda","vi":"Vietnamese","vo":"Volap\u00fck","wa":"Walloon","wen":"Sorbisch","wo":"Wolof","xh":"Xhosa","yi":"Yiddish","yo":"Yoruba","za":"Zhuang, Chuang","zh":"Chinese","zu":"Zulu"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLanguages.en.json b/public/static/json/tls.MDConcLanguages.en.json
index 365804d..e24e060 100644
--- a/public/static/json/tls.MDConcLanguages.en.json
+++ b/public/static/json/tls.MDConcLanguages.en.json
@@ -1 +1 @@
-[{"id":"aa","name":"Afar-\u00e1f"},{"id":"ab","name":"\u0430\u04a7\u0441\u0443\u0430 \u0431\u044b\u0437\u0448\u04d9\u0430"},{"id":"ae","name":"Avestan"},{"id":"af","name":"Afrikaans"},{"id":"ak","name":"Akan"},{"id":"am","name":"Amharic"},{"id":"an","name":"Aragonese"},{"id":"ar","name":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629"},{"id":"as","name":"Assamese"},{"id":"av","name":"Avaric"},{"id":"ay","name":"Aymara"},{"id":"az","name":"Azerbaijani"},{"id":"ba","name":"Bashkir"},{"id":"be","name":"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f \u043c\u043e\u0432\u0430"},{"id":"bg","name":"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0435\u0437\u0438\u043a"},{"id":"bh","name":"Bihari"},{"id":"bi","name":"Bislama"},{"id":"bm","name":"Bambara"},{"id":"bn","name":"Bengali"},{"id":"bo","name":"\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51"},{"id":"br","name":"Breton"},{"id":"bs","name":"Bosnian"},{"id":"ca","name":"catal\u00e0"},{"id":"ce","name":"Chechen"},{"id":"ch","name":"Chamorro"},{"id":"co","name":"Corsican"},{"id":"cr","name":"Cree"},{"id":"cs","name":"\u010de\u0161tina"},{"id":"cu","name":"\u0441\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a \u0469\u0437\u044b\u043a\u044a"},{"id":"cv","name":"Chuvash"},{"id":"cy","name":"Welsh"},{"id":"da","name":"Danish"},{"id":"de","name":"Deutsch"},{"id":"dsb","name":"Dolnoserb\u0161\u0107ina"},{"id":"dv","name":"Divehi; Dhivehi; Maldivian;"},{"id":"dz","name":"Dzongkha"},{"id":"ee","name":"Ewe"},{"id":"egy","name":"Egyptian language"},{"id":"el","name":"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},{"id":"en","name":"English"},{"id":"eo","name":"Esperanto"},{"id":"es","name":"Spanish; Castilian"},{"id":"et","name":"Estonian"},{"id":"eu","name":"Basque"},{"id":"fa","name":"Persian"},{"id":"ff","name":"Fula; Fulah; Pulaar; Pular"},{"id":"fi","name":"Finnish"},{"id":"fj","name":"Fijian"},{"id":"fo","name":"Faroese"},{"id":"fr","name":"Fran\u00e7ais"},{"id":"fy","name":"Western Frisian"},{"id":"ga","name":"Irish"},{"id":"gd","name":"Scottish Gaelic; Gaelic"},{"id":"gl","name":"Galician"},{"id":"gn","name":"Guaran\u00ed"},{"id":"grc","name":"Ancient Greek"},{"id":"gu","name":"Gujarati"},{"id":"gv","name":"Manx"},{"id":"ha","name":"Hausa"},{"id":"he","name":"Hebrew (modern)"},{"id":"hi","name":"Hindi"},{"id":"ho","name":"Hiri Motu"},{"id":"hr","name":"Croatian"},{"id":"hsb","name":"Hornjoserb\u0161\u0107ina"},{"id":"ht","name":"Haitian; Haitian Creole"},{"id":"hu","name":"Magyar"},{"id":"hy","name":"Armenian"},{"id":"hz","name":"Herero"},{"id":"ia","name":"Interlingua"},{"id":"id","name":"Bahasa Indonesia"},{"id":"ie","name":"Interlingue"},{"id":"ig","name":"Igbo"},{"id":"ii","name":"Nuosu"},{"id":"ik","name":"Inupiaq"},{"id":"io","name":"Ido"},{"id":"is","name":"Icelandic"},{"id":"it","name":"Italian"},{"id":"iu","name":"Inuktitut"},{"id":"ja","name":"Japanese (ja)"},{"id":"jv","name":"Javanese (jv)"},{"id":"ka","name":"Georgian"},{"id":"kg","name":"Kongo"},{"id":"ki","name":"Kikuyu, Gikuyu"},{"id":"kj","name":"Kwanyama, Kuanyama"},{"id":"kk","name":"Kazakh"},{"id":"kl","name":"Kalaallisut, Greenlandic"},{"id":"km","name":"Khmer"},{"id":"kn","name":"Kannada"},{"id":"ko","name":"Korean"},{"id":"kr","name":"Kanuri"},{"id":"ks","name":"Kashmiri"},{"id":"ku","name":"Kurdish"},{"id":"kv","name":"Komi"},{"id":"kw","name":"Cornish"},{"id":"ky","name":"Kirghiz, Kyrgyz"},{"id":"la","name":"Latin"},{"id":"lb","name":"L\u00ebtzebuergesch"},{"id":"lg","name":"Luganda"},{"id":"li","name":"Limburgish, Limburgan, Limburger"},{"id":"ln","name":"Lingala"},{"id":"lo","name":"Lao"},{"id":"lt","name":"lietuvi\u0173 kalba"},{"id":"lu","name":"Luba-Katanga"},{"id":"lv","name":"Latvian"},{"id":"mg","name":"Malagasy"},{"id":"mh","name":"Marshallese"},{"id":"mi","name":"Maori"},{"id":"mk","name":"Macedonian"},{"id":"ml","name":"Malayalam"},{"id":"mn","name":"Mongolian"},{"id":"mr","name":"Marathi (Mara?hi)"},{"id":"ms","name":"Malay"},{"id":"mt","name":"Maltese"},{"id":"my","name":"Burmese"},{"id":"na","name":"Nauru"},{"id":"nb","name":"Bokm\u00e5l"},{"id":"nd","name":"North Ndebele"},{"id":"nds","name":"Niederdeutsch"},{"id":"ne","name":"Nepali"},{"id":"ng","name":"Ndonga"},{"id":"nl","name":"Nederlands"},{"id":"nn","name":"Nynorsk"},{"id":"no","name":"Norsk"},{"id":"nr","name":"South Ndebele"},{"id":"nv","name":"Navajo, Navaho"},{"id":"ny","name":"Chichewa; Chewa; Nyanja"},{"id":"oc","name":"Occitan"},{"id":"oj","name":"Ojibwe, Ojibwa"},{"id":"om","name":"Oromo"},{"id":"or","name":"Oriya"},{"id":"os","name":"Ossetian, Ossetic"},{"id":"pa","name":"Panjabi, Punjabi"},{"id":"pdt","name":"Plautdietsch"},{"id":"pi","name":"Pali"},{"id":"pl","name":"Polski"},{"id":"ps","name":"Pashto, Pushto"},{"id":"pt","name":"Portugu\u00eas"},{"id":"qu","name":"Quechua"},{"id":"rm","name":"Romansh"},{"id":"rn","name":"Kirundi"},{"id":"ro","name":"Rom\u00e2n\u0103"},{"id":"ru","name":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},{"id":"rw","name":"Kinyarwanda"},{"id":"sa","name":"Sanskrit (\u0938\u0902\u0938\u094d\u0915\u0943\u0924)"},{"id":"sc","name":"Sardinian"},{"id":"sd","name":"Sindhi"},{"id":"se","name":"Northern Sami"},{"id":"sg","name":"Sango"},{"id":"si","name":"Sinhala, Sinhalese"},{"id":"sk","name":"Sloven\u010dina"},{"id":"sl","name":"Sloven\u0161\u010dina"},{"id":"sm","name":"Samoan"},{"id":"sn","name":"Shona"},{"id":"so","name":"Somali"},{"id":"sq","name":"Albanian"},{"id":"sr","name":"Serbian"},{"id":"ss","name":"Swati"},{"id":"st","name":"Southern Sotho"},{"id":"su","name":"Sundanese"},{"id":"sv","name":"Swedish"},{"id":"sw","name":"Swahili"},{"id":"ta","name":"Tamil"},{"id":"te","name":"Telugu"},{"id":"tg","name":"Tajik"},{"id":"th","name":"\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22"},{"id":"ti","name":"Tigrinya"},{"id":"tk","name":"Turkmen"},{"id":"tl","name":"Tagalog"},{"id":"tn","name":"Tswana"},{"id":"to","name":"Tonga (Tonga Islands)"},{"id":"tr","name":"T\u00fcrk\u00e7e"},{"id":"ts","name":"Tsonga"},{"id":"tt","name":"Tatar"},{"id":"tw","name":"Twi"},{"id":"ty","name":"Tahitian"},{"id":"ug","name":"Uighur, Uyghur"},{"id":"uk","name":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},{"id":"ur","name":"\u0627\u0631\u062f\u0648"},{"id":"uz","name":"Uzbek"},{"id":"ve","name":"Venda"},{"id":"vi","name":"Vietnamese"},{"id":"vo","name":"Volap\u00fck"},{"id":"wa","name":"Walloon"},{"id":"wen","name":"Sorbisch"},{"id":"wo","name":"Wolof"},{"id":"xh","name":"Xhosa"},{"id":"yi","name":"Yiddish"},{"id":"yo","name":"Yoruba"},{"id":"za","name":"Zhuang, Chuang"},{"id":"zh","name":"Chinese"},{"id":"zu","name":"Zulu"}]
\ No newline at end of file
+{"aa":"Afar-\u00e1f","ab":"\u0430\u04a7\u0441\u0443\u0430 \u0431\u044b\u0437\u0448\u04d9\u0430","ae":"Avestan","af":"Afrikaans","ak":"Akan","am":"Amharic","an":"Aragonese","ar":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629","as":"Assamese","av":"Avaric","ay":"Aymara","az":"Azerbaijani","ba":"Bashkir","be":"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f \u043c\u043e\u0432\u0430","bg":"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0435\u0437\u0438\u043a","bh":"Bihari","bi":"Bislama","bm":"Bambara","bn":"Bengali","bo":"\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51","br":"Breton","bs":"Bosnian","ca":"catal\u00e0","ce":"Chechen","ch":"Chamorro","co":"Corsican","cr":"Cree","cs":"\u010de\u0161tina","cu":"\u0441\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a \u0469\u0437\u044b\u043a\u044a","cv":"Chuvash","cy":"Welsh","da":"Danish","de":"Deutsch","dsb":"Dolnoserb\u0161\u0107ina","dv":"Divehi; Dhivehi; Maldivian;","dz":"Dzongkha","ee":"Ewe","egy":"Egyptian language","el":"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac","en":"English","eo":"Esperanto","es":"Spanish; Castilian","et":"Estonian","eu":"Basque","fa":"Persian","ff":"Fula; Fulah; Pulaar; Pular","fi":"Finnish","fj":"Fijian","fo":"Faroese","fr":"Fran\u00e7ais","fy":"Western Frisian","ga":"Irish","gd":"Scottish Gaelic; Gaelic","gl":"Galician","gn":"Guaran\u00ed","grc":"Ancient Greek","gu":"Gujarati","gv":"Manx","ha":"Hausa","he":"Hebrew (modern)","hi":"Hindi","ho":"Hiri Motu","hr":"Croatian","hsb":"Hornjoserb\u0161\u0107ina","ht":"Haitian; Haitian Creole","hu":"Magyar","hy":"Armenian","hz":"Herero","ia":"Interlingua","id":"Bahasa Indonesia","ie":"Interlingue","ig":"Igbo","ii":"Nuosu","ik":"Inupiaq","io":"Ido","is":"Icelandic","it":"Italian","iu":"Inuktitut","ja":"Japanese (ja)","jv":"Javanese (jv)","ka":"Georgian","kg":"Kongo","ki":"Kikuyu, Gikuyu","kj":"Kwanyama, Kuanyama","kk":"Kazakh","kl":"Kalaallisut, Greenlandic","km":"Khmer","kn":"Kannada","ko":"Korean","kr":"Kanuri","ks":"Kashmiri","ku":"Kurdish","kv":"Komi","kw":"Cornish","ky":"Kirghiz, Kyrgyz","la":"Latin","lb":"L\u00ebtzebuergesch","lg":"Luganda","li":"Limburgish, Limburgan, Limburger","ln":"Lingala","lo":"Lao","lt":"lietuvi\u0173 kalba","lu":"Luba-Katanga","lv":"Latvian","mg":"Malagasy","mh":"Marshallese","mi":"Maori","mk":"Macedonian","ml":"Malayalam","mn":"Mongolian","mr":"Marathi (Mara?hi)","ms":"Malay","mt":"Maltese","my":"Burmese","na":"Nauru","nb":"Bokm\u00e5l","nd":"North Ndebele","nds":"Niederdeutsch","ne":"Nepali","ng":"Ndonga","nl":"Nederlands","nn":"Nynorsk","no":"Norsk","nr":"South Ndebele","nv":"Navajo, Navaho","ny":"Chichewa; Chewa; Nyanja","oc":"Occitan","oj":"Ojibwe, Ojibwa","om":"Oromo","or":"Oriya","os":"Ossetian, Ossetic","pa":"Panjabi, Punjabi","pdt":"Plautdietsch","pi":"Pali","pl":"Polski","ps":"Pashto, Pushto","pt":"Portugu\u00eas","qu":"Quechua","rm":"Romansh","rn":"Kirundi","ro":"Rom\u00e2n\u0103","ru":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439","rw":"Kinyarwanda","sa":"Sanskrit (\u0938\u0902\u0938\u094d\u0915\u0943\u0924)","sc":"Sardinian","sd":"Sindhi","se":"Northern Sami","sg":"Sango","si":"Sinhala, Sinhalese","sk":"Sloven\u010dina","sl":"Sloven\u0161\u010dina","sm":"Samoan","sn":"Shona","so":"Somali","sq":"Albanian","sr":"Serbian","ss":"Swati","st":"Southern Sotho","su":"Sundanese","sv":"Swedish","sw":"Swahili","ta":"Tamil","te":"Telugu","tg":"Tajik","th":"\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22","ti":"Tigrinya","tk":"Turkmen","tl":"Tagalog","tn":"Tswana","to":"Tonga (Tonga Islands)","tr":"T\u00fcrk\u00e7e","ts":"Tsonga","tt":"Tatar","tw":"Twi","ty":"Tahitian","ug":"Uighur, Uyghur","uk":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430","ur":"\u0627\u0631\u062f\u0648","uz":"Uzbek","ve":"Venda","vi":"Vietnamese","vo":"Volap\u00fck","wa":"Walloon","wen":"Sorbisch","wo":"Wolof","xh":"Xhosa","yi":"Yiddish","yo":"Yoruba","za":"Zhuang, Chuang","zh":"Chinese","zu":"Zulu"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLanguages.uk.json b/public/static/json/tls.MDConcLanguages.uk.json
index 365804d..e24e060 100644
--- a/public/static/json/tls.MDConcLanguages.uk.json
+++ b/public/static/json/tls.MDConcLanguages.uk.json
@@ -1 +1 @@
-[{"id":"aa","name":"Afar-\u00e1f"},{"id":"ab","name":"\u0430\u04a7\u0441\u0443\u0430 \u0431\u044b\u0437\u0448\u04d9\u0430"},{"id":"ae","name":"Avestan"},{"id":"af","name":"Afrikaans"},{"id":"ak","name":"Akan"},{"id":"am","name":"Amharic"},{"id":"an","name":"Aragonese"},{"id":"ar","name":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629"},{"id":"as","name":"Assamese"},{"id":"av","name":"Avaric"},{"id":"ay","name":"Aymara"},{"id":"az","name":"Azerbaijani"},{"id":"ba","name":"Bashkir"},{"id":"be","name":"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f \u043c\u043e\u0432\u0430"},{"id":"bg","name":"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0435\u0437\u0438\u043a"},{"id":"bh","name":"Bihari"},{"id":"bi","name":"Bislama"},{"id":"bm","name":"Bambara"},{"id":"bn","name":"Bengali"},{"id":"bo","name":"\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51"},{"id":"br","name":"Breton"},{"id":"bs","name":"Bosnian"},{"id":"ca","name":"catal\u00e0"},{"id":"ce","name":"Chechen"},{"id":"ch","name":"Chamorro"},{"id":"co","name":"Corsican"},{"id":"cr","name":"Cree"},{"id":"cs","name":"\u010de\u0161tina"},{"id":"cu","name":"\u0441\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a \u0469\u0437\u044b\u043a\u044a"},{"id":"cv","name":"Chuvash"},{"id":"cy","name":"Welsh"},{"id":"da","name":"Danish"},{"id":"de","name":"Deutsch"},{"id":"dsb","name":"Dolnoserb\u0161\u0107ina"},{"id":"dv","name":"Divehi; Dhivehi; Maldivian;"},{"id":"dz","name":"Dzongkha"},{"id":"ee","name":"Ewe"},{"id":"egy","name":"Egyptian language"},{"id":"el","name":"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"},{"id":"en","name":"English"},{"id":"eo","name":"Esperanto"},{"id":"es","name":"Spanish; Castilian"},{"id":"et","name":"Estonian"},{"id":"eu","name":"Basque"},{"id":"fa","name":"Persian"},{"id":"ff","name":"Fula; Fulah; Pulaar; Pular"},{"id":"fi","name":"Finnish"},{"id":"fj","name":"Fijian"},{"id":"fo","name":"Faroese"},{"id":"fr","name":"Fran\u00e7ais"},{"id":"fy","name":"Western Frisian"},{"id":"ga","name":"Irish"},{"id":"gd","name":"Scottish Gaelic; Gaelic"},{"id":"gl","name":"Galician"},{"id":"gn","name":"Guaran\u00ed"},{"id":"grc","name":"Ancient Greek"},{"id":"gu","name":"Gujarati"},{"id":"gv","name":"Manx"},{"id":"ha","name":"Hausa"},{"id":"he","name":"Hebrew (modern)"},{"id":"hi","name":"Hindi"},{"id":"ho","name":"Hiri Motu"},{"id":"hr","name":"Croatian"},{"id":"hsb","name":"Hornjoserb\u0161\u0107ina"},{"id":"ht","name":"Haitian; Haitian Creole"},{"id":"hu","name":"Magyar"},{"id":"hy","name":"Armenian"},{"id":"hz","name":"Herero"},{"id":"ia","name":"Interlingua"},{"id":"id","name":"Bahasa Indonesia"},{"id":"ie","name":"Interlingue"},{"id":"ig","name":"Igbo"},{"id":"ii","name":"Nuosu"},{"id":"ik","name":"Inupiaq"},{"id":"io","name":"Ido"},{"id":"is","name":"Icelandic"},{"id":"it","name":"Italian"},{"id":"iu","name":"Inuktitut"},{"id":"ja","name":"Japanese (ja)"},{"id":"jv","name":"Javanese (jv)"},{"id":"ka","name":"Georgian"},{"id":"kg","name":"Kongo"},{"id":"ki","name":"Kikuyu, Gikuyu"},{"id":"kj","name":"Kwanyama, Kuanyama"},{"id":"kk","name":"Kazakh"},{"id":"kl","name":"Kalaallisut, Greenlandic"},{"id":"km","name":"Khmer"},{"id":"kn","name":"Kannada"},{"id":"ko","name":"Korean"},{"id":"kr","name":"Kanuri"},{"id":"ks","name":"Kashmiri"},{"id":"ku","name":"Kurdish"},{"id":"kv","name":"Komi"},{"id":"kw","name":"Cornish"},{"id":"ky","name":"Kirghiz, Kyrgyz"},{"id":"la","name":"Latin"},{"id":"lb","name":"L\u00ebtzebuergesch"},{"id":"lg","name":"Luganda"},{"id":"li","name":"Limburgish, Limburgan, Limburger"},{"id":"ln","name":"Lingala"},{"id":"lo","name":"Lao"},{"id":"lt","name":"lietuvi\u0173 kalba"},{"id":"lu","name":"Luba-Katanga"},{"id":"lv","name":"Latvian"},{"id":"mg","name":"Malagasy"},{"id":"mh","name":"Marshallese"},{"id":"mi","name":"Maori"},{"id":"mk","name":"Macedonian"},{"id":"ml","name":"Malayalam"},{"id":"mn","name":"Mongolian"},{"id":"mr","name":"Marathi (Mara?hi)"},{"id":"ms","name":"Malay"},{"id":"mt","name":"Maltese"},{"id":"my","name":"Burmese"},{"id":"na","name":"Nauru"},{"id":"nb","name":"Bokm\u00e5l"},{"id":"nd","name":"North Ndebele"},{"id":"nds","name":"Niederdeutsch"},{"id":"ne","name":"Nepali"},{"id":"ng","name":"Ndonga"},{"id":"nl","name":"Nederlands"},{"id":"nn","name":"Nynorsk"},{"id":"no","name":"Norsk"},{"id":"nr","name":"South Ndebele"},{"id":"nv","name":"Navajo, Navaho"},{"id":"ny","name":"Chichewa; Chewa; Nyanja"},{"id":"oc","name":"Occitan"},{"id":"oj","name":"Ojibwe, Ojibwa"},{"id":"om","name":"Oromo"},{"id":"or","name":"Oriya"},{"id":"os","name":"Ossetian, Ossetic"},{"id":"pa","name":"Panjabi, Punjabi"},{"id":"pdt","name":"Plautdietsch"},{"id":"pi","name":"Pali"},{"id":"pl","name":"Polski"},{"id":"ps","name":"Pashto, Pushto"},{"id":"pt","name":"Portugu\u00eas"},{"id":"qu","name":"Quechua"},{"id":"rm","name":"Romansh"},{"id":"rn","name":"Kirundi"},{"id":"ro","name":"Rom\u00e2n\u0103"},{"id":"ru","name":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},{"id":"rw","name":"Kinyarwanda"},{"id":"sa","name":"Sanskrit (\u0938\u0902\u0938\u094d\u0915\u0943\u0924)"},{"id":"sc","name":"Sardinian"},{"id":"sd","name":"Sindhi"},{"id":"se","name":"Northern Sami"},{"id":"sg","name":"Sango"},{"id":"si","name":"Sinhala, Sinhalese"},{"id":"sk","name":"Sloven\u010dina"},{"id":"sl","name":"Sloven\u0161\u010dina"},{"id":"sm","name":"Samoan"},{"id":"sn","name":"Shona"},{"id":"so","name":"Somali"},{"id":"sq","name":"Albanian"},{"id":"sr","name":"Serbian"},{"id":"ss","name":"Swati"},{"id":"st","name":"Southern Sotho"},{"id":"su","name":"Sundanese"},{"id":"sv","name":"Swedish"},{"id":"sw","name":"Swahili"},{"id":"ta","name":"Tamil"},{"id":"te","name":"Telugu"},{"id":"tg","name":"Tajik"},{"id":"th","name":"\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22"},{"id":"ti","name":"Tigrinya"},{"id":"tk","name":"Turkmen"},{"id":"tl","name":"Tagalog"},{"id":"tn","name":"Tswana"},{"id":"to","name":"Tonga (Tonga Islands)"},{"id":"tr","name":"T\u00fcrk\u00e7e"},{"id":"ts","name":"Tsonga"},{"id":"tt","name":"Tatar"},{"id":"tw","name":"Twi"},{"id":"ty","name":"Tahitian"},{"id":"ug","name":"Uighur, Uyghur"},{"id":"uk","name":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"},{"id":"ur","name":"\u0627\u0631\u062f\u0648"},{"id":"uz","name":"Uzbek"},{"id":"ve","name":"Venda"},{"id":"vi","name":"Vietnamese"},{"id":"vo","name":"Volap\u00fck"},{"id":"wa","name":"Walloon"},{"id":"wen","name":"Sorbisch"},{"id":"wo","name":"Wolof"},{"id":"xh","name":"Xhosa"},{"id":"yi","name":"Yiddish"},{"id":"yo","name":"Yoruba"},{"id":"za","name":"Zhuang, Chuang"},{"id":"zh","name":"Chinese"},{"id":"zu","name":"Zulu"}]
\ No newline at end of file
+{"aa":"Afar-\u00e1f","ab":"\u0430\u04a7\u0441\u0443\u0430 \u0431\u044b\u0437\u0448\u04d9\u0430","ae":"Avestan","af":"Afrikaans","ak":"Akan","am":"Amharic","an":"Aragonese","ar":"\u0627\u0644\u0639\u0631\u0628\u064a\u0629","as":"Assamese","av":"Avaric","ay":"Aymara","az":"Azerbaijani","ba":"Bashkir","be":"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f \u043c\u043e\u0432\u0430","bg":"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0435\u0437\u0438\u043a","bh":"Bihari","bi":"Bislama","bm":"Bambara","bn":"Bengali","bo":"\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51","br":"Breton","bs":"Bosnian","ca":"catal\u00e0","ce":"Chechen","ch":"Chamorro","co":"Corsican","cr":"Cree","cs":"\u010de\u0161tina","cu":"\u0441\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a \u0469\u0437\u044b\u043a\u044a","cv":"Chuvash","cy":"Welsh","da":"Danish","de":"Deutsch","dsb":"Dolnoserb\u0161\u0107ina","dv":"Divehi; Dhivehi; Maldivian;","dz":"Dzongkha","ee":"Ewe","egy":"Egyptian language","el":"\u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac","en":"English","eo":"Esperanto","es":"Spanish; Castilian","et":"Estonian","eu":"Basque","fa":"Persian","ff":"Fula; Fulah; Pulaar; Pular","fi":"Finnish","fj":"Fijian","fo":"Faroese","fr":"Fran\u00e7ais","fy":"Western Frisian","ga":"Irish","gd":"Scottish Gaelic; Gaelic","gl":"Galician","gn":"Guaran\u00ed","grc":"Ancient Greek","gu":"Gujarati","gv":"Manx","ha":"Hausa","he":"Hebrew (modern)","hi":"Hindi","ho":"Hiri Motu","hr":"Croatian","hsb":"Hornjoserb\u0161\u0107ina","ht":"Haitian; Haitian Creole","hu":"Magyar","hy":"Armenian","hz":"Herero","ia":"Interlingua","id":"Bahasa Indonesia","ie":"Interlingue","ig":"Igbo","ii":"Nuosu","ik":"Inupiaq","io":"Ido","is":"Icelandic","it":"Italian","iu":"Inuktitut","ja":"Japanese (ja)","jv":"Javanese (jv)","ka":"Georgian","kg":"Kongo","ki":"Kikuyu, Gikuyu","kj":"Kwanyama, Kuanyama","kk":"Kazakh","kl":"Kalaallisut, Greenlandic","km":"Khmer","kn":"Kannada","ko":"Korean","kr":"Kanuri","ks":"Kashmiri","ku":"Kurdish","kv":"Komi","kw":"Cornish","ky":"Kirghiz, Kyrgyz","la":"Latin","lb":"L\u00ebtzebuergesch","lg":"Luganda","li":"Limburgish, Limburgan, Limburger","ln":"Lingala","lo":"Lao","lt":"lietuvi\u0173 kalba","lu":"Luba-Katanga","lv":"Latvian","mg":"Malagasy","mh":"Marshallese","mi":"Maori","mk":"Macedonian","ml":"Malayalam","mn":"Mongolian","mr":"Marathi (Mara?hi)","ms":"Malay","mt":"Maltese","my":"Burmese","na":"Nauru","nb":"Bokm\u00e5l","nd":"North Ndebele","nds":"Niederdeutsch","ne":"Nepali","ng":"Ndonga","nl":"Nederlands","nn":"Nynorsk","no":"Norsk","nr":"South Ndebele","nv":"Navajo, Navaho","ny":"Chichewa; Chewa; Nyanja","oc":"Occitan","oj":"Ojibwe, Ojibwa","om":"Oromo","or":"Oriya","os":"Ossetian, Ossetic","pa":"Panjabi, Punjabi","pdt":"Plautdietsch","pi":"Pali","pl":"Polski","ps":"Pashto, Pushto","pt":"Portugu\u00eas","qu":"Quechua","rm":"Romansh","rn":"Kirundi","ro":"Rom\u00e2n\u0103","ru":"\u0420\u0443\u0441\u0441\u043a\u0438\u0439","rw":"Kinyarwanda","sa":"Sanskrit (\u0938\u0902\u0938\u094d\u0915\u0943\u0924)","sc":"Sardinian","sd":"Sindhi","se":"Northern Sami","sg":"Sango","si":"Sinhala, Sinhalese","sk":"Sloven\u010dina","sl":"Sloven\u0161\u010dina","sm":"Samoan","sn":"Shona","so":"Somali","sq":"Albanian","sr":"Serbian","ss":"Swati","st":"Southern Sotho","su":"Sundanese","sv":"Swedish","sw":"Swahili","ta":"Tamil","te":"Telugu","tg":"Tajik","th":"\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22","ti":"Tigrinya","tk":"Turkmen","tl":"Tagalog","tn":"Tswana","to":"Tonga (Tonga Islands)","tr":"T\u00fcrk\u00e7e","ts":"Tsonga","tt":"Tatar","tw":"Twi","ty":"Tahitian","ug":"Uighur, Uyghur","uk":"\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430","ur":"\u0627\u0631\u062f\u0648","uz":"Uzbek","ve":"Venda","vi":"Vietnamese","vo":"Volap\u00fck","wa":"Walloon","wen":"Sorbisch","wo":"Wolof","xh":"Xhosa","yi":"Yiddish","yo":"Yoruba","za":"Zhuang, Chuang","zh":"Chinese","zu":"Zulu"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLengths.de.json b/public/static/json/tls.MDConcLengths.de.json
index 4d53bfa..84ff1f6 100644
--- a/public/static/json/tls.MDConcLengths.de.json
+++ b/public/static/json/tls.MDConcLengths.de.json
@@ -1 +1 @@
-[{"id":"ft","name":"Fu\u00df"},{"id":"in","name":"Zoll"},{"id":"cm","name":"cm"},{"id":"dm","name":"dm"},{"id":"m","name":"m"},{"id":"mm","name":"mm"}]
\ No newline at end of file
+{"ft":"Fu\u00df","in":"Zoll","cm":"cm","dm":"dm","m":"m","mm":"mm"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLengths.en.json b/public/static/json/tls.MDConcLengths.en.json
index 9bcd848..5c5e10e 100644
--- a/public/static/json/tls.MDConcLengths.en.json
+++ b/public/static/json/tls.MDConcLengths.en.json
@@ -1 +1 @@
-[{"id":"cm","name":"cm"},{"id":"dm","name":"dm"},{"id":"ft","name":"ft"},{"id":"in","name":"inch"},{"id":"m","name":"m"},{"id":"mm","name":"mm"}]
\ No newline at end of file
+{"cm":"cm","dm":"dm","ft":"ft","in":"inch","m":"m","mm":"mm"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLengths.uk.json b/public/static/json/tls.MDConcLengths.uk.json
index e3cb39a..a1a8daa 100644
--- a/public/static/json/tls.MDConcLengths.uk.json
+++ b/public/static/json/tls.MDConcLengths.uk.json
@@ -1 +1 @@
-[{"id":"dm","name":"\u0434\u043c"},{"id":"in","name":"\u0434\u044e\u0439\u043c"},{"id":"m","name":"\u043c"},{"id":"mm","name":"\u043c\u043c"},{"id":"cm","name":"\u0441\u043c"},{"id":"ft","name":"\u0444\u0443\u0442"}]
\ No newline at end of file
+{"dm":"\u0434\u043c","in":"\u0434\u044e\u0439\u043c","m":"\u043c","mm":"\u043c\u043c","cm":"\u0441\u043c","ft":"\u0444\u0443\u0442"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLoanTypes.de.json b/public/static/json/tls.MDConcLoanTypes.de.json
index 7c9c253..3b60e76 100644
--- a/public/static/json/tls.MDConcLoanTypes.de.json
+++ b/public/static/json/tls.MDConcLoanTypes.de.json
@@ -1 +1 @@
-[{"id":"outgoing","name":"Ausgehend"},{"id":"incoming","name":"Eingehend"}]
\ No newline at end of file
+{"outgoing":"Ausgehend","incoming":"Eingehend"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLoanTypes.en.json b/public/static/json/tls.MDConcLoanTypes.en.json
index 6625c93..fd812c8 100644
--- a/public/static/json/tls.MDConcLoanTypes.en.json
+++ b/public/static/json/tls.MDConcLoanTypes.en.json
@@ -1 +1 @@
-[{"id":"incoming","name":"Incoming"},{"id":"outgoing","name":"Outgoing"}]
\ No newline at end of file
+{"incoming":"Incoming","outgoing":"Outgoing"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcLoanTypes.uk.json b/public/static/json/tls.MDConcLoanTypes.uk.json
index aa03441..0c16297 100644
--- a/public/static/json/tls.MDConcLoanTypes.uk.json
+++ b/public/static/json/tls.MDConcLoanTypes.uk.json
@@ -1 +1 @@
-[{"id":"outgoing","name":"\u0412\u0438\u0445\u0456\u0434\u043d\u0456"},{"id":"incoming","name":"\u0412\u0445\u0456\u0434\u043d\u0456"}]
\ No newline at end of file
+{"outgoing":"\u0412\u0438\u0445\u0456\u0434\u043d\u0456","incoming":"\u0412\u0445\u0456\u0434\u043d\u0456"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMarkingPosition.de.json b/public/static/json/tls.MDConcMarkingPosition.de.json
index 8c5c7ba..4bb2cb8 100644
--- a/public/static/json/tls.MDConcMarkingPosition.de.json
+++ b/public/static/json/tls.MDConcMarkingPosition.de.json
@@ -1 +1 @@
-[{"id":"inside","name":"Innen"},{"id":"left","name":"Links"},{"id":"center","name":"Mittig"},{"id":"top","name":"Oben"},{"id":"top_left","name":"Oben links"},{"id":"top_right","name":"Oben rechts"},{"id":"topside","name":"Oberseite"},{"id":"edge","name":"Rand"},{"id":"right","name":"Rechts"},{"id":"rear_side","name":"R\u00fcckseite"},{"id":"rear_left","name":"R\u00fcckseite: Links"},{"id":"rear_center","name":"R\u00fcckseite: Mittig"},{"id":"rear_top","name":"R\u00fcckseite: Oben"},{"id":"rear_top_left","name":"R\u00fcckseite: Oben links"},{"id":"rear_top_right","name":"R\u00fcckseite: Oben rechts"},{"id":"rear_right","name":"R\u00fcckseite: Rechts"},{"id":"rear_bottom","name":"R\u00fcckseite: Unten"},{"id":"rear_bottom_left","name":"R\u00fcckseite: Unten links"},{"id":"rear_bottom_right","name":"R\u00fcckseite: Unten rechts"},{"id":"bottom","name":"Unten"},{"id":"bottom_left","name":"Unten links"},{"id":"bottom_right","name":"Unten rechts"},{"id":"underside","name":"Unterseite"},{"id":"front_front","name":"Volle Frontseite"},{"id":"other","name":"Weiteres"}]
\ No newline at end of file
+{"inside":"Innen","left":"Links","center":"Mittig","top":"Oben","top_left":"Oben links","top_right":"Oben rechts","topside":"Oberseite","edge":"Rand","right":"Rechts","rear_side":"R\u00fcckseite","rear_left":"R\u00fcckseite: Links","rear_center":"R\u00fcckseite: Mittig","rear_top":"R\u00fcckseite: Oben","rear_top_left":"R\u00fcckseite: Oben links","rear_top_right":"R\u00fcckseite: Oben rechts","rear_right":"R\u00fcckseite: Rechts","rear_bottom":"R\u00fcckseite: Unten","rear_bottom_left":"R\u00fcckseite: Unten links","rear_bottom_right":"R\u00fcckseite: Unten rechts","bottom":"Unten","bottom_left":"Unten links","bottom_right":"Unten rechts","underside":"Unterseite","front_front":"Volle Frontseite","other":"Weiteres"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMarkingPosition.en.json b/public/static/json/tls.MDConcMarkingPosition.en.json
index 02a58d7..0fc5b10 100644
--- a/public/static/json/tls.MDConcMarkingPosition.en.json
+++ b/public/static/json/tls.MDConcMarkingPosition.en.json
@@ -1 +1 @@
-[{"id":"bottom","name":"Bottom"},{"id":"bottom_left","name":"Bottom left"},{"id":"bottom_right","name":"Bottom right"},{"id":"center","name":"Center"},{"id":"edge","name":"Edge"},{"id":"front_front","name":"Full front"},{"id":"inside","name":"Inside"},{"id":"left","name":"Left"},{"id":"other","name":"Other"},{"id":"rear_side","name":"Rear side"},{"id":"rear_bottom","name":"Rear side: bottom"},{"id":"rear_bottom_left","name":"Rear side: bottom left"},{"id":"rear_bottom_right","name":"Rear side: bottom right"},{"id":"rear_center","name":"Rear side: center"},{"id":"rear_left","name":"Rear side: left"},{"id":"rear_right","name":"Rear side: right"},{"id":"rear_top","name":"Rear side: top"},{"id":"rear_top_left","name":"Rear side: top left"},{"id":"rear_top_right","name":"Rear side: top right"},{"id":"right","name":"Right"},{"id":"top","name":"Top"},{"id":"top_left","name":"Top left"},{"id":"top_right","name":"Top right"},{"id":"topside","name":"Topside"},{"id":"underside","name":"Underside"}]
\ No newline at end of file
+{"bottom":"Bottom","bottom_left":"Bottom left","bottom_right":"Bottom right","center":"Center","edge":"Edge","front_front":"Full front","inside":"Inside","left":"Left","other":"Other","rear_side":"Rear side","rear_bottom":"Rear side: bottom","rear_bottom_left":"Rear side: bottom left","rear_bottom_right":"Rear side: bottom right","rear_center":"Rear side: center","rear_left":"Rear side: left","rear_right":"Rear side: right","rear_top":"Rear side: top","rear_top_left":"Rear side: top left","rear_top_right":"Rear side: top right","right":"Right","top":"Top","top_left":"Top left","top_right":"Top right","topside":"Topside","underside":"Underside"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMarkingPosition.uk.json b/public/static/json/tls.MDConcMarkingPosition.uk.json
index 5c17b16..7c4bc8d 100644
--- a/public/static/json/tls.MDConcMarkingPosition.uk.json
+++ b/public/static/json/tls.MDConcMarkingPosition.uk.json
@@ -1 +1 @@
-[{"id":"other","name":"\u0406\u043d\u0448\u0435 "},{"id":"top","name":"\u0412\u0435\u0440\u0445\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430"},{"id":"topside","name":"\u0412\u0435\u0440\u0445\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430"},{"id":"bottom_left","name":"\u0412\u043d\u0438\u0437\u0443 \u043b\u0456\u0432\u043e\u0440\u0443\u0447"},{"id":"bottom_right","name":"\u0412\u043d\u0438\u0437\u0443 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447\t"},{"id":"inside","name":"\u0412\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0456"},{"id":"rear_top_left","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u0433\u043e\u0440\u0456 \u043b\u0456\u0432\u043e\u0440\u0443\u0447"},{"id":"rear_top_right","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u0433\u043e\u0440\u0456 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447"},{"id":"rear_bottom_left","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u043d\u0438\u0437\u0443 \u043b\u0456\u0432\u043e\u0440\u0443\u0447"},{"id":"rear_bottom_right","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u043d\u0438\u0437\u0443 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447"},{"id":"rear_top","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0437\u0432\u0435\u0440\u0445\u0443"},{"id":"rear_bottom","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0437\u043d\u0438\u0437\u0443"},{"id":"rear_left","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u043b\u0456\u0432\u043e\u0440\u0443\u0447"},{"id":"rear_center","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443"},{"id":"rear_right","name":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447"},{"id":"underside","name":"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0438\u0439 \u0431\u0456\u043a"},{"id":"rear_side","name":"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0456\u0439 \u0431\u0456\u043a"},{"id":"edge","name":"\u041a\u0440\u0430\u0439"},{"id":"left","name":"\u041b\u0456\u0432\u043e\u0440\u0443\u0447"},{"id":"top_left","name":"\u041b\u0456\u0432\u043e\u0440\u0443\u0447 \u0432\u0433\u043e\u0440\u0456"},{"id":"bottom","name":"\u041d\u0438\u0436\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430"},{"id":"front_front","name":"\u041f\u043e\u0432\u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430"},{"id":"right","name":"\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447"},{"id":"top_right","name":"\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447 \u0432\u0433\u043e\u0440\u0456"},{"id":"center","name":"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430 \u0447\u0430\u0441\u0442\u0438\u043d\u0430"}]
\ No newline at end of file
+{"other":"\u0406\u043d\u0448\u0435 ","top":"\u0412\u0435\u0440\u0445\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430","topside":"\u0412\u0435\u0440\u0445\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430","bottom_left":"\u0412\u043d\u0438\u0437\u0443 \u043b\u0456\u0432\u043e\u0440\u0443\u0447","bottom_right":"\u0412\u043d\u0438\u0437\u0443 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447\t","inside":"\u0412\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0456","rear_top_left":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u0433\u043e\u0440\u0456 \u043b\u0456\u0432\u043e\u0440\u0443\u0447","rear_top_right":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u0433\u043e\u0440\u0456 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447","rear_bottom_left":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u043d\u0438\u0437\u0443 \u043b\u0456\u0432\u043e\u0440\u0443\u0447","rear_bottom_right":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0432\u043d\u0438\u0437\u0443 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447","rear_top":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0437\u0432\u0435\u0440\u0445\u0443","rear_bottom":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u0437\u043d\u0438\u0437\u0443","rear_left":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u043b\u0456\u0432\u043e\u0440\u0443\u0447","rear_center":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","rear_right":"\u0417\u0430\u0434\u043d\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430: \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447","underside":"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0438\u0439 \u0431\u0456\u043a","rear_side":"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0456\u0439 \u0431\u0456\u043a","edge":"\u041a\u0440\u0430\u0439","left":"\u041b\u0456\u0432\u043e\u0440\u0443\u0447","top_left":"\u041b\u0456\u0432\u043e\u0440\u0443\u0447 \u0432\u0433\u043e\u0440\u0456","bottom":"\u041d\u0438\u0436\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430","front_front":"\u041f\u043e\u0432\u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430","right":"\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447","top_right":"\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447 \u0432\u0433\u043e\u0440\u0456","center":"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430 \u0447\u0430\u0441\u0442\u0438\u043d\u0430"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMarkingType.de.json b/public/static/json/tls.MDConcMarkingType.de.json
index 8693e24..3abab19 100644
--- a/public/static/json/tls.MDConcMarkingType.de.json
+++ b/public/static/json/tls.MDConcMarkingType.de.json
@@ -1 +1 @@
-[{"id":"riveted","name":"Angenietet"},{"id":"burnt_in","name":"Eingebrannt"},{"id":"overprint","name":"Gedruckt"},{"id":"glued","name":"Geklebt"},{"id":"scratch","name":"Gekratzt"},{"id":"painted","name":"Gemalt"},{"id":"nailed","name":"Genagelt"},{"id":"sewn","name":"Gen\u00e4ht"},{"id":"embossing","name":"Gepr\u00e4gt"},{"id":"hallmarked","name":"Gepunzt"},{"id":"scarified","name":"Geritzt"},{"id":"screwed","name":"Geschraubt"},{"id":"punched","name":"Gestanzt"},{"id":"stamp","name":"Gestempelt"},{"id":"embroidered","name":"Gestickt"},{"id":"drawn","name":"Gezeichnet"},{"id":"engraving","name":"Gravur"},{"id":"cast","name":"Guss"},{"id":"handwritten","name":"Handschriftlich"},{"id":"signature","name":"Signatur"},{"id":"watermark","name":"Wasserzeichen"}]
\ No newline at end of file
+{"riveted":"Angenietet","burnt_in":"Eingebrannt","overprint":"Gedruckt","glued":"Geklebt","scratch":"Gekratzt","painted":"Gemalt","nailed":"Genagelt","sewn":"Gen\u00e4ht","embossing":"Gepr\u00e4gt","hallmarked":"Gepunzt","scarified":"Geritzt","screwed":"Geschraubt","punched":"Gestanzt","stamp":"Gestempelt","embroidered":"Gestickt","drawn":"Gezeichnet","engraving":"Gravur","cast":"Guss","handwritten":"Handschriftlich","signature":"Signatur","watermark":"Wasserzeichen"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMarkingType.en.json b/public/static/json/tls.MDConcMarkingType.en.json
index 1b65fae..827e9d3 100644
--- a/public/static/json/tls.MDConcMarkingType.en.json
+++ b/public/static/json/tls.MDConcMarkingType.en.json
@@ -1 +1 @@
-[{"id":"burnt_in","name":"Burnt in"},{"id":"cast","name":"Cast"},{"id":"drawn","name":"Drawn"},{"id":"embossing","name":"Embossing"},{"id":"embroidered","name":"Embroidered"},{"id":"engraving","name":"Engraving"},{"id":"glued","name":"Glued"},{"id":"hallmarked","name":"Hallmarked"},{"id":"handwritten","name":"Handwritten"},{"id":"nailed","name":"Nailed"},{"id":"overprint","name":"Overprint"},{"id":"painted","name":"Painted"},{"id":"punched","name":"Punched"},{"id":"riveted","name":"Riveted"},{"id":"scarified","name":"Scarified"},{"id":"scratch","name":"Scratching"},{"id":"screwed","name":"Screwed"},{"id":"sewn","name":"Sewn"},{"id":"signature","name":"Signature"},{"id":"stamp","name":"Stamped"},{"id":"watermark","name":"Watermark"}]
\ No newline at end of file
+{"burnt_in":"Burnt in","cast":"Cast","drawn":"Drawn","embossing":"Embossing","embroidered":"Embroidered","engraving":"Engraving","glued":"Glued","hallmarked":"Hallmarked","handwritten":"Handwritten","nailed":"Nailed","overprint":"Overprint","painted":"Painted","punched":"Punched","riveted":"Riveted","scarified":"Scarified","scratch":"Scratching","screwed":"Screwed","sewn":"Sewn","signature":"Signature","stamp":"Stamped","watermark":"Watermark"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMarkingType.uk.json b/public/static/json/tls.MDConcMarkingType.uk.json
index 17f8d7e..1d8caf5 100644
--- a/public/static/json/tls.MDConcMarkingType.uk.json
+++ b/public/static/json/tls.MDConcMarkingType.uk.json
@@ -1 +1 @@
-[{"id":"burnt_in","name":"\u0412\u0438\u043f\u0430\u043b\u0435\u043d\u043d\u044f"},{"id":"embroidered","name":"\u0412\u0438\u0448\u0438\u0432\u043a\u0430"},{"id":"watermark","name":"\u0412\u043e\u0434\u044f\u043d\u0438\u0439 \u0437\u043d\u0430\u043a"},{"id":"hallmarked","name":"\u0412\u0456\u0434\u0437\u043d\u0430\u0447\u0435\u043d\u044f \u043a\u043b\u0435\u0439\u043c\u043e\u043c"},{"id":"engraving","name":"\u0413\u0440\u0430\u0432\u0456\u0440\u0443\u0432\u0430\u043d\u043d\u044f"},{"id":"riveted","name":"\u0417\u0430\u043a\u043b\u0435\u043f\u0443\u0432\u0430\u043d\u043d\u044f"},{"id":"cast","name":"\u041b\u0438\u0442\u0442\u044f"},{"id":"overprint","name":"\u041d\u0430\u0434\u0440\u0443\u043a"},{"id":"drawn","name":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e"},{"id":"painted","name":"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0444\u0430\u0440\u0431\u0430\u043c\u0438"},{"id":"scratch","name":"\u041f\u043e\u0434\u0440\u044f\u043f\u0438\u043d\u0438"},{"id":"nailed","name":"\u041f\u0440\u0438\u0431\u0438\u0442\u0442\u044f"},{"id":"glued","name":"\u041f\u0440\u0438\u043a\u043b\u0435\u0454\u043d\u043d\u044f"},{"id":"screwed","name":"\u041f\u0440\u0438\u043a\u0440\u0443\u0447\u0435\u043d\u043e"},{"id":"punched","name":"\u041f\u0440\u043e\u0431\u0438\u0442\u043e"},{"id":"signature","name":"\u041f\u0456\u0434\u043f\u0438\u0441"},{"id":"handwritten","name":"\u0420\u0443\u043a\u043e\u043f\u0438\u0441"},{"id":"scarified","name":"\u0421\u043a\u0430\u0440\u0438\u0444\u0456\u043a\u0443\u0432\u0430\u043d\u043d\u044f"},{"id":"embossing","name":"\u0422\u0438\u0441\u043d\u0435\u043d\u043d\u044f"},{"id":"sewn","name":"\u0428\u0438\u0442\u0442\u044f"},{"id":"stamp","name":"\u0428\u0442\u0430\u043c\u043f"}]
\ No newline at end of file
+{"burnt_in":"\u0412\u0438\u043f\u0430\u043b\u0435\u043d\u043d\u044f","embroidered":"\u0412\u0438\u0448\u0438\u0432\u043a\u0430","watermark":"\u0412\u043e\u0434\u044f\u043d\u0438\u0439 \u0437\u043d\u0430\u043a","hallmarked":"\u0412\u0456\u0434\u0437\u043d\u0430\u0447\u0435\u043d\u044f \u043a\u043b\u0435\u0439\u043c\u043e\u043c","engraving":"\u0413\u0440\u0430\u0432\u0456\u0440\u0443\u0432\u0430\u043d\u043d\u044f","riveted":"\u0417\u0430\u043a\u043b\u0435\u043f\u0443\u0432\u0430\u043d\u043d\u044f","cast":"\u041b\u0438\u0442\u0442\u044f","overprint":"\u041d\u0430\u0434\u0440\u0443\u043a","drawn":"\u041d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e","painted":"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0444\u0430\u0440\u0431\u0430\u043c\u0438","scratch":"\u041f\u043e\u0434\u0440\u044f\u043f\u0438\u043d\u0438","nailed":"\u041f\u0440\u0438\u0431\u0438\u0442\u0442\u044f","glued":"\u041f\u0440\u0438\u043a\u043b\u0435\u0454\u043d\u043d\u044f","screwed":"\u041f\u0440\u0438\u043a\u0440\u0443\u0447\u0435\u043d\u043e","punched":"\u041f\u0440\u043e\u0431\u0438\u0442\u043e","signature":"\u041f\u0456\u0434\u043f\u0438\u0441","handwritten":"\u0420\u0443\u043a\u043e\u043f\u0438\u0441","scarified":"\u0421\u043a\u0430\u0440\u0438\u0444\u0456\u043a\u0443\u0432\u0430\u043d\u043d\u044f","embossing":"\u0422\u0438\u0441\u043d\u0435\u043d\u043d\u044f","sewn":"\u0428\u0438\u0442\u0442\u044f","stamp":"\u0428\u0442\u0430\u043c\u043f"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMeasurementTypes.de.json b/public/static/json/tls.MDConcMeasurementTypes.de.json
index 01e5676..0cb3985 100644
--- a/public/static/json/tls.MDConcMeasurementTypes.de.json
+++ b/public/static/json/tls.MDConcMeasurementTypes.de.json
@@ -1 +1 @@
-[{"id":"number_of_copies","name":"Anzahl \/ St\u00fcckzahl"},{"id":"number_of_parts","name":"Anzahl von Teilen"},{"id":"width_image_size","name":"Bildma\u00df (Breite)"},{"id":"height_image_size","name":"Bildma\u00df (H\u00f6he)"},{"id":"length_image_size","name":"Bildma\u00df (L\u00e4nge)"},{"id":"width_sheet_size","name":"Blattma\u00df (Breite)"},{"id":"height_sheet_size","name":"Blattma\u00df (H\u00f6he)"},{"id":"length_sheet_size","name":"Blattma\u00df (L\u00e4nge)"},{"id":"width","name":"Breite"},{"id":"width_socle","name":"Breite (Sockel)"},{"id":"diameter","name":"Durchmesser"},{"id":"weight","name":"Gewicht"},{"id":"height","name":"H\u00f6he"},{"id":"height_socle","name":"H\u00f6he (Sockel)"},{"id":"length","name":"L\u00e4nge"},{"id":"length_socle","name":"L\u00e4nge (Sockel)"},{"id":"width_frame","name":"Rahmen (Breite)"},{"id":"height_frame","name":"Rahmen (H\u00f6he)"},{"id":"length_frame","name":"Rahmen (L\u00e4nge)"},{"id":"die_axis","name":"Stempelstellung"},{"id":"wall","name":"Wandungsst\u00e4rke"}]
\ No newline at end of file
+{"number_of_copies":"Anzahl \/ St\u00fcckzahl","number_of_parts":"Anzahl von Teilen","width_image_size":"Bildma\u00df (Breite)","height_image_size":"Bildma\u00df (H\u00f6he)","length_image_size":"Bildma\u00df (L\u00e4nge)","width_sheet_size":"Blattma\u00df (Breite)","height_sheet_size":"Blattma\u00df (H\u00f6he)","length_sheet_size":"Blattma\u00df (L\u00e4nge)","width":"Breite","width_socle":"Breite (Sockel)","diameter":"Durchmesser","weight":"Gewicht","height":"H\u00f6he","height_socle":"H\u00f6he (Sockel)","length":"L\u00e4nge","length_socle":"L\u00e4nge (Sockel)","width_frame":"Rahmen (Breite)","height_frame":"Rahmen (H\u00f6he)","length_frame":"Rahmen (L\u00e4nge)","die_axis":"Stempelstellung","wall":"Wandungsst\u00e4rke"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMeasurementTypes.en.json b/public/static/json/tls.MDConcMeasurementTypes.en.json
index 110b5a3..f1f9596 100644
--- a/public/static/json/tls.MDConcMeasurementTypes.en.json
+++ b/public/static/json/tls.MDConcMeasurementTypes.en.json
@@ -1 +1 @@
-[{"id":"diameter","name":"Diameter"},{"id":"die_axis","name":"Die-axis"},{"id":"height_frame","name":"Frame (height)"},{"id":"length_frame","name":"Frame (length)"},{"id":"width_frame","name":"Frame (width)"},{"id":"height","name":"Height"},{"id":"height_socle","name":"Height of socle"},{"id":"height_image_size","name":"Image size (height)"},{"id":"length_image_size","name":"Image size (length)"},{"id":"width_image_size","name":"Image size (width)"},{"id":"length","name":"Length"},{"id":"length_socle","name":"Length of socle"},{"id":"number_of_copies","name":"Number of copies"},{"id":"number_of_parts","name":"Number of parts"},{"id":"height_sheet_size","name":"Sheet size (height)"},{"id":"length_sheet_size","name":"Sheet size (length)"},{"id":"width_sheet_size","name":"Sheet size (width)"},{"id":"wall","name":"Wall"},{"id":"weight","name":"Weight"},{"id":"width","name":"Width"},{"id":"width_socle","name":"Width of socle"}]
\ No newline at end of file
+{"diameter":"Diameter","die_axis":"Die-axis","height_frame":"Frame (height)","length_frame":"Frame (length)","width_frame":"Frame (width)","height":"Height","height_socle":"Height of socle","height_image_size":"Image size (height)","length_image_size":"Image size (length)","width_image_size":"Image size (width)","length":"Length","length_socle":"Length of socle","number_of_copies":"Number of copies","number_of_parts":"Number of parts","height_sheet_size":"Sheet size (height)","length_sheet_size":"Sheet size (length)","width_sheet_size":"Sheet size (width)","wall":"Wall","weight":"Weight","width":"Width","width_socle":"Width of socle"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcMeasurementTypes.uk.json b/public/static/json/tls.MDConcMeasurementTypes.uk.json
index fb50488..333fa2e 100644
--- a/public/static/json/tls.MDConcMeasurementTypes.uk.json
+++ b/public/static/json/tls.MDConcMeasurementTypes.uk.json
@@ -1 +1 @@
-[{"id":"height_frame","name":"Frame (height)"},{"id":"length_frame","name":"Frame (length)"},{"id":"width_frame","name":"Frame (width)"},{"id":"height_image_size","name":"Image size (height)"},{"id":"length_image_size","name":"Image size (length)"},{"id":"width_image_size","name":"Image size (width)"},{"id":"height_sheet_size","name":"Sheet size (height)"},{"id":"length_sheet_size","name":"Sheet size (length)"},{"id":"width_sheet_size","name":"Sheet size (width)"},{"id":"weight","name":"\u0412\u0430\u0433\u0430"},{"id":"height","name":"\u0412\u0438\u0441\u043e\u0442\u0430"},{"id":"height_socle","name":"\u0412\u0438\u0441\u043e\u0442\u0430 \u0446\u043e\u043a\u043e\u043b\u044f"},{"id":"die_axis","name":"\u0412\u0456\u0441\u044c \u043c\u0430\u0442\u0440\u0438\u0446\u0456"},{"id":"length","name":"\u0414\u043e\u0432\u0436\u0438\u043d\u0430"},{"id":"length_socle","name":"\u0414\u043e\u0432\u0436\u0438\u043d\u0430 \u0446\u043e\u043a\u043e\u043b\u044f"},{"id":"diameter","name":"\u0414\u0456\u0430\u043c\u0435\u0442\u0440"},{"id":"number_of_copies","name":"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0435\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0456\u0432"},{"id":"number_of_parts","name":"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0447\u0430\u0441\u0442\u0438\u043d"},{"id":"wall","name":"\u0421\u0442\u0456\u043d\u0430"},{"id":"width","name":"\u0428\u0438\u0440\u0438\u043d\u0430"},{"id":"width_socle","name":"\u0428\u0438\u0440\u0438\u043d\u0430 \u0446\u043e\u043a\u043e\u043b\u044f"}]
\ No newline at end of file
+{"height_frame":"Frame (height)","length_frame":"Frame (length)","width_frame":"Frame (width)","height_image_size":"Image size (height)","length_image_size":"Image size (length)","width_image_size":"Image size (width)","height_sheet_size":"Sheet size (height)","length_sheet_size":"Sheet size (length)","width_sheet_size":"Sheet size (width)","weight":"\u0412\u0430\u0433\u0430","height":"\u0412\u0438\u0441\u043e\u0442\u0430","height_socle":"\u0412\u0438\u0441\u043e\u0442\u0430 \u0446\u043e\u043a\u043e\u043b\u044f","die_axis":"\u0412\u0456\u0441\u044c \u043c\u0430\u0442\u0440\u0438\u0446\u0456","length":"\u0414\u043e\u0432\u0436\u0438\u043d\u0430","length_socle":"\u0414\u043e\u0432\u0436\u0438\u043d\u0430 \u0446\u043e\u043a\u043e\u043b\u044f","diameter":"\u0414\u0456\u0430\u043c\u0435\u0442\u0440","number_of_copies":"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0435\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0456\u0432","number_of_parts":"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0447\u0430\u0441\u0442\u0438\u043d","wall":"\u0421\u0442\u0456\u043d\u0430","width":"\u0428\u0438\u0440\u0438\u043d\u0430","width_socle":"\u0428\u0438\u0440\u0438\u043d\u0430 \u0446\u043e\u043a\u043e\u043b\u044f"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcObjectForms.de.json b/public/static/json/tls.MDConcObjectForms.de.json
index 050efee..a9ed6ee 100644
--- a/public/static/json/tls.MDConcObjectForms.de.json
+++ b/public/static/json/tls.MDConcObjectForms.de.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"cone","name":"Kegel"},{"id":"sphere","name":"Kugel"},{"id":"cuboid","name":"Quader"},{"id":"cube","name":"W\u00fcrfel"},{"id":"cylinder","name":"Zylinder"}]
\ No newline at end of file
+{"":"","cone":"Kegel","sphere":"Kugel","cuboid":"Quader","cube":"W\u00fcrfel","cylinder":"Zylinder"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcObjectForms.en.json b/public/static/json/tls.MDConcObjectForms.en.json
index 9fb9777..14b3237 100644
--- a/public/static/json/tls.MDConcObjectForms.en.json
+++ b/public/static/json/tls.MDConcObjectForms.en.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"cone","name":"Cone"},{"id":"cube","name":"Cube"},{"id":"cuboid","name":"Cuboid"},{"id":"cylinder","name":"Cylinder"},{"id":"sphere","name":"Sphere"}]
\ No newline at end of file
+{"":"","cone":"Cone","cube":"Cube","cuboid":"Cuboid","cylinder":"Cylinder","sphere":"Sphere"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcObjectForms.uk.json b/public/static/json/tls.MDConcObjectForms.uk.json
index b2baa04..0653248 100644
--- a/public/static/json/tls.MDConcObjectForms.uk.json
+++ b/public/static/json/tls.MDConcObjectForms.uk.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"cone","name":"\u041a\u043e\u043d\u0443\u0441"},{"id":"cube","name":"\u041a\u0443\u0431"},{"id":"cuboid","name":"\u041a\u0443\u0431\u043e\u043f\u043e\u0434\u0456\u0431\u043d\u0438\u0439"},{"id":"sphere","name":"\u0421\u0444\u0435\u0440\u0430"},{"id":"cylinder","name":"\u0426\u0438\u043b\u0456\u043d\u0434\u0440"}]
\ No newline at end of file
+{"":"","cone":"\u041a\u043e\u043d\u0443\u0441","cube":"\u041a\u0443\u0431","cuboid":"\u041a\u0443\u0431\u043e\u043f\u043e\u0434\u0456\u0431\u043d\u0438\u0439","sphere":"\u0421\u0444\u0435\u0440\u0430","cylinder":"\u0426\u0438\u043b\u0456\u043d\u0434\u0440"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcObjectTagRelTypes.de.json b/public/static/json/tls.MDConcObjectTagRelTypes.de.json
index 3fb49bc..6655cb1 100644
--- a/public/static/json/tls.MDConcObjectTagRelTypes.de.json
+++ b/public/static/json/tls.MDConcObjectTagRelTypes.de.json
@@ -1 +1 @@
-[{"id":"display_subject","name":"Abgebildetes"},{"id":"material","name":"Material"},{"id":"object_type","name":"Objektart"},{"id":"tag","name":"Schlagwort"},{"id":"technique","name":"Technik"}]
\ No newline at end of file
+{"display_subject":"Abgebildetes","material":"Material","object_type":"Objektart","tag":"Schlagwort","technique":"Technik"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcObjectTagRelTypes.en.json b/public/static/json/tls.MDConcObjectTagRelTypes.en.json
index e2534ee..77e514e 100644
--- a/public/static/json/tls.MDConcObjectTagRelTypes.en.json
+++ b/public/static/json/tls.MDConcObjectTagRelTypes.en.json
@@ -1 +1 @@
-[{"id":"display_subject","name":"Display subject"},{"id":"material","name":"Material"},{"id":"object_type","name":"Object type"},{"id":"tag","name":"Tag"},{"id":"technique","name":"Technique"}]
\ No newline at end of file
+{"display_subject":"Display subject","material":"Material","object_type":"Object type","tag":"Tag","technique":"Technique"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcObjectTagRelTypes.uk.json b/public/static/json/tls.MDConcObjectTagRelTypes.uk.json
index bce39fa..48fa75f 100644
--- a/public/static/json/tls.MDConcObjectTagRelTypes.uk.json
+++ b/public/static/json/tls.MDConcObjectTagRelTypes.uk.json
@@ -1 +1 @@
-[{"id":"material","name":"\u041c\u0430\u0442\u0435\u0440\u0456\u0430\u043b"},{"id":"display_subject","name":"\u041f\u043e\u043a\u0430\u0437 \u043e\u0431'\u0454\u043a\u0442\u0430"},{"id":"tag","name":"\u0422\u0435\u0433"},{"id":"technique","name":"\u0422\u0435\u0445\u043d\u0456\u043a\u0430"},{"id":"object_type","name":"\u0422\u0438\u043f \u043e\u0431'\u0454\u043a\u0442\u0430"}]
\ No newline at end of file
+{"material":"\u041c\u0430\u0442\u0435\u0440\u0456\u0430\u043b","display_subject":"\u041f\u043e\u043a\u0430\u0437 \u043e\u0431'\u0454\u043a\u0442\u0430","tag":"\u0422\u0435\u0433","technique":"\u0422\u0435\u0445\u043d\u0456\u043a\u0430","object_type":"\u0422\u0438\u043f \u043e\u0431'\u0454\u043a\u0442\u0430"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcOwnershipStatus.de.json b/public/static/json/tls.MDConcOwnershipStatus.de.json
index 6d6ac54..8e064cd 100644
--- a/public/static/json/tls.MDConcOwnershipStatus.de.json
+++ b/public/static/json/tls.MDConcOwnershipStatus.de.json
@@ -1 +1 @@
-[{"id":"permanent_loan","name":"Dauerleihe"},{"id":"deaccessed","name":"Deakzessiert"},{"id":"owned","name":"Eigentum des Museums"},{"id":"third_party_property","name":"Fremdeigentum"},{"id":"borrowed","name":"Geliehen"},{"id":"to_check","name":"Zur Pr\u00fcfung im Museum"},{"id":"to_check_for_gift","name":"Zur Pr\u00fcfung im Museum (Schenkung)"}]
\ No newline at end of file
+{"permanent_loan":"Dauerleihe","deaccessed":"Deakzessiert","owned":"Eigentum des Museums","third_party_property":"Fremdeigentum","borrowed":"Geliehen","to_check":"Zur Pr\u00fcfung im Museum","to_check_for_gift":"Zur Pr\u00fcfung im Museum (Schenkung)"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcOwnershipStatus.en.json b/public/static/json/tls.MDConcOwnershipStatus.en.json
index e0994f8..58cc21f 100644
--- a/public/static/json/tls.MDConcOwnershipStatus.en.json
+++ b/public/static/json/tls.MDConcOwnershipStatus.en.json
@@ -1 +1 @@
-[{"id":"borrowed","name":"Borrowed"},{"id":"deaccessed","name":"Deaccessed"},{"id":"owned","name":"Owned"},{"id":"permanent_loan","name":"Permanent loan"},{"id":"third_party_property","name":"Third party property"},{"id":"to_check","name":"To check"},{"id":"to_check_for_gift","name":"To check (for gift)"}]
\ No newline at end of file
+{"borrowed":"Borrowed","deaccessed":"Deaccessed","owned":"Owned","permanent_loan":"Permanent loan","third_party_property":"Third party property","to_check":"To check","to_check_for_gift":"To check (for gift)"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcOwnershipStatus.uk.json b/public/static/json/tls.MDConcOwnershipStatus.uk.json
index 2c5d756..48cd964 100644
--- a/public/static/json/tls.MDConcOwnershipStatus.uk.json
+++ b/public/static/json/tls.MDConcOwnershipStatus.uk.json
@@ -1 +1 @@
-[{"id":"third_party_property","name":"\u0412\u043b\u0430\u0441\u043d\u0456\u0441\u0442\u044c \u0442\u0440\u0435\u0442\u0456\u0445 \u043e\u0441\u0456\u0431"},{"id":"deaccessed","name":"\u0412\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f"},{"id":"to_check","name":"\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438"},{"id":"to_check_for_gift","name":"\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438 (\u043d\u0430 \u043f\u043e\u0434\u0430\u0440\u0443\u043d\u043e\u043a)"},{"id":"borrowed","name":"\u0417\u0430\u043f\u043e\u0437\u0438\u0447\u0435\u043d\u043d\u044f"},{"id":"permanent_loan","name":"\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0430 \u043f\u043e\u0437\u0438\u043a\u0430"},{"id":"owned","name":"\u0423 \u0432\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u0456"}]
\ No newline at end of file
+{"third_party_property":"\u0412\u043b\u0430\u0441\u043d\u0456\u0441\u0442\u044c \u0442\u0440\u0435\u0442\u0456\u0445 \u043e\u0441\u0456\u0431","deaccessed":"\u0412\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f","to_check":"\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438","to_check_for_gift":"\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438 (\u043d\u0430 \u043f\u043e\u0434\u0430\u0440\u0443\u043d\u043e\u043a)","borrowed":"\u0417\u0430\u043f\u043e\u0437\u0438\u0447\u0435\u043d\u043d\u044f","permanent_loan":"\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0430 \u043f\u043e\u0437\u0438\u043a\u0430","owned":"\u0423 \u0432\u043b\u0430\u0441\u043d\u043e\u0441\u0442\u0456"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcPlace.de.json b/public/static/json/tls.MDConcPlace.de.json
index c58d670..44a22be 100644
--- a/public/static/json/tls.MDConcPlace.de.json
+++ b/public/static/json/tls.MDConcPlace.de.json
@@ -1 +1 @@
-[{"id":22,"name":"(allgemein)"},{"id":29,"name":"Dekor entworfen in"},{"id":12,"name":"Druckplatte erstellt in"},{"id":30,"name":"Form entworfen in"},{"id":4,"name":"Vorlagen erstellt in"},{"id":13,"name":"abgeschickt in"},{"id":20,"name":"abgeschrieben in"},{"id":14,"name":"ausgefertigt in"},{"id":25,"name":"beauftragt in"},{"id":37,"name":"bemalt in"},{"id":45,"name":"besch\u00e4digt in"},{"id":42,"name":"besessen in"},{"id":11,"name":"empfangen in"},{"id":52,"name":"entstanden in"},{"id":35,"name":"erdacht in"},{"id":16,"name":"erstbeschrieben in"},{"id":10,"name":"fotografiert in"},{"id":26,"name":"gedruckt in"},{"id":50,"name":"geerbt in"},{"id":2,"name":"gefunden in"},{"id":41,"name":"gekauft in"},{"id":21,"name":"gelebt in"},{"id":9,"name":"gemalt in"},{"id":6,"name":"genutzt in"},{"id":8,"name":"gesammelt in"},{"id":49,"name":"gespendet \/ geschenkt in"},{"id":27,"name":"gesprochen in"},{"id":28,"name":"gesungen in"},{"id":19,"name":"gezeichnet in"},{"id":51,"name":"hat zum Hauptgegenstand"},{"id":48,"name":"herausgegeben in"},{"id":1,"name":"hergestellt in"},{"id":38,"name":"illustriert in"},{"id":31,"name":"modelliert in"},{"id":44,"name":"restauriert in"},{"id":32,"name":"signiert in"},{"id":15,"name":"unterzeichnet in"},{"id":7,"name":"verfasst in"},{"id":34,"name":"vergraben in"},{"id":43,"name":"verkauft in"},{"id":47,"name":"verschollen in"},{"id":40,"name":"versteigert in"},{"id":3,"name":"ver\u00f6ffentlicht in"},{"id":36,"name":"wurde abgebildet in"},{"id":33,"name":"wurde erw\u00e4hnt von"},{"id":46,"name":"zerst\u00f6rt in"},{"id":39,"name":"zusammengef\u00fcgt in"}]
\ No newline at end of file
+{"22":"(allgemein)","29":"Dekor entworfen in","12":"Druckplatte erstellt in","30":"Form entworfen in","4":"Vorlagen erstellt in","13":"abgeschickt in","20":"abgeschrieben in","14":"ausgefertigt in","25":"beauftragt in","37":"bemalt in","45":"besch\u00e4digt in","42":"besessen in","11":"empfangen in","52":"entstanden in","35":"erdacht in","16":"erstbeschrieben in","10":"fotografiert in","26":"gedruckt in","50":"geerbt in","2":"gefunden in","41":"gekauft in","21":"gelebt in","9":"gemalt in","6":"genutzt in","8":"gesammelt in","49":"gespendet \/ geschenkt in","27":"gesprochen in","28":"gesungen in","19":"gezeichnet in","51":"hat zum Hauptgegenstand","48":"herausgegeben in","1":"hergestellt in","38":"illustriert in","31":"modelliert in","44":"restauriert in","32":"signiert in","15":"unterzeichnet in","7":"verfasst in","34":"vergraben in","43":"verkauft in","47":"verschollen in","40":"versteigert in","3":"ver\u00f6ffentlicht in","36":"wurde abgebildet in","33":"wurde erw\u00e4hnt von","46":"zerst\u00f6rt in","39":"zusammengef\u00fcgt in"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcPlace.en.json b/public/static/json/tls.MDConcPlace.en.json
index 4ad3441..735dde4 100644
--- a/public/static/json/tls.MDConcPlace.en.json
+++ b/public/static/json/tls.MDConcPlace.en.json
@@ -1 +1 @@
-[{"id":29,"name":"Decor designed in"},{"id":30,"name":"Form designed in"},{"id":12,"name":"Printing plate produced in"},{"id":16,"name":"Type described in"},{"id":22,"name":"[general]"},{"id":39,"name":"assembled in"},{"id":40,"name":"auctioned in"},{"id":32,"name":"autographed in"},{"id":41,"name":"bought in"},{"id":34,"name":"buried in"},{"id":8,"name":"collected in"},{"id":25,"name":"commissioned in"},{"id":35,"name":"conceived in"},{"id":1,"name":"created in"},{"id":45,"name":"damaged in"},{"id":46,"name":"destroyed in"},{"id":49,"name":"donated \/ given as present in"},{"id":19,"name":"drawn in"},{"id":48,"name":"edited in"},{"id":52,"name":"emerged at"},{"id":2,"name":"found in"},{"id":51,"name":"had subject"},{"id":21,"name":"has lived in"},{"id":38,"name":"illustrated in"},{"id":50,"name":"inherited in"},{"id":14,"name":"issued in"},{"id":47,"name":"lost in"},{"id":33,"name":"mentioned in"},{"id":31,"name":"modelled in"},{"id":42,"name":"owned in"},{"id":9,"name":"painted in"},{"id":37,"name":"painted on in"},{"id":10,"name":"photographed in"},{"id":26,"name":"printed in"},{"id":3,"name":"published in"},{"id":11,"name":"received in"},{"id":27,"name":"recorded in"},{"id":44,"name":"restored in"},{"id":13,"name":"sent in"},{"id":15,"name":"signed in"},{"id":43,"name":"sold in"},{"id":28,"name":"sung in"},{"id":4,"name":"templates created in"},{"id":20,"name":"was copied (by hand) in"},{"id":36,"name":"was depicted in"},{"id":6,"name":"was used in"},{"id":7,"name":"written in"}]
\ No newline at end of file
+{"29":"Decor designed in","30":"Form designed in","12":"Printing plate produced in","16":"Type described in","22":"[general]","39":"assembled in","40":"auctioned in","32":"autographed in","41":"bought in","34":"buried in","8":"collected in","25":"commissioned in","35":"conceived in","1":"created in","45":"damaged in","46":"destroyed in","49":"donated \/ given as present in","19":"drawn in","48":"edited in","52":"emerged at","2":"found in","51":"had subject","21":"has lived in","38":"illustrated in","50":"inherited in","14":"issued in","47":"lost in","33":"mentioned in","31":"modelled in","42":"owned in","9":"painted in","37":"painted on in","10":"photographed in","26":"printed in","3":"published in","11":"received in","27":"recorded in","44":"restored in","13":"sent in","15":"signed in","43":"sold in","28":"sung in","4":"templates created in","20":"was copied (by hand) in","36":"was depicted in","6":"was used in","7":"written in"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcPlace.uk.json b/public/static/json/tls.MDConcPlace.uk.json
index 4f95cd5..eaae4a9 100644
--- a/public/static/json/tls.MDConcPlace.uk.json
+++ b/public/static/json/tls.MDConcPlace.uk.json
@@ -1 +1 @@
-[{"id":43,"name":" \u043f\u0440\u043e\u0434\u0430\u043d\u043e \u0443"},{"id":38,"name":"(\u043f\u0440\u043e)\u0456\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":22,"name":"[\u0437\u0430\u0433\u0430\u043b\u044c\u043d\u0435]"},{"id":6,"name":"\u0431\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0441\u0438\u0442\u0430\u043d\u043e \u0443"},{"id":36,"name":"\u0431\u0443\u043b\u043e \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u0443"},{"id":20,"name":"\u0431\u0443\u043b\u043e \u0441\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e (\u0432\u0440\u0443\u0447\u043d\u0443) \u0443"},{"id":25,"name":"\u0432\u0432\u0435\u0434\u0435\u043d\u043e \u0432 \u0435\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0456\u044e \u0437"},{"id":28,"name":"\u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043e \u0443"},{"id":14,"name":"\u0432\u0438\u043f\u0443\u0449\u0435\u043d\u043e \u0443"},{"id":40,"name":"\u0432\u0438\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e \u043d\u0430 \u0430\u0443\u043a\u0446\u0456\u043e\u043d \u0443"},{"id":13,"name":"\u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0443"},{"id":48,"name":"\u0432\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e"},{"id":44,"name":"\u0432\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":29,"name":"\u0434\u0435\u043a\u043e\u0440 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e \u0443"},{"id":21,"name":"\u0436\u0438\u0432 \u0443"},{"id":52,"name":"\u0437'\u044f\u0432\u0438\u0432\u0441\u044f \u0443"},{"id":33,"name":"\u0437\u0430\u0433\u0430\u0434\u043d\u043e \u0443"},{"id":35,"name":"\u0437\u0430\u0433\u0430\u0434\u043d\u043e \u0443"},{"id":47,"name":"\u0437\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e \u0443"},{"id":27,"name":"\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443"},{"id":31,"name":"\u0437\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u0443 (\u0434\u0435)"},{"id":2,"name":"\u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0443"},{"id":46,"name":"\u0437\u043d\u0438\u0449\u0435\u043d\u043e \u0443"},{"id":8,"name":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e \u0443"},{"id":39,"name":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e \u0443"},{"id":41,"name":"\u043a\u0443\u043f\u043b\u0435\u043d\u043e \u0443"},{"id":26,"name":"\u043d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":42,"name":"\u043d\u0430\u043b\u0435\u0436\u0430\u043b\u043e (\u043c\u0456\u0441\u0446\u0435)"},{"id":37,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":7,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443"},{"id":9,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443"},{"id":19,"name":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e\/\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":3,"name":"\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":11,"name":"\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e \u0443"},{"id":12,"name":"\u043f\u0435\u0447\u0430\u0442\u043d\u0443 \u0444\u043e\u0440\u043c\u0443 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e \u0443"},{"id":49,"name":"\u043f\u043e\u0434\u0430\u0440\u043e\u0432\u0430\u043d\u043e \/ \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u044f\u043a \u043f\u043e\u0434\u0430\u0440\u0443\u043d\u043e\u043a \u0443"},{"id":34,"name":"\u043f\u043e\u0445\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":45,"name":"\u043f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e \u0443"},{"id":32,"name":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444) (\u0434\u0435)"},{"id":15,"name":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e \u0443"},{"id":1,"name":"\u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0443"},{"id":51,"name":"\u0441\u0443\u0431'\u0454\u043a\u0442\u043e\u043c\/\u0442\u0435\u043c\u043e\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0431\u0443\u043b\u043e (\u043c\u0456\u0441\u0446\u0435)"},{"id":10,"name":"\u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":16,"name":"\u0442\u0438\u043f \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0443"},{"id":50,"name":"\u0443\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e \u0443"},{"id":30,"name":"\u0444\u043e\u0440\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u0443"},{"id":4,"name":"\u0448\u0430\u0431\u043b\u043e\u043d\u0438, \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0456 \u0443"}]
\ No newline at end of file
+{"43":" \u043f\u0440\u043e\u0434\u0430\u043d\u043e \u0443","38":"(\u043f\u0440\u043e)\u0456\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e \u0443","22":"[\u0437\u0430\u0433\u0430\u043b\u044c\u043d\u0435]","6":"\u0431\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0441\u0438\u0442\u0430\u043d\u043e \u0443","36":"\u0431\u0443\u043b\u043e \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u0443","20":"\u0431\u0443\u043b\u043e \u0441\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e (\u0432\u0440\u0443\u0447\u043d\u0443) \u0443","25":"\u0432\u0432\u0435\u0434\u0435\u043d\u043e \u0432 \u0435\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0456\u044e \u0437","28":"\u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043e \u0443","14":"\u0432\u0438\u043f\u0443\u0449\u0435\u043d\u043e \u0443","40":"\u0432\u0438\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e \u043d\u0430 \u0430\u0443\u043a\u0446\u0456\u043e\u043d \u0443","13":"\u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0443","48":"\u0432\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e","44":"\u0432\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e \u0443","29":"\u0434\u0435\u043a\u043e\u0440 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e \u0443","21":"\u0436\u0438\u0432 \u0443","52":"\u0437'\u044f\u0432\u0438\u0432\u0441\u044f \u0443","33":"\u0437\u0430\u0433\u0430\u0434\u043d\u043e \u0443","35":"\u0437\u0430\u0433\u0430\u0434\u043d\u043e \u0443","47":"\u0437\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e \u0443","27":"\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443","31":"\u0437\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u0443 (\u0434\u0435)","2":"\u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0443","46":"\u0437\u043d\u0438\u0449\u0435\u043d\u043e \u0443","8":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e \u0443","39":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e \u0443","41":"\u043a\u0443\u043f\u043b\u0435\u043d\u043e \u0443","26":"\u043d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e \u0443","42":"\u043d\u0430\u043b\u0435\u0436\u0430\u043b\u043e (\u043c\u0456\u0441\u0446\u0435)","37":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u0443","7":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443","9":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443","19":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e\/\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u0443","3":"\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e \u0443","11":"\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e \u0443","12":"\u043f\u0435\u0447\u0430\u0442\u043d\u0443 \u0444\u043e\u0440\u043c\u0443 \u0438\u0437\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043e \u0443","49":"\u043f\u043e\u0434\u0430\u0440\u043e\u0432\u0430\u043d\u043e \/ \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e \u044f\u043a \u043f\u043e\u0434\u0430\u0440\u0443\u043d\u043e\u043a \u0443","34":"\u043f\u043e\u0445\u043e\u0432\u0430\u043d\u043e \u0443","45":"\u043f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e \u0443","32":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444) (\u0434\u0435)","15":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e \u0443","1":"\u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0443","51":"\u0441\u0443\u0431'\u0454\u043a\u0442\u043e\u043c\/\u0442\u0435\u043c\u043e\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0431\u0443\u043b\u043e (\u043c\u0456\u0441\u0446\u0435)","10":"\u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u043e \u0443","16":"\u0442\u0438\u043f \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0443","50":"\u0443\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e \u0443","30":"\u0444\u043e\u0440\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e \u0443","4":"\u0448\u0430\u0431\u043b\u043e\u043d\u0438, \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u0456 \u0443"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcSex.de.json b/public/static/json/tls.MDConcSex.de.json
index 1a04a9f..6078baa 100644
--- a/public/static/json/tls.MDConcSex.de.json
+++ b/public/static/json/tls.MDConcSex.de.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"male","name":"M\u00e4nnlich"},{"id":"female","name":"Weiblich"},{"id":"other","name":"Weiteres"}]
\ No newline at end of file
+{"":"","male":"M\u00e4nnlich","female":"Weiblich","other":"Weiteres"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcSex.en.json b/public/static/json/tls.MDConcSex.en.json
index 06c19be..f034687 100644
--- a/public/static/json/tls.MDConcSex.en.json
+++ b/public/static/json/tls.MDConcSex.en.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"female","name":"Female"},{"id":"male","name":"Male"},{"id":"other","name":"Other"}]
\ No newline at end of file
+{"":"","female":"Female","male":"Male","other":"Other"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcSex.uk.json b/public/static/json/tls.MDConcSex.uk.json
index f287d23..d188104 100644
--- a/public/static/json/tls.MDConcSex.uk.json
+++ b/public/static/json/tls.MDConcSex.uk.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"other","name":"\u0406\u043d\u0448\u0438\u0439"},{"id":"female","name":"\u0416\u0456\u043d\u043e\u0447\u0438\u0439 "},{"id":"male","name":"\u0427\u043e\u043b\u043e\u0432\u0456\u0447\u0438\u0439"}]
\ No newline at end of file
+{"":"","other":"\u0406\u043d\u0448\u0438\u0439","female":"\u0416\u0456\u043d\u043e\u0447\u0438\u0439 ","male":"\u0427\u043e\u043b\u043e\u0432\u0456\u0447\u0438\u0439"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcSourceTypes.de.json b/public/static/json/tls.MDConcSourceTypes.de.json
index 508fea0..7a3512c 100644
--- a/public/static/json/tls.MDConcSourceTypes.de.json
+++ b/public/static/json/tls.MDConcSourceTypes.de.json
@@ -1 +1 @@
-[{"id":"article","name":"Artikel"},{"id":"inbook","name":"Artikel in Sammelband"},{"id":"book","name":"Buch"},{"id":"phdthesis","name":"Doktorarbeit"},{"id":"electronical","name":"Elektronische Resource"},{"id":"patent","name":"Patentschrift"},{"id":"unpublished","name":"Unver\u00f6ffentlicht"},{"id":"misc","name":"Weiteres"}]
\ No newline at end of file
+{"article":"Artikel","inbook":"Artikel in Sammelband","book":"Buch","phdthesis":"Doktorarbeit","electronical":"Elektronische Resource","patent":"Patentschrift","unpublished":"Unver\u00f6ffentlicht","misc":"Weiteres"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcSourceTypes.en.json b/public/static/json/tls.MDConcSourceTypes.en.json
index e6420e0..a970b2d 100644
--- a/public/static/json/tls.MDConcSourceTypes.en.json
+++ b/public/static/json/tls.MDConcSourceTypes.en.json
@@ -1 +1 @@
-[{"id":"article","name":"Article"},{"id":"inbook","name":"Article in collected volume"},{"id":"book","name":"Book"},{"id":"electronical","name":"Electronic resource"},{"id":"misc","name":"Miscelaneous"},{"id":"patent","name":"Patent"},{"id":"phdthesis","name":"PhD thesis"},{"id":"unpublished","name":"Unpublished"}]
\ No newline at end of file
+{"article":"Article","inbook":"Article in collected volume","book":"Book","electronical":"Electronic resource","misc":"Miscelaneous","patent":"Patent","phdthesis":"PhD thesis","unpublished":"Unpublished"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcSourceTypes.uk.json b/public/static/json/tls.MDConcSourceTypes.uk.json
index 714f45c..7d7226f 100644
--- a/public/static/json/tls.MDConcSourceTypes.uk.json
+++ b/public/static/json/tls.MDConcSourceTypes.uk.json
@@ -1 +1 @@
-[{"id":"misc","name":"\u0406\u043d\u0448\u0435"},{"id":"electronical","name":"\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441"},{"id":"phdthesis","name":"\u041a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0441\u044c\u043a\u0430 \u0434\u0438\u0441\u0435\u0440\u0442\u0430\u0446\u0456\u044f"},{"id":"book","name":"\u041a\u043d\u0438\u0433\u0430"},{"id":"unpublished","name":"\u041d\u0435\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u0435"},{"id":"patent","name":"\u041f\u0430\u0442\u0435\u043d\u0442"},{"id":"article","name":"\u0421\u0442\u0430\u0442\u0442\u044f"},{"id":"inbook","name":"\u0421\u0442\u0430\u0442\u0442\u044f \u0443 \u0437\u0431\u0456\u0440\u043d\u0438\u043a\u0443"}]
\ No newline at end of file
+{"misc":"\u0406\u043d\u0448\u0435","electronical":"\u0415\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0438\u0439 \u0440\u0435\u0441\u0443\u0440\u0441","phdthesis":"\u041a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0441\u044c\u043a\u0430 \u0434\u0438\u0441\u0435\u0440\u0442\u0430\u0446\u0456\u044f","book":"\u041a\u043d\u0438\u0433\u0430","unpublished":"\u041d\u0435\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u0435","patent":"\u041f\u0430\u0442\u0435\u043d\u0442","article":"\u0421\u0442\u0430\u0442\u0442\u044f","inbook":"\u0421\u0442\u0430\u0442\u0442\u044f \u0443 \u0437\u0431\u0456\u0440\u043d\u0438\u043a\u0443"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcTime.de.json b/public/static/json/tls.MDConcTime.de.json
index 269cd32..7ab3a6c 100644
--- a/public/static/json/tls.MDConcTime.de.json
+++ b/public/static/json/tls.MDConcTime.de.json
@@ -1 +1 @@
-[{"id":24,"name":"(allgemein)"},{"id":29,"name":"Dekor entworfen"},{"id":12,"name":"Druckplatte erstellt"},{"id":30,"name":"Form entworfen"},{"id":4,"name":"Vorlagen erstellt"},{"id":13,"name":"abgeschickt"},{"id":20,"name":"abgeschrieben"},{"id":14,"name":"ausgefertigt"},{"id":25,"name":"beauftragt"},{"id":37,"name":"bemalt"},{"id":45,"name":"besch\u00e4digt"},{"id":42,"name":"besessen"},{"id":11,"name":"empfangen"},{"id":52,"name":"entstanden am"},{"id":35,"name":"erdacht"},{"id":16,"name":"erstbeschrieben"},{"id":10,"name":"fotografiert"},{"id":26,"name":"gedruckt"},{"id":50,"name":"geerbt"},{"id":2,"name":"gefunden"},{"id":41,"name":"gekauft"},{"id":21,"name":"gelebt"},{"id":9,"name":"gemalt"},{"id":6,"name":"genutzt"},{"id":8,"name":"gesammelt"},{"id":49,"name":"gespendet \/ geschenkt"},{"id":27,"name":"gesprochen"},{"id":28,"name":"gesungen"},{"id":19,"name":"gezeichnet"},{"id":51,"name":"hat zum Hauptgegenstand"},{"id":48,"name":"herausgegeben"},{"id":1,"name":"hergestellt"},{"id":38,"name":"illustriert"},{"id":31,"name":"modelliert"},{"id":44,"name":"restauriert"},{"id":32,"name":"signiert"},{"id":15,"name":"unterzeichnet"},{"id":7,"name":"verfasst"},{"id":34,"name":"vergraben"},{"id":43,"name":"verkauft"},{"id":47,"name":"verschollen"},{"id":40,"name":"versteigert"},{"id":3,"name":"ver\u00f6ffentlicht"},{"id":33,"name":"wurde erw\u00e4hnt"},{"id":46,"name":"zerst\u00f6rt"},{"id":39,"name":"zusammengef\u00fcgt"}]
\ No newline at end of file
+{"24":"(allgemein)","29":"Dekor entworfen","12":"Druckplatte erstellt","30":"Form entworfen","4":"Vorlagen erstellt","13":"abgeschickt","20":"abgeschrieben","14":"ausgefertigt","25":"beauftragt","37":"bemalt","45":"besch\u00e4digt","42":"besessen","11":"empfangen","52":"entstanden am","35":"erdacht","16":"erstbeschrieben","10":"fotografiert","26":"gedruckt","50":"geerbt","2":"gefunden","41":"gekauft","21":"gelebt","9":"gemalt","6":"genutzt","8":"gesammelt","49":"gespendet \/ geschenkt","27":"gesprochen","28":"gesungen","19":"gezeichnet","51":"hat zum Hauptgegenstand","48":"herausgegeben","1":"hergestellt","38":"illustriert","31":"modelliert","44":"restauriert","32":"signiert","15":"unterzeichnet","7":"verfasst","34":"vergraben","43":"verkauft","47":"verschollen","40":"versteigert","3":"ver\u00f6ffentlicht","33":"wurde erw\u00e4hnt","46":"zerst\u00f6rt","39":"zusammengef\u00fcgt"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcTime.en.json b/public/static/json/tls.MDConcTime.en.json
index 2430281..0469a2f 100644
--- a/public/static/json/tls.MDConcTime.en.json
+++ b/public/static/json/tls.MDConcTime.en.json
@@ -1 +1 @@
-[{"id":29,"name":"Decor designed"},{"id":30,"name":"Form designed"},{"id":12,"name":"Printing plate produced"},{"id":16,"name":"Type described"},{"id":24,"name":"[general]"},{"id":39,"name":"assembled at"},{"id":40,"name":"auctioned at"},{"id":32,"name":"autographed"},{"id":41,"name":"bought at"},{"id":34,"name":"buried"},{"id":8,"name":"collected"},{"id":25,"name":"commissioned"},{"id":35,"name":"conceived"},{"id":20,"name":"copied (by hand)"},{"id":1,"name":"created"},{"id":45,"name":"damaged at"},{"id":46,"name":"destroyed at"},{"id":49,"name":"donated at"},{"id":19,"name":"drawn"},{"id":48,"name":"edited at"},{"id":52,"name":"emerged at"},{"id":2,"name":"found"},{"id":51,"name":"had subject"},{"id":21,"name":"has lived"},{"id":38,"name":"illustrated"},{"id":50,"name":"inherited at"},{"id":14,"name":"issued"},{"id":47,"name":"lost at"},{"id":31,"name":"modelled"},{"id":42,"name":"owned at"},{"id":9,"name":"painted"},{"id":37,"name":"painted on"},{"id":10,"name":"photographed"},{"id":26,"name":"printed"},{"id":3,"name":"published"},{"id":11,"name":"received"},{"id":27,"name":"recorded"},{"id":44,"name":"restored at"},{"id":13,"name":"sent"},{"id":15,"name":"signed"},{"id":43,"name":"sold at"},{"id":28,"name":"sung"},{"id":4,"name":"template created"},{"id":33,"name":"was mentioned"},{"id":6,"name":"was used"},{"id":7,"name":"written"}]
\ No newline at end of file
+{"29":"Decor designed","30":"Form designed","12":"Printing plate produced","16":"Type described","24":"[general]","39":"assembled at","40":"auctioned at","32":"autographed","41":"bought at","34":"buried","8":"collected","25":"commissioned","35":"conceived","20":"copied (by hand)","1":"created","45":"damaged at","46":"destroyed at","49":"donated at","19":"drawn","48":"edited at","52":"emerged at","2":"found","51":"had subject","21":"has lived","38":"illustrated","50":"inherited at","14":"issued","47":"lost at","31":"modelled","42":"owned at","9":"painted","37":"painted on","10":"photographed","26":"printed","3":"published","11":"received","27":"recorded","44":"restored at","13":"sent","15":"signed","43":"sold at","28":"sung","4":"template created","33":"was mentioned","6":"was used","7":"written"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcTime.uk.json b/public/static/json/tls.MDConcTime.uk.json
index 95d04e0..68bdd66 100644
--- a/public/static/json/tls.MDConcTime.uk.json
+++ b/public/static/json/tls.MDConcTime.uk.json
@@ -1 +1 @@
-[{"id":41,"name":" \u043a\u0443\u043f\u043b\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":38,"name":"(\u043f\u0440\u043e)\u0456\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e"},{"id":24,"name":"[\u0437\u0430\u0433\u0430\u043b\u044c\u043d\u0435]"},{"id":16,"name":"\u0422\u0438\u043f \u043e\u043f\u0438\u0441\u0430\u043d\u043e"},{"id":6,"name":"\u0431\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043e"},{"id":33,"name":"\u0431\u0443\u043b\u043e \u0437\u0433\u0430\u0434\u0430\u043d\u043e"},{"id":14,"name":"\u0432\u0438\u0434\u0430\u043d\u043e"},{"id":28,"name":"\u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043e"},{"id":47,"name":"\u0432\u0442\u0440\u0430\u0447\u0435\u043d\u043e\/\u0437\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":13,"name":"\u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e"},{"id":48,"name":"\u0432\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":44,"name":"\u0432\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":29,"name":"\u0434\u0435\u043a\u043e\u0440 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e"},{"id":12,"name":"\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u0430 \u0444\u043e\u0440\u043c\u0430 \u0432\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0430"},{"id":21,"name":"\u0436\u0438\u0432"},{"id":52,"name":"\u0437'\u044f\u0432\u0438\u043b\u043e\u0441\u044f (\u043a\u043e\u043b\u0438)"},{"id":35,"name":"\u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e"},{"id":25,"name":"\u0437\u0430\u043c\u043e\u0432\u043b\u0435\u043d\u043e"},{"id":27,"name":"\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e"},{"id":31,"name":"\u0437\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e"},{"id":2,"name":"\u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e"},{"id":46,"name":"\u0437\u043d\u0438\u0449\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":8,"name":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e"},{"id":39,"name":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":51,"name":"\u043c\u0430\u043b\u043e \u0442\u0435\u043c\u043e\u044e (\u043a\u043e\u043b\u0438)"},{"id":26,"name":"\u043d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e"},{"id":42,"name":"\u043d\u0430\u043b\u0435\u0436\u0430\u043b\u043e (\u043a\u043e\u043b\u0438)"},{"id":19,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e"},{"id":37,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u043d\u0430"},{"id":9,"name":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e"},{"id":7,"name":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e"},{"id":3,"name":"\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e"},{"id":11,"name":"\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e"},{"id":49,"name":"\u043f\u043e\u0436\u0435\u0440\u0442\u0432\u0443\u0432\u0430\u043d\u043e \u043d\u0430"},{"id":34,"name":"\u043f\u043e\u0445\u043e\u0432\u0430\u043d\u043e"},{"id":45,"name":"\u043f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":43,"name":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":40,"name":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e \u0437 \u0430\u0443\u043a\u0446\u0456\u043e\u043d\u0443 (\u043a\u043e\u043b\u0438)"},{"id":15,"name":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e"},{"id":32,"name":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444)"},{"id":20,"name":"\u0441\u043f\u0438\u0441\u0430\u043d\u043e (\u0440\u0443\u043a\u043e\u044e)"},{"id":1,"name":"\u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e"},{"id":10,"name":"\u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u043e"},{"id":50,"name":"\u0443\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)"},{"id":30,"name":"\u0444\u043e\u0440\u043c\u0443 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e"},{"id":4,"name":"\u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e"}]
\ No newline at end of file
+{"41":" \u043a\u0443\u043f\u043b\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)","38":"(\u043f\u0440\u043e)\u0456\u043b\u044e\u0441\u0442\u0440\u043e\u0432\u0430\u043d\u043e","24":"[\u0437\u0430\u0433\u0430\u043b\u044c\u043d\u0435]","16":"\u0422\u0438\u043f \u043e\u043f\u0438\u0441\u0430\u043d\u043e","6":"\u0431\u0443\u043b\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043e","33":"\u0431\u0443\u043b\u043e \u0437\u0433\u0430\u0434\u0430\u043d\u043e","14":"\u0432\u0438\u0434\u0430\u043d\u043e","28":"\u0432\u0438\u043a\u043e\u043d\u0430\u043d\u043e","47":"\u0432\u0442\u0440\u0430\u0447\u0435\u043d\u043e\/\u0437\u0430\u0433\u0443\u0431\u043b\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)","13":"\u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e","48":"\u0432\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u043e\u0432\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)","44":"\u0432\u0456\u0434\u0440\u0435\u0441\u0442\u0430\u0432\u0440\u043e\u0432\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)","29":"\u0434\u0435\u043a\u043e\u0440 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e","12":"\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u0430 \u0444\u043e\u0440\u043c\u0430 \u0432\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u0430","21":"\u0436\u0438\u0432","52":"\u0437'\u044f\u0432\u0438\u043b\u043e\u0441\u044f (\u043a\u043e\u043b\u0438)","35":"\u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e","25":"\u0437\u0430\u043c\u043e\u0432\u043b\u0435\u043d\u043e","27":"\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e","31":"\u0437\u043c\u043e\u0434\u0435\u043b\u044c\u043e\u0432\u0430\u043d\u043e","2":"\u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e","46":"\u0437\u043d\u0438\u0449\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)","8":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e","39":"\u0437\u0456\u0431\u0440\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)","51":"\u043c\u0430\u043b\u043e \u0442\u0435\u043c\u043e\u044e (\u043a\u043e\u043b\u0438)","26":"\u043d\u0430\u0434\u0440\u0443\u043a\u043e\u0432\u0430\u043d\u043e","42":"\u043d\u0430\u043b\u0435\u0436\u0430\u043b\u043e (\u043a\u043e\u043b\u0438)","19":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e","37":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e \u043d\u0430","9":"\u043d\u0430\u043c\u0430\u043b\u044c\u043e\u0432\u0430\u043d\u043e\/\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e","7":"\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e","3":"\u043e\u043f\u0443\u0431\u043b\u0456\u043a\u043e\u0432\u0430\u043d\u043e","11":"\u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043e","49":"\u043f\u043e\u0436\u0435\u0440\u0442\u0432\u0443\u0432\u0430\u043d\u043e \u043d\u0430","34":"\u043f\u043e\u0445\u043e\u0432\u0430\u043d\u043e","45":"\u043f\u043e\u0448\u043a\u043e\u0434\u0436\u0435\u043d\u043e (\u043a\u043e\u043b\u0438)","43":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)","40":"\u043f\u0440\u043e\u0434\u0430\u043d\u043e \u0437 \u0430\u0443\u043a\u0446\u0456\u043e\u043d\u0443 (\u043a\u043e\u043b\u0438)","15":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e","32":"\u043f\u0456\u0434\u043f\u0438\u0441\u0430\u043d\u043e (\u0430\u0432\u0442\u043e\u0433\u0440\u0430\u0444)","20":"\u0441\u043f\u0438\u0441\u0430\u043d\u043e (\u0440\u0443\u043a\u043e\u044e)","1":"\u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e","10":"\u0441\u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u043e\u0432\u0430\u043d\u043e","50":"\u0443\u0441\u043f\u0430\u0434\u043a\u043e\u0432\u0430\u043d\u043e (\u043a\u043e\u043b\u0438)","30":"\u0444\u043e\u0440\u043c\u0443 \u0440\u043e\u0437\u0440\u043e\u0431\u043b\u0435\u043d\u043e","4":"\u0448\u0430\u0431\u043b\u043e\u043d \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcTitleTypes.de.json b/public/static/json/tls.MDConcTitleTypes.de.json
index 5280075..773329e 100644
--- a/public/static/json/tls.MDConcTitleTypes.de.json
+++ b/public/static/json/tls.MDConcTitleTypes.de.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"Everyday speech","name":"Alltagssprache"},{"id":"Dialect","name":"Dialekt"},{"id":"Professional jargon","name":"Fachsprache"},{"id":"Sociolect","name":"Soziolekt"},{"id":"Colloquial speech","name":"Umgangssprache"},{"id":"Science","name":"Wissenschaft"}]
\ No newline at end of file
+{"":"","Everyday speech":"Alltagssprache","Dialect":"Dialekt","Professional jargon":"Fachsprache","Sociolect":"Soziolekt","Colloquial speech":"Umgangssprache","Science":"Wissenschaft"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcTitleTypes.en.json b/public/static/json/tls.MDConcTitleTypes.en.json
index 99d0da9..92669a4 100644
--- a/public/static/json/tls.MDConcTitleTypes.en.json
+++ b/public/static/json/tls.MDConcTitleTypes.en.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"Colloquial speech","name":"Colloquial speech"},{"id":"Dialect","name":"Dialect"},{"id":"Everyday speech","name":"Everyday speech"},{"id":"Professional jargon","name":"Professional jargon"},{"id":"Science","name":"Science"},{"id":"Sociolect","name":"Sociolect"}]
\ No newline at end of file
+{"":"","Colloquial speech":"Colloquial speech","Dialect":"Dialect","Everyday speech":"Everyday speech","Professional jargon":"Professional jargon","Science":"Science","Sociolect":"Sociolect"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcTitleTypes.uk.json b/public/static/json/tls.MDConcTitleTypes.uk.json
index 94ff60b..77855d0 100644
--- a/public/static/json/tls.MDConcTitleTypes.uk.json
+++ b/public/static/json/tls.MDConcTitleTypes.uk.json
@@ -1 +1 @@
-[{"id":"","name":""},{"id":"Dialect","name":"\u0414\u0456\u0430\u043b\u0435\u043a\u0442"},{"id":"Science","name":"\u041d\u0430\u0443\u043a\u043e\u0432\u0456 \u0434\u043e\u0441\u043b\u0456\u0434\u0436\u0435\u043d\u043d\u044f"},{"id":"Everyday speech","name":"\u041f\u043e\u0432\u0441\u044f\u043a\u0434\u0435\u043d\u043d\u0435 \u043c\u043e\u0432\u043b\u0435\u043d\u043d\u044f"},{"id":"Professional jargon","name":"\u041f\u0440\u043e\u0444\u0435\u0441\u0456\u0439\u043d\u0438\u0439 \u0436\u0430\u0440\u0433\u043e\u043d"},{"id":"Colloquial speech","name":"\u0420\u043e\u0437\u043c\u043e\u0432\u043d\u0435 \u043c\u043e\u0432\u043b\u0435\u043d\u043d\u044f"},{"id":"Sociolect","name":"\u0421\u043e\u0446\u0456\u043e\u043b\u0435\u043a\u0442"}]
\ No newline at end of file
+{"":"","Dialect":"\u0414\u0456\u0430\u043b\u0435\u043a\u0442","Science":"\u041d\u0430\u0443\u043a\u043e\u0432\u0456 \u0434\u043e\u0441\u043b\u0456\u0434\u0436\u0435\u043d\u043d\u044f","Everyday speech":"\u041f\u043e\u0432\u0441\u044f\u043a\u0434\u0435\u043d\u043d\u0435 \u043c\u043e\u0432\u043b\u0435\u043d\u043d\u044f","Professional jargon":"\u041f\u0440\u043e\u0444\u0435\u0441\u0456\u0439\u043d\u0438\u0439 \u0436\u0430\u0440\u0433\u043e\u043d","Colloquial speech":"\u0420\u043e\u0437\u043c\u043e\u0432\u043d\u0435 \u043c\u043e\u0432\u043b\u0435\u043d\u043d\u044f","Sociolect":"\u0421\u043e\u0446\u0456\u043e\u043b\u0435\u043a\u0442"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcWeights.de.json b/public/static/json/tls.MDConcWeights.de.json
index d9185ab..62b6ed8 100644
--- a/public/static/json/tls.MDConcWeights.de.json
+++ b/public/static/json/tls.MDConcWeights.de.json
@@ -1 +1 @@
-[{"id":"g","name":"g"},{"id":"kg","name":"kg"},{"id":"t","name":"t"}]
\ No newline at end of file
+{"g":"g","kg":"kg","t":"t"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcWeights.en.json b/public/static/json/tls.MDConcWeights.en.json
index d9185ab..62b6ed8 100644
--- a/public/static/json/tls.MDConcWeights.en.json
+++ b/public/static/json/tls.MDConcWeights.en.json
@@ -1 +1 @@
-[{"id":"g","name":"g"},{"id":"kg","name":"kg"},{"id":"t","name":"t"}]
\ No newline at end of file
+{"g":"g","kg":"kg","t":"t"}
\ No newline at end of file
diff --git a/public/static/json/tls.MDConcWeights.uk.json b/public/static/json/tls.MDConcWeights.uk.json
index 0ef857e..0c46d54 100644
--- a/public/static/json/tls.MDConcWeights.uk.json
+++ b/public/static/json/tls.MDConcWeights.uk.json
@@ -1 +1 @@
-[{"id":"g","name":"\u0433\u0440"},{"id":"kg","name":"\u043a\u0433"},{"id":"t","name":"\u0442\u043e\u043d\u043d"}]
\ No newline at end of file
+{"g":"\u0433\u0440","kg":"\u043a\u0433","t":"\u0442\u043e\u043d\u043d"}
\ No newline at end of file
diff --git a/public/static/json/tls.de.json b/public/static/json/tls.de.json
index b80c067..2469b73 100644
--- a/public/static/json/tls.de.json
+++ b/public/static/json/tls.de.json
@@ -1 +1 @@
-{"concordance_checker":"Concordance checker"}
\ No newline at end of file
+{"concordance_checker":"Concordance checker","intro":"Beim Importieren von Daten zu museum-digital entstehen oft Fehler, die daraus resultieren, dass Inhalte in Feldern, die bei museum-digital kontrollierte Listen sind (siehe unten), bisher noch keinem der gegebenen erlaubten Werte zugeordnet sind. Mit diesem Tool k\u00f6nnen Sie eine Liste von Begriffen (einem pro Zeile) kopieren und einf\u00fcgen und auf ihre Verf\u00fcgbarkeit in den Konkordanzlisten pr\u00fcfen. Sind Begriffe bisher noch nicht zugeordnet, so k\u00f6nnen sie im Folgenden zuordnet werden. Nachdem alle Begriffe einem sinnvollen \u00c4quivalent zugeordnet sind, kann nun der entsprechende Code-Abschnitt generiert werden, um die neuen Begriffe in die Konkordanzlisten zu \u00fcberf\u00fchren. Diesen Code-Abschnitt k\u00f6nnen Sie nun an das museum-digital-Team schicken.","one_line_per_entry":"Begiffe einf\u00fcgen (ein Begriff pro Zeile)","submit":"Abschicken","passed":"Bereits zugeordnet","not_yet_matched":"Noch nicht zugeordnet","input":"Eingabe","generate_code_snippet":"Code generieren","MDConcActor":"Akteursrollen (zu Ereignistypen)","MDConcCheckTypes":"Arten von \u00dcberpr\u00fcfungen, denen ein Objekt unterzogen wird","MDConcCloserLocationTypes":"Arten von genauerer Lokalisation eines Objektes (z.B. Fundort)","MDConcColors":"Farben","MDConcCurrencies":"W\u00e4hrungen","MDConcDamageTypes":"Arten von Schadensf\u00e4llen","MDConcEntryTypes":"Eingangstypen (\"Wie ist das Objekt in die Sammlung gelangt?\")","MDConcEventTypes":"Ereignistypen","MDConcLanguages":"Sprachen","MDConcLengths":"L\u00e4ngeneinheiten","MDConcLicenses":"Lizenzen","MDConcLoanTypes":"Arten von Leihverkehren","MDConcMarkingPosition":"Position von Markierung (z.B.: \"Wo wurde das Objekt gestempelt?\")","MDConcMarkingType":"Markierungstypen (\"gestempelt\", \"gekratzt\")","MDConcMeasurementTypes":"Arten von Messungen (Breite, H\u00f6he, etc.)","MDConcObjectForms":"Form von Objekten","MDConcObjectTagRelTypes":"Art der Beziehung von Objekt und Schlagwort (z.B. \"\"Material\", \"Abgebildetes\")","MDConcOwnershipStatus":"Besitzstatus","MDConcPlace":"Rolle eines Ortes (zu Ereignistypen)","MDConcSex":"Geschlechter","MDConcSourceTypes":"Art von Literatur \/ Quellen","MDConcTime":"Rolle von Zeitangaben (zu Ereignistypen)","MDConcTitleTypes":"Arten von zus\u00e4tzlichen Objektnamen","MDConcWeights":"Gewichtseinheiten"}
\ No newline at end of file
diff --git a/public/static/json/tls.en.json b/public/static/json/tls.en.json
index b80c067..d91651b 100644
--- a/public/static/json/tls.en.json
+++ b/public/static/json/tls.en.json
@@ -1 +1 @@
-{"concordance_checker":"Concordance checker"}
\ No newline at end of file
+{"concordance_checker":"Concordance checker","intro":"When importing to museum-digital one may encounter errors of entries not yet matched to what is a controlled lists at museum-digital. With this tool one can paste a list of terms in a given field and check their availability in the concordance lists. For entries that are not yet present in the concordance lists one can then select the matching target entry at museum-digital and generate the necessary code snippet to enter the newly matched entries into the concordance lists. The generated code snipped should be send to the museum-digital team.","one_line_per_entry":"Please enter one line per entry.","submit":"Submit","passed":"Passed","not_yet_matched":"Not yet matched","input":"Input","generate_code_snippet":"Generate code snippet","MDConcActor":"Actor roles (to event types)","MDConcCheckTypes":"Types of checks performed on an object","MDConcCloserLocationTypes":"Types of closer location data in the object context","MDConcColors":"Colors","MDConcCurrencies":"Currencies","MDConcDamageTypes":"Damage types","MDConcEntryTypes":"Entry types (\"how did an object enter a museum collection?\")","MDConcEventTypes":"Event types","MDConcLanguages":"Languages","MDConcLengths":"Length units","MDConcLicenses":"Licenses","MDConcLoanTypes":"Loan types","MDConcMarkingPosition":"Marking positions (e.g. \"where was the object stamped?\")","MDConcMarkingType":"Marking types (e.g. stamped, scratched, etc.)","MDConcMeasurementTypes":"Measurement types (width, height, etc.)","MDConcObjectForms":"Shapes of objects","MDConcObjectTagRelTypes":"Relation type between object and a tag (e.g. \"material\", \"display subject\")","MDConcOwnershipStatus":"Ownership status","MDConcPlace":"Place roles (to event types)","MDConcSex":"Gender \/ Sex","MDConcSourceTypes":"Source \/ literature types","MDConcTime":"Time roles (to event types)","MDConcTitleTypes":"Types of additional object names","MDConcWeights":"Weight units"}
\ No newline at end of file
diff --git a/public/static/json/tls.uk.json b/public/static/json/tls.uk.json
index b80c067..1e5975e 100644
--- a/public/static/json/tls.uk.json
+++ b/public/static/json/tls.uk.json
@@ -1 +1 @@
-{"concordance_checker":"Concordance checker"}
\ No newline at end of file
+{"concordance_checker":"Concordance checker","intro":"When importing to museum-digital one may encounter errors of entries not yet matched to what is a controlled lists at museum-digital. With this tool one can paste a list of terms in a given field and check their availability in the concordance lists. For entries that are not yet present in the concordance lists one can than select the matching target entry at museum-digital and generate the necessary code snippet to enter the newly matched entries into the concordance lists. The generated code snipped should be send to the museum-digital team.","one_line_per_entry":"Please enter one line per entry.","submit":"Submit","passed":"Passed","not_yet_matched":"Not yet matched","input":"Input","generate_code_snippet":"Generate code snippet","MDConcActor":"Actor roles (to event types)","MDConcCheckTypes":"Types of checks performed on an object","MDConcCloserLocationTypes":"Types of closer location data in the object context","MDConcColors":"Colors","MDConcCurrencies":"Currencies","MDConcDamageTypes":"Damage types","MDConcEntryTypes":"Entry types (\"how did an object enter a museum collection?\")","MDConcEventTypes":"Event types","MDConcLanguages":"Languages","MDConcLengths":"Length units","MDConcLicenses":"Licenses","MDConcLoanTypes":"Loan types","MDConcMarkingPosition":"Marking positions (e.g. \"where was the object stamped?\")","MDConcMarkingType":"Marking types (e.g. stamped, scratched, etc.)","MDConcMeasurementTypes":"Measurement types (width, height, etc.)","MDConcObjectForms":"Shapes of objects","MDConcObjectTagRelTypes":"Relation type between object and a tag (e.g. \"material\", \"display subject\")","MDConcOwnershipStatus":"Ownership status","MDConcPlace":"Place roles (to event types)","MDConcSex":"Gender \/ Sex","MDConcSourceTypes":"Source \/ literature types","MDConcTime":"Time roles (to event types)","MDConcTitleTypes":"Types of additional object names","MDConcWeights":"Weight units"}
\ No newline at end of file
diff --git a/src/ConcordanceChecker.php b/src/ConcordanceChecker.php
index 08eaa91..03cc09c 100644
--- a/src/ConcordanceChecker.php
+++ b/src/ConcordanceChecker.php
@@ -112,7 +112,7 @@ final class ConcordanceChecker {
break;
case "MDConcLicenses":
$output = [];
- foreach (MDLicensesSet::AVAILABLE_LICENSES as $l) $output[$l] = $l;
+ foreach (MDLicensesSet::AVAILABLE_LICENSES as $l) $output[] = ['id' => $l, 'name' => $l];
return $output;
break;
case "MDConcLoanTypes":
@@ -191,8 +191,13 @@ final class ConcordanceChecker {
*/
public function evaluate(array $toValidate):array {
+ $toValidate = array_unique($toValidate);
+
$passed = $not_passed = [];
foreach ($toValidate as $entry) {
+
+ if (empty(trim($entry))) continue;
+
try {
$target = $this->class::getConcordanceTarget($entry);
$passed[$entry] = $target;