diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4ce58e099facf232a877c86434e0b441f1c7e0c1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/client +/vas +/src +/doc/build \ No newline at end of file diff --git a/README.md b/README.md index 56ad60717e2249311b343626922549af8fcb75c7..7689cc5b39559bf486f92e55ca790434f83fcd0f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,72 @@ -# vMap 2021 +# vMap +## Installation environnement de dev + +### Récupération des dépendances + +L'application possède des dépendances sur vitis et module_vmap, pour les récupérer lancer la commande suivante + +``` +./bin/clone_deps.sh --app_path=[répertoire de l'application] +``` + +### Mise en place des points de montage + +Afin simuler un environnement de produciton tout en utilisant les modules placés dans le dossier `src` nous utilisons des points de montage. + +Pour de les intialiser lance la commande suivante + +``` +./bin/mount_project.sh --app_path=[répertoire de l'application] +``` + +### Démarrage du client + +``` +cd client +npm start +``` + +### Démarrage du serveur + +### Démarrage des moteurs + +Il faut commencer par compiler les moteurs Vitis + +Vitis: +``` +cd src/vitis/engine/vitis +npm run buildexe +``` + +Les moteurs Vitis permettant de lancer des jobs de manière periodique. + +Maintenant lancer le moteur vitis +``` +cd src/vitis/engine/vitis +./jobsRunner +``` + +## Documentation + +### Installation de l'environnement + +Installer Python 3.7 ([windows](https://www.python.org/downloads/)) et pip puis installer les dépendances suivantes : + +```bash +pip install -U sphinx +pip install sphinx_rtd_theme +pip install sphinx-markdown-parser +pip install recommonmark +pip install pymdown-extensions +``` + +### Compiler la documentation en local + +La documentation se trouve dans le dossier doc/source, pour compiler la documentation, il faut exécuter la commande suivante à la racine du dépot : + +```bash +sphinx-build -b html doc/source doc/build +``` + +il suffit ensuite d'ouvrir le fichier index.html dans doc/build pour visualiser la documentation et naviguer dedans. \ No newline at end of file diff --git a/_install/dependencies.json b/_install/dependencies.json new file mode 100644 index 0000000000000000000000000000000000000000..f0293c170ad3351b72f42fb3f36bbafd1c411cb6 --- /dev/null +++ b/_install/dependencies.json @@ -0,0 +1,49 @@ +{ + "API_ALIAS": "/rest", + "APP_ALIAS": "/vmap", + "APP_ENV": "prod", + "HTTPSERVER_CONF_FILE": "vm_app_vmap.conf", + "HTTPSERVER_PATH": "/etc/apache2", + "HOSTNAME" : "", + "INSTALL_PATH": "/var/www/vmap", + "INSTALL_TYPE": "full", + "PLATFORM": "Linux", + "POSTGRES_DB": "vmap", + "POSTGRES_HOST": "dbhost", + "POSTGRES_PASSWORD": "dbpasswd", + "POSTGRES_PORT": 5432, + "POSTGRES_USER": "dbuser", + "application": { + "default_description": "# Bienvenue dans vMap ! \n\nPlus d'information sur [http:\/\/www.veremes.com](http:\/\/www.veremes.com)", + "default_theme": "1", + "branch": "master", + "name": "vmap", + "url": "git@gitlab.veremes.net:Development/vitis-2020/applications/vmap.git", + "users": { + "admin": { + "grouproles": [ + "vitis_user", + "vitis_admin", + "vmap_user", + "vmap_admin" + ], + "login": true, + "password": "admin", + "roles": [ + "LOGIN", + "CREATEROLE" + ] + } + }, + "framework": { + "branch": "master", + "name": "vitis", + "url": "git@gitlab.veremes.net:Development/vitis-2020/sources/vitis.git" + }, + "modules": [{ + "branch": "master", + "name": "module_vmap", + "url": "git@gitlab.veremes.net:Development/vitis-2020/sources/module_vmap.git" + }] + } +} diff --git a/_install/templates/properties.json b/_install/templates/properties.json new file mode 100644 index 0000000000000000000000000000000000000000..04a5fffcac8d3d9d94b4abb896ca68e231f23c7f --- /dev/null +++ b/_install/templates/properties.json @@ -0,0 +1,21 @@ +{ + {% if not client_properties_exists %} + "status": "stable", + "application": "{{application.name}}", + "default_show_sidenav": true, + "map": { + "default_feature_zoom": 15, + "draw_style": { + "draw_color": "rgba(54, 184, 255, 0.6)", + "contour_color": "rgba(0, 0, 0, 0.4)", + "contour_size": 2, + "circle_radius": 7 + } + }, + "documentation": [], + {% endif %} + "app_api_url": "https://[hostname]{{API_ALIAS}}/v2", + "version": "{{application.branch}}", + "build": "{{APP_BUILD}}", + "month_year": "{{MONTH_YEAR}}" +} diff --git a/_install/templates/vm_app_vmap.conf b/_install/templates/vm_app_vmap.conf new file mode 100644 index 0000000000000000000000000000000000000000..a338ee5c9b6181e126bd3729cdc9d04e90aa9142 --- /dev/null +++ b/_install/templates/vm_app_vmap.conf @@ -0,0 +1,5 @@ +{% include "vitis/vm_php_symfony.conf" with context %} + +{% include "vitis/vm_vas.conf" with context %} + +{% include "vitis/vm_client.conf" with context %} diff --git a/bin/buildengines.sh b/bin/buildengines.sh new file mode 100755 index 0000000000000000000000000000000000000000..40b80f01823ea015595dc597de5a83a860f2a335 --- /dev/null +++ b/bin/buildengines.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# +# +# Script à lancer pour la compilation des engines +# +# Paramètres obligatoires : +# --app_path : chemin vers le répertoire d'installation d'application +# +# + +for i in "$@" +do +case $i in + # param app_path + --app_path=*) + app_path="${i#*=}" + shift + ;; +esac +done + +if [ -z ${app_path+x} ] +then + echo "--app_path required" + exit 1 +fi + +$app_path/src/vitis/_install/build_jobsrunner.sh --app_path=$app_path + diff --git a/bin/clone_deps.sh b/bin/clone_deps.sh new file mode 100755 index 0000000000000000000000000000000000000000..609ca0f5753df683ecffd949701efdc68956e647 --- /dev/null +++ b/bin/clone_deps.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# +# Script à lancer pour l'installation d'une application Vitis +# +# Paramètres obligatoires : +# --app_path : chemin vers le répertoire d'installation d'application +# +# + +for i in "$@" +do +case $i in + # param app_path + --app_path=*) + app_path="${i#*=}" + shift + ;; +esac +done + +if [ -z ${app_path+x} ] +then + echo "--app_path required" + exit 1 +fi + +cd $app_path +echo "---- Clone Repos ----" + +if [ -d src ]; then + mkdir -p src +fi + +git clone git@gitlab.veremes.net:Development/vitis-2020/sources/vitis.git src/vitis +git clone git@gitlab.veremes.net:Development/vitis-2020/sources/module_vmap.git src/module_vmap \ No newline at end of file diff --git a/bin/mount_project.sh b/bin/mount_project.sh new file mode 100755 index 0000000000000000000000000000000000000000..0dcfc79df0e6ffe525ef724546c5387fea31119a --- /dev/null +++ b/bin/mount_project.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# +# +# Script à lancer pour l'installation d'une application Vitis +# +# Paramètres obligatoires : +# --app_path : chemin vers le répertoire d'installation d'application +# +# + +for i in "$@" +do +case $i in + # param app_path + --app_path=*) + app_path="${i#*=}" + shift + ;; +esac +done + +if [ -z ${app_path+x} ] +then + echo "--app_path required" + exit 1 +fi + +cd $app_path +echo "---- Generate Client ----" +mkdir -p client +empty=`ls -a client | sed -e "/\.$/d" | wc -l` + +if [ $empty -eq 0 ] +then + echo "---- Mount module's assets folder ----" + sudo mount --bind src/vitis/client client + mkdir -p client/src/modules/vmap + sudo mount --bind src/module_vmap/module client/src/modules/vmap + mkdir -p client/src/conf + sudo mount --bind conf client/src/conf + + # Motage des modules Angular + if [ -f conf/modules-components.ts ]; then + cp -f conf/modules-components.ts src/vitis/client/src/app/modules/modules-components.ts + else + cp -f src/vitis/client/src/app/modules/modules-components.sample.ts src/vitis/client/src/app/modules/modules-components.ts + fi + if [ -d src/module_vmap/module/components ]; then + mkdir src/vitis/client/src/app/modules/vmap + sudo mount --bind src/module_vmap/module/components client/src/app/modules/vmap + fi +fi + +echo "---- Generate VAS ----" +mkdir -p vas +empty=`ls -a vas | sed -e "/\.$/d" | wc -l` + +if [ $empty -eq 0 ] +then + echo "---- Mount module's WebServices folder ----" + sudo mount --bind src/vitis/vas vas + mkdir -p vas/src/Module/Vmap + sudo mount --bind src/module_vmap/web_services vas/src/Module/Vmap + mkdir -p vas/engine/vitis + sudo mount --bind src/vitis/engine/vitis vas/engine/vitis +fi \ No newline at end of file diff --git a/bin/unmount_project.sh b/bin/unmount_project.sh new file mode 100755 index 0000000000000000000000000000000000000000..5799a3cbffd07fb4b5b598b8aacdcd259203153a --- /dev/null +++ b/bin/unmount_project.sh @@ -0,0 +1,81 @@ +#!/bin/bash +# +# +# Script à lancer pour l'installation d'une application Vitis +# +# Paramètres obligatoires : +# --app_path : chemin vers le répertoire d'installation d'application +# +# + +for i in "$@" +do +case $i in + # param app_path + --app_path=*) + app_path="${i#*=}" + shift + ;; +esac +done + +if [ -z ${app_path+x} ] +then + echo "--app_path required" + exit 1 +fi + +cd $app_path + +# Démonte un dossier +unmount_folder() { + if [ -d "$1" ]; then + if mount | grep "$app_path/$1" > /dev/null; then + echo "Unmount $1" + sudo umount "$app_path/$1" + fi + fi +} + +# Démote les points de montages contenus dans un dossier +unmount_containing_folders() { + if [ -d "$1" ]; then + for f in "$1"/*; do + if [ -d "$f" ]; then + unmount_folder "$f" + fi + done + fi +} + +echo "--------------------------------" +echo "---- Unmount client folders ----" +echo "--------------------------------" + +# Démote src/vitis/client/src/modules/* +unmount_containing_folders "src/vitis/client/src/modules" + +# Démote src/vitis/client/src/app/modules/* +unmount_containing_folders "src/vitis/client/src/app/modules" + +# Démonte src/vitis/client/src/conf +unmount_folder "src/vitis/client/src/conf" + +# Démonte client +unmount_folder "client" + +# Supprime modules-components.ts +sudo rm src/vitis/client/src/app/modules/modules-components.ts + +echo "-----------------------------" +echo "---- Unmount vas folders ----" +echo "-----------------------------" + +# Démote src/vitis/vas/engine/* +unmount_containing_folders "src/vitis/vas/engine" + +# Démote src/vitis/vas/src/Module/* +unmount_containing_folders "src/vitis/vas/src/Module" + +# Démonte vas +unmount_folder "vas" \ No newline at end of file diff --git a/conf/app.struct.ts b/conf/app.struct.ts new file mode 100755 index 0000000000000000000000000000000000000000..6d9d1b65b828c0a4d24ab812a683ff85b6efac7a --- /dev/null +++ b/conf/app.struct.ts @@ -0,0 +1,103 @@ +import { AppConfig } from '../app/vitis/app.model'; +import { + vitisUsersMode, + vitisLogsMode, + vitisConfigVitisObject, + vitisConfigSharedDirObject, + vitisConfigEmailTemplatesObject, + vitisAPIVitisWebService, + vitisUserHeader, + vitisHelpHeader, + vitisTranslateConfig, + vitisConfigInterfaceObject +} from '../app/vitis/app.struct'; +import { + vmapConfigVmapObject, + vmapTranslateConfig, + vmapAPIVmapWebService, +} from '../modules/vmap/struct/vmap.struct'; + +export const appStruct: AppConfig = { + 'translate': [vitisTranslateConfig, vmapTranslateConfig], + 'name': 'vMap', + 'logo': { + 'type': 'icon', + 'class': 'icon-vitis-vitis' + }, + 'favicon': 'conf/images/Veremes-Leaf-Frame-W.png', + 'modes': [{ + 'type': 'separator', + 'label': 'vMap', + 'privilege': 'vmap_user' + }, + { + 'type': 'separator', + 'label': 'TITLE_SEPARATOR_VMAP_MAP_MANAGEMENT', + 'privilege': 'vmap_admin' + }, + { + 'type': 'separator', + 'label': 'TITLE_MODE_VMAP_ADMINISTRATION', + 'privilege': 'vitis_admin' + }, + vitisUsersMode, + { + 'name': 'vitis_config', + 'label': 'TITLE_MODE_CONFIGURATION', + 'icon': 'icon-vitis-cogs', + 'route': 'config', + 'privilege': 'vitis_admin', + 'objects': [ + vitisConfigVitisObject, + vmapConfigVmapObject, + vitisConfigSharedDirObject, + vitisConfigEmailTemplatesObject, + vitisConfigInterfaceObject] + }, { + 'name': 'vitis_api', + 'label': 'TITLE_MODE_CONFIGURATION_API', + 'icon': 'icon-vitis-code', + 'route': 'api_doc', + 'type': 'api_doc', + 'privilege': 'vitis_admin', + 'options': { + 'web_services': [vitisAPIVitisWebService, vmapAPIVmapWebService], + 'base_path': '/v2' + } + }, vitisLogsMode], + 'headers': [vitisUserHeader, vitisHelpHeader], + 'widgets': [], + 'documentation': [ + { + "name": "vMap", + "url": "http://documentation.veremes.net/vmap/fr/index.html" + } + ], + 'credits': { + "authors": [ + "Alexandre Miromenkov", + "Anthony Borghi", + "Armand Bahi", + "Frederic Carretero", + "Olivier Gayte", + "Laurent Panabières", + "Ludivine Premont", + "Sofian Pujo" + ], + "graphics": [ + "Alexandre Roy" + ], + "libs": [ + "Apache", + "Angular", + "Bootstrap", + "Postgres", + "Symfony", + "OpenLayers", + "Open Street Maps", + "jQuery" + ], + "contact": "www.veremes.com", + "licence": "© Veremes" + } +}; \ No newline at end of file diff --git a/conf/images/Veremes-Leaf-Frame-W.png b/conf/images/Veremes-Leaf-Frame-W.png new file mode 100644 index 0000000000000000000000000000000000000000..addbe49096fa694f51d90d06b889d03de3203c3b Binary files /dev/null and b/conf/images/Veremes-Leaf-Frame-W.png differ diff --git a/conf/images/favicon.ico b/conf/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3398c55a6e78cf742fdfe2863cbb61c83c35ccc6 Binary files /dev/null and b/conf/images/favicon.ico differ diff --git a/conf/images/i.png b/conf/images/i.png new file mode 100755 index 0000000000000000000000000000000000000000..667c4dd2b701249c584e9b1bbd6cb44ab1a09ac2 Binary files /dev/null and b/conf/images/i.png differ diff --git a/conf/images/logo_interreg.jpg b/conf/images/logo_interreg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c5bf22e8366b0f9fdca2f4463ae71bf4fed81cd9 Binary files /dev/null and b/conf/images/logo_interreg.jpg differ diff --git a/conf/modules-components.ts b/conf/modules-components.ts new file mode 100644 index 0000000000000000000000000000000000000000..5e927908ed2e8e562cc5480b1e93f6a0ebbf97cf --- /dev/null +++ b/conf/modules-components.ts @@ -0,0 +1,36 @@ +/** + * + * Fichier servant à l'injection de composants et modules angular + * présents sur les modules Vitis et ne devant pas faire partie + * du code du noyeau. + * + * Il faudra le placer dans le dossier conf de l'application et + * c'est init_project.sh qui s'occupera de le copier dans le + * dossier correspondant + * + * Attention : le fichier étant delatif à l'application il est dans le gitignore de Vitis + * Il faudra donc après toute modification appliquer cette dernière dans le dossier conf de l'application + * + * + * Exemple : import des composants GTF + * + * import { + * oModules as oGTFModules, + * oModulesComponents as oGTFModulesComponents, + * oWkListComponents as oGTFWkListComponents + * } from './gtf/gtf.exports'; + * + * export const oModules = { ...oGTFModules }; + * export const oModulesComponents = { ...oGTFModulesComponents }; + * export const oWkListComponents = { ...oGTFWkListComponents }; + */ + +import { + oVmapModules, + oVmapModulesComponents, + oVmapWkListComponents +} from './vmap/vmap.exports'; + +export const oModules = { ...oVmapModules }; +export const oModulesComponents = { ...oVmapModulesComponents }; +export const oWkListComponents = { ...oVmapWkListComponents }; \ No newline at end of file diff --git a/conf/properties.json b/conf/properties.json new file mode 100644 index 0000000000000000000000000000000000000000..f79b6448060952d59753f1a33c4539d0d4423fdc --- /dev/null +++ b/conf/properties.json @@ -0,0 +1,19 @@ +{ + "app_api_url": "https://[hostname]:8000/v2", + "proxy_url": "https://[hostname]:8000/proxy/proxy.php", + "version": "2020.01.01", + "build": "29192", + "status": "stable", + "month_year": "03_2018", + "application": "vMap", + "default_show_sidenav": true, + "map": { + "default_feature_zoom": 15, + "draw_style": { + "draw_color": "rgba(54, 184, 255, 0.6)", + "contour_color": "rgba(0, 0, 0, 0.4)", + "contour_size": 2, + "circle_radius": 7 + } + } +} diff --git a/conf/style.scss b/conf/style.scss new file mode 100644 index 0000000000000000000000000000000000000000..559cd4f6a47b0f53255306edaea6638f836e8335 --- /dev/null +++ b/conf/style.scss @@ -0,0 +1,23 @@ +/** + * + * STYLE.SCSS + * + * + * Fichier de style permettant de personaliser l'application + * + * + */ + +@import './variables.scss'; +@import 'src/assets/style/vitis.scss'; +@import 'src/modules/vmap/styles/vmap.scss'; + +// Icones Font Awesome +$icomoon-font-path: "src/assets/icons/font-awesome/fonts"; +$icomoon-font-family: "font-awesome"; +@import 'src/assets/icons/font-awesome/style.scss'; + +// Icones Vitis +$icomoon-font-path: "src/assets/icons/vitis/fonts"; +$icomoon-font-family: "vitis"; +@import 'src/assets/icons/vitis/style.scss'; diff --git a/conf/variables.scss b/conf/variables.scss new file mode 100644 index 0000000000000000000000000000000000000000..81f36b57fdf9b2e45c85dc1cba33584955f6e9e5 --- /dev/null +++ b/conf/variables.scss @@ -0,0 +1,121 @@ +/** + * + * VARIABLES.SCSS + * + * + * Fichier contenant les variables de style de l'application + * + * + */ + +// Bootstrap and its default variables +@import "node_modules/bootstrap/scss/bootstrap"; + +:root { + --application-color-primary: #39468A; + --application-color-primary-light: #4251a0; + --application-color-primary-dark: #333f7c; + --application-color-primary-text: #fff; + + --application-color-secondary: #464646; + --application-color-secondary-active: #747474; + --application-color-secondary-text: #bdbdbd; + --application-color-secondary-text-active: #fff; + + --application-color-background: #f5f5f5; + --application-color-background-dark5: #e8e8e8; + --application-color-background-dark15: #d0d0d0; + --application-color-background-text: #666; +} + +// Extend Bootstrap theme-colors +$theme-colors: map-merge(("indigo": $indigo, + "purple": $purple, + "pink": $pink, + "orange": $orange, + "teal": $teal, + "cyan": $cyan), + $theme-colors); + +// Couleur principale +$application-color-primary: var(--application-color-primary); +$application-color-primary-light: var(--application-color-primary-light); +$application-color-primary-dark: var(--application-color-primary-dark); +$application-color-primary-text: var(--application-color-primary-text); + +// Couleur menus +$application-color-secondary: var(--application-color-secondary); +$application-color-secondary-active: var(--application-color-secondary-active); +$application-color-secondary-text: var(--application-color-secondary-text); +$application-color-secondary-text-active: var(--application-color-secondary-text-active); + +// Couleurs espace de travail +$application-color-background: var(--application-color-background); +$application-color-background-dark5: var(--application-color-background-dark5); +$application-color-background-dark15: var(--application-color-background-dark15); +$application-color-background-text: var(--application-color-background-text); + +// Couleurs des boutons +$btn-color-primary: $application-color-primary-light; +$btn-color-primary-text: $application-color-primary-text; +$btn-color-secondary: $application-color-secondary; +$btn-color-secondary-text: $application-color-secondary-text; +$btn-color-secondary-active: $application-color-secondary-active; +$btn-color-secondary-text-active: $application-color-secondary-text-active; + +// Tailles +$headnav-height: 50px; +$sidenav-width: 250px; +$sidenav-sections-width: 170px; +$footer-height: 38px; + +// Studio +$studio-left-panel-width: 375px; +$studio-configuration-section-height: 140px; +$studio-color: $application-color-background-dark5; +$studio-title-background: $application-color-primary; +$studio-title-background-text: $application-color-primary-text; + +// Grilles +$table-row-selected: $application-color-primary-light; +$table-row-selected-text: $application-color-primary-text; + +// Classes primary +.bg-primary, +.bg-app-primary { + background-color: $application-color-primary !important; +} + +.bg-app-primary-light { + background-color: $application-color-primary-light; +} + +.bg-app-primary-dark { + background-color: $application-color-primary-dark; +} + +.text-app-primary { + color: $application-color-primary-text; +} + +// Classes secondary +.bg-app-secondary { + background-color: $application-color-secondary; +} + +.text-app-secondary { + color: $application-color-secondary-text; +} + +.text-app-secondary-active { + color: $application-color-secondary-text-active; +} + +// Classes background +.bg-app-background { + background-color: $application-color-background; +} + +.text-app-background { + color: $application-color-background-text; +}