1 Commits

Author SHA1 Message Date
voje
c563df31ba fixed reduce_0 functors sort ACT, PAT, other... 2019-04-24 07:50:20 +02:00
17 changed files with 2998 additions and 3019 deletions

View File

@@ -3,32 +3,21 @@
MAKE_ROOT = $(shell pwd) MAKE_ROOT = $(shell pwd)
### Input data
# I received ssj500k in one .xml file,
# kres is composed of many .xml files
# I generated srl tags for kres in separate .json files
# (for each kres.xml file there is a kres.json file with srl tags)
# SSJ_FILE = "$(MAKE_ROOT)/data/samples/ssj_xml/ssj500k-sl.body.sample.xml"
SSJ_FILE = "$(MAKE_ROOT)/data/ssj_file_link"
# KRES_FOLDER = "$(MAKE_ROOT)/data/samples/kres_xml"
KRES_FOLDER = "$(MAKE_ROOT)/data/kres_xml_folder_link"
# KRES_SRL_FOLDER = "$(MAKE_ROOT)/data/samples/kres_srl_json"
KRES_SRL_FOLDER = "$(MAKE_ROOT)/data/kres_json_folder_link"
OUTPUT = "db" OUTPUT = "db"
# OUTPUT = "file" # OUTPUT = "file"
OUTDIR = "/tmp/three" # if you're running this in docker, make sure to mount the volume OUTDIR = "/tmp/three" # if you're running this in docker, make sure to mount the volume
DBADDR = "0.0.0.0:27017" # don't use localhost DBADDR = "0.0.0.0:27017" # don't use localhost
# credentials from .gitignored file
# create it from env.default
include env.local
N_CORES = 5 N_CORES = 5
# insert kres files into database in chunks, for fewer connections # insert kres files into database in chunks, for fewer connections
KRES_CHUNK_SIZE = 30 KRES_CHUNK_SIZE = 30
# Backend parameters found in conf file (see make backend) # Some backend parameters can be found in conf file (see make backend)
# credentials from .gitignored file
# create it from env.default
include env.local
export export
.PHONY: python-env fill-database .PHONY: python-env fill-database

View File

@@ -81,21 +81,18 @@ $ make backend-dev
$ make backend-prod $ make backend-prod
``` ```
API endpoints:
* GET word list (pre-cached)
* GET reduced frames (pre-cached)
* POST senses
* User auth logic
### Vue frontend (1 container) ### Vue frontend (1 container)
Relies on Flask backend. Relies on Flask backend.
Before running `make`, you might need to set the correct api address. Before running `make`, you might need to set the correct api address.
Check `./src/frontend_vue/config/config_prod.json`. Check `./src/frontend_vue/config/config_prod.json`.
bash bash
``` ```
# $ make frontend-dev # development # development
# ./config_dev.json
$ make frontend-dev # development
# production
# ./config_prod.json
$ make frontend-prod $ make frontend-prod
``` ```

View File

@@ -1,6 +1,27 @@
### Credentials
MONGOEXPRESS_USER = mxuser MONGOEXPRESS_USER = mxuser
MONGOEXPRESS_PASS = mxuserpassword MONGOEXPRESS_PASS = mxuserpassword
DB_ADM_USER = valadmin DB_ADM_USER = valadmin
DB_ADM_PASS = valadminpass DB_ADM_PASS = valadminpass
DB_USR_USER = valuser DB_USR_USER = valuser
DB_USR_PASS = valuserpass DB_USR_PASS = valuserpass
### Input data
# I received ssj500k in one .xml file,
# kres is composed of many .xml files
# I generated srl tags for kres in separate .json files
# (for each kres.xml file there is a kres.json file with srl tags)
# Use the files from /data/samples.tar.gz for a quick app build with a subset of data.
SSJ_FILE = "$(MAKE_ROOT)/data/samples/ssj_xml/ssj500k-sl.body.sample.xml"
# SSJ_FILE = "$(MAKE_ROOT)/data/ssj_file_link"
KRES_FOLDER = "$(MAKE_ROOT)/data/samples/kres_xml"
# KRES_FOLDER = "$(MAKE_ROOT)/data/kres_xml_folder_link"
KRES_SRL_FOLDER = "$(MAKE_ROOT)/data/samples/kres_srl_json"
# KRES_SRL_FOLDER = "$(MAKE_ROOT)/data/kres_json_folder_link"

25
makefile_vars.example Normal file
View File

@@ -0,0 +1,25 @@
# Environment specific Makefile parameters
# Copy this file and name it makefile_args
# makefile_args gets .gitignored
# SSJ_FILE = "$(MAKE_ROOT)/data/samples/ssj_xml/ssj500k-sl.body.sample.xml"
SSJ_FILE = "$(MAKE_ROOT)/data/ssj_file_link"
# KRES_FOLDER = "$(MAKE_ROOT)/data/samples/kres_xml"
KRES_FOLDER = "$(MAKE_ROOT)/data/kres_xml_folder_link"
# KRES_SRL_FOLDER = "$(MAKE_ROOT)/data/samples/kres_srl_json"
KRES_SRL_FOLDER = "$(MAKE_ROOT)/data/kres_json_folder_link"
OUTPUT = "db"
# OUTPUT = "file"
OUTDIR = "/tmp/three" # if you're running this in docker, make sure to mount the volume
DBADDR = "0.0.0.0:27017" # don't use localhost
# credentials from .gitignored file
# create it from env.default
include env.local
N_CORES = 5
# insert kres files into database in chunks, for fewer connections
KRES_CHUNK_SIZE = 30
# Backend parameters found in conf file (see make backend)

View File

@@ -9,7 +9,8 @@ info:
echo "Pick either dev or prod." echo "Pick either dev or prod."
clean: clean:
- docker rm -f $(CONNAME) - docker kill $(CONNAME)
- docker rm $(CONNAME)
build-container: build-container:
docker build . -t $(IMGNAME) docker build . -t $(IMGNAME)
@@ -20,5 +21,3 @@ dev: build-container clean
prod: build-container clean prod: build-container clean
docker run --name $(CONNAME) -d -p 8080:8080 -v $(shell pwd):/src $(IMGNAME) /src/ops_scripts/prod.sh docker run --name $(CONNAME) -d -p 8080:8080 -v $(shell pwd):/src $(IMGNAME) /src/ops_scripts/prod.sh
node-env: clean
docker run --name $(CONNAME) -it -p 8080:8080 -v $(shell pwd):/src $(IMGNAME)

File diff suppressed because it is too large Load Diff

View File

@@ -10,52 +10,50 @@
"build": "node build/build.js" "build": "node build/build.js"
}, },
"dependencies": { "dependencies": {
"ajv": "^6.10.0",
"axios": "^0.18.0", "axios": "^0.18.0",
"bootstrap-vue": "^2.0.0-rc.19", "bootstrap-vue": "^2.0.0-rc.11",
"jquery": "^3.4.0",
"sha256": "^0.2.0", "sha256": "^0.2.0",
"vue": "^2.6.10", "vue": "^2.5.2",
"vue-cookies": "^1.5.13", "vue-cookies": "^1.5.6",
"vue-router": "^3.0.6", "vue-router": "^3.0.1",
"vue-spinner": "^1.0.3" "vue-spinner": "^1.0.3"
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "^7.1.2", "autoprefixer": "^7.1.2",
"babel-core": "^6.22.1", "babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.5", "babel-loader": "^7.1.1",
"babel-plugin-syntax-jsx": "^6.18.0", "babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0", "babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0", "babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2", "babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0", "babel-preset-stage-2": "^6.22.0",
"chalk": "^2.4.2", "chalk": "^2.0.1",
"copy-webpack-plugin": "^4.6.0", "copy-webpack-plugin": "^4.0.1",
"css-loader": "^2.1.1", "css-loader": "^0.28.0",
"extract-text-webpack-plugin": "^3.0.0", "extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4", "file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1", "friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1", "html-webpack-plugin": "^2.30.1",
"node-notifier": "^5.4.0", "node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^5.0.1", "optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0", "ora": "^1.2.0",
"portfinder": "^1.0.20", "portfinder": "^1.0.13",
"postcss-import": "^11.0.0", "postcss-import": "^11.0.0",
"postcss-loader": "^2.1.6", "postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1", "postcss-url": "^7.2.1",
"rimraf": "^2.6.3", "rimraf": "^2.6.0",
"semver": "^5.7.0", "semver": "^5.3.0",
"shelljs": "^0.7.6", "shelljs": "^0.7.6",
"uglifyjs-webpack-plugin": "^1.3.0", "uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^1.1.2", "url-loader": "^0.5.8",
"vue-loader": "^13.7.3", "vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1", "vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.6.10", "vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0", "webpack": "^3.6.0",
"webpack-bundle-analyzer": "^3.3.2", "webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.11.5", "webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.2.1" "webpack-merge": "^4.1.0"
}, },
"engines": { "engines": {
"node": ">= 6.0.0", "node": ">= 6.0.0",

View File

@@ -7,25 +7,3 @@ export default {
name: 'App', name: 'App',
} }
</script> </script>
<style>
body {
font-family: cambria;
}
.ulred {
color: #b71511;
color: rgb(183,21,17);
}
.lmenu td {
color: #9e9e9e;
}
.redlinks a {
color: #9e9e9e;
}
.redlinks a:hover {
color: #b71511;
}
.text-secondary {
color: #9e9e9e !important;
}
</style>

View File

@@ -1,17 +1,20 @@
<template> <template>
<div> <div>
<p
v-if="this.$root.store.api_error !== null"
class="text-warning"
>
api_error: {{ this.$root.store.api_error }}
</p>
<Nav></Nav> <Nav></Nav>
<div class="my-home container-fluid"> <div class="my-home container-fluid">
<div class="row"> <div class="row">
<div id="search" class="col-sm-2 border-right fill" :key=this.$root.store.indexReloader> <div id="serach" class="col-sm-2 border-right fill" :key=this.$root.store.indexReloader>
<LWords <LWords
v-if="this.$root.store.selIndex.val === 'words'"></LWords> v-if="this.$root.store.selIndex.val === 'words'"></LWords>
<LFunctors v-else></LFunctors> <LFunctors v-else></LFunctors>
</div> </div>
<div class="col-sm-10"> <div class="col-sm-10">
<p v-if="this.$root.store.api_error != null">
{{ this.$root.store.api_error }}
</p>
<router-view></router-view> <router-view></router-view>
</div> </div>
</div> </div>

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="redlinks"> <div>
<table> <table>
<tr v-for="functor in functors"> <tr v-for="functor in functors">
<td><a href="#" v-on:click="selectFunctor(functor)">{{ functor[0] }}</a></td> <td><a href="#" v-on:click="selectFunctor(functor)">{{ functor[0] }}</a></td>

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="redlinks"> <div>
<select v-model="selectedLetter"> <select v-model="selectedLetter">
<option v-for="letter in alphabet" :value="letter"> <option v-for="letter in alphabet" :value="letter">
{{ letter.toUpperCase() }} ({{ getNumWords(letter) }}) {{ letter.toUpperCase() }} ({{ getNumWords(letter) }})

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="redlinks"> <div>
<div class="col-sm-2"> <div class="col-sm-2">
<a href="#" v-on:click="this.$root.routeBack">Nazaj</a> <a href="#" v-on:click="this.$root.routeBack">Nazaj</a>
</div> </div>

View File

@@ -1,6 +1,6 @@
<template> <template>
<!--load mode--> <!--load mode-->
<div v-if="state === 'loading'"> <div v-if="show_loader">
<pulse-loader :color="loader_color"></pulse-loader> <pulse-loader :color="loader_color"></pulse-loader>
</div> </div>
@@ -76,11 +76,16 @@ export default {
}, },
state: "loading", // editing, normal state: "loading", // editing, normal
request_reload: false, request_reload: false,
loader_color: "#b71511", loader_color: "#007bff",
}}, }},
created: function () { created: function () {
this.reload() this.reload()
}, },
computed: {
show_loader: function () {
return this.state === "loading" && this.$root.store.api_error !== null
}
},
watch: { watch: {
hw: function () { hw: function () {
this.reload() this.reload()
@@ -113,7 +118,6 @@ export default {
} }
} }
var component = this var component = this
component.state = "loading"
this.$http.get( this.$http.get(
this.$root.store.api_addr + this.$root.store.api_addr +
"/api/functor-frames" + "/api/functor-frames" +
@@ -127,7 +131,6 @@ export default {
}) })
.catch(function(error) { .catch(function(error) {
component.$root.store.api_error = error component.$root.store.api_error = error
component.state = "error"
}) })
}, },
getFrames: function (hw, reduce_fun=null) { getFrames: function (hw, reduce_fun=null) {
@@ -146,7 +149,6 @@ export default {
} }
} }
var component = this var component = this
component.state = "loading"
this.$http.get( this.$http.get(
this.$root.store.api_addr + "/api/frames" + this.$root.store.api_addr + "/api/frames" +
"?hw=" + hw + "&rf=" + reduce_fun + "?hw=" + hw + "&rf=" + reduce_fun +
@@ -159,7 +161,6 @@ export default {
}) })
.catch(function(error) { .catch(function(error) {
component.$root.store.api_error = error component.$root.store.api_error = error
component.state = "error"
}) })
}, },
buildSentences: function () { buildSentences: function () {

View File

@@ -2,8 +2,7 @@
<nav> <nav>
<b-navbar toggleable="md" type="light" variant="light"> <b-navbar toggleable="md" type="light" variant="light">
<b-navbar-toggle target="nav_collapse"></b-navbar-toggle> <b-navbar-toggle target="nav_collapse"></b-navbar-toggle>
<!--b-navbar-brand>Vezljivostni vzorci slovenskih glagolov</b-navbar-brand--> <b-navbar-brand>Vezljivostni vzorci slovenskih glagolov</b-navbar-brand>
<b-navbar-brand>VEZLJIVOSTNI VZORCI SLOVENSKIH GLAGOLOV</b-navbar-brand>
<b-collapse is-nav id="nav_collapse"> <b-collapse is-nav id="nav_collapse">
<b-navbar-nav> <b-navbar-nav>
@@ -104,16 +103,4 @@ export default {
} }
} }
} }
</script> </script>
<style>
.bg-light {
background-color: rgb(183,21,17,0.9) !important;
}
nav a {
color: white;
}
nav a:hover {
color: white;
}
</style>

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class=redlinks> <div>
<div class="col-sm-2"> <div class="col-sm-2">
<a href="#" v-on:click="this.$root.routeBack">Nazaj</a> <a href="#" v-on:click="this.$root.routeBack">Nazaj</a>
</div> </div>

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="redlinks"> <div>
<div class="col-sm-2"> <div class="col-sm-2">
<a href="#" v-on:click="this.$root.routeBack">Nazaj</a> <a href="#" v-on:click="this.$root.routeBack">Nazaj</a>
</div> </div>
@@ -7,15 +7,6 @@
<div class="alert alert-danger" v-if="error"> <div class="alert alert-danger" v-if="error">
<p>{{ error }}</p> <p>{{ error }}</p>
</div> </div>
<div class="form-group">
<input
type="email"
class="form-control"
placeholder="e-pošta"
v-model="credentials.email"
autocomplete="off"
>
</div>
<div class="form-group"> <div class="form-group">
<input <input
type="text" type="text"
@@ -25,6 +16,15 @@
autocomplete="off" autocomplete="off"
> >
</div> </div>
<div class="form-group">
<input
type="email"
class="form-control"
placeholder="e-pošta"
v-model="credentials.email"
autocomplete="off"
>
</div>
<div class="form-group"> <div class="form-group">
<input <input
type="password" type="password"
@@ -38,7 +38,7 @@
<input <input
type="password" type="password"
class="form-control js-login__password " class="form-control js-login__password "
placeholder="Ponovite geslo" placeholder="Ponovite geslo."
v-model="credentials.snd_password" v-model="credentials.snd_password"
autocomplete="off" autocomplete="off"
> >

View File

@@ -33,8 +33,10 @@ def reduce_0(frames, valdb_sensemap=None):
separated_frames = [] separated_frames = []
for frame in frames: for frame in frames:
for tid in frame.tids: for tid in frame.tids:
tmp_frame = DC(frame) tmp_frame = frame
tmp_frame.tids = [tid] tmp_frame.tids = [tid]
tmp_frame.sort_slots()
separated_frames.append(tmp_frame) separated_frames.append(tmp_frame)
sorting_strings.append("".join( sorting_strings.append("".join(
[slot.functor for slot in tmp_frame.slots] [slot.functor for slot in tmp_frame.slots]