From 9206b499c23f6d88b9d6963cc8ae15559ec1783b Mon Sep 17 00:00:00 2001 From: Clemens Wolff Date: Thu, 23 May 2019 12:50:46 -0400 Subject: [PATCH] Adopt nuxt folder structure --- .dockerignore | 18 ++++++--- .gitignore | 15 +++----- Dockerfile | 21 ++++------ README.md | 3 +- app/app/settings.py | 18 ++++----- app/server/models.py | 6 +-- app/server/static/.eslintrc | 23 +++++++++++ app/server/static/{js => }/.jsbeautifyrc | 0 app/server/static/{js => }/.pug-lintrc | 0 app/server/static/{ => assets}/css/admin.css | 0 .../static/{ => assets}/css/annotation.css | 0 app/server/static/{ => assets}/css/forum.css | 2 +- app/server/static/{ => assets}/images/cat.png | Bin .../{ => assets}/images/cats/seq2seq.jpg | Bin .../images/cats/sequence_labeling.jpg | Bin .../images/cats/text_classification.jpg | Bin .../static/{ => assets}/images/logo.png | Bin .../images/named_entity_recognition.png | Bin .../images/sentiment_analysis.png | Bin .../{ => assets}/images/sequence_labeling.png | Bin .../{ => assets}/images/translation.png | Bin .../static/{js => components}/annotation.pug | 0 .../static/{js => components}/annotator.vue | 0 .../demo/demo_annotator.vue | 0 .../{js => components}/demo/demo_data.js | 0 .../{js => components}/demo/demo_mixin.js | 0 .../demo/demo_named_entity.vue | 0 .../demo/demo_text_classification.vue | 0 .../demo/demo_translation.vue | 0 .../static/{js => components}/directives.js | 0 .../document_classification.vue | 0 .../static/{js => components}/download.pug | 0 .../{js => components}/download_seq2seq.vue | 0 .../download_sequence_labeling.vue | 0 .../download_text_classification.vue | 0 .../examples/download_seq2seq.csv | 0 .../examples/download_seq2seq.jsonl | 0 .../examples/download_sequence_labeling.jsonl | 0 .../examples/download_text_classification.csv | 0 .../download_text_classification.jsonl | 0 .../examples/upload_seq2seq.csv | 0 .../examples/upload_seq2seq.jsonl | 0 .../examples/upload_seq2seq.txt | 0 .../examples/upload_sequence_labeling.conll | 0 .../examples/upload_sequence_labeling.jsonl | 0 .../examples/upload_sequence_labeling.txt | 0 .../examples/upload_text_classification.csv | 0 .../examples/upload_text_classification.jsonl | 0 .../examples/upload_text_classification.txt | 0 .../static/{js => components}/filter.js | 0 .../static/{js => components}/guideline.vue | 0 app/server/static/{js => components}/http.js | 0 .../static/{js => components}/label.vue | 0 .../static/{js => components}/messages.vue | 0 app/server/static/{js => components}/mixin.js | 0 .../static/{js => components}/projects.vue | 0 .../static/{js => components}/seq2seq.vue | 0 .../{js => components}/sequence_labeling.vue | 0 .../static/{js => components}/stats.vue | 0 .../static/{js => components}/upload.pug | 0 .../{js => components}/upload_seq2seq.vue | 0 .../upload_sequence_labeling.vue | 0 .../upload_text_classification.vue | 0 app/server/static/js/.eslintrc.js | 23 ----------- app/server/{ => static}/package-lock.json | 0 app/server/{ => static}/package.json | 6 +-- app/server/static/{js => pages}/dataset.js | 2 +- .../{js/demo => pages}/demo_named_entity.js | 2 +- .../demo_text_classification.js | 2 +- .../{js/demo => pages}/demo_translation.js | 2 +- .../{js => pages}/document_classification.js | 2 +- .../static/{js => pages}/download_seq2seq.js | 2 +- .../download_sequence_labeling.js | 2 +- .../download_text_classification.js | 2 +- app/server/static/{js => pages}/guideline.js | 2 +- app/server/static/{js => pages}/index.js | 0 app/server/static/{js => pages}/label.js | 2 +- app/server/static/{js => pages}/projects.js | 2 +- app/server/static/{js => pages}/seq2seq.js | 2 +- .../static/{js => pages}/sequence_labeling.js | 2 +- app/server/static/{js => pages}/stats.js | 2 +- .../static/{js => pages}/upload_seq2seq.js | 2 +- .../{js => pages}/upload_sequence_labeling.js | 2 +- .../upload_text_classification.js | 2 +- .../android-icon-144x144.png | Bin .../android-icon-192x192.png | Bin .../android-icon-36x36.png | Bin .../android-icon-48x48.png | Bin .../android-icon-72x72.png | Bin .../android-icon-96x96.png | Bin .../apple-icon-114x114.png | Bin .../apple-icon-120x120.png | Bin .../apple-icon-144x144.png | Bin .../apple-icon-152x152.png | Bin .../apple-icon-180x180.png | Bin .../favicons => static}/apple-icon-57x57.png | Bin .../favicons => static}/apple-icon-60x60.png | Bin .../favicons => static}/apple-icon-72x72.png | Bin .../favicons => static}/apple-icon-76x76.png | Bin .../apple-icon-precomposed.png | Bin .../favicons => static}/apple-icon.png | Bin .../favicons => static}/browserconfig.xml | 0 .../favicons => static}/favicon-16x16.png | Bin .../favicons => static}/favicon-32x32.png | Bin .../favicons => static}/favicon-96x96.png | Bin .../{images/favicons => static}/favicon.ico | Bin .../{images/favicons => static}/manifest.json | 0 .../favicons => static}/ms-icon-144x144.png | Bin .../favicons => static}/ms-icon-150x150.png | Bin .../favicons => static}/ms-icon-310x310.png | Bin .../favicons => static}/ms-icon-70x70.png | Bin app/server/{ => static}/webpack.config.js | 36 +++++++----------- app/server/templates/admin.html | 2 +- app/server/templates/annotation.html | 2 +- app/server/templates/base.html | 34 ++++++++--------- app/server/templates/index.html | 8 ++-- docker-compose.yml | 2 +- tools/ci.sh | 2 +- tools/dev-webpack.sh | 4 +- tools/heroku.sh | 2 +- 120 files changed, 124 insertions(+), 137 deletions(-) create mode 100644 app/server/static/.eslintrc rename app/server/static/{js => }/.jsbeautifyrc (100%) rename app/server/static/{js => }/.pug-lintrc (100%) rename app/server/static/{ => assets}/css/admin.css (100%) rename app/server/static/{ => assets}/css/annotation.css (100%) rename app/server/static/{ => assets}/css/forum.css (99%) rename app/server/static/{ => assets}/images/cat.png (100%) mode change 100755 => 100644 rename app/server/static/{ => assets}/images/cats/seq2seq.jpg (100%) rename app/server/static/{ => assets}/images/cats/sequence_labeling.jpg (100%) rename app/server/static/{ => assets}/images/cats/text_classification.jpg (100%) rename app/server/static/{ => assets}/images/logo.png (100%) rename app/server/static/{ => assets}/images/named_entity_recognition.png (100%) rename app/server/static/{ => assets}/images/sentiment_analysis.png (100%) rename app/server/static/{ => assets}/images/sequence_labeling.png (100%) rename app/server/static/{ => assets}/images/translation.png (100%) rename app/server/static/{js => components}/annotation.pug (100%) rename app/server/static/{js => components}/annotator.vue (100%) rename app/server/static/{js => components}/demo/demo_annotator.vue (100%) rename app/server/static/{js => components}/demo/demo_data.js (100%) rename app/server/static/{js => components}/demo/demo_mixin.js (100%) rename app/server/static/{js => components}/demo/demo_named_entity.vue (100%) rename app/server/static/{js => components}/demo/demo_text_classification.vue (100%) rename app/server/static/{js => components}/demo/demo_translation.vue (100%) rename app/server/static/{js => components}/directives.js (100%) rename app/server/static/{js => components}/document_classification.vue (100%) rename app/server/static/{js => components}/download.pug (100%) rename app/server/static/{js => components}/download_seq2seq.vue (100%) rename app/server/static/{js => components}/download_sequence_labeling.vue (100%) rename app/server/static/{js => components}/download_text_classification.vue (100%) rename app/server/static/{js => components}/examples/download_seq2seq.csv (100%) rename app/server/static/{js => components}/examples/download_seq2seq.jsonl (100%) rename app/server/static/{js => components}/examples/download_sequence_labeling.jsonl (100%) rename app/server/static/{js => components}/examples/download_text_classification.csv (100%) rename app/server/static/{js => components}/examples/download_text_classification.jsonl (100%) rename app/server/static/{js => components}/examples/upload_seq2seq.csv (100%) rename app/server/static/{js => components}/examples/upload_seq2seq.jsonl (100%) rename app/server/static/{js => components}/examples/upload_seq2seq.txt (100%) rename app/server/static/{js => components}/examples/upload_sequence_labeling.conll (100%) rename app/server/static/{js => components}/examples/upload_sequence_labeling.jsonl (100%) rename app/server/static/{js => components}/examples/upload_sequence_labeling.txt (100%) rename app/server/static/{js => components}/examples/upload_text_classification.csv (100%) rename app/server/static/{js => components}/examples/upload_text_classification.jsonl (100%) rename app/server/static/{js => components}/examples/upload_text_classification.txt (100%) rename app/server/static/{js => components}/filter.js (100%) rename app/server/static/{js => components}/guideline.vue (100%) rename app/server/static/{js => components}/http.js (100%) rename app/server/static/{js => components}/label.vue (100%) rename app/server/static/{js => components}/messages.vue (100%) rename app/server/static/{js => components}/mixin.js (100%) rename app/server/static/{js => components}/projects.vue (100%) rename app/server/static/{js => components}/seq2seq.vue (100%) rename app/server/static/{js => components}/sequence_labeling.vue (100%) rename app/server/static/{js => components}/stats.vue (100%) rename app/server/static/{js => components}/upload.pug (100%) rename app/server/static/{js => components}/upload_seq2seq.vue (100%) rename app/server/static/{js => components}/upload_sequence_labeling.vue (100%) rename app/server/static/{js => components}/upload_text_classification.vue (100%) delete mode 100644 app/server/static/js/.eslintrc.js rename app/server/{ => static}/package-lock.json (100%) rename app/server/{ => static}/package.json (87%) rename app/server/static/{js => pages}/dataset.js (88%) rename app/server/static/{js/demo => pages}/demo_named_entity.js (73%) rename app/server/static/{js/demo => pages}/demo_text_classification.js (71%) rename app/server/static/{js/demo => pages}/demo_translation.js (69%) rename app/server/static/{js => pages}/document_classification.js (73%) rename app/server/static/{js => pages}/download_seq2seq.js (66%) rename app/server/static/{js => pages}/download_sequence_labeling.js (63%) rename app/server/static/{js => pages}/download_text_classification.js (62%) rename app/server/static/{js => pages}/guideline.js (77%) rename app/server/static/{js => pages}/index.js (100%) rename app/server/static/{js => pages}/label.js (70%) rename app/server/static/{js => pages}/projects.js (70%) rename app/server/static/{js => pages}/seq2seq.js (75%) rename app/server/static/{js => pages}/sequence_labeling.js (75%) rename app/server/static/{js => pages}/stats.js (70%) rename app/server/static/{js => pages}/upload_seq2seq.js (66%) rename app/server/static/{js => pages}/upload_sequence_labeling.js (63%) rename app/server/static/{js => pages}/upload_text_classification.js (63%) rename app/server/static/{images/favicons => static}/android-icon-144x144.png (100%) rename app/server/static/{images/favicons => static}/android-icon-192x192.png (100%) rename app/server/static/{images/favicons => static}/android-icon-36x36.png (100%) rename app/server/static/{images/favicons => static}/android-icon-48x48.png (100%) rename app/server/static/{images/favicons => static}/android-icon-72x72.png (100%) rename app/server/static/{images/favicons => static}/android-icon-96x96.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-114x114.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-120x120.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-144x144.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-152x152.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-180x180.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-57x57.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-60x60.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-72x72.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-76x76.png (100%) rename app/server/static/{images/favicons => static}/apple-icon-precomposed.png (100%) rename app/server/static/{images/favicons => static}/apple-icon.png (100%) rename app/server/static/{images/favicons => static}/browserconfig.xml (100%) rename app/server/static/{images/favicons => static}/favicon-16x16.png (100%) rename app/server/static/{images/favicons => static}/favicon-32x32.png (100%) rename app/server/static/{images/favicons => static}/favicon-96x96.png (100%) rename app/server/static/{images/favicons => static}/favicon.ico (100%) rename app/server/static/{images/favicons => static}/manifest.json (100%) rename app/server/static/{images/favicons => static}/ms-icon-144x144.png (100%) rename app/server/static/{images/favicons => static}/ms-icon-150x150.png (100%) rename app/server/static/{images/favicons => static}/ms-icon-310x310.png (100%) rename app/server/static/{images/favicons => static}/ms-icon-70x70.png (100%) rename app/server/{ => static}/webpack.config.js (56%) diff --git a/.dockerignore b/.dockerignore index 73541da6..06fda641 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,13 +1,19 @@ * !app/ -app/staticfiles/ -app/db.sqlite3 -app/server/node_modules/ -app/server/static/bundle/ -app/server/webpack-stats.json -!data/ !tests/ !tools/ !.coveragerc !.flake8 !requirements.txt + +app/**/bundle/ +app/**/node_modules/ +app/**/webpack-stats.json + +app/**/*.sqlite3 +app/**/.env +app/**/junitxml/ +app/**/staticfiles/ +app/**/venv/ +app/**/__pycache__/ +tests/**/__pycache__/ diff --git a/.gitignore b/.gitignore index 1a9bd283..9320c27a 100644 --- a/.gitignore +++ b/.gitignore @@ -83,6 +83,8 @@ junitxml/ # Django stuff: *.log local_settings.py +*.sqlite3 +staticfiles/ # Flask stuff: instance/ @@ -192,14 +194,7 @@ fabric.properties pyvenv.cfg pip-selfcheck.json -/data/raw/* -/data/sparql/* - -# ignore db to avoid merge conflicts -*.sqlite3 - -# ignore django/node generated static files +# ignore webpack state node_modules/ -app/staticfiles/ -app/server/static/bundle/ -app/server/webpack-stats.json +bundle/ +webpack-stats.json diff --git a/Dockerfile b/Dockerfile index 0cb8843a..133823e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,22 +3,16 @@ FROM python:${PYTHON_VERSION} AS builder ARG NODE_VERSION="8.x" RUN curl -sL "https://deb.nodesource.com/setup_${NODE_VERSION}" | bash - \ - && apt-get install nodejs \ - && rm -rf /var/lib/apt/lists/* + && apt-get install nodejs -COPY app/server/package*.json /doccano/app/server/ -RUN cd /doccano/app/server \ +COPY app/server/static/package*.json /doccano/app/server/static/ +RUN cd /doccano/app/server/static \ && npm ci COPY requirements.txt / RUN pip install -r /requirements.txt \ && pip wheel -r /requirements.txt -w /deps -COPY app/server/static /doccano/app/server/static/ -COPY app/server/webpack.config.js /doccano/app/server/ -RUN cd /doccano/app/server \ - && DEBUG=False npm run build - COPY . /doccano RUN cd /doccano \ @@ -26,14 +20,13 @@ RUN cd /doccano \ FROM builder AS cleaner +RUN cd /doccano/app/server/static \ + && SOURCE_MAP=False DEBUG=False npm run build \ + && rm -rf components pages node_modules .*rc package*.json webpack.config.js + RUN cd /doccano \ && python app/manage.py collectstatic --noinput -RUN rm -rf /doccano/app/server/node_modules/ \ - && rm -rf /doccano/app/server/static/ \ - && rm -rf /doccano/app/staticfiles/js/ \ - && find /doccano/app/staticfiles -type f -name '*.map*' -delete - FROM python:${PYTHON_VERSION}-slim AS runtime COPY --from=builder /deps /deps diff --git a/README.md b/README.md index 0f74213f..01550d82 100644 --- a/README.md +++ b/README.md @@ -102,10 +102,11 @@ Next we need to start the webpack server so that the frontend gets compiled cont Run the following commands in a new shell: ```bash -cd server +cd server/static npm install npm run build # npm start # for developers +cd .. ``` **Option3: Pull the development Docker-Compose images** diff --git a/app/app/settings.py b/app/app/settings.py index 7679ac49..d294ca5b 100644 --- a/app/app/settings.py +++ b/app/app/settings.py @@ -93,12 +93,17 @@ TEMPLATES = [ }, ] +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/2.0/howto/static-files/ + +STATIC_URL = '/static/' +STATIC_ROOT = path.join(BASE_DIR, 'staticfiles') + STATICFILES_DIRS = [ static_path for static_path in ( - path.join(BASE_DIR, 'server', 'static', 'bundle'), - path.join(BASE_DIR, 'server', 'static', 'css'), - path.join(BASE_DIR, 'server', 'static', 'images'), + path.join(BASE_DIR, 'server', 'static', 'assets'), + path.join(BASE_DIR, 'server', 'static', 'static'), ) if path.isdir(static_path) ] @@ -109,7 +114,7 @@ WEBPACK_LOADER = { 'DEFAULT': { 'CACHE': not DEBUG, 'BUNDLE_DIR_NAME': 'bundle/', - 'STATS_FILE': path.join(BASE_DIR, 'server', 'webpack-stats.json'), + 'STATS_FILE': path.join(BASE_DIR, 'server', 'static', 'webpack-stats.json'), 'POLL_INTERVAL': 0.1, 'TIMEOUT': None, 'IGNORE': [r'.*\.hot-update.js', r'.+\.map'] @@ -194,11 +199,6 @@ USE_TZ = True TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner' TEST_OUTPUT_DIR = path.join(BASE_DIR, 'junitxml') -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/2.0/howto/static-files/ - -STATIC_URL = '/static/' - LOGIN_URL = '/login/' LOGIN_REDIRECT_URL = '/projects/' LOGOUT_REDIRECT_URL = '/' diff --git a/app/server/models.py b/app/server/models.py index 6ff5d630..5049d173 100644 --- a/app/server/models.py +++ b/app/server/models.py @@ -59,7 +59,7 @@ class TextClassificationProject(Project): @property def image(self): - return staticfiles_storage.url('images/cats/text_classification.jpg') + return staticfiles_storage.url('assets/images/cats/text_classification.jpg') def get_bundle_name(self): return 'document_classification' @@ -86,7 +86,7 @@ class SequenceLabelingProject(Project): @property def image(self): - return staticfiles_storage.url('images/cats/sequence_labeling.jpg') + return staticfiles_storage.url('assets/images/cats/sequence_labeling.jpg') def get_bundle_name(self): return 'sequence_labeling' @@ -113,7 +113,7 @@ class Seq2seqProject(Project): @property def image(self): - return staticfiles_storage.url('images/cats/seq2seq.jpg') + return staticfiles_storage.url('assets/images/cats/seq2seq.jpg') def get_bundle_name(self): return 'seq2seq' diff --git a/app/server/static/.eslintrc b/app/server/static/.eslintrc new file mode 100644 index 00000000..4ad11fe8 --- /dev/null +++ b/app/server/static/.eslintrc @@ -0,0 +1,23 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "parserOptions": { + "parser": "babel-eslint" + }, + "extends": [ + "airbnb-base", + "plugin:vue/recommended" + ], + "rules": { + "no-new": "off", + "no-param-reassign": "off", + "no-plusplus": "off", + "object-shorthand": "off", + "prefer-destructuring": "off", + "prefer-template": "off", + "vue/max-attributes-per-line": 3 + } +} diff --git a/app/server/static/js/.jsbeautifyrc b/app/server/static/.jsbeautifyrc similarity index 100% rename from app/server/static/js/.jsbeautifyrc rename to app/server/static/.jsbeautifyrc diff --git a/app/server/static/js/.pug-lintrc b/app/server/static/.pug-lintrc similarity index 100% rename from app/server/static/js/.pug-lintrc rename to app/server/static/.pug-lintrc diff --git a/app/server/static/css/admin.css b/app/server/static/assets/css/admin.css similarity index 100% rename from app/server/static/css/admin.css rename to app/server/static/assets/css/admin.css diff --git a/app/server/static/css/annotation.css b/app/server/static/assets/css/annotation.css similarity index 100% rename from app/server/static/css/annotation.css rename to app/server/static/assets/css/annotation.css diff --git a/app/server/static/css/forum.css b/app/server/static/assets/css/forum.css similarity index 99% rename from app/server/static/css/forum.css rename to app/server/static/assets/css/forum.css index d6f53c9e..88fd1129 100644 --- a/app/server/static/css/forum.css +++ b/app/server/static/assets/css/forum.css @@ -115,7 +115,7 @@ p { } .project-image { - background-image: url('/static/images/cat.png'); + background-image: url('/static/assets/images/cat.png'); background-size: cover; background-repeat: no-repeat; background-position: center center; diff --git a/app/server/static/images/cat.png b/app/server/static/assets/images/cat.png old mode 100755 new mode 100644 similarity index 100% rename from app/server/static/images/cat.png rename to app/server/static/assets/images/cat.png diff --git a/app/server/static/images/cats/seq2seq.jpg b/app/server/static/assets/images/cats/seq2seq.jpg similarity index 100% rename from app/server/static/images/cats/seq2seq.jpg rename to app/server/static/assets/images/cats/seq2seq.jpg diff --git a/app/server/static/images/cats/sequence_labeling.jpg b/app/server/static/assets/images/cats/sequence_labeling.jpg similarity index 100% rename from app/server/static/images/cats/sequence_labeling.jpg rename to app/server/static/assets/images/cats/sequence_labeling.jpg diff --git a/app/server/static/images/cats/text_classification.jpg b/app/server/static/assets/images/cats/text_classification.jpg similarity index 100% rename from app/server/static/images/cats/text_classification.jpg rename to app/server/static/assets/images/cats/text_classification.jpg diff --git a/app/server/static/images/logo.png b/app/server/static/assets/images/logo.png similarity index 100% rename from app/server/static/images/logo.png rename to app/server/static/assets/images/logo.png diff --git a/app/server/static/images/named_entity_recognition.png b/app/server/static/assets/images/named_entity_recognition.png similarity index 100% rename from app/server/static/images/named_entity_recognition.png rename to app/server/static/assets/images/named_entity_recognition.png diff --git a/app/server/static/images/sentiment_analysis.png b/app/server/static/assets/images/sentiment_analysis.png similarity index 100% rename from app/server/static/images/sentiment_analysis.png rename to app/server/static/assets/images/sentiment_analysis.png diff --git a/app/server/static/images/sequence_labeling.png b/app/server/static/assets/images/sequence_labeling.png similarity index 100% rename from app/server/static/images/sequence_labeling.png rename to app/server/static/assets/images/sequence_labeling.png diff --git a/app/server/static/images/translation.png b/app/server/static/assets/images/translation.png similarity index 100% rename from app/server/static/images/translation.png rename to app/server/static/assets/images/translation.png diff --git a/app/server/static/js/annotation.pug b/app/server/static/components/annotation.pug similarity index 100% rename from app/server/static/js/annotation.pug rename to app/server/static/components/annotation.pug diff --git a/app/server/static/js/annotator.vue b/app/server/static/components/annotator.vue similarity index 100% rename from app/server/static/js/annotator.vue rename to app/server/static/components/annotator.vue diff --git a/app/server/static/js/demo/demo_annotator.vue b/app/server/static/components/demo/demo_annotator.vue similarity index 100% rename from app/server/static/js/demo/demo_annotator.vue rename to app/server/static/components/demo/demo_annotator.vue diff --git a/app/server/static/js/demo/demo_data.js b/app/server/static/components/demo/demo_data.js similarity index 100% rename from app/server/static/js/demo/demo_data.js rename to app/server/static/components/demo/demo_data.js diff --git a/app/server/static/js/demo/demo_mixin.js b/app/server/static/components/demo/demo_mixin.js similarity index 100% rename from app/server/static/js/demo/demo_mixin.js rename to app/server/static/components/demo/demo_mixin.js diff --git a/app/server/static/js/demo/demo_named_entity.vue b/app/server/static/components/demo/demo_named_entity.vue similarity index 100% rename from app/server/static/js/demo/demo_named_entity.vue rename to app/server/static/components/demo/demo_named_entity.vue diff --git a/app/server/static/js/demo/demo_text_classification.vue b/app/server/static/components/demo/demo_text_classification.vue similarity index 100% rename from app/server/static/js/demo/demo_text_classification.vue rename to app/server/static/components/demo/demo_text_classification.vue diff --git a/app/server/static/js/demo/demo_translation.vue b/app/server/static/components/demo/demo_translation.vue similarity index 100% rename from app/server/static/js/demo/demo_translation.vue rename to app/server/static/components/demo/demo_translation.vue diff --git a/app/server/static/js/directives.js b/app/server/static/components/directives.js similarity index 100% rename from app/server/static/js/directives.js rename to app/server/static/components/directives.js diff --git a/app/server/static/js/document_classification.vue b/app/server/static/components/document_classification.vue similarity index 100% rename from app/server/static/js/document_classification.vue rename to app/server/static/components/document_classification.vue diff --git a/app/server/static/js/download.pug b/app/server/static/components/download.pug similarity index 100% rename from app/server/static/js/download.pug rename to app/server/static/components/download.pug diff --git a/app/server/static/js/download_seq2seq.vue b/app/server/static/components/download_seq2seq.vue similarity index 100% rename from app/server/static/js/download_seq2seq.vue rename to app/server/static/components/download_seq2seq.vue diff --git a/app/server/static/js/download_sequence_labeling.vue b/app/server/static/components/download_sequence_labeling.vue similarity index 100% rename from app/server/static/js/download_sequence_labeling.vue rename to app/server/static/components/download_sequence_labeling.vue diff --git a/app/server/static/js/download_text_classification.vue b/app/server/static/components/download_text_classification.vue similarity index 100% rename from app/server/static/js/download_text_classification.vue rename to app/server/static/components/download_text_classification.vue diff --git a/app/server/static/js/examples/download_seq2seq.csv b/app/server/static/components/examples/download_seq2seq.csv similarity index 100% rename from app/server/static/js/examples/download_seq2seq.csv rename to app/server/static/components/examples/download_seq2seq.csv diff --git a/app/server/static/js/examples/download_seq2seq.jsonl b/app/server/static/components/examples/download_seq2seq.jsonl similarity index 100% rename from app/server/static/js/examples/download_seq2seq.jsonl rename to app/server/static/components/examples/download_seq2seq.jsonl diff --git a/app/server/static/js/examples/download_sequence_labeling.jsonl b/app/server/static/components/examples/download_sequence_labeling.jsonl similarity index 100% rename from app/server/static/js/examples/download_sequence_labeling.jsonl rename to app/server/static/components/examples/download_sequence_labeling.jsonl diff --git a/app/server/static/js/examples/download_text_classification.csv b/app/server/static/components/examples/download_text_classification.csv similarity index 100% rename from app/server/static/js/examples/download_text_classification.csv rename to app/server/static/components/examples/download_text_classification.csv diff --git a/app/server/static/js/examples/download_text_classification.jsonl b/app/server/static/components/examples/download_text_classification.jsonl similarity index 100% rename from app/server/static/js/examples/download_text_classification.jsonl rename to app/server/static/components/examples/download_text_classification.jsonl diff --git a/app/server/static/js/examples/upload_seq2seq.csv b/app/server/static/components/examples/upload_seq2seq.csv similarity index 100% rename from app/server/static/js/examples/upload_seq2seq.csv rename to app/server/static/components/examples/upload_seq2seq.csv diff --git a/app/server/static/js/examples/upload_seq2seq.jsonl b/app/server/static/components/examples/upload_seq2seq.jsonl similarity index 100% rename from app/server/static/js/examples/upload_seq2seq.jsonl rename to app/server/static/components/examples/upload_seq2seq.jsonl diff --git a/app/server/static/js/examples/upload_seq2seq.txt b/app/server/static/components/examples/upload_seq2seq.txt similarity index 100% rename from app/server/static/js/examples/upload_seq2seq.txt rename to app/server/static/components/examples/upload_seq2seq.txt diff --git a/app/server/static/js/examples/upload_sequence_labeling.conll b/app/server/static/components/examples/upload_sequence_labeling.conll similarity index 100% rename from app/server/static/js/examples/upload_sequence_labeling.conll rename to app/server/static/components/examples/upload_sequence_labeling.conll diff --git a/app/server/static/js/examples/upload_sequence_labeling.jsonl b/app/server/static/components/examples/upload_sequence_labeling.jsonl similarity index 100% rename from app/server/static/js/examples/upload_sequence_labeling.jsonl rename to app/server/static/components/examples/upload_sequence_labeling.jsonl diff --git a/app/server/static/js/examples/upload_sequence_labeling.txt b/app/server/static/components/examples/upload_sequence_labeling.txt similarity index 100% rename from app/server/static/js/examples/upload_sequence_labeling.txt rename to app/server/static/components/examples/upload_sequence_labeling.txt diff --git a/app/server/static/js/examples/upload_text_classification.csv b/app/server/static/components/examples/upload_text_classification.csv similarity index 100% rename from app/server/static/js/examples/upload_text_classification.csv rename to app/server/static/components/examples/upload_text_classification.csv diff --git a/app/server/static/js/examples/upload_text_classification.jsonl b/app/server/static/components/examples/upload_text_classification.jsonl similarity index 100% rename from app/server/static/js/examples/upload_text_classification.jsonl rename to app/server/static/components/examples/upload_text_classification.jsonl diff --git a/app/server/static/js/examples/upload_text_classification.txt b/app/server/static/components/examples/upload_text_classification.txt similarity index 100% rename from app/server/static/js/examples/upload_text_classification.txt rename to app/server/static/components/examples/upload_text_classification.txt diff --git a/app/server/static/js/filter.js b/app/server/static/components/filter.js similarity index 100% rename from app/server/static/js/filter.js rename to app/server/static/components/filter.js diff --git a/app/server/static/js/guideline.vue b/app/server/static/components/guideline.vue similarity index 100% rename from app/server/static/js/guideline.vue rename to app/server/static/components/guideline.vue diff --git a/app/server/static/js/http.js b/app/server/static/components/http.js similarity index 100% rename from app/server/static/js/http.js rename to app/server/static/components/http.js diff --git a/app/server/static/js/label.vue b/app/server/static/components/label.vue similarity index 100% rename from app/server/static/js/label.vue rename to app/server/static/components/label.vue diff --git a/app/server/static/js/messages.vue b/app/server/static/components/messages.vue similarity index 100% rename from app/server/static/js/messages.vue rename to app/server/static/components/messages.vue diff --git a/app/server/static/js/mixin.js b/app/server/static/components/mixin.js similarity index 100% rename from app/server/static/js/mixin.js rename to app/server/static/components/mixin.js diff --git a/app/server/static/js/projects.vue b/app/server/static/components/projects.vue similarity index 100% rename from app/server/static/js/projects.vue rename to app/server/static/components/projects.vue diff --git a/app/server/static/js/seq2seq.vue b/app/server/static/components/seq2seq.vue similarity index 100% rename from app/server/static/js/seq2seq.vue rename to app/server/static/components/seq2seq.vue diff --git a/app/server/static/js/sequence_labeling.vue b/app/server/static/components/sequence_labeling.vue similarity index 100% rename from app/server/static/js/sequence_labeling.vue rename to app/server/static/components/sequence_labeling.vue diff --git a/app/server/static/js/stats.vue b/app/server/static/components/stats.vue similarity index 100% rename from app/server/static/js/stats.vue rename to app/server/static/components/stats.vue diff --git a/app/server/static/js/upload.pug b/app/server/static/components/upload.pug similarity index 100% rename from app/server/static/js/upload.pug rename to app/server/static/components/upload.pug diff --git a/app/server/static/js/upload_seq2seq.vue b/app/server/static/components/upload_seq2seq.vue similarity index 100% rename from app/server/static/js/upload_seq2seq.vue rename to app/server/static/components/upload_seq2seq.vue diff --git a/app/server/static/js/upload_sequence_labeling.vue b/app/server/static/components/upload_sequence_labeling.vue similarity index 100% rename from app/server/static/js/upload_sequence_labeling.vue rename to app/server/static/components/upload_sequence_labeling.vue diff --git a/app/server/static/js/upload_text_classification.vue b/app/server/static/components/upload_text_classification.vue similarity index 100% rename from app/server/static/js/upload_text_classification.vue rename to app/server/static/components/upload_text_classification.vue diff --git a/app/server/static/js/.eslintrc.js b/app/server/static/js/.eslintrc.js deleted file mode 100644 index 951612b0..00000000 --- a/app/server/static/js/.eslintrc.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - env: { - browser: true, - es6: true, - node: true, - }, - parserOptions: { - parser: "babel-eslint", - }, - extends: [ - "airbnb-base", - "plugin:vue/recommended", - ], - rules: { - "no-new": "off", - "no-param-reassign": "off", - "no-plusplus": "off", - "object-shorthand": "off", - "prefer-destructuring": "off", - "prefer-template": "off", - "vue/max-attributes-per-line": 3, - }, -}; diff --git a/app/server/package-lock.json b/app/server/static/package-lock.json similarity index 100% rename from app/server/package-lock.json rename to app/server/static/package-lock.json diff --git a/app/server/package.json b/app/server/static/package.json similarity index 87% rename from app/server/package.json rename to app/server/static/package.json index 1cb3b6ba..13e6e2eb 100644 --- a/app/server/package.json +++ b/app/server/static/package.json @@ -5,9 +5,9 @@ "scripts": { "start": "cross-env HOT_RELOAD=1 DEBUG=1 webpack-dev-server", "build": "webpack", - "lint.js": "eslint --max-warnings=0 'static/js/**/*.{js,vue}'", - "lint.pug": "pug-lint static/js -c static/js/.pug-lintrc", - "lint.pug.vue": "pug-lint-vue static/js -c static/js/.pug-lintrc", + "lint.js": "eslint --max-warnings=0 '{components,pages}/**/*.{js,vue}'", + "lint.pug": "pug-lint components/", + "lint.pug.vue": "pug-lint-vue components/", "lint": "run-s lint.js lint.pug lint.pug.vue", "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/app/server/static/js/dataset.js b/app/server/static/pages/dataset.js similarity index 88% rename from app/server/static/js/dataset.js rename to app/server/static/pages/dataset.js index 89e81f34..e8c10176 100644 --- a/app/server/static/js/dataset.js +++ b/app/server/static/pages/dataset.js @@ -1,4 +1,4 @@ -import HTTP from './http'; +import HTTP from '../components/http'; document.querySelectorAll('.delete-document-button').forEach((deleteButton) => { deleteButton.addEventListener('click', () => { diff --git a/app/server/static/js/demo/demo_named_entity.js b/app/server/static/pages/demo_named_entity.js similarity index 73% rename from app/server/static/js/demo/demo_named_entity.js rename to app/server/static/pages/demo_named_entity.js index 651e676e..86a86023 100644 --- a/app/server/static/js/demo/demo_named_entity.js +++ b/app/server/static/pages/demo_named_entity.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import DemoNamedEntity from './demo_named_entity.vue'; +import DemoNamedEntity from '../components/demo/demo_named_entity.vue'; Vue.use(require('vue-shortkey'), { prevent: ['input', 'textarea'], diff --git a/app/server/static/js/demo/demo_text_classification.js b/app/server/static/pages/demo_text_classification.js similarity index 71% rename from app/server/static/js/demo/demo_text_classification.js rename to app/server/static/pages/demo_text_classification.js index aa976764..3ada02be 100644 --- a/app/server/static/js/demo/demo_text_classification.js +++ b/app/server/static/pages/demo_text_classification.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import DemoTextClassification from './demo_text_classification.vue'; +import DemoTextClassification from '../components/demo/demo_text_classification.vue'; Vue.use(require('vue-shortkey'), { prevent: ['input', 'textarea'], diff --git a/app/server/static/js/demo/demo_translation.js b/app/server/static/pages/demo_translation.js similarity index 69% rename from app/server/static/js/demo/demo_translation.js rename to app/server/static/pages/demo_translation.js index f8417a32..0edfa277 100644 --- a/app/server/static/js/demo/demo_translation.js +++ b/app/server/static/pages/demo_translation.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import DemoTranslation from './demo_translation.vue'; +import DemoTranslation from '../components/demo/demo_translation.vue'; Vue.use(require('vue-shortkey')); diff --git a/app/server/static/js/document_classification.js b/app/server/static/pages/document_classification.js similarity index 73% rename from app/server/static/js/document_classification.js rename to app/server/static/pages/document_classification.js index 45dda015..08552601 100644 --- a/app/server/static/js/document_classification.js +++ b/app/server/static/pages/document_classification.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import DocumentClassification from './document_classification.vue'; +import DocumentClassification from '../components/document_classification.vue'; Vue.use(require('vue-shortkey'), { prevent: ['input', 'textarea'], diff --git a/app/server/static/js/download_seq2seq.js b/app/server/static/pages/download_seq2seq.js similarity index 66% rename from app/server/static/js/download_seq2seq.js rename to app/server/static/pages/download_seq2seq.js index 10791455..5c666780 100644 --- a/app/server/static/js/download_seq2seq.js +++ b/app/server/static/pages/download_seq2seq.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import DownloadSeq2Seq from './download_seq2seq.vue'; +import DownloadSeq2Seq from '../components/download_seq2seq.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/js/download_sequence_labeling.js b/app/server/static/pages/download_sequence_labeling.js similarity index 63% rename from app/server/static/js/download_sequence_labeling.js rename to app/server/static/pages/download_sequence_labeling.js index e057a8dc..83835cbe 100644 --- a/app/server/static/js/download_sequence_labeling.js +++ b/app/server/static/pages/download_sequence_labeling.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import DownloadSequenceLabeling from './download_sequence_labeling.vue'; +import DownloadSequenceLabeling from '../components/download_sequence_labeling.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/js/download_text_classification.js b/app/server/static/pages/download_text_classification.js similarity index 62% rename from app/server/static/js/download_text_classification.js rename to app/server/static/pages/download_text_classification.js index 2a324c33..6bae5d3d 100644 --- a/app/server/static/js/download_text_classification.js +++ b/app/server/static/pages/download_text_classification.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import DownloadTextClassification from './download_text_classification.vue'; +import DownloadTextClassification from '../components/download_text_classification.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/js/guideline.js b/app/server/static/pages/guideline.js similarity index 77% rename from app/server/static/js/guideline.js rename to app/server/static/pages/guideline.js index 355a4311..b25e651c 100644 --- a/app/server/static/js/guideline.js +++ b/app/server/static/pages/guideline.js @@ -1,6 +1,6 @@ import Vue from 'vue'; import vueDebounce from 'vue-debounce'; -import Guideline from './guideline.vue'; +import Guideline from '../components/guideline.vue'; Vue.use(vueDebounce); diff --git a/app/server/static/js/index.js b/app/server/static/pages/index.js similarity index 100% rename from app/server/static/js/index.js rename to app/server/static/pages/index.js diff --git a/app/server/static/js/label.js b/app/server/static/pages/label.js similarity index 70% rename from app/server/static/js/label.js rename to app/server/static/pages/label.js index 56ca065b..127a6c26 100644 --- a/app/server/static/js/label.js +++ b/app/server/static/pages/label.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import Labels from './label.vue'; +import Labels from '../components/label.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/js/projects.js b/app/server/static/pages/projects.js similarity index 70% rename from app/server/static/js/projects.js rename to app/server/static/pages/projects.js index 06bfaccb..24c9b2b9 100644 --- a/app/server/static/js/projects.js +++ b/app/server/static/pages/projects.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import Projects from './projects.vue'; +import Projects from '../components/projects.vue'; new Vue({ el: '#projects_root', diff --git a/app/server/static/js/seq2seq.js b/app/server/static/pages/seq2seq.js similarity index 75% rename from app/server/static/js/seq2seq.js rename to app/server/static/pages/seq2seq.js index 4bd01c01..f1289a67 100644 --- a/app/server/static/js/seq2seq.js +++ b/app/server/static/pages/seq2seq.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import Seq2Seq from './seq2seq.vue'; +import Seq2Seq from '../components/seq2seq.vue'; Vue.use(require('vue-shortkey')); diff --git a/app/server/static/js/sequence_labeling.js b/app/server/static/pages/sequence_labeling.js similarity index 75% rename from app/server/static/js/sequence_labeling.js rename to app/server/static/pages/sequence_labeling.js index 57631357..f72b6130 100644 --- a/app/server/static/js/sequence_labeling.js +++ b/app/server/static/pages/sequence_labeling.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import SequenceLabeling from './sequence_labeling.vue'; +import SequenceLabeling from '../components/sequence_labeling.vue'; Vue.use(require('vue-shortkey'), { prevent: ['input', 'textarea'], diff --git a/app/server/static/js/stats.js b/app/server/static/pages/stats.js similarity index 70% rename from app/server/static/js/stats.js rename to app/server/static/pages/stats.js index 62449c50..6348a1d8 100644 --- a/app/server/static/js/stats.js +++ b/app/server/static/pages/stats.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import Stats from './stats.vue'; +import Stats from '../components/stats.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/js/upload_seq2seq.js b/app/server/static/pages/upload_seq2seq.js similarity index 66% rename from app/server/static/js/upload_seq2seq.js rename to app/server/static/pages/upload_seq2seq.js index ee5766b0..aa258db6 100644 --- a/app/server/static/js/upload_seq2seq.js +++ b/app/server/static/pages/upload_seq2seq.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import UploadSeq2Seq from './upload_seq2seq.vue'; +import UploadSeq2Seq from '../components/upload_seq2seq.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/js/upload_sequence_labeling.js b/app/server/static/pages/upload_sequence_labeling.js similarity index 63% rename from app/server/static/js/upload_sequence_labeling.js rename to app/server/static/pages/upload_sequence_labeling.js index fd7df2b1..fe2c7633 100644 --- a/app/server/static/js/upload_sequence_labeling.js +++ b/app/server/static/pages/upload_sequence_labeling.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import UploadSequenceLabeling from './upload_sequence_labeling.vue'; +import UploadSequenceLabeling from '../components/upload_sequence_labeling.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/js/upload_text_classification.js b/app/server/static/pages/upload_text_classification.js similarity index 63% rename from app/server/static/js/upload_text_classification.js rename to app/server/static/pages/upload_text_classification.js index 73115369..959fead3 100644 --- a/app/server/static/js/upload_text_classification.js +++ b/app/server/static/pages/upload_text_classification.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import UploadTextClassification from './upload_text_classification.vue'; +import UploadTextClassification from '../components/upload_text_classification.vue'; new Vue({ el: '#mail-app', diff --git a/app/server/static/images/favicons/android-icon-144x144.png b/app/server/static/static/android-icon-144x144.png similarity index 100% rename from app/server/static/images/favicons/android-icon-144x144.png rename to app/server/static/static/android-icon-144x144.png diff --git a/app/server/static/images/favicons/android-icon-192x192.png b/app/server/static/static/android-icon-192x192.png similarity index 100% rename from app/server/static/images/favicons/android-icon-192x192.png rename to app/server/static/static/android-icon-192x192.png diff --git a/app/server/static/images/favicons/android-icon-36x36.png b/app/server/static/static/android-icon-36x36.png similarity index 100% rename from app/server/static/images/favicons/android-icon-36x36.png rename to app/server/static/static/android-icon-36x36.png diff --git a/app/server/static/images/favicons/android-icon-48x48.png b/app/server/static/static/android-icon-48x48.png similarity index 100% rename from app/server/static/images/favicons/android-icon-48x48.png rename to app/server/static/static/android-icon-48x48.png diff --git a/app/server/static/images/favicons/android-icon-72x72.png b/app/server/static/static/android-icon-72x72.png similarity index 100% rename from app/server/static/images/favicons/android-icon-72x72.png rename to app/server/static/static/android-icon-72x72.png diff --git a/app/server/static/images/favicons/android-icon-96x96.png b/app/server/static/static/android-icon-96x96.png similarity index 100% rename from app/server/static/images/favicons/android-icon-96x96.png rename to app/server/static/static/android-icon-96x96.png diff --git a/app/server/static/images/favicons/apple-icon-114x114.png b/app/server/static/static/apple-icon-114x114.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-114x114.png rename to app/server/static/static/apple-icon-114x114.png diff --git a/app/server/static/images/favicons/apple-icon-120x120.png b/app/server/static/static/apple-icon-120x120.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-120x120.png rename to app/server/static/static/apple-icon-120x120.png diff --git a/app/server/static/images/favicons/apple-icon-144x144.png b/app/server/static/static/apple-icon-144x144.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-144x144.png rename to app/server/static/static/apple-icon-144x144.png diff --git a/app/server/static/images/favicons/apple-icon-152x152.png b/app/server/static/static/apple-icon-152x152.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-152x152.png rename to app/server/static/static/apple-icon-152x152.png diff --git a/app/server/static/images/favicons/apple-icon-180x180.png b/app/server/static/static/apple-icon-180x180.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-180x180.png rename to app/server/static/static/apple-icon-180x180.png diff --git a/app/server/static/images/favicons/apple-icon-57x57.png b/app/server/static/static/apple-icon-57x57.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-57x57.png rename to app/server/static/static/apple-icon-57x57.png diff --git a/app/server/static/images/favicons/apple-icon-60x60.png b/app/server/static/static/apple-icon-60x60.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-60x60.png rename to app/server/static/static/apple-icon-60x60.png diff --git a/app/server/static/images/favicons/apple-icon-72x72.png b/app/server/static/static/apple-icon-72x72.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-72x72.png rename to app/server/static/static/apple-icon-72x72.png diff --git a/app/server/static/images/favicons/apple-icon-76x76.png b/app/server/static/static/apple-icon-76x76.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-76x76.png rename to app/server/static/static/apple-icon-76x76.png diff --git a/app/server/static/images/favicons/apple-icon-precomposed.png b/app/server/static/static/apple-icon-precomposed.png similarity index 100% rename from app/server/static/images/favicons/apple-icon-precomposed.png rename to app/server/static/static/apple-icon-precomposed.png diff --git a/app/server/static/images/favicons/apple-icon.png b/app/server/static/static/apple-icon.png similarity index 100% rename from app/server/static/images/favicons/apple-icon.png rename to app/server/static/static/apple-icon.png diff --git a/app/server/static/images/favicons/browserconfig.xml b/app/server/static/static/browserconfig.xml similarity index 100% rename from app/server/static/images/favicons/browserconfig.xml rename to app/server/static/static/browserconfig.xml diff --git a/app/server/static/images/favicons/favicon-16x16.png b/app/server/static/static/favicon-16x16.png similarity index 100% rename from app/server/static/images/favicons/favicon-16x16.png rename to app/server/static/static/favicon-16x16.png diff --git a/app/server/static/images/favicons/favicon-32x32.png b/app/server/static/static/favicon-32x32.png similarity index 100% rename from app/server/static/images/favicons/favicon-32x32.png rename to app/server/static/static/favicon-32x32.png diff --git a/app/server/static/images/favicons/favicon-96x96.png b/app/server/static/static/favicon-96x96.png similarity index 100% rename from app/server/static/images/favicons/favicon-96x96.png rename to app/server/static/static/favicon-96x96.png diff --git a/app/server/static/images/favicons/favicon.ico b/app/server/static/static/favicon.ico similarity index 100% rename from app/server/static/images/favicons/favicon.ico rename to app/server/static/static/favicon.ico diff --git a/app/server/static/images/favicons/manifest.json b/app/server/static/static/manifest.json similarity index 100% rename from app/server/static/images/favicons/manifest.json rename to app/server/static/static/manifest.json diff --git a/app/server/static/images/favicons/ms-icon-144x144.png b/app/server/static/static/ms-icon-144x144.png similarity index 100% rename from app/server/static/images/favicons/ms-icon-144x144.png rename to app/server/static/static/ms-icon-144x144.png diff --git a/app/server/static/images/favicons/ms-icon-150x150.png b/app/server/static/static/ms-icon-150x150.png similarity index 100% rename from app/server/static/images/favicons/ms-icon-150x150.png rename to app/server/static/static/ms-icon-150x150.png diff --git a/app/server/static/images/favicons/ms-icon-310x310.png b/app/server/static/static/ms-icon-310x310.png similarity index 100% rename from app/server/static/images/favicons/ms-icon-310x310.png rename to app/server/static/static/ms-icon-310x310.png diff --git a/app/server/static/images/favicons/ms-icon-70x70.png b/app/server/static/static/ms-icon-70x70.png similarity index 100% rename from app/server/static/images/favicons/ms-icon-70x70.png rename to app/server/static/static/ms-icon-70x70.png diff --git a/app/server/webpack.config.js b/app/server/static/webpack.config.js similarity index 56% rename from app/server/webpack.config.js rename to app/server/static/webpack.config.js index 6ed94071..fbf636bd 100644 --- a/app/server/webpack.config.js +++ b/app/server/static/webpack.config.js @@ -1,3 +1,5 @@ +const fs = require('fs'); +const path = require('path'); const process = require('process'); const BundleTracker = require('webpack-bundle-tracker'); const VueLoaderPlugin = require('vue-loader/lib/plugin') @@ -7,35 +9,25 @@ const hotReload = process.env.HOT_RELOAD === '1'; const webpackHost = process.env.WEBPACK_HOST || '127.0.0.1'; const webpackPort = process.env.WEBPACK_PORT ? parseInt(process.env.WEBPACK_PORT, 10) : 8080; const pollMillis = process.env.WEBPACK_POLL_MILLIS ? parseInt(process.env.WEBPACK_POLL_MILLIS, 10) : false; +const noSourceMap = process.env.SOURCE_MAP === 'False'; + +const pagesRoot = path.join(__dirname, 'pages'); +const entryPoints = {}; +fs.readdirSync(pagesRoot).forEach((scriptName) => { + const bundleName = path.parse(scriptName).name; + const scriptPath = path.join(pagesRoot, scriptName) + entryPoints[bundleName] = scriptPath; +}); module.exports = { mode: devMode ? 'development' : 'production', - entry: { - 'index': './static/js/index.js', - 'sequence_labeling': './static/js/sequence_labeling.js', - 'document_classification': './static/js/document_classification.js', - 'seq2seq': './static/js/seq2seq.js', - 'projects': './static/js/projects.js', - 'stats': './static/js/stats.js', - 'label': './static/js/label.js', - 'guideline': './static/js/guideline.js', - 'dataset': './static/js/dataset.js', - 'demo_text_classification': './static/js/demo/demo_text_classification.js', - 'demo_named_entity': './static/js/demo/demo_named_entity.js', - 'demo_translation': './static/js/demo/demo_translation.js', - 'upload_seq2seq': './static/js/upload_seq2seq.js', - 'upload_sequence_labeling': './static/js/upload_sequence_labeling.js', - 'upload_text_classification': './static/js/upload_text_classification.js', - 'download_seq2seq': './static/js/download_seq2seq.js', - 'download_sequence_labeling': './static/js/download_sequence_labeling.js', - 'download_text_classification': './static/js/download_text_classification.js', - }, + entry: entryPoints, output: { publicPath: hotReload ? `http://127.0.0.1:${webpackPort}/` : '', - path: __dirname + '/static/bundle', + path: path.join(__dirname, 'bundle'), filename: '[name].js' }, - devtool: devMode ? 'cheap-eval-source-map' : 'source-map', + devtool: noSourceMap ? false : (devMode ? 'cheap-eval-source-map' : 'source-map'), devServer: { port: webpackPort, host: webpackHost, diff --git a/app/server/templates/admin.html b/app/server/templates/admin.html index 39462b41..585ff462 100644 --- a/app/server/templates/admin.html +++ b/app/server/templates/admin.html @@ -2,7 +2,7 @@ {% load static %} {% load render_bundle from webpack_loader %} {% block header %} - + {% endblock %} {% block navigation %} diff --git a/app/server/templates/annotation.html b/app/server/templates/annotation.html index 32748a94..cd071d1a 100644 --- a/app/server/templates/annotation.html +++ b/app/server/templates/annotation.html @@ -2,7 +2,7 @@ {% load static %} {% load render_bundle from webpack_loader %} {% block header %} - + {% endblock %} {% block navigation %} {% if user.is_superuser and 'project_id' in view.kwargs %} diff --git a/app/server/templates/base.html b/app/server/templates/base.html index 3e70ccac..757019fe 100644 --- a/app/server/templates/base.html +++ b/app/server/templates/base.html @@ -15,24 +15,24 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + {% block header %}{% endblock %} {% azure_appinsights %} @@ -43,7 +43,7 @@
- +
@@ -36,7 +36,7 @@
- Description + Description
@@ -59,7 +59,7 @@
- Description + Description
@@ -82,7 +82,7 @@
- Description + Description
diff --git a/docker-compose.yml b/docker-compose.yml index 500e4239..f8787a79 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: image: node:8 volumes: - .:/src - - node_modules:/src/app/server/node_modules + - node_modules:/src/app/server/static/node_modules command: ["/src/tools/dev-webpack.sh"] environment: WEBPACK_HOST: "0.0.0.0" diff --git a/tools/ci.sh b/tools/ci.sh index 4e4e9bbf..f8cd1d9a 100755 --- a/tools/ci.sh +++ b/tools/ci.sh @@ -7,4 +7,4 @@ python app/manage.py migrate coverage run --source=app app/manage.py test server.tests coverage report -(cd app/server && npm run lint) +(cd app/server/static && npm run lint) diff --git a/tools/dev-webpack.sh b/tools/dev-webpack.sh index fea3cf3e..99a686b2 100755 --- a/tools/dev-webpack.sh +++ b/tools/dev-webpack.sh @@ -3,10 +3,10 @@ set -o errexit root="$(dirname "$0")/.." -server="${root}/app/server" +frontend="${root}/app/server/static" ( - cd "${server}" + cd "${frontend}" if [[ ! -d node_modules/.bin ]]; then echo "Installing dependencies" diff --git a/tools/heroku.sh b/tools/heroku.sh index 8c6535fd..8bfc33e4 100644 --- a/tools/heroku.sh +++ b/tools/heroku.sh @@ -3,7 +3,7 @@ set -o errexit if [ "$1" = "build" ]; then - cd app/server + cd app/server/static npm install --only=prod npm install --only=dev ./node_modules/.bin/webpack --config ./webpack.config.js --mode production