Compare commits

...

No commits in common. 'master' and 'main' have entirely different histories.
master ... main

10
.gitignore vendored

@ -1,10 +0,0 @@
internal_saves
media
*.sage.py
venv*
.idea
__pycache__
static_old
build
data
*.egg-info

@ -1,8 +0,0 @@
FROM python:3.10.12
ADD . /stark-web
WORKDIR /stark-web
RUN pip install --upgrade pip && \
pip install waitress && \
pip install .
CMD ["waitress-serve", "--call", "app:create_app"]

@ -1,65 +1,2 @@
# About
This is a repository where you may access the code for [STARK-web](https://orodja.cjvt.si/stark/).
# STARK-web
# Running
Install required libraries using (we presume you have preinstalled python 3.8+):
```shell
pip install -r requirements
```
Move to project directory and write:
```shell
flask run
```
To run project locally.
# Deployment
Website is deployed on 'storitve' server.
After connecting there, clone latest version of this repository to custom location.
Move inside clone repository and build a docker image using the following command (adapt version by modifying cited `2024-01-01`):
```shell
docker build -t stark-web:2024-01-01_1 .
```
Move to the location with docker-compose.yml (`/opt/Docker/STARK-web/`) and adapt `docker-compose.yml` file to be a container of the latest image (in previous example this would be `image: stark-web:2024-01-01_1`)
Run new docker container:
```shell
docker compose up -d
```
# Translations
Translations are implemented using [flask-babel library](https://pypi.org/project/flask-babel/) (this should already be installed if you followed instructions in Running section).
## Install gettext
In order to use `msgmerge` command you have to install [gettext](https://www.gnu.org/software/gettext/).
```shell
# Ubuntu command
sudo apt install gettext
```
## Update translations commands
```shell
# Move to project directory
# Create .pot file
pybabel extract -F babel.cfg -o messages.pot .
msgmerge translations/sl/LC_MESSAGES/messages.po messages.pot -o translations/sl/LC_MESSAGES/messages.po
msgmerge translations/en/LC_MESSAGES/messages.po messages.pot -o translations/en/LC_MESSAGES/messages.po
# !Check and delete fuzzy in .po files
# Compile changes
pybabel compile -d translations
```
## Initiate a new language
If new language is introduced, you may use the following command:
```shell
pybabel init -i messages.pot -d translations -l es
```

342
app.py

@ -1,342 +0,0 @@
import configparser
import csv
import os
import random
import re
import string
import time
import requests
from flask import Flask, render_template, request, send_file, redirect, url_for
from flask_babel import Babel, gettext
from werkzeug.utils import secure_filename
from stark import run
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'conllu'}
DAYS_BEFORE_DELETION = 1
DEFAULT_LANGUAGE = 'en'
LANGUAGES = ['en', 'sl']
_translations = {
'en': {},
'sl': {},
}
def get_locale():
lang = request.args.get('lang')
if lang in LANGUAGES:
return lang
return DEFAULT_LANGUAGE
def create_app():
app = Flask(__name__, static_url_path='/stark/static')
babel = Babel(app, locale_selector=get_locale, default_translation_directories='translations')
babel.list_translations = ['en', 'sl']
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def create_default_configs():
configs = {}
# mandatory parameters
configs['input_path'] = 'data/sl_ssj-ud_v2.4.conllu'
configs['output'] = 'results/out_official.tsv'
configs['tree_size'] = '2-4'
configs['node_type'] = 'upos'
# mandatory parameters with default value
configs['internal_saves'] = './internal_saves'
configs['cpu_cores'] = 12
configs['complete_tree_type'] = True
configs['dependency_type'] = True
configs['node_order'] = True
configs['association_measures'] = False
configs['label_whitelist'] = []
configs['root_whitelist'] = []
configs['query'] = None
configs['compare'] = None
configs['frequency_threshold'] = 0
configs['lines_threshold'] = None
configs['continuation_processing'] = False
configs['nodes_number'] = True
configs['print_root'] = True
if configs['compare'] is not None:
configs['other_input_path'] = configs['compare']
return configs
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/stark/about', methods=['GET'])
def about():
return render_template('about.html')
@app.route('/stark/result/<result_id>', methods=['GET', 'POST'])
def result(result_id):
if request.method == 'POST':
for filename in os.listdir('media'):
file_path = os.path.join('media', filename)
f_t = os.path.getmtime(file_path)
c_t = time.time()
file_age_seconds = c_t - f_t
if file_age_seconds > DAYS_BEFORE_DELETION * 86400:
os.remove(file_path)
return send_file(os.path.join('media', result_id), as_attachment=True, download_name='results.tsv')
with open(os.path.join('media', result_id), 'r') as rf:
content = list(csv.reader(rf, delimiter='\t'))
head = content[0]
content_dict = {h: [] for h in head}
table_columns2displayed_table_columns = {
'Tree': gettext('Tree'),
'Absolute frequency': gettext('Frequency'),
'Absolute frequency in second treebank': gettext('Frequency in B'),
'Order': gettext('Order'),
'Number of nodes': gettext('Number of nodes'),
'Head node': gettext('Head node'),
'Grew-match URL': gettext('Grew-match URL'),
'%DIFF': gettext('%DIFF'),
'OR': gettext('OR'),
'BIC': gettext('BIC'),
'MI': gettext('MI'),
'logDice': gettext('logDice'),
't-score': gettext('t-score')
}
if 'Absolute frequency in second treebank' in head:
table_columns2displayed_table_columns['Absolute frequency'] = gettext('Frequency in A')
# table_columns2displayed_table_columns['Absolute frequency in second treebank'] = gettext('Frequency in B')
# if 'MI' in table_columns2displayed_table_columns:
# del table_columns2displayed_table_columns['MI']
# if 'logDice' in table_columns2displayed_table_columns:
# del table_columns2displayed_table_columns['logDice']
# if 't-score' in table_columns2displayed_table_columns:
# del table_columns2displayed_table_columns['t-score']
else:
del table_columns2displayed_table_columns['Absolute frequency in second treebank']
displayed_table_columns2table_columns = {v: k for k, v in table_columns2displayed_table_columns.items()}
order_by_display = request.args.get('order_by')
order_by = displayed_table_columns2table_columns[
order_by_display[:-1]] if order_by_display is not None else None
order_type = request.args.get('order_type')
if order_by is not None and order_by in head:
sort_id = head.index(order_by)
if order_type == 'asc':
# check if a number can be converted to float or int
ordered_content = sorted(content[1:], key=lambda x: -1 * float(x[sort_id]) if x[sort_id].isnumeric() or re.match(r'^-?\d+(?:\.\d+)$', x[sort_id]) is not None else x[sort_id], reverse=True)
else:
ordered_content = sorted(content[1:], key=lambda x: -1 * float(x[sort_id]) if x[sort_id].isnumeric() or re.match(r'^-?\d+(?:\.\d+)$', x[sort_id]) is not None else x[sort_id])
else:
ordered_content = content[1:]
for i, row in enumerate(ordered_content):
for j, v in enumerate(row):
content_dict[head[j]].append(v)
displayed_head = [v for k, v in table_columns2displayed_table_columns.items() if k in head]
displayed_content_dict = {}
for h in displayed_head:
displayed_content_dict[h] = content_dict[displayed_table_columns2table_columns[h]]
return render_template('result.html', head_row=displayed_head, content=displayed_content_dict)
@app.route('/stark/', methods=['GET', 'POST'])
# @headers({'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0'})
def index():
translations = _translations[get_locale()]
if request.method == 'POST':
form = request.form
configs = {}
# mandatory parameters
configs['input_path'] = ''
validation = {}
# handling input
if 'file' in request.files and request.files['file']:
# store file
f = request.files['file']
input_path = os.path.join('media', secure_filename(f.filename))
f.save(input_path)
configs['input_path'] = input_path
if 'input_url' in form and form['input_url']:
validation['file'] = gettext('Please insert either input url or file, not both of them.')
validation['input_url'] = gettext('Please insert either input url or file, not both of them.')
# TODO OPTIONALLY ADD conllu FILE CHECK
elif 'input_url' in form and form['input_url']:
try:
name = form['input_url'].split('/')[-1]
input_path = os.path.join('media', name)
response = requests.get(form['input_url'])
open(input_path, "wb").write(response.content)
configs['input_path'] = input_path
except:
validation['input_url'] = gettext('Incorrect URL!')
else:
validation['file'] = gettext('Please insert either input url or provide a file.')
validation['input_url'] = gettext('Please insert either input url or provide a file.')
tree_size_min = None
if 'tree_size_min' in form:
tree_size_min = form['tree_size_min']
tree_size_max = None
if 'tree_size_max' in form:
tree_size_max = form['tree_size_max']
def validate_tree_size(tree_size_min, tree_size_max):
if tree_size_min is None or tree_size_max is None:
validation['tree_size'] = gettext('Please provide information about minimum and maximum tree size.')
return False
if int(tree_size_min) > int(tree_size_max):
validation['tree_size'] = gettext('Tree size minimum should be smaller than tree size maximum.')
return False
return True
if validate_tree_size(tree_size_min, tree_size_max):
configs['tree_size'] = f'{tree_size_min}-{tree_size_max}' if tree_size_min != tree_size_max else f'{tree_size_min}'
def validate_node_type(node_type):
# TODO EXPAND NODE TYPE
node_type_options = {'upos', 'form', 'lemma', 'upos', 'xpos', 'feats', 'deprel'}
if len(node_type) == 0:
validation['node_type'] = gettext('Please select at least one node type.')
return False
for el in node_type:
if el not in node_type_options:
validation['node_type'] = gettext('Node option') + f' {el} ' + gettext('is not supported. Please enter valid options.')
return False
return True
node_type = []
if 'node_type_upos' in form:
node_type.append('upos')
if 'node_type_form' in form:
node_type.append('form')
if 'node_type_lemma' in form:
node_type.append('lemma')
if validate_node_type(node_type):
configs['node_type'] = '+'.join(node_type)
# mandatory parameters with default value
configs['internal_saves'] = None
# TODO depends on computer
configs['cpu_cores'] = 12
# TODO FINALIZE THIS!
configs['complete_tree_type'] = True
configs['dependency_type'] = 'labeled_trees' in form and form['labeled_trees'] == 'on'
configs['node_order'] = 'fixed_order' in form and form['fixed_order'] == 'on'
configs['association_measures'] = 'association_measures' in form and form['association_measures'] == 'on'
configs['label_whitelist'] = []
configs['root_whitelist'] = []
if 'root_restriction' in form and form['root_restriction']:
configs['root_whitelist'] = form['root_restriction'].split('|')
if 'query' in form and form['query']:
configs['query'] = form['query']
configs['tree_size'] = '0'
else:
configs['query'] = None
# handling input
if 'compare_file' in request.files and request.files['compare_file']:
# store file
f = request.files['compare_file']
input_path = os.path.join('media', secure_filename(f.filename))
f.save(input_path)
configs['compare'] = input_path
if 'compare_url' in form and form['compare_url']:
validation['compare_file'] = gettext('Please insert either compare url or file, not both of them.')
validation['compare_url'] = gettext('Please insert either compare url or file, not both of them.')
elif 'compare_url' in form and form['compare_url']:
try:
name = form['compare_url'].split('/')[-1]
input_path = os.path.join('media', name)
response = requests.get(form['compare_url'])
open(input_path, "wb").write(response.content)
configs['compare'] = input_path
except:
configs['compare'] = None
validation['compare_url'] = gettext('Incorrect URL!')
else:
configs['compare'] = None
configs['sentence_count_file'] = None
configs['detailed_results_file'] = None
configs['frequency_threshold'] = 0
if 'frequency_threshold' in form and form['frequency_threshold']:
try:
int(form['frequency_threshold'])
except ValueError:
validation['frequency_threshold'] = gettext('Please insert an Integer.')
else:
configs['frequency_threshold'] = int(form['frequency_threshold'])
configs['lines_threshold'] = None
configs['continuation_processing'] = False
configs['label_subtypes'] = True
configs['nodes_number'] = True
configs['print_root'] = True
if configs['compare'] is not None:
configs['other_input_path'] = configs['compare']
configs['grew_match'] = True
configs['depsearch'] = False
configs['example'] = False
name = ''.join(random.choices(string.ascii_uppercase + string.digits, k=60))
configs['output'] = os.path.join('media', name)
if len(validation) > 0:
return render_template('index.html', validation=validation, translations=translations)
try:
run(configs)
except Exception as e:
validation['general'] = gettext('Processing failed! Please recheck your settings, e.g. input format or head node description.')
if len(validation) > 0:
return render_template('index.html', validation=validation, translations=translations)
# check if there are no results
with open(os.path.join('media', name), 'r') as rf:
content = list(csv.reader(rf, delimiter='\t'))
if len(content) == 1:
validation['results'] = False
return render_template('index.html', validation=validation, translations=translations)
order_by = gettext('Frequency ') if not configs['compare'] else gettext('Frequency in A ')
return redirect(url_for('result', result_id=name, order_by=order_by, order_type='desc', lang=gettext('code')))
return render_template('index.html', translations=translations)
return app
if __name__ == '__main__':
app = create_app()
app.run(debug=True)

@ -1,2 +0,0 @@
[python: app.py]
[jinja2: templates/**.html]

@ -1,15 +0,0 @@
version: "3.7"
services:
app:
image: stark-web
# build: .
command: waitress-serve --port=5000 --call app:create_app
restart: always
environment:
- FLASK_ENV=development
ports:
- "5000:5000"
# volumes:
# - ./data/media:/oznacevalnik-api/media
# tmpfs:
# - /oznacevalnik-api/out

151
gui.py

@ -1,151 +0,0 @@
# -*- coding: utf-8 -*-
import configparser
# Form implementation generated from reading ui file 'gui/designer/data.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from stark import parse_args, read_configs, run
def create_default_configs():
configs = {}
# mandatory parameters
configs['input'] = 'data/sl_ssj-ud_v2.4.conllu'
configs['input_path'] = 'data/sl_ssj-ud_v2.4.conllu'
configs['output'] = 'results/out_official.tsv'
configs['tree_size'] = '2-4'
configs['node_type'] = 'upos'
# mandatory parameters with default value
configs['internal_saves'] = './internal_saves'
configs['cpu_cores'] = 12
configs['complete_tree_type'] = True
configs['dependency_type'] = True
configs['node_order'] = True
configs['association_measures'] = False
configs['label_whitelist'] = []
configs['root_whitelist'] = []
configs['query'] = None
configs['compare'] = None
configs['frequency_threshold'] = 0
configs['lines_threshold'] = None
configs['continuation_processing'] = False
configs['nodes_number'] = True
configs['print_root'] = True
if configs['compare'] is not None:
configs['other_input_path'] = configs['compare']
return configs
class Ui_STARK(object):
def setupUi(self, STARK):
self.fixed = True
STARK.setObjectName("STARK")
STARK.resize(800, 600)
self.buttonBox = QtWidgets.QDialogButtonBox(STARK)
self.buttonBox.setGeometry(QtCore.QRect(430, 540, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.formLayoutWidget = QtWidgets.QWidget(STARK)
self.formLayoutWidget.setGeometry(QtCore.QRect(30, 30, 741, 481))
self.formLayoutWidget.setObjectName("formLayoutWidget")
self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget)
self.formLayout.setContentsMargins(0, 0, 0, 0)
self.formLayout.setObjectName("formLayout")
self.label = QtWidgets.QLabel(self.formLayoutWidget)
self.label.setObjectName("label")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label)
self.textEdit = QtWidgets.QTextEdit(self.formLayoutWidget)
self.textEdit.setObjectName("textEdit")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.textEdit)
self.label_2 = QtWidgets.QLabel(self.formLayoutWidget)
self.label_2.setObjectName("label_2")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2)
self.textEdit_2 = QtWidgets.QTextEdit(self.formLayoutWidget)
self.textEdit_2.setObjectName("textEdit_2")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.textEdit_2)
self.label_3 = QtWidgets.QLabel(self.formLayoutWidget)
self.label_3.setObjectName("label_3")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.radioButton = QtWidgets.QRadioButton(self.formLayoutWidget)
self.radioButton.setObjectName("radioButton")
self.radioButton.setChecked(True)
self.radioButton.clicked.connect(self.fixed_click_on)
self.verticalLayout.addWidget(self.radioButton)
self.radioButton_2 = QtWidgets.QRadioButton(self.formLayoutWidget)
self.radioButton_2.setObjectName("radioButton_2")
self.radioButton_2.clicked.connect(self.fixed_click_off)
self.verticalLayout.addWidget(self.radioButton_2)
self.formLayout.setLayout(2, QtWidgets.QFormLayout.FieldRole, self.verticalLayout)
self.label_4 = QtWidgets.QLabel(self.formLayoutWidget)
self.label_4.setObjectName("label_4")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_4)
self.retranslateUi(STARK)
self.buttonBox.accepted.connect(self.process)
#self.buttonBox.rejected.connect(self.process)
self.buttonBox.rejected.connect(STARK.reject)
QtCore.QMetaObject.connectSlotsByName(STARK)
def fixed_click_on(self):
self.fixed = True
def fixed_click_off(self):
self.fixed = False
def retranslateUi(self, STARK):
_translate = QtCore.QCoreApplication.translate
STARK.setWindowTitle(_translate("STARK", "Dialog"))
self.label.setText(_translate("STARK", "Input"))
self.label_2.setText(_translate("STARK", "Output"))
self.label_3.setText(_translate("STARK", "Fixed"))
self.radioButton.setText(_translate("STARK", "Yes"))
self.radioButton_2.setText(_translate("STARK", "No"))
def process(self):
config = configparser.ConfigParser()
config.read('config.ini')
#configs = read_configs(config, args)
configs = create_default_configs()
input_path = self.textEdit.toPlainText()
output_path = self.textEdit_2.toPlainText()
fixed = self.fixed
configs['input'] = configs['input'] if not input_path else input_path
configs['input_path'] = configs['input_path'] if not input_path else input_path
configs['output'] = configs['output'] if not output_path else output_path
configs['node_order'] = configs['node_order'] if not fixed else fixed
run(configs)
print('DONE!')
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
STARK = QtWidgets.QDialog()
ui = Ui_STARK()
ui.setupUi(STARK)
STARK.show()
sys.exit(app.exec_())

@ -1,376 +0,0 @@
# Translations template for PROJECT.
# Copyright (C) 2024 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-03-13 11:06+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.14.0\n"
#: app.py:108
msgid "Tree"
msgstr ""
#: app.py:109
msgid "Frequency"
msgstr ""
#: app.py:110
msgid "Frequency in B"
msgstr ""
#: app.py:111
msgid "Order"
msgstr ""
#: app.py:112
msgid "Number of nodes"
msgstr ""
#: app.py:113
msgid "Head node"
msgstr ""
#: app.py:114
msgid "Grew-match URL"
msgstr ""
#: app.py:115
msgid "%DIFF"
msgstr ""
#: app.py:116
msgid "OR"
msgstr ""
#: app.py:117
msgid "BIC"
msgstr ""
#: app.py:118
msgid "MI"
msgstr ""
#: app.py:119
msgid "logDice"
msgstr ""
#: app.py:120
msgid "t-score"
msgstr ""
#: app.py:123
msgid "Frequency in A"
msgstr ""
#: app.py:181 app.py:182
msgid "Please insert either input url or file, not both of them."
msgstr ""
#: app.py:192 app.py:287
msgid "Incorrect URL!"
msgstr ""
#: app.py:194 app.py:195
msgid "Please insert either input url or provide a file."
msgstr ""
#: app.py:207
msgid "Please provide information about minimum and maximum tree size."
msgstr ""
#: app.py:211
msgid "Tree size minimum should be smaller than tree size maximum."
msgstr ""
#: app.py:222
msgid "Please select at least one node type."
msgstr ""
#: app.py:227
msgid "Node option"
msgstr ""
#: app.py:227
msgid "is not supported. Please enter valid options."
msgstr ""
#: app.py:275 app.py:276
msgid "Please insert either compare url or file, not both of them."
msgstr ""
#: app.py:299
msgid "Please insert an Integer."
msgstr ""
#: app.py:324
msgid ""
"Processing failed! Please recheck your settings, e.g. input format or "
"head node description."
msgstr ""
#: app.py:333
msgid "Frequency "
msgstr ""
#: app.py:333
msgid "Frequency in A "
msgstr ""
#: app.py:334 templates/base.html:20 templates/base.html:22
#: templates/index.html:8 templates/result.html:15
msgid "code"
msgstr ""
#: templates/about.html:7 templates/base.html:22
msgid "About"
msgstr ""
#: templates/about.html:10
msgid "stark_description"
msgstr ""
#: templates/about.html:13
msgid "stark_goal1"
msgstr ""
#: templates/about.html:13
msgid "stark_goal2"
msgstr ""
#: templates/about.html:13
msgid "user-defined parameters"
msgstr ""
#: templates/about.html:13
msgid "stark_goal3"
msgstr ""
#: templates/about.html:16
msgid "stark_credits"
msgstr ""
#: templates/about.html:16
msgid "SPOT: A Treebank-Driven Approach to the Study of Spoken Slovenian"
msgstr ""
#: templates/about.html:16
msgid "stark_credits2"
msgstr ""
#: templates/about.html:16
msgid "stark_credits3"
msgstr ""
#: templates/about.html:19
msgid "stark_contact"
msgstr ""
#: templates/base.html:23
msgid "switch_link"
msgstr ""
#: templates/base.html:24
msgid "switch_code"
msgstr ""
#: templates/base.html:43
msgid "Issuer"
msgstr ""
#: templates/base.html:47
msgid "Financial support"
msgstr ""
#: templates/base.html:51
msgid "Transfer tool"
msgstr ""
#: templates/base.html:55
msgid "License"
msgstr ""
#: templates/base.html:59
msgid "Support"
msgstr ""
#: templates/index.html:9
msgid "Input data"
msgstr ""
#: templates/index.html:12 templates/index.html:20
msgid "Upload a treebank"
msgstr ""
#: templates/index.html:12 templates/index.html:20 templates/index.html:160
#: templates/index.html:167
msgid "in CONLL-U format"
msgstr ""
#: templates/index.html:12 templates/index.html:41 templates/index.html:49
#: templates/index.html:89 templates/index.html:104 templates/index.html:120
#: templates/index.html:126 templates/index.html:132 templates/index.html:140
#: templates/index.html:159 templates/index.html:160
msgid "Help"
msgstr ""
#: templates/index.html:15 templates/index.html:163
msgid "Browse"
msgstr ""
#: templates/index.html:19
msgid "Upload"
msgstr ""
#: templates/index.html:29 templates/index.html:177
msgid "Or"
msgstr ""
#: templates/index.html:29 templates/index.html:177
msgid "insert a URL link to a treebank in CONLL-U format"
msgstr ""
#: templates/index.html:29 templates/index.html:177
msgid "Example"
msgstr ""
#: templates/index.html:38
msgid "Tree specification"
msgstr ""
#: templates/index.html:41
msgid "Tree size"
msgstr ""
#: templates/index.html:41
msgid "number of tokens in the tree"
msgstr ""
#: templates/index.html:49
msgid "Node type"
msgstr ""
#: templates/index.html:49
msgid "token characteristics to consider"
msgstr ""
#: templates/index.html:55
msgid "Part-of-speech"
msgstr ""
#: templates/index.html:64
msgid "Lemma"
msgstr ""
#: templates/index.html:70
msgid "Form"
msgstr ""
#: templates/index.html:84
msgid "Advanced settings"
msgstr ""
#: templates/index.html:89
msgid "Labeled trees"
msgstr ""
#: templates/index.html:89
msgid "include names of dependency relations"
msgstr ""
#: templates/index.html:93 templates/index.html:108 templates/index.html:144
msgid "No"
msgstr ""
#: templates/index.html:96 templates/index.html:111 templates/index.html:147
msgid "Yes"
msgstr ""
#: templates/index.html:104
msgid "Fixed order"
msgstr ""
#: templates/index.html:104
msgid "differentiate trees based on surface word order"
msgstr ""
#: templates/index.html:120
msgid "Head"
msgstr ""
#: templates/index.html:120
msgid "specify potential restrictions on the head node"
msgstr ""
#: templates/index.html:126
msgid "Query"
msgstr ""
#: templates/index.html:126
msgid "write a query. Note: Tree size attribute will be ignored!"
msgstr ""
#: templates/index.html:132
msgid "Frequency threshold"
msgstr ""
#: templates/index.html:132
msgid "specify the minimum frequency of a tree in the treebank"
msgstr ""
#: templates/index.html:140
msgid "Association measures"
msgstr ""
#: templates/index.html:140
msgid "print MI, logDice and t-score"
msgstr ""
#: templates/index.html:155
msgid "Compare treebanks"
msgstr ""
#: templates/index.html:159
msgid ""
"Select a reference treebank to identify key phenomena (prints the "
"&#37;DIFF, BIC and OR keyness scores)."
msgstr ""
#: templates/index.html:160 templates/index.html:167
msgid "Upload a compare corpus"
msgstr ""
#: templates/index.html:191
msgid "Submit"
msgstr ""
#: templates/index.html:199
msgid "No results"
msgstr ""
#: templates/index.html:200
msgid "Processing with your settings didnt produce any results!"
msgstr ""
#: templates/result.html:8
msgid "Results"
msgstr ""
#: templates/result.html:15
msgid "Back to chosen settings"
msgstr ""
#: templates/result.html:16
msgid "Download complete results"
msgstr ""

@ -1,4 +0,0 @@
Flask==3.0.0
requests==2.31.0
flask-babel==4.0.0
stark @ git+https://github.com/clarinsi/STARK@master

@ -1,24 +0,0 @@
import re
from os import path
from setuptools import setup, find_packages
here = path.abspath(path.dirname(__file__))
# read the version from classla/_version.py
VERSION = '0.0.1'
setup(name='stark-api',
version=VERSION,
description=u"Stark web application",
author='CLARIN.SI',
author_email='info@clarin.si',
license='Apache 2',
packages=find_packages(),
install_requires=[
'Flask==3.0.0',
'requests==2.31.0',
'flask-babel==4.0.0',
'stark @ git+https://github.com/clarinsi/STARK@master'
],
)

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2014-2018 Materialize
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -1,91 +0,0 @@
<p align="center">
<a href="http://materializecss.com/">
<img src="http://materializecss.com/res/materialize.svg" width="150">
</a>
</p>
<h3 align="center">MaterializeCSS</h3>
<p align="center">
Materialize, a CSS Framework based on material design.
<br>
<a href="http://materializecss.com/"><strong>-- Browse the docs --</strong></a>
<br>
<br>
<a href="https://travis-ci.org/Dogfalo/materialize">
<img src="https://travis-ci.org/Dogfalo/materialize.svg?branch=master" alt="Travis CI badge">
</a>
<a href="https://badge.fury.io/js/materialize-css">
<img src="https://badge.fury.io/js/materialize-css.svg" alt="npm version badge">
</a>
<a href="https://cdnjs.com/libraries/materialize">
<img src="https://img.shields.io/cdnjs/v/materialize.svg" alt="CDNJS version badge">
</a>
<a href="https://david-dm.org/Dogfalo/materialize">
<img src="https://david-dm.org/Dogfalo/materialize/status.svg" alt="dependencies Status badge">
</a>
<a href="https://david-dm.org/Dogfalo/materialize#info=devDependencies">
<img src="https://david-dm.org/Dogfalo/materialize/dev-status.svg" alt="devDependency Status badge">
</a>
<a href="https://gitter.im/Dogfalo/materialize">
<img src="https://badges.gitter.im/Join%20Chat.svg" alt="Gitter badge">
</a>
</p>
## Table of Contents
- [Quickstart](#quickstart)
- [Documentation](#documentation)
- [Supported Browsers](#supported-browsers)
- [Changelog](#changelog)
- [Testing](#testing)
- [Contributing](#contributing)
- [Copyright and license](#copyright-and-license)
## Quickstart:
Read the [getting started guide](http://materializecss.com/getting-started.html) for more information on how to use materialize.
- [Download the latest release](https://github.com/Dogfalo/materialize/releases/latest) of materialize directly from GitHub. ([Beta](https://github.com/Dogfalo/materialize/releases/))
- Clone the repo: `git clone https://github.com/Dogfalo/materialize.git` (Beta: `git clone -b v1-dev https://github.com/Dogfalo/materialize.git`)
- Include the files via [cdnjs](https://cdnjs.com/libraries/materialize). More [here](http://materializecss.com/getting-started.html). ([Beta](https://cdnjs.com/libraries/materialize/1.0.0-beta))
- Install with [npm](https://www.npmjs.com): `npm install materialize-css` (Beta: `npm install materialize-css@next`)
- Install with [Bower](https://bower.io): `bower install materialize` ([DEPRECATED](https://bower.io/blog/2017/how-to-migrate-away-from-bower/))
- Install with [Atmosphere](https://atmospherejs.com): `meteor add materialize:materialize` (Beta: `meteor add materialize:materialize@=1.0.0-beta`)
## Documentation
The documentation can be found at <http://materializecss.com>. To run the documentation locally on your machine, you need [Node.js](https://nodejs.org/en/) installed on your computer.
### Running documentation locally
Run these commands to set up the documentation:
```bash
git clone https://github.com/Dogfalo/materialize
cd materialize
npm install
```
Then run `grunt monitor` to compile the documentation. When it finishes, open a new browser window and navigate to `localhost:8000`. We use [BrowserSync](https://www.browsersync.io/) to display the documentation.
### Documentation for previous releases
Previous releases and their documentation are available for [download](https://github.com/Dogfalo/materialize/releases).
## Supported Browsers:
Materialize is compatible with:
- Chrome 35+
- Firefox 31+
- Safari 9+
- Opera
- Edge
- IE 11+
## Changelog
For changelogs, check out [the Releases section of materialize](https://github.com/Dogfalo/materialize/releases) or the [CHANGELOG.md](CHANGELOG.md).
## Testing
We use Jasmine as our testing framework and we're trying to write a robust test suite for our components. If you want to help, [here's a starting guide on how to write tests in Jasmine](CONTRIBUTING.md#jasmine-testing-guide).
## Contributing
Check out the [CONTRIBUTING document](CONTRIBUTING.md) in the root of the repository to learn how you can contribute. You can also browse the [help-wanted](https://github.com/Dogfalo/materialize/labels/help-wanted) tag in our issue tracker to find things to do.
## Copyright and license
Code Copyright 2018 Materialize. Code released under the MIT license.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -1,406 +0,0 @@
/*!
* Materialize v0.100.2 (http://materializecss.com)
* Copyright 2014-2015 Materialize
* MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
*/
/*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */
/* Functional styling;
* These styles are required for noUiSlider to function.
* You don't need to change these rules to apply your design.
*/
.noUi-target,
.noUi-target * {
-webkit-touch-callout: none;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-user-select: none;
-ms-touch-action: none;
touch-action: none;
-ms-user-select: none;
-moz-user-select: none;
user-select: none;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.noUi-target {
position: relative;
direction: ltr;
}
.noUi-base {
width: 100%;
height: 100%;
position: relative;
z-index: 1; /* Fix 401 */
}
.noUi-connect {
position: absolute;
right: 0;
top: 0;
left: 0;
bottom: 0;
}
.noUi-origin {
position: absolute;
height: 0;
width: 0;
}
.noUi-handle {
position: relative;
z-index: 1;
}
.noUi-state-tap .noUi-connect,
.noUi-state-tap .noUi-origin {
-webkit-transition: top 0.25s, right 0.25s, bottom 0.25s, left 0.25s;
transition: top 0.25s, right 0.25s, bottom 0.25s, left 0.25s;
}
.noUi-state-drag * {
cursor: inherit !important;
}
.noUi-handle-touch-area{
position: relative;
width: 44px;
height: 44px;
left: -15px;
top: -15px;
}
/* Painting and performance;
* Browsers can paint handles in their own layer.
*/
.noUi-base,
.noUi-handle {
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
}
/* Slider size and handle placement;
*/
.noUi-horizontal {
height: 18px;
}
.noUi-horizontal .noUi-handle {
width: 34px;
height: 28px;
left: -17px;
top: -6px;
}
.noUi-vertical {
width: 18px;
}
.noUi-vertical .noUi-handle {
width: 28px;
height: 34px;
left: -6px;
top: -17px;
}
/* Styling;
*/
.noUi-target {
background: #cdcdcd;
border-radius: 4px;
border: 1px solid transparent;
}
.noUi-connect {
background: #a6a6a6;
-webkit-transition: background 450ms;
transition: background 450ms;
}
/* Handles and cursors;
*/
.noUi-draggable {
cursor: ew-resize;
}
.noUi-vertical .noUi-draggable {
cursor: ns-resize;
}
.noUi-handle {
border: 1px solid #D9D9D9;
border-radius: 3px;
background: #FFF;
cursor: default;
box-shadow: inset 0 0 1px #FFF,
inset 0 1px 7px #EBEBEB,
0 3px 6px -3px #BBB;
}
.noUi-active {
box-shadow: inset 0 0 1px #FFF,
inset 0 1px 7px #DDD,
0 3px 6px -3px #BBB;
}
/* Handle stripes
*/
.noUi-handle:before,
.noUi-handle:after {
content: "";
display: block;
position: absolute;
height: 14px;
width: 1px;
background: #E8E7E6;
left: 14px;
top: 6px;
}
.noUi-handle:after {
left: 17px;
}
.noUi-vertical .noUi-handle:before,
.noUi-vertical .noUi-handle:after {
width: 14px;
height: 1px;
left: 6px;
top: 14px;
}
.noUi-vertical .noUi-handle:after {
top: 17px;
}
/* Disabled state;
*/
[disabled] .noUi-connect {
background: #B8B8B8;
}
[disabled].noUi-target,
[disabled].noUi-handle,
[disabled] .noUi-handle {
cursor: not-allowed;
}
/* Base;
*
*/
.noUi-pips,
.noUi-pips * {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.noUi-pips {
position: absolute;
color: #999;
}
/* Values;
*
*/
.noUi-value {
position: absolute;
text-align: center;
}
.noUi-value-sub {
color: #ccc;
font-size: 10px;
}
/* Markings;
*
*/
.noUi-marker {
position: absolute;
background: #CCC;
}
.noUi-marker-sub {
background: #AAA;
}
.noUi-marker-large {
background: #AAA;
}
/* Horizontal layout;
*
*/
.noUi-pips-horizontal {
padding: 10px 0;
height: 80px;
top: 100%;
left: 0;
width: 100%;
}
.noUi-value-horizontal {
-webkit-transform: translate3d(-50%,50%,0);
transform: translate3d(-50%,50%,0);
}
.noUi-marker-horizontal.noUi-marker {
margin-left: -1px;
width: 2px;
height: 5px;
}
.noUi-marker-horizontal.noUi-marker-sub {
height: 10px;
}
.noUi-marker-horizontal.noUi-marker-large {
height: 15px;
}
/* Vertical layout;
*
*/
.noUi-pips-vertical {
padding: 0 10px;
height: 100%;
top: 0;
left: 100%;
}
.noUi-value-vertical {
-webkit-transform: translate3d(0,50%,0);
transform: translate3d(0,50%,0);
padding-left: 25px;
}
.noUi-marker-vertical.noUi-marker {
width: 5px;
height: 2px;
margin-top: -1px;
}
.noUi-marker-vertical.noUi-marker-sub {
width: 10px;
}
.noUi-marker-vertical.noUi-marker-large {
width: 15px;
}
.noUi-tooltip {
display: block;
position: absolute;
border: 1px solid transparent;
border-radius: 3px;
background: #fff;
color: #000;
padding: 5px;
text-align: center;
}
.noUi-horizontal .noUi-tooltip {
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
left: 50%;
bottom: 120%;
}
.noUi-vertical .noUi-tooltip {
-webkit-transform: translate(0, -50%);
transform: translate(0, -50%);
top: 50%;
right: 120%;
}
/* Materialize Styles */
.noUi-target {
border: 0;
border-radius: 0;
}
.noUi-horizontal {
height: 3px;
}
.noUi-vertical {
height: 100%;
width: 3px;
}
.noUi-horizontal .noUi-handle,
.noUi-vertical .noUi-handle {
width: 15px;
height: 15px;
border-radius: 50%;
box-shadow: none;
background-color: #a6a6a6;
border: none;
left: -5px;
top: -6px;
transition: width .2s cubic-bezier(0.215, 0.610, 0.355, 1.000),
height .2s cubic-bezier(0.215, 0.610, 0.355, 1.000),
left .2s cubic-bezier(0.215, 0.610, 0.355, 1.000),
top .2s cubic-bezier(0.215, 0.610, 0.355, 1.000);
}
.noUi-handle:before {
content: none;
}
.noUi-handle:after {
content: none;
}
.noUi-target .noUi-active.noUi-handle {
width: 3px;
height: 3px;
left: 0;
top: 0;
}
.noUi-target.noUi-horizontal .noUi-tooltip {
position: absolute;
height: 30px;
width: 30px;
top: -17px;
left: -2px;
background-color: #a6a6a6;
border-radius: 50%;
transition: border-radius .25s cubic-bezier(0.215, 0.610, 0.355, 1.000),
transform .25s cubic-bezier(0.215, 0.610, 0.355, 1.000);
transform: scale(.5) rotate(-45deg);
transform-origin: 50% 100%;
}
.noUi-target.noUi-horizontal .noUi-active .noUi-tooltip {
border-radius: 15px 15px 15px 0;
transform: rotate(-45deg) translate(23px, -25px);
}
.noUi-tooltip span {
width: 100%;
text-align: center;
color: #fff;
font-size: 12px;
opacity: 0;
position: absolute;
top: 6px;
left: -1px;
transition: opacity .25s cubic-bezier(0.215, 0.610, 0.355, 1.000);
}
.noUi-horizontal .noUi-tooltip span {
transform: rotate(45deg);
}
.noUi-vertical .noUi-tooltip span {
transform: rotate(135deg);
}
.noUi-target.noUi-vertical .noUi-tooltip {
position: absolute;
height: 30px;
width: 30px;
top: -17px;
left: -2px;
background-color: #a6a6a6;
border-radius: 50%;
transition: border-radius .25s cubic-bezier(0.215, 0.610, 0.355, 1.000),
transform .25s cubic-bezier(0.215, 0.610, 0.355, 1.000);
transform: scale(.5) rotate(-45deg);
transform-origin: 50% 100%;
}
.noUi-target.noUi-vertical .noUi-active .noUi-tooltip {
border-radius: 15px 15px 15px 0;
transform: rotate(-135deg) translate(35px, -10px);
}
.noUi-vertical .noUi-tooltip span {
width: 100%;
text-align: center;
color: #fff;
font-size: 12px;
transform: rotate(135deg);
opacity: 0;
position: absolute;
top: 7px;
left: -1px;
transition: opacity .25s cubic-bezier(0.215, 0.610, 0.355, 1.000);
}
.noUi-horizontal .noUi-active .noUi-tooltip span,
.noUi-vertical .noUi-active .noUi-tooltip span {
opacity: 1;
}

@ -1 +0,0 @@
.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;height:100%;width:100%;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin{left:0;right:auto}.noUi-vertical .noUi-origin{top:-100%;width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform .3s;transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;right:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;right:-6px;bottom:-17px}.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle{left:-17px;right:auto}.noUi-target{background:#FAFAFA;border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-connects{border-radius:3px}.noUi-connect{background:#3FB8AF}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#B8B8B8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#CCC}.noUi-marker-sub{background:#AAA}.noUi-marker-large{background:#AAA}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0,50%);transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #D9D9D9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.noUi-horizontal .noUi-origin>.noUi-tooltip{-webkit-transform:translate(50%,0);transform:translate(50%,0);left:auto;bottom:10px}.noUi-vertical .noUi-origin>.noUi-tooltip{-webkit-transform:translate(0,-18px);transform:translate(0,-18px);top:auto;right:28px}

@ -1,333 +0,0 @@
/* Custom Stylesheet */
/**
* Use this file to override Materialize files so you can update
* the core Materialize files in the future
*
* Made By MaterializeCSS.com
*/
.icon-block {
padding: 0 15px;
}
.icon-block .material-icons {
font-size: inherit;
}
/**** Custom styles for Range ****/
.noUi-tooltip span {
opacity: 1;
}
.noUi-target.noUi-horizontal .noUi-tooltip {
transform: scale(1) rotate(-45deg) translate(0px, 4px);
}
body {
font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
font-size: 16px;
}
h4 {
font-size: 1.8rem;
}
label {
font-size: 1.0rem;
}
.input-field > label {
font-size: 1.0rem;
}
.table-wrapper {
overflow-y: scroll;
height: 600px;
border: #555555;
}
.table-wrapper thead th {
position: sticky;
top: 0;
}
.table-wrapper thead th{
cursor: pointer;
}
.tr-link {
cursor: pointer;
}
table {
table-layout: auto;
}
th {
max-width: 300px;
padding: 10px 0 10px;
background-color: #cccccc;
text-align: center;
border-left-radius: 2px;
border-right: solid 1px #bbbbbb;
border-left: solid 1px #bbbbbb;
}
td {
max-width: 300px;
padding: 10px 0 10px;
text-align: center;
border-right: solid 1px #bbbbbb;
border-left: solid 1px #bbbbbb;
}
.validation-error {
display: block;
color: #F44336;
position: relative;
min-height: 18px;
font-size: 0.9rem;
}
@media only screen and (min-width: 993px) {
.container {
width: 60%;
}
}
.input-field .helper-text {
font-size: 1.1rem;
}
.input-field > label:not(.label-icon).active {
-webkit-transform: translateY(-14px);
transform: translateY(-14px);
}
.file-field .file-path-wrapper {
height: 75px;
}
.expand {
color: rgba(0, 0, 0, 0.87);
}
.wider-container {
width: 80%;
}
.narrower-container {
width: 40%;
}
.redcjvt {
background-color: #e12a26;
}
.blackcjvt {
background-color: #161616;
}
input:focus {
border-bottom: 1px solid #212121 !important;
box-shadow: 0 1px 0 0 #212121 !important;
}
label.active {
color: #212121 !important;
}
.backgroundcolorcjvt {
background-color: #f5f5f5;
}
.btn:active, .btn-large:active, .btn-small:active {
background: #393939;
}
.btn:hover, .btn-large:hover, .btn-small:hover {
background: #212121;
}
.btn:focus, .btn-large, .btn-small {
background: #161616;
}
.btn.btn-round {
border-radius: 1.5rem;
}
.btn, .btn-large, .btn-small {
display: inline-block;
line-height: 3rem;
padding: 0 1.5rem;
background-color: #161616;
color: white;
font-weight: 600;
margin-top: 1.5rem;
text-decoration: none;
cursor: pointer;
transition: background 0.3s ease-out;
font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
text-transform: none;
}
.insidebutton {
color: #161616;
background-color: #fff;
margin-top: 0rem;
display: inline-block;
float: left;
line-height: 2.5rem;
padding: 0 1rem;
border-radius: 2px;
border: solid 1px #161616;
font-weight: 600;
font-size: 0.875rem;
margin-right: 1rem;
transition: opacity 0.3s ease-out;
cursor: pointer;
font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
/*text-transform: none;*/
}
.insidebutton:hover {
background-color: #fff;
}
.switch label .lever {
background-color: #e0e0e0;
}
.switch label input[type=checkbox]:checked+.lever {
background-color: #a6a6a6;
}
.switch label input[type=checkbox]:checked+.lever:after {
background-color: #737373;
}
::placeholder {
font-family: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
font-size: 1rem;
color: #9e9e9e !important;
}
input.valid[type=text]:not(.browser-default) {
border-bottom: 1px solid #9e9e9e;
box-shadow: none;
}
input[type=text]:not(.browser-default).validate + label {
color: #9e9e9e !important;
}
[type="checkbox"].filled-in:checked + span:not(.lever):after {
border: 2px solid #212121;
background-color: #212121;
}
sup {
/* vertical-align: top; */
font-size: 0.6em;
}
.icon-nav {
margin-top: 0.5rem;
margin-left: 0.5rem;
width: 2rem;
height: 2rem;
display: inline-block;
text-align: center;
border-radius: 2px;
cursor: pointer;
}
.whitecjvt {
background-color: #ffffff;
}
h6 {
font-size: 0.875rem;
line-height: 1.125rem;
letter-spacing: 0.16px;
font-weight: 600;
color: #161616;
font-size: 100%;
vertical-align: baseline;
}
h5 {
padding-top: 1.5rem;
color: #b3b3b3;
font-size: 12px;
font-weight: normal;
line-height: 1.33;
letter-spacing: 0.32px;
margin: 0px;
}
.footer-col-content {
position: relative;
margin-left: 1.5rem;
margin-right: 1.5rem;
height: 12rem;
border-left: 1px solid #666666;
color: white;
margin-bottom: 2rem;
}
.page-footer {
bottom: 0; /* Position footer at the bottom */
width: 100%;
height: 230px;
padding-top: 0px;
}
.footer-element {
width: 100%;
border-radius: 2px;
}
.footer-element img, .footer-license {
width: 100%;
object-fit: contain;
position: absolute; /* Add position: absolute */
top: 50%;
transform: translateY(-50%);
cursor: pointer;
padding: 0 1.5em;
font-size: 0.75em;
}
.em-1 {
font-size: 1em;
}
html, body {
min-height: 100vh;
margin: 0;
display: flex;
flex-direction: column;
}
.content {
min-height: 100vh;
}
footer {
margin-top: auto;
}
.margin-top {
margin-top: 22.5px;
}
.insidebutton:focus {
background: #FFFFFF;
}
.ul-footer {
padding: 0 0 !important;
}
.clarin-footer {
padding: 0 4em !important;
}

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 196 196" style="enable-background:new 0 0 196 196;" xml:space="preserve">
<style type="text/css">
.st0{fill:#E12A26;}
.st1{fill:#FFFFFF;}
</style>
<rect class="st0" width="196" height="196"/>
<g id="XMLID_57_">
<path id="XMLID_63_" class="st1" d="M60,104.1c0,9.6-0.5,13.9-3.4,16.9c-2.4,2.4-4.8,3.3-10.1,3.3H28c-5.3,0-7.8-0.8-10.1-3.3
c-3.3-3.4-4.9-8.6-4.9-22s1.5-18.6,4.9-22.1c2.3-2.4,4.8-3.3,10.1-3.3h18.4c5.3,0,7.8,0.8,10.1,3.3c2.8,2.9,3.5,7.1,3.4,16.2H43.4
c-0.2-3.8-0.3-4.7-0.6-5.2c-0.5-0.6-1.3-0.8-3.2-0.8h-4.4c-1.9,0-2.6,0.1-3.2,0.8c-0.5,0.6-0.9,2.2-0.9,11s0.4,10.4,0.9,11
c0.5,0.7,1.3,0.8,3.2,0.8h4.4c1.9,0,2.6-0.2,3.2-0.8c0.5-0.5,0.5-1.5,0.6-5.9H60z"/>
<path id="XMLID_61_" class="st1" d="M69.9,73.7h17.9v51.2c0,7-1.1,9.7-3.3,11.8c-1.9,1.9-4.7,3.3-10.8,3.3c-4.2,0-7.2-0.5-11.3-1.4
v-12.9h3.2c2.3,0,3.2-0.2,3.6-0.6c0.5-0.5,0.7-1.4,0.7-3.4V73.7z"/>
<path id="XMLID_59_" class="st1" d="M133,120.3c-1.1,3.4-2.6,4.2-6.1,4.2h-12.1c-3.4,0-5-0.7-6.1-4.2L93.4,73.7h19.2l8.2,32.5h1
l8.1-32.5h18.4L133,120.3z"/>
<path id="XMLID_58_" class="st1" d="M184,87.1V73.7h-12.1V61h-13l-5.4,16.3v9.8v24.2c0,6.3,0.9,8.7,2.5,10.3
c1.7,1.7,4.4,3.2,10.5,3.2c5.1,0,10-0.6,13-1.4l4.3-1v-11.8h-7.7c-2.3,0-3.2-0.2-3.6-0.6c-0.5-0.5-0.7-1.4-0.7-3.4V87.1H184z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

@ -1 +0,0 @@
<svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><defs><style>.cls-1{fill:none;}</style></defs><title>logo--facebook</title><path d="M26.67,4H5.33A1.34,1.34,0,0,0,4,5.33V26.67A1.34,1.34,0,0,0,5.33,28H16.82V18.72H13.7V15.09h3.12V12.42c0-3.1,1.89-4.79,4.67-4.79.93,0,1.86,0,2.79.14V11H22.37c-1.51,0-1.8.72-1.8,1.77v2.31h3.6l-.47,3.63H20.57V28h6.1A1.34,1.34,0,0,0,28,26.67V5.33A1.34,1.34,0,0,0,26.67,4Z" transform="translate(0 0)"/><rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="32" height="32"/></svg>

Before

Width:  |  Height:  |  Size: 571 B

@ -1 +0,0 @@
<svg id="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><defs><style>.cls-1{fill:none;}</style></defs><title>logo--twitter</title><path d="M11.92,24.94A12.76,12.76,0,0,0,24.76,12.1c0-.2,0-.39,0-.59A9.4,9.4,0,0,0,27,9.18a9.31,9.31,0,0,1-2.59.71,4.56,4.56,0,0,0,2-2.5,8.89,8.89,0,0,1-2.86,1.1,4.52,4.52,0,0,0-7.7,4.11,12.79,12.79,0,0,1-9.3-4.71,4.51,4.51,0,0,0,1.4,6,4.47,4.47,0,0,1-2-.56v.05A4.53,4.53,0,0,0,9.5,17.83a4.53,4.53,0,0,1-2,.08A4.51,4.51,0,0,0,11.68,21,9.05,9.05,0,0,1,6.07,23,9.77,9.77,0,0,1,5,22.91a12.77,12.77,0,0,0,6.92,2" transform="translate(0)"/><rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="32" height="32"/></svg>

Before

Width:  |  Height:  |  Size: 699 B

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="svg5" xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1668.56 1221.19"
style="enable-background:new 0 0 1668.56 1221.19;" xml:space="preserve">
<style type="text/css">
.st0{stroke:#FFFFFF;stroke-miterlimit:10;}
.st1{fill:#FFFFFF;}
</style>
<g>
<circle class="st0" cx="834.28" cy="610.6" r="481.33"/>
<g id="layer1" transform="translate(52.390088,-25.058597)">
<path id="path1009" class="st1" d="M485.39,356.79l230.07,307.62L483.94,914.52h52.11l202.7-218.98l163.77,218.98h177.32
L836.82,589.6l215.5-232.81h-52.11L813.54,558.46L662.71,356.79H485.39z M562.02,395.17h81.46l359.72,480.97h-81.46L562.02,395.17
z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 776 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

@ -1,109 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 191.9 196.1" style="enable-background:new 0 0 191.9 196.1;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<ellipse transform="matrix(0.3827 -0.9239 0.9239 0.3827 -61.9465 97.0506)" class="st0" cx="41.7" cy="94.9" rx="9" ry="9"/>
<circle class="st0" cx="62.3" cy="108.8" r="9"/>
<ellipse transform="matrix(0.9732 -0.2298 0.2298 0.9732 -7.4406 35.7754)" class="st0" cx="149.9" cy="49.8" rx="9" ry="9"/>
<ellipse transform="matrix(0.9871 -0.1602 0.1602 0.9871 -10.0026 24.216)" class="st0" cx="145.2" cy="74.2" rx="9" ry="9"/>
<path class="st0" d="M187.8,98.4c0.8,5.7,0.7,11.5-0.1,17.2c0.9-5.7,1.1-11.5,0.5-17.3c-0.3-2.9-0.8-5.7-1.5-8.5
c-0.7-2.8-1.6-5.6-2.7-8.2c-4.4-10.7-11.8-20.2-21.1-27.2c-0.7-0.5-1.4-1-2.1-1.5c0.3-1,0.4-2,0.4-3.1c0-6.2-5.1-11.3-11.3-11.3
c-0.2,0-0.4,0-0.6,0c-0.8-4.2-2-8.3-3.6-12.3C141.4,15.9,134.2,6.8,125.4,0c8.7,7,15.6,16.2,19.6,26.6c1.5,3.9,2.7,8,3.4,12.1
c-3.4,0.4-6.3,2.4-8.1,5.2c-3.2-0.8-6.5-1.3-9.7-1.6c-11.6-1.1-23.5,1.2-33.9,6.3c-10.5,5.2-19.4,13.3-25.6,23.1
c-1.3,2.1-2.5,4.2-3.6,6.4c-3,1-5.8,2.2-8.6,3.6c-3.2,1.6-6.2,3.5-9,5.5c-2.1-2.2-5-3.6-8.2-3.6c-2.6,0-4.9,0.9-6.8,2.3
c-3.1-4.4-5.6-9.1-7.5-14.1c-3.9-10.4-5.1-21.9-3.2-32.9c-2.1,11-1.2,22.5,2.6,33.1c1.8,5.1,4.4,10,7.5,14.5
c-2.3,2.1-3.8,5-3.8,8.4c0,3.5,1.6,6.6,4,8.6c-4.7,7.2-8,15.4-9.4,23.8c-1.6,9.7-1.1,19.7,1.8,29c-4.9-17.7-1.7-37.2,8.5-52.3
c1.8,1.3,4,2,6.4,2c3.3,0,6.2-1.4,8.3-3.6c0.7,0.5,1.5,1,2.2,1.5c-0.7,1.5-1.1,3.1-1.1,4.8c0,6.2,5.1,11.3,11.3,11.3
c0.2,0,0.4,0,0.5,0c1.4,6.3,3.8,12.3,7.1,17.8c5.9,10,14.5,18.3,24.7,23.7c-10.1-5.6-18.5-14.1-24.1-24c-3.1-5.5-5.4-11.4-6.8-17.6
c4.2-0.5,7.7-3.5,9.1-7.4c0.8,0.2,1.6,0.3,2.3,0.5c0,0.1,0,0.2,0,0.4c0,6.2,5.1,11.3,11.3,11.3c6.2,0,11.3-5.1,11.3-11.3
c0-0.1,0-0.2,0-0.3c0.9-0.2,1.9-0.4,2.8-0.5c1.5,4.4,5.7,7.5,10.6,7.5c6.2,0,11.3-5.1,11.3-11.3c0-1.8-0.4-3.5-1.2-5
c0.7-0.4,1.3-0.9,2-1.3c2.1,2.2,5,3.6,8.2,3.6c3,0,5.8-1.2,7.8-3.1c5,7.1,8.6,15.3,10.3,23.9c1,4.8,1.4,9.6,1.2,14.5
c-0.1,4.9-0.8,9.7-2.1,14.4c2.8-9.4,3.2-19.4,1.5-29.1c-0.8-4.8-2.3-9.5-4.3-14c-1.6-3.7-3.6-7.2-5.9-10.6c1.7-2,2.8-4.5,2.8-7.4
c0-3.3-1.4-6.2-3.7-8.3c0.5-0.7,1-1.5,1.5-2.2c1.4,0.6,3,1,4.6,1c6.2,0,11.3-5.1,11.3-11.3c0-4.9-3.1-9-7.4-10.6
c0.2-0.8,0.3-1.6,0.4-2.4c0.1,0,0.3,0,0.4,0c4.8,0,8.8-3,10.5-7.1c0.6,0.4,1.3,0.9,1.9,1.3c9.2,6.7,16.6,16,21.1,26.5
c1.1,2.6,2,5.4,2.8,8.1C186.9,92.8,187.5,95.6,187.8,98.4z M49.4,102.1c-1.9,2-4.7,3.3-7.7,3.3c-2.2,0-4.3-0.7-6-1.9
c-0.3-0.2-0.6-0.4-0.8-0.6c-2.3-1.9-3.7-4.8-3.7-8c0-3.1,1.3-5.9,3.5-7.8c0.2-0.2,0.5-0.4,0.7-0.6c1.8-1.4,4-2.2,6.4-2.2
c3,0,5.7,1.3,7.7,3.3c0.3,0.3,0.5,0.6,0.8,0.9c1.3,1.8,2.1,4,2.1,6.3c0,2.4-0.8,4.6-2.1,6.3C49.9,101.5,49.6,101.8,49.4,102.1z
M50.7,101.6c1.4-1.9,2.3-4.2,2.3-6.7s-0.8-4.8-2.2-6.7c2.8-2,5.7-3.8,8.8-5.4c2.4-1.2,4.8-2.2,7.3-3.1c-2.5,5.7-4.3,11.7-5,17.9
c-3.8,0.2-7.1,2.3-9,5.4C52,102.5,51.3,102.1,50.7,101.6z M72.6,111.3c-0.1,0.4-0.2,0.8-0.4,1.2c-1.3,3.6-4.6,6.3-8.6,6.8
c-0.3,0-0.6,0.1-0.9,0.1c-0.1,0-0.2,0-0.4,0c-5.8,0-10.6-4.7-10.6-10.6c0-1.6,0.3-3.1,1-4.4c0.2-0.4,0.3-0.7,0.6-1.1
c1.7-2.8,4.8-4.8,8.3-5c0.2,0,0.5,0,0.7,0c0.1,0,0.3,0,0.5,0c5.6,0.2,10.1,4.9,10.1,10.5C72.9,109.7,72.8,110.5,72.6,111.3z
M86.5,124c-5.8,0-10.6-4.7-10.6-10.6c0-0.1,0-0.2,0-0.2c0-0.4,0.1-0.9,0.1-1.3c0.7-5.1,5.1-9,10.4-9c5.3,0,9.7,3.9,10.4,9
c0.1,0.5,0.1,0.9,0.1,1.4c0,0.1,0,0.1,0,0.2C97.1,119.3,92.4,124,86.5,124z M121.8,108.8c0,5.8-4.7,10.6-10.6,10.6
c-4.6,0-8.5-2.9-9.9-7c-0.2-0.4-0.3-0.9-0.4-1.3c-0.2-0.7-0.2-1.5-0.2-2.3c0-5.8,4.7-10.6,10.6-10.6c3.7,0,7,1.9,8.8,4.8
c0.2,0.4,0.5,0.8,0.7,1.2C121.4,105.6,121.8,107.2,121.8,108.8z M120.6,102.7c-2-3.1-5.5-5.1-9.4-5.1c-6.2,0-11.3,5.1-11.3,11.3
c0,0.8,0.1,1.6,0.3,2.4c-0.8,0.2-1.7,0.4-2.5,0.5c-0.8-5.4-5.5-9.6-11.1-9.6c-5.7,0-10.3,4.2-11.1,9.6c-0.7-0.1-1.4-0.2-2.1-0.4
c0.2-0.8,0.3-1.7,0.3-2.6c0-6-4.8-11-10.7-11.2c0.9-6.4,2.7-12.6,5.5-18.4c6.1-2,12.6-3,19-3c9.6,0,19.3,2.1,28,6.4
c2.7,1.3,5.4,2.9,7.9,4.6c-1.9,2-3,4.7-3,7.7c0,2.5,0.8,4.8,2.2,6.6C121.8,101.9,121.2,102.3,120.6,102.7z M142.1,94.9
c0,2.6-0.9,4.9-2.5,6.8c-0.2,0.3-0.5,0.6-0.7,0.8c-1.9,1.8-4.5,3-7.4,3c-3,0-5.7-1.3-7.7-3.3c-0.3-0.3-0.6-0.7-0.9-1
c-1.3-1.7-2-3.9-2-6.2c0-2.8,1.1-5.4,2.9-7.3c0.3-0.3,0.6-0.6,0.9-0.9c1.8-1.5,4.2-2.4,6.7-2.4c2.3,0,4.5,0.8,6.2,2
c0.3,0.2,0.7,0.5,1,0.8C140.8,89.1,142.1,91.8,142.1,94.9z M138.1,85.8c-1.9-1.4-4.1-2.2-6.6-2.2c-2.8,0-5.4,1-7.3,2.7
c-2.6-1.8-5.4-3.5-8.2-4.9c-8.8-4.4-18.7-6.7-28.6-6.6c-6.2,0-12.3,1-18.2,2.7c0.9-1.8,1.9-3.5,3-5.2c6.1-9.6,14.9-17.5,25.2-22.5
c10.2-5.1,21.8-7.3,33.2-6.3c3.1,0.3,6.2,0.8,9.2,1.5c-0.7,1.5-1.1,3.1-1.1,4.9c0,5.7,4.3,10.4,9.8,11.2c-0.1,0.7-0.3,1.4-0.4,2.1
c-0.9-0.2-1.8-0.4-2.8-0.4c-6.2,0-11.3,5.1-11.3,11.3c0,4.1,2.2,7.7,5.5,9.7C139,84.4,138.6,85.1,138.1,85.8z M155.8,74.1
c0,5.8-4.7,10.6-10.6,10.6c-1.5,0-2.9-0.3-4.2-0.9c-0.4-0.2-0.8-0.4-1.1-0.6c-3.1-1.8-5.2-5.2-5.2-9.1c0-5.8,4.7-10.6,10.6-10.6
c0.9,0,1.8,0.1,2.6,0.3c0.4,0.1,0.7,0.2,1.1,0.3C152.9,65.7,155.8,69.5,155.8,74.1z M160.1,52.5c-0.1,0.4-0.2,0.8-0.4,1.1
c-1.5,4-5.4,6.8-9.9,6.8c-0.1,0-0.2,0-0.3,0c-0.4,0-0.7,0-1.1-0.1c-5.2-0.7-9.2-5.1-9.2-10.5c0-1.7,0.4-3.3,1.1-4.7
c0.2-0.4,0.4-0.8,0.6-1.1c1.7-2.5,4.3-4.2,7.5-4.7c0.3,0,0.6-0.1,0.9-0.1c0.2,0,0.3,0,0.5,0c5.8,0,10.6,4.7,10.6,10.6
C160.5,50.8,160.4,51.7,160.1,52.5z"/>
<circle class="st0" cx="131.5" cy="94.8" r="9"/>
<path class="st0" d="M86.5,104.4c-4.9,0-9,4-9,9s4,9,9,9s9-4,9-9S91.5,104.4,86.5,104.4z"/>
<path class="st0" d="M111.2,99.7c-4.9,0-9,4-9,9s4,9,9,9s9-4,9-9S116.1,99.7,111.2,99.7z"/>
<path class="st0" d="M18.6,188c0,0.1,0.1,0.2,0.1,0.3c0,0.1,0.1,0.2,0.1,0.3c0,0.3-0.3,0.5-0.8,0.8c-0.5,0.2-1.1,0.5-1.8,0.7
c-0.7,0.2-1.4,0.4-2.1,0.5c-0.7,0.1-1.2,0.2-1.5,0.2c-0.7,0-1.5-0.1-2.3-0.3c-0.8-0.2-1.6-0.5-2.2-0.8c-0.7-0.4-1.2-0.9-1.7-1.6
c-0.4-0.7-0.6-1.4-0.6-2.4c0-0.9,0.2-1.7,0.6-2.4c0.4-0.6,1-1.2,1.7-1.6c0.7-0.4,1.4-0.7,2.2-0.8c0.8-0.2,1.6-0.3,2.3-0.3
c0.8,0,1.5,0.1,2.2,0.2c0.7,0.1,1.3,0.2,1.9,0.4c0.6,0.2,1,0.3,1.3,0.5c0.3,0.2,0.5,0.4,0.5,0.6c0,0.1,0,0.2,0,0.3
c0,0.1,0,0.2-0.1,0.2l0.4,0.3l3.3-6.1l-0.4-0.1c-0.1,0.2-0.3,0.3-0.6,0.3c-0.2,0-0.5-0.1-0.9-0.2c-0.4-0.1-0.9-0.3-1.7-0.5
c-0.7-0.2-1.6-0.4-2.7-0.5c-1.1-0.2-2.3-0.2-3.8-0.2c-1.5,0-2.9,0.2-4.4,0.6c-1.4,0.4-2.7,1-3.9,1.9c-1.2,0.8-2.1,1.9-2.8,3.1
c-0.7,1.2-1.1,2.7-1.1,4.3c0,1.6,0.4,3.1,1.1,4.3c0.7,1.2,1.6,2.3,2.8,3.1c1.2,0.8,2.5,1.4,3.9,1.8c1.4,0.4,2.9,0.6,4.4,0.6
c1.4,0,2.6-0.1,3.7-0.3c1.1-0.2,2.1-0.4,2.9-0.6c0.8-0.2,1.5-0.5,2-0.7c0.5-0.2,0.9-0.3,1-0.3c0.1,0,0.2,0,0.3,0.1
c0.1,0,0.2,0.1,0.2,0.2l0.4-0.3l-3.8-5.8L18.6,188z"/>
<path class="st0" d="M47.1,190.5c-0.1,0.1-0.2,0.2-0.4,0.2H34V177c0-0.2,0.1-0.3,0.2-0.4c0.1-0.1,0.4-0.2,0.9-0.2v-0.4h-7.6v0.4
c0.5,0,0.8,0.1,0.9,0.2c0.1,0.1,0.2,0.3,0.2,0.4v17.2c0,0.2-0.1,0.3-0.2,0.4c-0.1,0.1-0.4,0.2-0.9,0.2v0.4h19.2
c0.2,0,0.3,0,0.4,0.1c0.1,0.1,0.2,0.3,0.2,0.7h0.4v-6.4h-0.4C47.3,190.1,47.2,190.4,47.1,190.5z"/>
<path class="st0" d="M73.1,193.7c-0.4-0.9-0.8-2-1.3-3.2c-0.5-1.2-1-2.4-1.5-3.6c-0.5-1.2-1-2.5-1.5-3.6c-0.5-1.2-0.9-2.3-1.3-3.2
c-0.4-0.9-0.7-1.7-0.9-2.3c-0.2-0.6-0.3-0.9-0.3-1c0-0.2,0.1-0.3,0.2-0.4c0.1,0,0.3-0.1,0.5-0.1v-0.4h-9.6v0.4
c0.2,0,0.3,0.1,0.5,0.1c0.2,0,0.2,0.1,0.2,0.3c0,0-0.1,0.3-0.3,0.8c-0.2,0.5-0.4,1.1-0.7,1.9c-0.3,0.8-0.6,1.7-1,2.7
c-0.4,1-0.8,2-1.2,3.1c-0.4,1-0.8,2.1-1.2,3.1c-0.4,1-0.7,1.9-1.1,2.7c-0.3,0.8-0.6,1.5-0.8,2c-0.2,0.5-0.3,0.9-0.4,1
c-0.1,0.3-0.2,0.5-0.4,0.6c-0.1,0.1-0.3,0.2-0.6,0.2v0.4H57v-0.4c-0.3,0-0.4,0-0.5-0.1c-0.1-0.1-0.1-0.2-0.1-0.3c0,0,0-0.1,0.1-0.2
c0-0.1,0.1-0.3,0.2-0.5c0.1-0.2,0.2-0.6,0.3-1c0.1-0.4,0.3-1,0.6-1.6h8.7c0,0.1,0.1,0.4,0.2,0.7c0.1,0.3,0.3,0.7,0.4,1.1
c0.1,0.4,0.3,0.7,0.4,1c0.1,0.3,0.2,0.5,0.2,0.5c0,0.3-0.2,0.4-0.7,0.4v0.4h7.3v-0.4c-0.2,0-0.4-0.1-0.5-0.2
C73.4,194.4,73.2,194.1,73.1,193.7z M58.5,188.1l3.3-8.8l3.6,8.8H58.5z"/>
<path class="st0" d="M98.9,194.1l-4.3-6.1c1.5-0.4,2.8-1.1,3.8-2.1c1-1,1.5-2.3,1.5-4c0-2.1-0.6-3.6-1.8-4.6
c-1.2-1-3.2-1.5-5.9-1.5H78.6v0.4c0.5,0,0.8,0.1,0.9,0.2c0.1,0.1,0.2,0.3,0.2,0.4v17.2c0,0.2-0.1,0.3-0.2,0.4
c-0.1,0.1-0.4,0.2-0.9,0.2v0.4h7.6v-0.4c-0.5,0-0.8-0.1-0.9-0.2c-0.1-0.1-0.2-0.3-0.2-0.4v-6.2h3.6c0.1,0.1,0.2,0.4,0.5,0.7
c0.2,0.3,0.5,0.7,0.9,1.2c0.3,0.4,0.7,0.9,1,1.4c0.4,0.5,0.7,0.9,1,1.3c0.3,0.4,0.5,0.8,0.7,1.1c0.2,0.3,0.3,0.5,0.3,0.5
c0,0.4-0.3,0.6-0.8,0.7v0.4h7.7v-0.4C99.5,194.8,99.2,194.6,98.9,194.1z M93.5,183.4c-0.4,0.4-1.1,0.6-2.2,0.6h-6.2v-4h6.2
c1.1,0,1.8,0.2,2.2,0.6c0.4,0.4,0.6,0.9,0.6,1.4C94.1,182.5,93.9,183,93.5,183.4z"/>
<path class="st0" d="M105.6,176.3c0.5,0,0.8,0.1,0.9,0.2c0.1,0.1,0.2,0.3,0.2,0.4v17.2c0,0.2-0.1,0.3-0.2,0.4
c-0.1,0.1-0.4,0.2-0.9,0.2v0.4h7.6v-0.4c-0.5,0-0.8-0.1-0.9-0.2c-0.1-0.1-0.2-0.3-0.2-0.4V177c0-0.2,0.1-0.3,0.2-0.4
c0.1-0.1,0.4-0.2,0.9-0.2v-0.4h-7.6V176.3z"/>
<path class="st0" d="M135.5,176.3c0.5,0,0.8,0.2,0.8,0.7v9.8c-0.4-0.5-1-1-1.6-1.7c-0.6-0.6-1.3-1.3-1.9-2.1
c-0.7-0.7-1.3-1.4-2-2.2c-0.7-0.7-1.2-1.4-1.7-2c-0.5-0.6-0.9-1.1-1.3-1.5c-0.3-0.4-0.5-0.6-0.5-0.7c0-0.1,0.1-0.2,0.2-0.3
c0.1-0.1,0.4-0.1,0.8-0.2v-0.4h-8.9v0.4c0.5,0,0.8,0.1,0.9,0.2c0.1,0.1,0.2,0.3,0.2,0.4v17.2c0,0.2-0.1,0.3-0.2,0.4
c-0.1,0.1-0.4,0.2-0.9,0.2v0.4h7v-0.4c-0.5,0-0.8-0.1-0.9-0.2c-0.1-0.1-0.2-0.3-0.2-0.4v-11.6c1.6,1.8,3,3.4,4.2,4.6
c1.2,1.3,2.1,2.3,2.9,3.2c0.8,0.8,1.4,1.5,1.9,2c0.5,0.5,0.8,0.9,1.1,1.2c0.2,0.3,0.4,0.5,0.5,0.6c0.1,0.1,0.1,0.2,0.1,0.3
c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.3,0.1-0.7,0.1v0.4h7v-0.4c-0.5,0-0.8-0.1-0.9-0.2c-0.1-0.1-0.2-0.3-0.2-0.4V177
c0-0.2,0.1-0.3,0.2-0.4c0.1-0.1,0.4-0.2,0.9-0.2v-0.4h-6.7V176.3z"/>
<path class="st0" d="M150.8,189.6c-0.8,0-1.5,0.3-2,0.9c-0.6,0.6-0.9,1.3-0.9,2c0,0.8,0.3,1.4,0.9,2c0.6,0.5,1.3,0.8,2,0.8
c0.8,0,1.5-0.3,2-0.8c0.6-0.5,0.9-1.2,0.9-2c0-0.8-0.3-1.5-0.9-2C152.2,189.9,151.6,189.6,150.8,189.6z"/>
<path class="st0" d="M176.8,184.5c-0.7-0.4-1.5-0.8-2.4-1c-0.9-0.2-1.8-0.4-2.8-0.5c-1-0.1-1.9-0.2-2.8-0.3
c-0.9-0.1-1.7-0.1-2.4-0.2c-0.7-0.1-1.3-0.3-1.7-0.5c-0.4-0.2-0.7-0.5-0.7-0.9c0-0.4,0.3-0.8,1-1.2c0.6-0.4,1.8-0.6,3.4-0.6
c0.9,0,1.7,0.1,2.7,0.2c0.9,0.1,1.7,0.3,2.5,0.5c0.7,0.2,1.3,0.4,1.8,0.6c0.5,0.2,0.7,0.5,0.7,0.7v0.4l0.4,0.2l2.5-5.1l-0.4-0.1
c-0.1,0.1-0.3,0.3-0.4,0.4c-0.1,0.1-0.3,0.2-0.6,0.2c-0.2,0-0.7-0.1-1.2-0.2c-0.6-0.2-1.3-0.3-2.1-0.5c-0.8-0.2-1.8-0.4-2.9-0.5
c-1.1-0.2-2.2-0.2-3.5-0.2c-1.4,0-2.6,0.2-3.7,0.5c-1.1,0.3-2,0.7-2.8,1.3c-0.8,0.5-1.4,1.2-1.8,2c-0.4,0.8-0.6,1.6-0.6,2.5
c0,1.2,0.4,2.1,1.1,2.8c0.7,0.7,1.7,1.2,2.8,1.5c1.1,0.4,2.3,0.6,3.6,0.7c1.3,0.1,2.5,0.3,3.6,0.4c1.1,0.1,2.1,0.3,2.8,0.4
c0.7,0.2,1.1,0.5,1.1,0.9c0,0.8-0.4,1.4-1.3,1.9c-0.9,0.4-2.2,0.6-4.1,0.6c-1,0-1.9-0.1-2.8-0.3c-0.9-0.2-1.8-0.4-2.5-0.7
c-0.7-0.3-1.3-0.6-1.8-0.9c-0.5-0.3-0.7-0.6-0.7-0.8c0-0.4,0-0.6,0.1-0.8l-0.4-0.2l-2.7,6.6l0.4,0.1c0.1-0.1,0.2-0.2,0.3-0.3
c0.1-0.1,0.2-0.1,0.4-0.1c0.2,0,0.6,0.1,1,0.3c0.5,0.2,1.1,0.4,1.9,0.6c0.8,0.2,1.7,0.4,2.9,0.5c1.1,0.1,2.4,0.2,4,0.2
c2,0,3.7-0.2,5-0.6c1.3-0.4,2.4-0.9,3.2-1.5c0.8-0.6,1.4-1.3,1.7-2.1c0.3-0.8,0.5-1.6,0.5-2.4c0-1.1-0.2-1.9-0.7-2.6
C178.1,185.5,177.5,184.9,176.8,184.5z"/>
<path class="st0" d="M191,176.5c0.1-0.1,0.4-0.2,0.9-0.2v-0.4h-7.6v0.4c0.5,0,0.8,0.1,0.9,0.2c0.1,0.1,0.2,0.3,0.2,0.4v17.2
c0,0.2-0.1,0.3-0.2,0.4c-0.1,0.1-0.4,0.2-0.9,0.2v0.4h7.6v-0.4c-0.5,0-0.8-0.1-0.9-0.2c-0.1-0.1-0.2-0.3-0.2-0.4V177
C190.9,176.8,190.9,176.7,191,176.5z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@ -1,23 +0,0 @@
$(document).ready(function(){
$("#facebook_link").click(function(){
window.open("https://www.facebook.com/", "_blank");
});
$("#twitter_x_link").click(function(){
window.open("https://twitter.com/", "_blank");
});
$("#ul_link").click(function(){
window.open("https://www.uni-lj.si/", "_blank");
});
$("#aris_link").click(function(){
window.open("https://www.arrs.si/", "_blank");
});
$("#cjvt_link").click(function(){
window.open("https://www.cjvt.si/", "_blank");
});
$("#clarin_link").click(function(){
window.open("https://www.clarin.si/", "_blank");
});
$("#apache_link").click(function(){
window.open("https://www.apache.org/licenses/LICENSE-2.0", "_blank");
});
});

@ -1,183 +0,0 @@
// Global array to store input names
var globalInputList = ['tree_size_min', 'tree_size_max', 'file', 'association_measures', 'labeled_trees', 'node_type_upos', 'fixed_order', 'input_url', 'node_type_lemma', 'root_restriction', 'node_type_form', 'frequency_threshold', 'query', 'compare_url', 'compare_file'];
// Function to store values to local storage
function storeValuesToLocalstorage() {
globalInputList.forEach(function(inputName) {
var inputElement = $('[name="' + inputName + '"]');
if (inputElement.length > 0) {
var inputType = inputElement.attr('type');
if (inputType === 'text' | inputType === 'hidden') {
localStorage.setItem(inputName, inputElement.val());
} else if (inputType === 'checkbox') {
localStorage.setItem(inputName, inputElement.prop('checked'));
}
}
});
}
// Function to read values from local storage
function readValuesFromLocalstorage() {
globalInputList.forEach(function(inputName) {
var inputElement = $('[name="' + inputName + '"]');
if (inputElement.length > 0) {
var inputType = inputElement.attr('type');
if (inputType === 'text') {
var text_val = localStorage.getItem(inputName);
if (text_val !== '' & text_val !== null) {
// set label to active
$("label[for='" + inputElement.attr('id') + "']").addClass('active');
}
if (inputName === 'frequency_threshold' && text_val === null) {
text_val = '1'
}
inputElement.val(text_val);
} else if (inputType === 'checkbox') {
var check_value = localStorage.getItem(inputName);
if (check_value !== null) {
inputElement.prop('checked', check_value === 'true');
}
}
}
});
var tree_size_min = localStorage.getItem('tree_size_min') !== null ? localStorage.getItem('tree_size_min') : 2;
var tree_size_max = localStorage.getItem('tree_size_max') !== null ? localStorage.getItem('tree_size_max') : 3;
return [tree_size_min, tree_size_max]
}
document.addEventListener("DOMContentLoaded", function(event) {
tree_size = readValuesFromLocalstorage()
var valuesForSlider = [1,2,3,4,5];
var format = {
to: function(value) {
return valuesForSlider[Math.round(value)];
},
from: function (value) {
return valuesForSlider.indexOf(Number(value));
}
};
var slider = document.getElementById('slider');
noUiSlider.create(slider, {
start: [tree_size[0], tree_size[1]],
connect: true,
tooltips: true,
step: 1,
range: {
'min': 0,
'max': valuesForSlider.length - 1
},
format: format
});
var urlParams = new URLSearchParams(window.location.search);
var lang='en'
if (urlParams.has('lang')) {
lang=urlParams.get('lang');
}
var perfEntries = performance.getEntriesByType("navigation");
for (var i = 0; i < perfEntries.length; i++) {
if (perfEntries[i].type === 'back_forward') {
window.location.href = '/stark/?lang='+lang;
return;
}
}
if (urlParams.has('reload')) {
localStorage.clear();
window.location.href = '/stark/?lang='+lang;
}
});
(function($){
$(function(){
$('.sidenav').sidenav();
});
$(document).ready(function(){
$('.modal').modal();
$('.input-field input[type="checkbox"]').on('change', function() {
var isChecked = $('.input-field input[type="checkbox"]:checked').length > 0;
$('#node-type-error').hide();
});
$('#submit-form input').on('change', function() {
$('#unknown-error').hide();
});
$('#advanced-tree').hide();
var advancedTreeExpanded = false;
$('#advanced-tree-expand').bind('click', function(e) {
if (!advancedTreeExpanded){
advancedTreeExpanded = true;
$('#advanced-tree').show('fast');
$('#advanced-tree-expand i').text('remove');
} else {
advancedTreeExpanded = false;
$('#advanced-tree').hide('fast');
$('#advanced-tree-expand i').text('add');
}
});
$('#compare-settings').hide();
var compareExpanded = false;
$('#compare-expand').bind('click', function(e) {
if (!compareExpanded){
compareExpanded = true;
$('#compare-settings').show('fast');
$('#compare-expand i').text('remove');
} else {
compareExpanded = false;
$('#compare-settings').hide('fast');
$('#compare-expand i').text('add');
}
});
});
$("#submit-form").submit( function(eventObj) {
var spans = $(".noUi-tooltip").find('span');
var tree_size_min = spans[0].innerText;
var tree_size_max = spans[1].innerText;
console.log('amm');
$("<input />").attr("type", "hidden")
.attr("name", "tree_size_min")
.attr("value", tree_size_min)
.appendTo("#submit-form");
$("<input />").attr("type", "hidden")
.attr("name", "tree_size_max")
.attr("value", tree_size_max)
.appendTo("#submit-form");
storeValuesToLocalstorage();
return true;
});
$("#switch-language").click(function(e) {
var spans = $(".noUi-tooltip").find('span');
var tree_size_min = spans[0].innerText;
var tree_size_max = spans[1].innerText;
console.log('amm');
$("<input />").attr("type", "hidden")
.attr("name", "tree_size_min")
.attr("value", tree_size_min)
.appendTo("#submit-form");
$("<input />").attr("type", "hidden")
.attr("name", "tree_size_max")
.attr("value", tree_size_max)
.appendTo("#submit-form");
storeValuesToLocalstorage();
return true;
});
})(jQuery);

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -1,52 +0,0 @@
function addOrUpdateUrlParameter(url, key, value) {
var urlObject = new URL(url);
urlObject.searchParams.set(key, value);
return urlObject.href;
}
function getUrlParameters() {
var searchParams = new URLSearchParams(window.location.search);
var params = {};
// Iterate over each parameter and add to the 'params' object
searchParams.forEach(function(value, key) {
params[key] = value;
});
return params;
}
$(document).ready(function() {
var params = getUrlParameters();
// Make table rows clickable
$(".table-wrapper tbody tr").click(function() {
var url = $(this).data("href");
if (url) {
window.open(url, '_blank');
}
});
$(".th-desc").hide();
$(".th-asc").hide();
if ('order_by' in params) {
if ('order_type' in params && params.order_type == 'desc') {
$('th:contains(' + params.order_by + ') .th-desc').show();
} else {
$('th:contains(' + params.order_by + ') .th-asc').show();
}
}
// Make table rows clickable
$(".table-wrapper thead th").click(function(e) {
var column_name = $(this).find('span:first').text();
var newUrl = addOrUpdateUrlParameter(window.location.href, 'order_by', column_name);
if ('order_by' in params && 'order_type' in params && params.order_by == column_name && params.order_type == 'desc') {
newUrl = addOrUpdateUrlParameter(newUrl, 'order_type', 'asc');
} else {
newUrl = addOrUpdateUrlParameter(newUrl, 'order_type', 'desc');
}
// Redirect to the modified URL
window.location.href = newUrl;
});
});

@ -1,381 +0,0 @@
(function(factory) {
if (typeof define === "function" && define.amd) {
// AMD. Register as an anonymous module.
define([], factory);
} else if (typeof exports === "object") {
// Node/CommonJS
module.exports = factory();
} else {
// Browser globals
window.wNumb = factory();
}
})(function() {
"use strict";
var FormatOptions = [
"decimals",
"thousand",
"mark",
"prefix",
"suffix",
"encoder",
"decoder",
"negativeBefore",
"negative",
"edit",
"undo"
];
// General
// Reverse a string
function strReverse(a) {
return a
.split("")
.reverse()
.join("");
}
// Check if a string starts with a specified prefix.
function strStartsWith(input, match) {
return input.substring(0, match.length) === match;
}
// Check is a string ends in a specified suffix.
function strEndsWith(input, match) {
return input.slice(-1 * match.length) === match;
}
// Throw an error if formatting options are incompatible.
function throwEqualError(F, a, b) {
if ((F[a] || F[b]) && F[a] === F[b]) {
throw new Error(a);
}
}
// Check if a number is finite and not NaN
function isValidNumber(input) {
return typeof input === "number" && isFinite(input);
}
// Provide rounding-accurate toFixed method.
// Borrowed: http://stackoverflow.com/a/21323330/775265
function toFixed(value, exp) {
value = value.toString().split("e");
value = Math.round(+(value[0] + "e" + (value[1] ? +value[1] + exp : exp)));
value = value.toString().split("e");
return (+(value[0] + "e" + (value[1] ? +value[1] - exp : -exp))).toFixed(exp);
}
// Formatting
// Accept a number as input, output formatted string.
function formatTo(
decimals,
thousand,
mark,
prefix,
suffix,
encoder,
decoder,
negativeBefore,
negative,
edit,
undo,
input
) {
var originalInput = input,
inputIsNegative,
inputPieces,
inputBase,
inputDecimals = "",
output = "";
// Apply user encoder to the input.
// Expected outcome: number.
if (encoder) {
input = encoder(input);
}
// Stop if no valid number was provided, the number is infinite or NaN.
if (!isValidNumber(input)) {
return false;
}
// Rounding away decimals might cause a value of -0
// when using very small ranges. Remove those cases.
if (decimals !== false && parseFloat(input.toFixed(decimals)) === 0) {
input = 0;
}
// Formatting is done on absolute numbers,
// decorated by an optional negative symbol.
if (input < 0) {
inputIsNegative = true;
input = Math.abs(input);
}
// Reduce the number of decimals to the specified option.
if (decimals !== false) {
input = toFixed(input, decimals);
}
// Transform the number into a string, so it can be split.
input = input.toString();
// Break the number on the decimal separator.
if (input.indexOf(".") !== -1) {
inputPieces = input.split(".");
inputBase = inputPieces[0];
if (mark) {
inputDecimals = mark + inputPieces[1];
}
} else {
// If it isn't split, the entire number will do.
inputBase = input;
}
// Group numbers in sets of three.
if (thousand) {
inputBase = strReverse(inputBase).match(/.{1,3}/g);
inputBase = strReverse(inputBase.join(strReverse(thousand)));
}
// If the number is negative, prefix with negation symbol.
if (inputIsNegative && negativeBefore) {
output += negativeBefore;
}
// Prefix the number
if (prefix) {
output += prefix;
}
// Normal negative option comes after the prefix. Defaults to '-'.
if (inputIsNegative && negative) {
output += negative;
}
// Append the actual number.
output += inputBase;
output += inputDecimals;
// Apply the suffix.
if (suffix) {
output += suffix;
}
// Run the output through a user-specified post-formatter.
if (edit) {
output = edit(output, originalInput);
}
// All done.
return output;
}
// Accept a sting as input, output decoded number.
function formatFrom(
decimals,
thousand,
mark,
prefix,
suffix,
encoder,
decoder,
negativeBefore,
negative,
edit,
undo,
input
) {
var originalInput = input,
inputIsNegative,
output = "";
// User defined pre-decoder. Result must be a non empty string.
if (undo) {
input = undo(input);
}
// Test the input. Can't be empty.
if (!input || typeof input !== "string") {
return false;
}
// If the string starts with the negativeBefore value: remove it.
// Remember is was there, the number is negative.
if (negativeBefore && strStartsWith(input, negativeBefore)) {
input = input.replace(negativeBefore, "");
inputIsNegative = true;
}
// Repeat the same procedure for the prefix.
if (prefix && strStartsWith(input, prefix)) {
input = input.replace(prefix, "");
}
// And again for negative.
if (negative && strStartsWith(input, negative)) {
input = input.replace(negative, "");
inputIsNegative = true;
}
// Remove the suffix.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
if (suffix && strEndsWith(input, suffix)) {
input = input.slice(0, -1 * suffix.length);
}
// Remove the thousand grouping.
if (thousand) {
input = input.split(thousand).join("");
}
// Set the decimal separator back to period.
if (mark) {
input = input.replace(mark, ".");
}
// Prepend the negative symbol.
if (inputIsNegative) {
output += "-";
}
// Add the number
output += input;
// Trim all non-numeric characters (allow '.' and '-');
output = output.replace(/[^0-9\.\-.]/g, "");
// The value contains no parse-able number.
if (output === "") {
return false;
}
// Covert to number.
output = Number(output);
// Run the user-specified post-decoder.
if (decoder) {
output = decoder(output);
}
// Check is the output is valid, otherwise: return false.
if (!isValidNumber(output)) {
return false;
}
return output;
}
// Framework
// Validate formatting options
function validate(inputOptions) {
var i,
optionName,
optionValue,
filteredOptions = {};
if (inputOptions["suffix"] === undefined) {
inputOptions["suffix"] = inputOptions["postfix"];
}
for (i = 0; i < FormatOptions.length; i += 1) {
optionName = FormatOptions[i];
optionValue = inputOptions[optionName];
if (optionValue === undefined) {
// Only default if negativeBefore isn't set.
if (optionName === "negative" && !filteredOptions.negativeBefore) {
filteredOptions[optionName] = "-";
// Don't set a default for mark when 'thousand' is set.
} else if (optionName === "mark" && filteredOptions.thousand !== ".") {
filteredOptions[optionName] = ".";
} else {
filteredOptions[optionName] = false;
}
// Floating points in JS are stable up to 7 decimals.
} else if (optionName === "decimals") {
if (optionValue >= 0 && optionValue < 8) {
filteredOptions[optionName] = optionValue;
} else {
throw new Error(optionName);
}
// These options, when provided, must be functions.
} else if (
optionName === "encoder" ||
optionName === "decoder" ||
optionName === "edit" ||
optionName === "undo"
) {
if (typeof optionValue === "function") {
filteredOptions[optionName] = optionValue;
} else {
throw new Error(optionName);
}
// Other options are strings.
} else {
if (typeof optionValue === "string") {
filteredOptions[optionName] = optionValue;
} else {
throw new Error(optionName);
}
}
}
// Some values can't be extracted from a
// string if certain combinations are present.
throwEqualError(filteredOptions, "mark", "thousand");
throwEqualError(filteredOptions, "prefix", "negative");
throwEqualError(filteredOptions, "prefix", "negativeBefore");
return filteredOptions;
}
// Pass all options as function arguments
function passAll(options, method, input) {
var i,
args = [];
// Add all options in order of FormatOptions
for (i = 0; i < FormatOptions.length; i += 1) {
args.push(options[FormatOptions[i]]);
}
// Append the input, then call the method, presenting all
// options as arguments.
args.push(input);
return method.apply("", args);
}
function wNumb(options) {
if (!(this instanceof wNumb)) {
return new wNumb(options);
}
if (typeof options !== "object") {
return;
}
options = validate(options);
// Call 'formatTo' with proper arguments.
this.to = function(input) {
return passAll(options, formatTo, input);
};
// Call 'formatFrom' with proper arguments.
this.from = function(input) {
return passAll(options, formatFrom, input);
};
}
return wNumb;
});

@ -1,26 +0,0 @@
{% extends "base.html" %}
{% block content %}
<div class="container narrower-container">
<br>
<div class="row">
<div class="col s12">
<h6>{{ _('About') }}</h6>
<div class="card">
<div class="card-content">
<a target="_blank" href="https://github.com/clarinsi/STARK">STARK</a> {{ _('stark_description') }}
<br>
<br>
{{ _('stark_goal1') }}<a target="_blank" href="https://universaldependencies.org/">Universal Dependencies</a>{{ _('stark_goal2') }}<a target="_blank" href="https://github.com/clarinsi/STARK/blob/master/settings.md">{{ _('user-defined parameters') }}</a>{{ _('stark_goal3') }}
<br>
<br>
{{ _('stark_credits') }}<a target="_blank" href="https://spot.ff.uni-lj.si/">{{ _('SPOT: A Treebank-Driven Approach to the Study of Spoken Slovenian') }}</a>{{ _('stark_credits2') }}<a target="_blank" href="https://github.com/clarinsi/STARK">https://github.com/clarinsi/STARK</a>{{ _('stark_credits3') }}
<br>
<br>
{{ _('stark_contact') }}
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block custom_js %}{% endblock %}

@ -1,81 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0"/>
<title>STARK</title>
<!-- CSS -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;600;700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:wght@400;600;700" rel="stylesheet">
<link href="/stark/static/css/materialize.css" type="text/css" rel="stylesheet" media="screen,projection"/>
<link href="/stark/static/css/nouislider.css" type="text/css" rel="stylesheet" media="screen,projection"/>
<link href="/stark/static/css/style.css" type="text/css" rel="stylesheet" media="screen,projection"/>
<link rel="icon" type="image/svg+xml" href="/stark/static/favicon/favicon.svg">
</head>
<body class="backgroundcolorcjvt">
<nav class="redcjvt" role="navigation">
<div class="nav-wrapper container"><a id="logo-container" href="{{url_for('index')}}?lang={{ _('code') }}&reload=true" class="brand-logo"><b>STARK</b><sup>demo</sup></a>
<ul id="nav-mobile" class="right hide-on-med-and-down">
<li><a href="{{url_for('about')}}?lang={{ _('code') }}">{{ _('About') }}</a></li>
<li><a id="switch-language" href="{{ _('switch_link') }}">
{{ _('switch_code') }}
</a></li>
</ul>
</div>
</nav>
<nav class="whitecjvt" role="navigation">
<!-- <div class="nav-wrapper container">-->
<!-- <ul class="right hide-on-med-and-down">-->
<!-- <li><div id="facebook_link" class="icon-nav"><img src="/stark/static/icons/logo&#45;&#45;facebook.svg" ></div></li>-->
<!-- <li><div id="twitter_x_link" class="icon-nav"><img src="/stark/static/icons/logo&#45;&#45;twitter.svg" ></div></li>-->
<!-- </ul>-->
<!-- </div>-->
</nav>
{% block content %}{% endblock %}
<footer class="page-footer blackcjvt">
<div class="container">
<div class="row">
<div class="col s2 footer-col-content">
<h5>{{ _('Issuer') }}</h5>
<div id="ul_link" class="footer-element"><img class="ul-footer" src="/stark/static/images/ul.png" ></div>
</div>
<div class="col s2 footer-col-content">
<h5>{{ _('Financial support') }}</h5>
<div id="aris_link" class="footer-element"><img src="/stark/static/images/aris.jpg" ></div>
</div>
<div class="col s2 footer-col-content">
<h5>{{ _('Transfer tool') }}</h5>
<div id="clarin_link" class="footer-element"><img class="clarin-footer" src="/stark/static/images/clarin.svg" ></div>
</div>
<div class="col s2 footer-col-content">
<h5>{{ _('License') }}</h5>
<div id="apache_link"><div class="footer-license">STARK is openly available under Apache License 2.0.</div></div>
</div>
<div class="col s2 footer-col-content">
<h5>{{ _('Support') }}</h5>
<div id="cjvt_link" class="footer-element"><img class="ul-footer" src="/stark/static/images/cjvt.png" ></div>
</div>
</div>
</div>
<!-- <div class="footer-copyright">-->
<!-- <div class="container">-->
<!-- Made by <a class="orange-text text-lighten-3" href="http://materializecss.com">Materialize</a>-->
<!-- </div>-->
<!-- </div>-->
</footer>
<!-- Scripts-->
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="/stark/static/js/materialize.js"></script>
<script src="/stark/static/js/wNumb.js"></script>
<script src="/stark/static/js/nouislider.min.js"></script>
<script src="/stark/static/js/generic.js"></script>
{% block custom_js %}{% endblock %}
</body>
</html>

@ -1,227 +0,0 @@
{% extends "base.html" %}
{% block content %}
<div class="container">
<br>
<div class="row">
<div class="col s12">
<form autocomplete="off" action="{{ url_for('index', lang=_('code')) }}" method="POST" enctype="multipart/form-data" id="submit-form">
<h6>{{ _('Input data') }}</h6>
<div class="card">
<div class="card-content">
<!-- <label><b>{{ _('Upload a treebank') }}</b> {{ _('in CONLL-U format') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#&#45;&#45;input" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>-->
<div class = "file-field input-field">
<div class = "btn insidebutton">
<span>{{ _('Browse') }}</span>
<input type = "file" name="file"/>
</div>
<div class = "file-path-wrapper">
<!-- <input class="file-path validate{% if 'file' in validation %} invalid{% endif %}" type="text" placeholder="{{ _('Upload') }}"/>-->
<input class="file-path validate{% if 'file' in validation %} invalid{% endif %}" type="text" placeholder="{{ _('Upload a treebank') }} {{ _('in CONLL-U format') }}"/>
{% if 'file' in validation %}
<span class="helper-text" data-error="{{validation['file']}}"></span>
{% endif %}
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input id="input_url" name="input_url" type="text" class="validate{% if 'input_url' in validation %} invalid{% endif %}">
<label for="input_url"><u>{{ _('Or') }}</u> {{ _('insert a URL link to a treebank in CONLL-U format') }} (<a class="nav-link" target="_blank" href="https://raw.githubusercontent.com/UniversalDependencies/UD_English-GUM/master/en_gum-ud-train.conllu" title="{{ _('Example') }}"><span class="menu-title sr-only">{{ _('Example') }}</span></a>)</label>
{% if 'input_url' in validation %}
<span class="helper-text" data-error="{{validation['input_url']}}"></span>
{% endif %}
</div>
</div>
</div>
</div>
<br>
<h6>{{ _('Tree specification') }}</h6>
<div class="card">
<div class="card-content">
<label><b>{{ _('Tree size') }}</b>: {{ _('number of tokens in the tree') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--size" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
<div class="row">
<div class="input-field col s12">
<br />
<div id="slider"></div>
</div>
</div>
<label><b>{{ _('Node type') }}</b>: {{ _('token characteristics to consider') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--node_type" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
<div class="row">
<div class="input-field">
<div class="col s4">
<label>
<input type="checkbox" class="filled-in {% if 'node_type' in validation %} invalid{% endif %}" name="node_type_upos" checked="checked" />
<span>{{ _('Part-of-speech') }}</span>
{% if 'node_type' in validation %}
<span class="helper-text" data-error="{{validation['node_type']}}"></span>
{% endif %}
</label>
</div>
<div class="col s4">
<label>
<input type="checkbox" class="filled-in" name="node_type_lemma"/>
<span>{{ _('Lemma') }}</span>
</label>
</div>
<div class="col s4">
<label>
<input type="checkbox" class="filled-in" name="node_type_form"/>
<span>{{ _('Form') }}</span>
</label>
</div>
<!-- Shared error message for all checkboxes -->
{% if 'node_type' in validation %}
<div class="col s12">
<span class="validation-error" id="node-type-error">{{ validation['node_type'] }}</span>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<br>
<h6><a class="waves-effect waves-light inline expand" id="advanced-tree-expand"><i class="material-icons em-1">add</i> {{ _('Advanced settings') }}</a></h6>
<div class="card" id="advanced-tree">
<div class="card-content">
<div class="row">
<div class="col s12">
<label><b>{{ _('Labeled trees') }}</b>: {{ _('include names of dependency relations') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--labeled" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
<div class="input-field">
<div class="switch">
<label>
{{ _('No') }}
<input type="checkbox" name="labeled_trees" checked="checked">
<span class="lever"></span>
{{ _('Yes') }}
</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col s12">
<label><b>{{ _('Fixed order') }}</b>: {{ _('differentiate trees based on surface word order') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--fixed" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
<div class="input-field">
<div class="switch">
<label>
{{ _('No') }}
<input type="checkbox" name="fixed_order" checked="checked">
<span class="lever"></span>
{{ _('Yes') }}
</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input id="root_restriction" name="root_restriction" type="text" class="validate">
<label for="root_restriction"><b>{{ _('Head') }}</b>: {{ _('specify potential restrictions on the head node') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--head" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input id="query" name="query" type="text" class="validate">
<label for="query"><b>{{ _('Query') }}</b>: {{ _('write a query. Note: Tree size attribute will be ignored!') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--query" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input id="frequency_threshold" name="frequency_threshold" type="text" class="validate {% if 'frequency_threshold' in validation %} invalid{% endif %}" value="1">
<label for="frequency_threshold"><b>{{ _('Frequency threshold') }}</b>: {{ _('specify the minimum frequency of a tree in the treebank') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--frequency_threshold" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
{% if 'frequency_threshold' in validation %}
<span class="helper-text" data-error="{{validation['frequency_threshold']}}"></span>
{% endif %}
</div>
</div>
<div class="row">
<div class="col s12">
<label><b>{{ _('Association measures') }}</b>: {{ _('print MI, logDice and t-score') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--association_measures" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
<div class="input-field">
<div class="switch">
<label>
{{ _('No') }}
<input type="checkbox" name="association_measures">
<span class="lever"></span>
{{ _('Yes') }}
</label>
</div>
</div>
</div>
</div>
</div>
</div>
<h6><a class="waves-effect waves-light inline expand" id="compare-expand"><i class="material-icons em-1 ">add</i> {{ _('Compare treebanks') }}</a></h6>
<div class="card" id="compare-settings">
<div class="card-content">
<div class="row">
<label>{{ _('Select a reference treebank to identify key phenomena (prints the &#37;DIFF, BIC and OR keyness scores).') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#--compare" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>
<!-- <label><b>{{ _('Upload a compare corpus') }}</b> {{ _('in CONLL-U format') }} (<a class="nav-link" href="https://github.com/clarinsi/STARK/blob/master/settings.md#&#45;&#45;compare" target="_blank" title="{{ _('Help') }}"><span class="menu-title sr-only">{{ _('Help') }}</span></a>)</label>-->
<div class = "file-field input-field">
<div class = "btn insidebutton">
<span>{{ _('Browse') }}</span>
<input type = "file" name="compare_file"/>
</div>
<div class = "file-path-wrapper">
<input class="file-path validate{% if 'compare_file' in validation %} invalid{% endif %}" type="text" placeholder="{{ _('Upload a compare corpus') }} {{ _('in CONLL-U format') }}"/>
{% if 'compare_file' in validation %}
<span class="helper-text" data-error="{{validation['file']}}"></span>
{% endif %}
</div>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input id="compare_url" name="compare_url" type="text" class="validate{% if 'compare_url' in validation %} invalid{% endif %}">
<label for="compare_url"><u>{{ _('Or') }}</u> {{ _('insert a URL link to a treebank in CONLL-U format') }} (<a class="nav-link" target="_blank" href="https://raw.githubusercontent.com/UniversalDependencies/UD_English-GUM/master/en_gum-ud-train.conllu" title="{{ _('Example') }}"><span class="menu-title sr-only">{{ _('Example') }}</span></a>)</label>
{% if 'compare_url' in validation %}
<span class="helper-text" data-error="{{validation['compare_url']}}"></span>
{% endif %}
</div>
</div>
</div>
</div>
{% if 'general' in validation %}
<div class="col s12">
<span class="validation-error" id="unknown-error">{{ validation['general'] }}</span>
</div>
</br>
{% endif %}
<button class="btn waves-effect waves-light btn-large btn-round" type="submit" name="action">{{ _('Submit') }}
<!-- <i class="material-icons right">send</i>-->
</button>
</form>
<!-- Modal Structure -->
<div id="modal1" class="modal">
<div class="modal-content">
<h6>{{ _('No results') }}</h6>
<p>{{ _('Processing with your settings didnt produce any results!') }}</p>
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Ok</a>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block custom_js %}
<script src="static/js/init.js"></script>
{% if 'results' in validation %}
<script type="text/javascript">
(function($){
$(function(){
$('.sidenav').sidenav();
}); // end of document ready
$(document).ready(function(){
$('.modal').modal('open');
});
})(jQuery); // end of jQuery name space
</script>
{% endif %}
{% endblock %}

@ -1,52 +0,0 @@
{% extends "base.html" %}
{% block content %}
<div class="container wider-container">
<br>
<!-- Your table with many columns -->
<h6>{{ _('Results') }}</h6>
<div class="card">
<div class="card-content">
<div class="row">
<div class="col s12">
<form action="{{ url_for('result', result_id=request.view_args['result_id']) }}" method="POST" enctype="multipart/form-data" id="submit-form">
<button class="btn inline btn-large insidebutton margin-top" onclick="window.location.href = '{{url_for('index')}}?lang={{ _('code') }}'; event.preventDefault();">{{ _('Back to chosen settings') }} <i class="material-icons left">keyboard_double_arrow_left</i></button>
<button class="btn inline right waves-effect waves-light btn-large" type="submit" name="action">{{ _('Download complete results') }}
<i class="material-icons right">download</i>
</button>
</form>
</div>
</div>
<div class="table-wrapper">
<table>
<thead>
<tr>
{% for head in head_row %}
{% if not head == 'Grew-match URL' %}
<th><span>{{ head }} </span><span class="th-desc">&#x25be;</span><span class="th-asc">&#x25b4;</span></th>
{% endif %}
{% endfor %}
</tr>
</thead>
<tbody>
{% for i in range(content['Tree']|length) %}
<tr {% if 'Grew-match URL' in content %} class="tr-link" data-toggle="tooltip" title="See examples in Grew-match" data-href={{ content['Grew-match URL'][i] }} {% endif %}>
{% for col in content %}
{% if not col == 'Grew-match URL' %}
<td>{{ content[col][i] }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endblock %}
{% block custom_js %}
<script src="/stark/static/js/result.js"></script>
{% endblock %}

@ -1,410 +0,0 @@
# English translations for PROJECT.
# Copyright (C) 2024 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-03-13 10:26+0100\n"
"PO-Revision-Date: 2024-02-14 14:36+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: en <LL@li.org>\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Generated-By: Babel 2.14.0\n"
#: app.py:108
msgid "Tree"
msgstr ""
#: app.py:109
msgid "Frequency"
msgstr ""
#: app.py:110
msgid "Frequency in B"
msgstr "Frequency-B"
#: app.py:111
msgid "Order"
msgstr ""
#: app.py:112
msgid "Number of nodes"
msgstr "Node count"
#: app.py:113
msgid "Head node"
msgstr "Head"
#: app.py:114
msgid "Grew-match URL"
msgstr ""
#: app.py:115
msgid "%DIFF"
msgstr ""
#: app.py:116
msgid "OR"
msgstr ""
#: app.py:117
msgid "BIC"
msgstr ""
#: app.py:118
msgid "MI"
msgstr ""
#: app.py:119
msgid "logDice"
msgstr ""
#: app.py:120
msgid "t-score"
msgstr ""
#: app.py:123
msgid "Frequency in A"
msgstr "Frequency-A"
#: app.py:181 app.py:182
msgid "Please insert either input url or file, not both of them."
msgstr "Please insert either a file or a URL link, not both of them."
#: app.py:192 app.py:287
msgid "Incorrect URL!"
msgstr ""
#: app.py:194 app.py:195
msgid "Please insert either input url or provide a file."
msgstr "Please insert either a file or a URL link."
#: app.py:207
msgid "Please provide information about minimum and maximum tree size."
msgstr ""
#: app.py:211
msgid "Tree size minimum should be smaller than tree size maximum."
msgstr ""
#: app.py:222
msgid "Please select at least one node type."
msgstr ""
#: app.py:227
msgid "Node option"
msgstr "Node option"
#: app.py:227
msgid "is not supported. Please enter valid options."
msgstr ""
#: app.py:275 app.py:276
msgid "Please insert either compare url or file, not both of them."
msgstr "Please insert either a file or a URL link, not both of them."
#: app.py:299
msgid "Please insert an Integer."
msgstr "Please insert an integer number."
#: app.py:324
msgid ""
"Processing failed! Please recheck your settings, e.g. input format or head "
"node description."
msgstr ""
"Processing failed! Please recheck your settings, e.g. input format or query "
"description."
#: app.py:333
msgid "Frequency "
msgstr ""
#: app.py:333
msgid "Frequency in A "
msgstr "Frequency-A "
#: app.py:334 templates/base.html:20 templates/base.html:22
#: templates/index.html:8 templates/result.html:15
msgid "code"
msgstr "en"
#: templates/about.html:7 templates/base.html:22
msgid "About"
msgstr "About"
#: templates/about.html:10
msgid "stark_description"
msgstr ""
"is a versatile tool designed for analyzing and understanding the structure "
"of sentences in large text collections, known as treebanks. It works by "
"identifying and extracting various types of syntactic structures, or "
"'trees', to reveal which structures occur in a language and how significant "
"they are with respect to their frequency and other useful corpus linguistic "
"metrics."
#: templates/about.html:13
msgid "stark_goal1"
msgstr "STARK is primarily aimed at processing treebanks based on the "
#: templates/about.html:13
msgid "stark_goal2"
msgstr ""
" annotation scheme, but it also takes any other dependency treebank in the "
"CONLL-U format as input. Essentially, the tool generates a tabular file with "
"a frequency list of all the trees matching the "
#: templates/about.html:13
msgid "user-defined parameters"
msgstr ""
#: templates/about.html:13
msgid "stark_goal3"
msgstr ""
". The flexibility of these settings allows the users to conduct a wide "
"spectrum of investigations on both lexicalized and delexicalized trees -- "
"from broad, bottom-up treebank analyses (e.g. extracting all noun-headed "
"trees) to more detailed, top-down treebank querying (e.g. extracting all "
"predicates with two objects)."
#: templates/about.html:16
msgid "stark_credits"
msgstr ""
"STARK has been developed by Kaja Dobrovoljc, Luka Krsnik and Marko Robnik "
"Šikonja as part of the 2019 CLARIN.SI Resource and Service Development grant "
"and the research project "
#: templates/about.html:16
msgid "SPOT: A Treebank-Driven Approach to the Study of Spoken Slovenian"
msgstr ""
#: templates/about.html:16
msgid "stark_credits2"
msgstr ""
" (ARIS grant no. Z6-4617). With the support of CJVT UL, this online "
"interface has been developed to demonstrate STARK's functionalities to a "
"wider audience, but provides a simplified set of options compared to the "
"comprehensive command-line version of STARK, available at: "
#: templates/about.html:16
msgid "stark_credits3"
msgstr "."
#: templates/about.html:19
msgid "stark_contact"
msgstr "Should you have any additional questions or require assistance with the tool, please contact kaja.dobrovoljc@ff.uni-lj.si."
#: templates/base.html:23
msgid "switch_link"
msgstr "?lang=sl"
#: templates/base.html:24
msgid "switch_code"
msgstr "Slovenščina"
#: templates/base.html:43
msgid "Issuer"
msgstr "Issued by"
#: templates/base.html:47
msgid "Financial support"
msgstr "Supported by"
#: templates/base.html:51
msgid "Transfer tool"
msgstr "Download tool"
#: templates/base.html:55
msgid "License"
msgstr "Licence"
#: templates/base.html:59
msgid "Support"
msgstr "Online support"
#: templates/index.html:9
msgid "Input data"
msgstr "Input treebank"
#: templates/index.html:12 templates/index.html:20
msgid "Upload a treebank"
msgstr "Upload a treebank"
#: templates/index.html:12 templates/index.html:20 templates/index.html:160
#: templates/index.html:167
msgid "in CONLL-U format"
msgstr "in CONLL-U format"
#: templates/index.html:12 templates/index.html:41 templates/index.html:49
#: templates/index.html:89 templates/index.html:104 templates/index.html:120
#: templates/index.html:126 templates/index.html:132 templates/index.html:140
#: templates/index.html:159 templates/index.html:160
msgid "Help"
msgstr "Help"
#: templates/index.html:15 templates/index.html:163
msgid "Browse"
msgstr "Browse"
#: templates/index.html:19
msgid "Upload"
msgstr "Upload"
#: templates/index.html:29 templates/index.html:177
msgid "Or"
msgstr "Or"
#: templates/index.html:29 templates/index.html:177
msgid "insert a URL link to a treebank in CONLL-U format"
msgstr "insert a URL link to a treebank in CONLL-U format"
#: templates/index.html:29 templates/index.html:177
msgid "Example"
msgstr "Example"
#: templates/index.html:38
msgid "Tree specification"
msgstr "Tree specification"
#: templates/index.html:41
msgid "Tree size"
msgstr "Tree size"
#: templates/index.html:41
msgid "number of tokens in the tree"
msgstr "number of tokens (words) in the tree"
#: templates/index.html:49
msgid "Node type"
msgstr "Node type"
#: templates/index.html:49
msgid "token characteristics to consider"
msgstr "token characteristics to consider"
#: templates/index.html:55
msgid "Part-of-speech"
msgstr "Part-of-speech"
#: templates/index.html:64
msgid "Lemma"
msgstr "Lemma"
#: templates/index.html:70
msgid "Form"
msgstr "Form"
#: templates/index.html:84
msgid "Advanced settings"
msgstr "Advanced settings"
#: templates/index.html:89
msgid "Labeled trees"
msgstr "Labeled trees"
#: templates/index.html:89
msgid "include names of dependency relations"
msgstr "include names of dependency relations"
#: templates/index.html:93 templates/index.html:108 templates/index.html:144
msgid "No"
msgstr "No"
#: templates/index.html:96 templates/index.html:111 templates/index.html:147
msgid "Yes"
msgstr "Yes"
#: templates/index.html:104
msgid "Fixed order"
msgstr "Fixed order"
#: templates/index.html:104
msgid "differentiate trees based on surface word order"
msgstr "differentiate trees based on surface word order"
#: templates/index.html:120
msgid "Head"
msgstr "Head"
#: templates/index.html:120
msgid "specify potential restrictions on the head node"
msgstr "specify potential restrictions on the head node"
#: templates/index.html:126
msgid "Query"
msgstr ""
#: templates/index.html:126
msgid "write a query. Note: Tree size attribute will be ignored!"
msgstr ""
#: templates/index.html:132
msgid "Frequency threshold"
msgstr "Frequency threshold"
#: templates/index.html:132
msgid "specify the minimum frequency of a tree in the treebank"
msgstr "specify the minimum frequency of a tree in the treebank"
#: templates/index.html:140
msgid "Association measures"
msgstr "Association measures"
#: templates/index.html:140
msgid "print MI, logDice and t-score"
msgstr "print MI, logDice and t-score"
#: templates/index.html:155
msgid "Compare treebanks"
msgstr ""
#: templates/index.html:159
msgid ""
"Select a reference treebank to identify key phenomena (prints the &#37;DIFF, "
"BIC and OR keyness scores)."
msgstr ""
"Select a reference treebank to identify key phenomena (prints the &#37;DIFF, "
"BIC and Odds Ratio scores)."
#: templates/index.html:160 templates/index.html:167
msgid "Upload a compare corpus"
msgstr "Upload a reference treebank"
#: templates/index.html:191
msgid "Submit"
msgstr "Get trees"
#: templates/index.html:199
msgid "No results"
msgstr ""
#: templates/index.html:200
msgid "Processing with your settings didnt produce any results!"
msgstr "Processing with your settings did not produce any results."
#: templates/result.html:8
msgid "Results"
msgstr ""
#: templates/result.html:15
msgid "Back to chosen settings"
msgstr "Back to selected settings"
#: templates/result.html:16
msgid "Download complete results"
msgstr "Download complete results"
#~ msgid "intro_description"
#~ msgstr ""
#~ "Welcome to the online demo interface for STARK - a highly-customizible "
#~ "tool designed to extract various types of syntactic trees from dependency-"
#~ "parsed corpora (treebanks). Unlike the original command-line version, "
#~ "this user-friendly interface offers a streamlined set of settings, which "
#~ "are described in more detail here. Simply upload your treebank and click "
#~ "SUBMIT to view the initial results!"

@ -1,411 +0,0 @@
# Copyright (C) 2024 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-03-13 10:26+0100\n"
"PO-Revision-Date: 2024-02-14 14:36+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: sl <LL@li.org>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
"n%100==4 ? 2 : 3);\n"
"Generated-By: Babel 2.14.0\n"
#: app.py:108
msgid "Tree"
msgstr "Drevo"
#: app.py:109
msgid "Frequency"
msgstr "Pogostost"
#: app.py:110
msgid "Frequency in B"
msgstr "Pogostost v B"
#: app.py:111
msgid "Order"
msgstr "Besedni red"
#: app.py:112
msgid "Number of nodes"
msgstr "Št. vozlišč"
#: app.py:113
msgid "Head node"
msgstr "Jedro"
#: app.py:114
msgid "Grew-match URL"
msgstr "Povezava na Grew-match"
#: app.py:115
msgid "%DIFF"
msgstr ""
#: app.py:116
msgid "OR"
msgstr ""
#: app.py:117
msgid "BIC"
msgstr ""
#: app.py:118
msgid "MI"
msgstr "MI"
#: app.py:119
msgid "logDice"
msgstr "logDice"
#: app.py:120
msgid "t-score"
msgstr "t-test"
#: app.py:123
msgid "Frequency in A"
msgstr "Pogostost v A"
#: app.py:181 app.py:182
msgid "Please insert either input url or file, not both of them."
msgstr "Naložite datoteko ali vnesite povezavo URL, ne pa obojega."
#: app.py:192 app.py:287
msgid "Incorrect URL!"
msgstr "URL ni pravilne oblike."
#: app.py:194 app.py:195
msgid "Please insert either input url or provide a file."
msgstr "Naložite datoteko ali vnesite povezavo URL."
#: app.py:207
msgid "Please provide information about minimum and maximum tree size."
msgstr "Določite najmanjše in največje število vozlišč v drevesu."
#: app.py:211
msgid "Tree size minimum should be smaller than tree size maximum."
msgstr "Najmanjše število vozlišč v drevesu ne sme biti večje od največjega."
#: app.py:222
msgid "Please select at least one node type."
msgstr "Izberite vsaj eno možnost (npr. besedno vrsto)."
#: app.py:227
msgid "Node option"
msgstr "Vrsta vozlišč"
#: app.py:227
msgid "is not supported. Please enter valid options."
msgstr "vmesnik ne podpira. Vnesite eno izmed veljavnih možnosti."
#: app.py:275 app.py:276
msgid "Please insert either compare url or file, not both of them."
msgstr "Naložite datoteko ali vnesite povezavo URL, ne pa obojega."
#: app.py:299
msgid "Please insert an Integer."
msgstr "Vnesite celo število (npr. 3)."
#: app.py:324
msgid ""
"Processing failed! Please recheck your settings, e.g. input format or head "
"node description."
msgstr ""
"Procesiranje ni bilo uspešno! Preverite nastavitve, kot sta format ali opis "
"lastnosti jedra."
#: app.py:333
msgid "Frequency "
msgstr "Pogostost "
#: app.py:333
msgid "Frequency in A "
msgstr "Pogostost v A "
#: app.py:334 templates/base.html:20 templates/base.html:22
#: templates/index.html:8 templates/result.html:15
msgid "code"
msgstr "sl"
#: templates/about.html:7 templates/base.html:22
msgid "About"
msgstr "O orodju"
#: templates/about.html:10
msgid "stark_description"
msgstr ""
"je vsestransko orodje za analizo slovničnih in leksikalnih pojavov v "
"skladenjsko razčlenjenih besedilnih korpusih (drevesnicah), ki z luščenjem "
"različnih tipov skladenjskih struktur (skladenjskih dreves) jezikoslovcem "
"ponuja vpogled v nabor skladenjskih struktur v jeziku ter njihov statistični "
"opis z vidika pogostosti rabe in drugih priljubljenih korpusnojezikoslovnih "
"metrik."
#: templates/about.html:13
msgid "stark_goal1"
msgstr ""
"Orodje je bilo prvotno zasnovano za procesiranje korpusov, razčlenjenih po "
"medjezikovno primerljivi shemi "
#: templates/about.html:13
msgid "stark_goal2"
msgstr ""
", uporablja pa se lahko tudi za druge odvisnostne drevesnice v formatu CONLL-"
"U. Orodje kot rezultat vrača tabelarično datoteko s frekvenčnim seznamom "
"vseh dreves, ki ustrezajo "
#: templates/about.html:13
msgid "user-defined parameters"
msgstr "uporabniškim nastavitvam"
#: templates/about.html:13
msgid "stark_goal3"
msgstr ""
", njihova fleksibilnost pa omogoča izvedbo širokega nabora raziskav: od "
"široko zasnovanih luščenj vseh možnih besednih zvez (npr. luščenje vseh "
"samostalniških dreves) do usmerjenih poizvedb po posameznih tipih zvez (npr. "
"luščenje povedkov z najmanj dvema predmetoma)."
#: templates/about.html:16
msgid "stark_credits"
msgstr ""
"Orodje so razvili Kaja Dobrovoljc, Luka Krsnik in Marko Robnik Šikonja v "
"okviru razpisa CLARIN.SI 2019 in raziskovalnega projekta "
#: templates/about.html:16
msgid "SPOT: A Treebank-Driven Approach to the Study of Spoken Slovenian"
msgstr ""
"SPOT: Na drevesnici temelječ pristop k raziskavam govorjene slovenščine"
#: templates/about.html:16
msgid "stark_credits2"
msgstr ""
" (ARIS št. Z6-4617). S podporo CJVT UL je bil za predstavitev "
"funkcionalnosti programa STARK širšemu občinstvu razvit tudi pričujoči "
"spletni vmesnik, ki pa ima v primerjavi z izhodiščnim orodjem ukazne vrstice "
"("
#: templates/about.html:16
msgid "stark_credits3"
msgstr ") nekoliko poenostavljen nabor nastavitev."
#: templates/about.html:19
msgid "stark_contact"
msgstr "Za dodatna vprašanja ali pomoč pri uporabi orodja se obrnite na kaja.dobrovoljc@ff.uni-lj.si."
#: templates/base.html:23
msgid "switch_link"
msgstr "?lang=en"
#: templates/base.html:24
msgid "switch_code"
msgstr "English"
#: templates/base.html:43
msgid "Issuer"
msgstr "Izdajatelj"
#: templates/base.html:47
msgid "Financial support"
msgstr "Podpora"
#: templates/base.html:51
msgid "Transfer tool"
msgstr "Prenos orodja"
#: templates/base.html:55
msgid "License"
msgstr "Dostopnost orodja"
#: templates/base.html:59
msgid "Support"
msgstr "Upravljanje vmesnika"
#: templates/index.html:9
msgid "Input data"
msgstr "Vhodni podatki"
#: templates/index.html:12 templates/index.html:20
msgid "Upload a treebank"
msgstr "Naložite korpus"
#: templates/index.html:12 templates/index.html:20 templates/index.html:160
#: templates/index.html:167
msgid "in CONLL-U format"
msgstr "v formatu CONLL-U"
#: templates/index.html:12 templates/index.html:41 templates/index.html:49
#: templates/index.html:89 templates/index.html:104 templates/index.html:120
#: templates/index.html:126 templates/index.html:132 templates/index.html:140
#: templates/index.html:159 templates/index.html:160
msgid "Help"
msgstr "pomoč"
#: templates/index.html:15 templates/index.html:163
msgid "Browse"
msgstr "Izberi"
#: templates/index.html:19
msgid "Upload"
msgstr "Naloži datoteko"
#: templates/index.html:29 templates/index.html:177
msgid "Or"
msgstr "Ali"
#: templates/index.html:29 templates/index.html:177
msgid "insert a URL link to a treebank in CONLL-U format"
msgstr "vnesite povezavo URL do korpusa v formatu CONLL-U"
#: templates/index.html:29 templates/index.html:177
msgid "Example"
msgstr "primer"
#: templates/index.html:38
msgid "Tree specification"
msgstr "Opredelitev dreves"
#: templates/index.html:41
msgid "Tree size"
msgstr "Velikost drevesa"
#: templates/index.html:41
msgid "number of tokens in the tree"
msgstr "število vozlišč (besed) v drevesu"
#: templates/index.html:49
msgid "Node type"
msgstr "Vrsta vozlišč"
#: templates/index.html:49
msgid "token characteristics to consider"
msgstr "upoštevane lastnosti besed"
#: templates/index.html:55
msgid "Part-of-speech"
msgstr "Besedna vrsta"
#: templates/index.html:64
msgid "Lemma"
msgstr "Lema"
#: templates/index.html:70
msgid "Form"
msgstr "Oblika"
#: templates/index.html:84
msgid "Advanced settings"
msgstr "Napredne nastavitve"
#: templates/index.html:89
msgid "Labeled trees"
msgstr "Označena drevesa"
#: templates/index.html:89
msgid "include names of dependency relations"
msgstr "izpis vrste relacij med besedami"
#: templates/index.html:93 templates/index.html:108 templates/index.html:144
msgid "No"
msgstr "Ne"
#: templates/index.html:96 templates/index.html:111 templates/index.html:147
msgid "Yes"
msgstr "Da"
#: templates/index.html:104
msgid "Fixed order"
msgstr "Nespremenljiv besedni red"
#: templates/index.html:104
msgid "differentiate trees based on surface word order"
msgstr "ločevanje dreves glede na zaporedje besed v besedilu"
#: templates/index.html:120
msgid "Head"
msgstr "Jedro"
#: templates/index.html:120
msgid "specify potential restrictions on the head node"
msgstr "izpis dreves z vnaprej določenimi lastnostmi jedrne besede v drevesu"
#: templates/index.html:126
msgid "Query"
msgstr "Iskalni pogoj"
#: templates/index.html:126
msgid "write a query. Note: Tree size attribute will be ignored!"
msgstr ""
"izpis dreves z vnaprej določeno strukturo (nastavitev velikosti drevesa se s "
"tem ne upošteva.) "
#: templates/index.html:132
msgid "Frequency threshold"
msgstr "Frekvenčni prag"
#: templates/index.html:132
msgid "specify the minimum frequency of a tree in the treebank"
msgstr "najmanjše število pojavitev drevesa v korpusu"
#: templates/index.html:140
msgid "Association measures"
msgstr "Mere povezovalnosti"
#: templates/index.html:140
msgid "print MI, logDice and t-score"
msgstr "izračun vrednosti MI, logDice in t-test"
#: templates/index.html:155
msgid "Compare treebanks"
msgstr "Primerjava korpusov"
#: templates/index.html:159
msgid ""
"Select a reference treebank to identify key phenomena (prints the &#37;DIFF, "
"BIC and OR keyness scores)."
msgstr ""
"Primerjava z rezultati v referenčnem korpusu (izračun vrednosti &#37;DIFF, "
"BIC in Odds Ratio)"
#: templates/index.html:160 templates/index.html:167
msgid "Upload a compare corpus"
msgstr "Naložite referenčni korpus"
#: templates/index.html:191
msgid "Submit"
msgstr "Poišči drevesa"
#: templates/index.html:199
msgid "No results"
msgstr "Brez zadetkov"
#: templates/index.html:200
msgid "Processing with your settings didnt produce any results!"
msgstr "Procesiranje z izbranimi nastavitvami ne vrača rezultatov."
#: templates/result.html:8
msgid "Results"
msgstr "Rezultati"
#: templates/result.html:15
msgid "Back to chosen settings"
msgstr "Nazaj na izbrane nastavitve"
#: templates/result.html:16
msgid "Download complete results"
msgstr "Prenesi datoteko s celotnimi rezultati"
#~ msgid "intro_description"
#~ msgstr ""
#~ "Tukaj je opis na vstopni spletni strani, ki pa ga Kaja pripravi šele na "
#~ "koncu, ko bo tudi jasno, ali ga sploh potrebujemo. Če se zdi uporaba "
#~ "intuitivna na prvi pogled, lahko po vzoru drugih orodij CJVT vse skupaj "
#~ "premaknemo pod About."
Loading…
Cancel
Save