Skip to content
Snippets Groups Projects
Commit 163a2c42 authored by dcz2's avatar dcz2
Browse files

Vite development environment

parent 0a0b6c37
Branches
Tags
No related merge requests found
Showing
with 120 additions and 23 deletions
......@@ -5,3 +5,4 @@
/.idea/
/import.log
.DS_Store
/collected_static/
FROM node:16.16
MAINTAINER Dariusz Czerski <dcz@ipipan.waw.pl>
ADD frontend/yarn.lock /yarn.lock
ADD frontend/package.json /package.json
RUN yarn install --frozen-lockfile
ENV PATH /node_modules/.bin:$PATH
ADD frontend /src
ADD docker /docker
VOLUME /src
WORKDIR /src
ENTRYPOINT ["/docker/scripts/docker-entrypoint-frontend"]
......@@ -2,6 +2,7 @@
{% load i18n %}
{% load static %}
{% load django_vite %}
{% get_current_language as LANGUAGE_CODE %}
......@@ -33,10 +34,11 @@
<!-- translations: https://docs.djangoproject.com/en/2.2/topics/i18n/translation/#using-the-javascript-translation-catalog -->
<script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>
{% block scripts %}{% endblock %}
{% vite_hmr_client %}
{% vite_asset 'src/main.js' %}
</head>
<body>
{% block modals %}{% endblock %}
<div class="container-fluid h-100 d-flex flex-column p-0">
......@@ -103,6 +105,7 @@
</nav>
<main class="container-fluid flex-grow-1 overflow-auto m-0 p-0 bg-dark" role="main">
<div id="vue-app"></div>
{% block content %}{% endblock %}
</main>
......
......@@ -30,3 +30,13 @@ services:
- .:/app
ports:
- "8000:8000"
frontend:
container_name: shellvalier-frontend
image: shellvalier-frontend-developer:latest
networks:
- app-tier
volumes:
- ./frontend:/src
ports:
- "8010:8010"
#!/bin/bash
echo 'Starting docker container'
set -e
exec "$@"
exec yarn dev
#!/usr/bin/env bash
set -e
docker build -t shellvalier-developer -f Dockerfile .
docker build -t shellvalier-frontend-developer -f Dockerfile-frontend .
docker-compose up
import Entries from './components/Entries.js';
const { createApp } = Vue;
window.update_entries = function () {
if(window.unificationLeftPaneApp) {
window.unificationLeftPaneApp.unificationEntriesListRefreshKey++;
window.unificationLeftPaneApp.lexicalUnitId = null;
} else {
window.unificationLeftPaneApp = createApp(Entries).mount('#vue-app');
}
}
import UnificationComponent from './components/UnificationComponent.js';
const { createApp } = Vue;
window.update_entries = function () {
window.unificationLeftPaneApp = createApp(UnificationComponent).mount('#vue-app');
}
window.update_entries = function () {}
......@@ -13,11 +13,9 @@
<script src="{% static 'entries/js/unification_entries_for_frames_list.js' %}"></script>
<script src="{% static 'entries/js/unification.js' %}"></script>
<script src="{% static 'entries/js/jquery-impromptu.min.js' %}"></script>
<script src="https://unpkg.com/vue@3"></script>
<script type="module" src="{% static 'entries/js/entries_index.js' %}"></script>
{% endblock %}
{% block content %}
<div id="lexical-unit-notes-template" class="d-none">{% include 'notes.html' %}</div>
<div id="vue-app" class="row h-100 m-0 p-0 bg-secondary"></div>
{% endblock %}
......@@ -14,19 +14,12 @@
<script src="{% static 'entries/js/unification_entries_for_frames_list.js' %}"></script>
<script src="{% static 'entries/js/unification.js' %}"></script>
<script src="{% static 'entries/js/jquery-impromptu.min.js' %}"></script>
<script src="https://unpkg.com/vue@3"></script>
<script>
window.initialUnifiedFrameId = {{ unified_frame_id|default:'null' }};
</script>
<script type="module" src="{% static 'entries/js/unification_index.js' %}"></script>
{% endblock %}
{% block left_pane %}<div id="unification-left-pane"></div>{% endblock %}
{% block right_pane %}{% include "unification_lexical_unit_display.html" %}{% endblock %}
{% block content %}
<div id="lexical-unit-notes-template" class="d-none">{% include 'notes.html' %}</div>
<div id="vue-app" class="row h-100 m-0 p-0 bg-secondary"></div>
{% endblock %}
......@@ -16,7 +16,7 @@ urlpatterns = [
path('get_subform/', views.get_subform, name='get_subform'),
path('change_show_reals_desc/', views.change_show_reals_desc, name='change_show_reals_desc'),
path('change_show_linked_entries/', views.change_show_linked_entries, name='change_show_linked_entries'),
path('unification', views.unification, name='unification'),
path('unification/', views.unification, name='unification'),
path('autocomplete/', autocompletes.autocomplete, name='autocomplete'),
path('plWN_context_lookup/', ajax_plWN_context_lookup, name='plWN_context_lookup'),
......
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
{
"recommendations": ["Vue.volar"]
}
# Vue 3 + Vite
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
## Recommended IDE Setup
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title>
</head>
<body>
<div id="vue-app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
{
"name": "frontend",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"vue": "^3.2.37",
"vue-router": "^4.1.2"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.0.0",
"vite": "^3.0.0"
}
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file
<template>
<div class="row m-0 p-0 h-100" v-if="this.$route.name !== '404'">
<div class="container bg-light">
<RouterView />
</div>
</div>
</template>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
\ No newline at end of file
<template>
Entries
</template>
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment