Compare commits
No commits in common. 'master' and 'main' have entirely different histories.
@ -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
|
||||
```
|
@ -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,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
|
@ -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 "
|
||||
"%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.
|
@ -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;
|
||||
}
|
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 571 B |
Before Width: | Height: | Size: 699 B |
Before Width: | Height: | Size: 916 B |
Before Width: | Height: | Size: 776 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 11 KiB |
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);
|
||||
|
@ -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--facebook.svg" ></div></li>-->
|
||||
<!-- <li><div id="twitter_x_link" class="icon-nav"><img src="/stark/static/icons/logo--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#--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 %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#--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">▾</span><span class="th-asc">▴</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,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 %DIFF, "
|
||||
"BIC and OR keyness scores)."
|
||||
msgstr ""
|
||||
"Primerjava z rezultati v referenčnem korpusu (izračun vrednosti %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."
|