diff --git a/.gitignore b/.gitignore index 1b64ea7..89ad9a5 100644 --- a/.gitignore +++ b/.gitignore @@ -44,11 +44,17 @@ general.log *.sw* # temporary build artifacts +build/*.* build/client/*.* -build/client/dist/* +build/client/dist/*.* +build/client/dist/js/*.* +build/client/dist/css/*.* build/data/*.* +build/data/exported/*.* build/data/backups/*.* -build/*.* +build/data/uploaded/*.* +build/documentation/*.* +build/logs/*.* # backup and log files server/data/backups/* diff --git a/build.bat b/build.bat index f5028a2..7ec847e 100644 --- a/build.bat +++ b/build.bat @@ -21,8 +21,10 @@ IF EXIST .\build\timesheet-prod.yaml del .\build\timesheet-prod.yaml IF EXIST .\build\MS_Windows_64bit.zip del .\build\MS_Windows_64bit.zip IF EXIST .\build\Linux_64bit.zip del .\build\Linux_64bit.zip IF EXIST .\build\Mac_OS_X_64bit.zip del .\build\Mac_OS_X_64bit.zip +IF EXIST .\build\documentation\documentation.md del .\build\documentation\documentation.md +IF EXIST .\build\logs\error.log del .\build\logs\error.log +IF EXIST .\build\logs\info.log del .\build\logs\info.log IF EXIST .\build\client\dist\ @RD /S /Q .\build\client\dist -IF EXIST .\build\logs\ @RD /S /Q .\build\logs del .\build\data\*.csv /F /Q ECHO ====================== diff --git a/build/documentation/documentation.md b/build/documentation/documentation.md deleted file mode 100644 index aa719fd..0000000 --- a/build/documentation/documentation.md +++ /dev/null @@ -1,256 +0,0 @@ -# Installation - -Timesheet can be installed using pre-build docker images or as a binary. - -## Requirements - -Application can run in [Docker containers](https://hub.docker.com/search/?type=edition&offering=community). Server image size 24.9 MB, DB image size 312 MB. - -If you are running it directly, supported is: -- Linux, Windows or MacOS -- PostgreSQL DB - -# Quick start - -1. Update Application settings, Vacation settings and Warning limits to meet your needs. See Configuration chapter. -2. Use Backup & Restore to export demo data, update csv files and import back your projects, rates, consultants and holidays. See Backup & Restore chapter. - -Enjoy. You are good to go ... - -# Configuration - -Below is default and commented `timesheet.yaml` configuration file shipped with a product. Selected variables can be changed on Administration page. - -![Administration](./administration.png?raw=true "Administration") - -``` -### Default configuration file - -dailyWorkingHours: 8 # Used to calculate weekly and monthly expected working hours, can be changed in UI -dailyWorkingHoursMin: 8 # Used to highlight if reported less, can be changed in UI -dailyWorkingHoursMax: 12 # Used to highlight if reported more, can be changed in UI - -# Rate used for vacations -vacation: "Vacation" -yearlyVacationDays: 20 # Used to calculate weekly and monthly expected working hours, can be changed in UI - -# Rate for additonal vacations. If not used, leave blank "" and set yearlyPersonalDays: 0, can be changed in UI -vacationPersonal: "Vacation Personal" -yearlyPersonalDays: 3 # Used to calculate weekly and monthly expected working hours, can be changed in UI - -# Rate used for additonal vacation intended for sick day. If not used, leave blank "" and set yearlySickDays: 0, can be changed in UI -vacationSick: "Vacation Sick" -yearlySickDays: 2 # Used to calculate weekly and monthly expected working hours, can be changed in UI - -# Categorize all rates into one of these types used on Reported Overview page -isWorking: "work" # when consultant works, can be changed in UI -isNonWorking: "not-work" # when consultant dows not work, examples: vacation, sick, personal day, public holiday, vacation, unpaid leave, ..., can be changed in UI - -######################## -# Application settings # -url: "" # URL on which application is running -PORT: "3000" # port on which application is running - -# DB type -dbType: "postgresql" - -# Production URL - will be read from production environment config variable -# If set, Database settings section variables will be ignored -DATABASE_URL: "" - -# Log folder, relative to timesheet folder -logFolder: "logs" - -# # Folder for uploaded data, relative to timesheet folder -uploadFolder: "data/uploaded" -uploadFolderTemp: "data/uploaded/temp" - -# csv data files which are loaded via command "timesheet db --load all" -data: - consultants: "consultants_prod.csv" - rates: "rates_prod.csv" - projects: "projects_prod.csv" - reportedRecords: "reported_records_prod.csv" - holidays: "holidays_cz_2019.csv" - -export: - location: "data/exported" # select an empty and an existing folder - -##################### -# Database settings # - -# DB backup settings - backuped data can be imported directly by a command "timesheet db --load all" -backup: - location: "data/backups" # select an empty and an existing folder relative to timesheet/data folder - rotation: 14 # how many backups back will be kept - interval: "daily" # daily or weekly - how ofter the DB backup should be done - -# DB credentials -# used for development and testing. Ignored if DATABASE_URL is set -postgresql: -# host: "db" # - host: "127.0.0.1" # - port: "5432" - name: "timesheet" - user: "timesheet" - password: "timesheet" - sslMode: "disable" -``` - -## Command Line Options - -`.\timesheet.exe` or `.\timesheet.bin` or `.\timesheet.app` -``` -Web based timesheet application with DB persistence. - -Application reads DB and server configuration from timesheet.toml, loads default data if DB is empty and launch web GUI. - -Usage: - timesheet [command] - -Available Commands: - db Initiate, load or backup DB. See timesheet help db - help Help about any command - routes Prints the list of all available routes - server Starts the server on URL and port defined in config.yaml - -Flags: - --config string config file (default is ./timesheet.yaml) - -h, --help help for timesheet - -v, --version Prints application versions - -Use "timesheet [command] --help" for more information about a command. -``` - -`.\timesheet.exe help db` or `.\timesheet.bin help db` or `.\timesheet.app help db` -``` -Initiate, load, or backup DB. - -Command first tests connection to DB. If succeeds it will initiate, load or backup db and exit. - -Usage: - timesheet db [flags] - -Flags: - -b, --backup Backup all DB tables in the format used by db --load command - -c, --clean Drop and create all required DB tables - -h, --help help for db - -l, --load string Truncate DB table/tables and load initial data from files in folder ./data. Options: - all - load all tables - rates | consultants | projects | holidays | reported_records - load selected table - -Global Flags: - --config string config file (default is ./timesheet.yaml) -``` - -# Backup & Restore - -All data can be downloaded locally as a zip file including csv files. -Files can be modified and imported back. This action will replace all existing data. - -![Backup & Restore](./backup_restore.png?raw=true "Backup & Restore") - -Check log files using Administration / Logs. Error log should not contain any errors or warnings. - -## Description of Data Files - -Use ISO format YYYY-MM-DD HH:MM:SS for all date fields. - -### consultants.csv - -Contains all consultants which can report hours. -``` -created_at,name -"YYYY-MM-DD HH:MM:SS","consultant name" -"2019-01-01 00:00:00","Evan You" -``` - -### holidays.csv - -Contains state holidays per selected year. -``` -created_at,date,description -"YYYY-MM-DD HH:MM:SS","name of the holiday" -"2019-01-01 00:00:00","2019-01-01","New Year's Day" -``` - -### rates.csv - -Contains rates which can be selected by any consultant. -Rates are categorized into working *work* and *non-working*. Category names can be changed but update also timesheet.yaml. -``` -created_at,name,type -"YYYY-MM-DD HH:MM:SS","rate name","work or non-work" -"2019-01-14 00:00:00","On-site","work" -"2019-01-14 00:00:00","Vacation","not-work" -``` - -### projects.csv - -Contains projects on which consultants can report the work and default project rate. -``` -created_at,name,rate -"YYYY-MM-DD HH:MM:SS","project name","rate name" -"2019-01-14 00:00:00","Vue","Off-site" -``` - -### reported_records.csv - -Contains all reported hours. Hours (N.N) can be a decimal number between 0 and 24. Project, rate and consultant are names of existing records from corresponding csv files. -``` -created_at,date,hours,project,description,rate,consultant -YYYY-MM-DD HH:MM:SS,YYYY-MM-DD,N.N,project name,description of the work,rate name,project name -2019-01-10 10:00:00,2019-01-01,6,Vue,Updates of all Vue.js documentation examples using typescript,Off-site,Evan You -``` - -# Upgrade - -Follow these steps to upgrade: -* Export your data as described in Backup & Restore chapter -* Replace `timesheet` folder with a new version -* Import saved data as described in Backup & Restore chapter - - -# License - -Free for education and non-commertial usage. Pay for the commertial usage of the application to support further development and maintenance via -Patreon or PayPal. - -Currently I am working on a Pro Version of Timesheet for enterprise. Along with support, some of the planned features include: - -* User management/login -* Permissions -* HTTPS -* Plugin for import/export -* Reporting metrics -* Cloud version - -If you or your organization would like to help beta test a Pro version of Timesheet, please get in touch with me: - - Twitter: @valasek - Email: valasek at gmail.com - -# Release Notes - -## Version 1.1.1 -Released on March 7, 2019 - -### Usability - -* Previous weeks are loaded laster -* Weeks and consultants can be changed directly on the Overview page -* Removed footer, main toolbar takes less space -* Disable all fields in previous weeks unless editing is enabled -* Warn if entered date is not from this week -* Validation on reported hours, allowed number: 0 - 24 -* Validate maximum reported daily hours during record duplication -* Validations on entering hours and days - -### Fixes - -* Backup archive contains exported csv files without subfolders - -## Version 1.0.0 -Released on December 2018 - -The first publicly released version diff --git a/client/package-lock.json b/client/package-lock.json index cd4cdca..6b41709 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1073,15 +1073,15 @@ "dev": true }, "@types/node": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.1.tgz", - "integrity": "sha512-2azXFP9n4aA2QNLkKm/F9pzKxgYj1SMawZ5Eh9iC21RH3XNcFsivLVU2NhpMgQm7YobSByvIol4c42ZFusXFHQ==", + "version": "11.11.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.3.tgz", + "integrity": "sha512-wp6IOGu1lxsfnrD+5mX6qwSwWuqsdkKKxTN4aQc4wByHAKZJf9/D4KXPQ1POUjEbnCP5LMggB0OEFNY9OTsMqg==", "dev": true }, "@types/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz", - "integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, "@vue/babel-helper-vue-jsx-merge-props": { @@ -1105,9 +1105,9 @@ } }, "@vue/babel-preset-app": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.5.0.tgz", - "integrity": "sha512-0zSE+5GcQ6pje39T5k4j7rw7rERGfFXvjHrcqcOS1WhO3UKDzA4dsivSRn0ESKueHej51m5Bg9O1D1OulQwykQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.5.1.tgz", + "integrity": "sha512-pgZUkMv5a3NBtzuPLtmyf83yMd+D4j16HtWbHCE/v4GDkxeT+v2wle3mOC7rex3jbuxDGtEKT+rdknLXCKStig==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.0.0", @@ -1205,31 +1205,31 @@ } }, "@vue/cli-overlay": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.5.0.tgz", - "integrity": "sha512-jjvJkhBE0mVAZjRyW/PXuy+ywTTRbVCZKN8WYcBN44BuKUYgBfLIUc29hUDmm/CesIZW5xMtPlFSWzRkz5uKcQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.5.1.tgz", + "integrity": "sha512-DqzfkbKJfuzcNbJouA7ZaLX77xn7FCcVUJaPYVH8qm3pNhIz2tmbfN6WVBLU8XC5FNFFWzLjHmg9rpaEBq7RCA==", "dev": true }, "@vue/cli-plugin-babel": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-3.5.0.tgz", - "integrity": "sha512-oCsuCzAIedjwTL8hvSmX9l4roHW198soaRkynho5r/yx2fkIeImN5dG+/YdnMbXAyui73zHA8vAoUfSBMNiQvQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-3.5.1.tgz", + "integrity": "sha512-b5k8AG21k9y3i5JxNvJzqg0YVFIxN0W/j4urC8Sn3kiNVRii9TBCxoldjKOSWALCJe4mPClR52ivqFWjX4D4/A==", "dev": true, "requires": { "@babel/core": "^7.0.0", - "@vue/babel-preset-app": "^3.5.0", - "@vue/cli-shared-utils": "^3.5.0", + "@vue/babel-preset-app": "^3.5.1", + "@vue/cli-shared-utils": "^3.5.1", "babel-loader": "^8.0.5", "webpack": ">=4 < 4.29" } }, "@vue/cli-plugin-eslint": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.5.0.tgz", - "integrity": "sha512-tt5vjx3gT4KjIcwwsNK1FrvJHw6DkK8PA81oGBH7ARgf6HHXB80ruufwmddEhpn5MNKCsbvLkkUnVPs6t9WRUw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.5.1.tgz", + "integrity": "sha512-0RSF3LPOXUIgArrg06HK1Yg6wcR348wssVX3pG41zxDAGTmfe8TpL2XPiP/KinrYwQLSUBPbr8zdf9Hb1+Tv2w==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^3.5.0", + "@vue/cli-shared-utils": "^3.5.1", "babel-eslint": "^10.0.1", "eslint": "^4.19.1", "eslint-loader": "^2.1.2", @@ -1275,7 +1275,7 @@ }, "eslint": { "version": "4.19.1", - "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "optional": true, @@ -1332,7 +1332,7 @@ }, "fast-deep-equal": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true, "optional": true @@ -1347,15 +1347,15 @@ } }, "@vue/cli-service": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.5.0.tgz", - "integrity": "sha512-jSvO4woQbQZ59MNq1bSHz4yhzQBCN2EN0NsZLxcJ/nm1TT3UzKQG7WVfH37koXE90SA8AK412gx4eDWDFAyruQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.5.1.tgz", + "integrity": "sha512-c3xzj2+yrnyziDvkKBTD1cB2jDBs0E4G5gk21hHzvAwzyNSpMPTqwAaeAfUtKHWSgs1dKxi/gURfIgFGUJPn+Q==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^3.5.0", - "@vue/cli-shared-utils": "^3.5.0", + "@vue/cli-overlay": "^3.5.1", + "@vue/cli-shared-utils": "^3.5.1", "@vue/component-compiler-utils": "^2.6.0", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", @@ -1436,9 +1436,9 @@ } }, "@vue/cli-shared-utils": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.5.0.tgz", - "integrity": "sha512-+EIwVMTjdfRQVEtcIhpRjNsPB2ZlopiUktlPpx6oLQdlJXwBWkFQVwuXdXHtPYxB5Kzs3VPyUfhHxnPIbNw1+Q==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.5.1.tgz", + "integrity": "sha512-hCB7UbKeeC41w2Q8+Q7jmw3gHdq+ltRqp80S3uDRRGxwiOhxrSmdBHMzKUjh01L8bXOBRgvLey+BERi1Nj9n6Q==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -1720,7 +1720,7 @@ }, "acorn-jsx": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "optional": true, @@ -1730,7 +1730,7 @@ "dependencies": { "acorn": { "version": "3.3.0", - "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true, "optional": true @@ -1900,7 +1900,7 @@ }, "array-flatten": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, @@ -1980,7 +1980,7 @@ }, "util": { "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -2009,14 +2009,14 @@ }, "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz", + "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==", "dev": true }, "async-limiter": { @@ -2526,7 +2526,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -2563,7 +2563,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -2608,7 +2608,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -2752,7 +2752,7 @@ "dependencies": { "callsites": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true } @@ -2847,7 +2847,7 @@ }, "callsites": { "version": "0.2.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true, "optional": true @@ -2899,9 +2899,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000943", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000943.tgz", - "integrity": "sha512-nJMjU4UaesbOHTcmz6VS+qaog++Fdepg4KAya5DL/AZrL/aaAZDGOOQ0AECtsJa09r4cJBdHZMive5mw8lnQ5A==", + "version": "1.0.30000947", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000947.tgz", + "integrity": "sha512-ubgBUfufe5Oi3W1+EHyh2C3lfBIEcZ6bTuvl5wNOpIuRB978GF/Z+pQ7pGGUpeYRB0P+8C7i/3lt6xkeu2hwnA==", "dev": true }, "capture-stack-trace": { @@ -3109,7 +3109,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true } @@ -3550,7 +3550,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -3563,7 +3563,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -3625,7 +3625,7 @@ }, "css-color-names": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", "dev": true }, @@ -3721,7 +3721,7 @@ }, "jsesc": { "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, @@ -3738,13 +3738,13 @@ }, "regjsgen": { "version": "0.2.0", - "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", "dev": true }, "regjsparser": { "version": "0.1.5", - "resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { @@ -4059,7 +4059,7 @@ "dependencies": { "globby": { "version": "6.1.0", - "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { @@ -4072,7 +4072,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -4306,7 +4306,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -4432,7 +4432,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -4483,9 +4483,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.114", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.114.tgz", - "integrity": "sha512-EQEFDVId4dqTrV9wvDmu/Po8Re9nN1sJm9KZECKRf3HC39DUYAEHQ8s7s9HsnhO9iFwl/Gpke9dvm6VwQTss5w==", + "version": "1.3.116", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.116.tgz", + "integrity": "sha512-NKwKAXzur5vFCZYBHpdWjTMO8QptNLNP80nItkSIgUOapPAo9Uia+RvkCaZJtO7fhQaVElSvBPWEc2ku6cKsPA==", "dev": true }, "elliptic": { @@ -5161,7 +5161,7 @@ }, "espree": { "version": "3.5.4", - "resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "optional": true, @@ -5413,7 +5413,7 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "optional": true, @@ -5621,7 +5621,7 @@ }, "finalhandler": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { @@ -5652,14 +5652,32 @@ } }, "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", + "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, "find-up": { @@ -6820,7 +6838,7 @@ }, "html-webpack-plugin": { "version": "3.2.0", - "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { @@ -6835,7 +6853,7 @@ "dependencies": { "json5": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, @@ -6888,7 +6906,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { @@ -8176,19 +8194,27 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true + } } }, "memory-fs": { @@ -8558,9 +8584,9 @@ "dev": true }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.0.tgz", + "integrity": "sha512-5DDQvN0luhXdut8SCwzm/ZuAX2W+fwhqNzfq7CZ+OJzQ6NwpcqmIGyLD1R8MEt7BeErzcsI0JLr4pND2pNp2Cw==", "dev": true, "optional": true }, @@ -10465,7 +10491,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -10586,7 +10612,7 @@ }, "regexpp": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true, "optional": true @@ -10641,7 +10667,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } @@ -10680,7 +10706,7 @@ }, "css-select": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { @@ -10702,7 +10728,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -10806,7 +10832,7 @@ }, "require-uncached": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "optional": true, @@ -10894,7 +10920,7 @@ }, "rgba-regex": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", "dev": true }, @@ -10969,7 +10995,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -11165,7 +11191,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -11431,9 +11457,9 @@ } }, "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", + "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -11684,7 +11710,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -11878,7 +11904,7 @@ }, "fast-deep-equal": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true, "optional": true @@ -12650,7 +12676,7 @@ }, "vue-eslint-parser": { "version": "2.0.3", - "resolved": "http://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", "dev": true, "optional": true, @@ -12746,9 +12772,9 @@ "dev": true }, "vuetify": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.5.5.tgz", - "integrity": "sha512-WXFpRNO+AX4WjmA/+maDOBLQpHpkw8xf7O9iV8KKbKVQv7OBbLOEt7a0LBKRRNJboZPyOFXtt7K4+Q/KYc6dnQ==" + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.5.6.tgz", + "integrity": "sha512-3cpuqCRZam6mpWZwq2M7aCFCFmE5qvu3vaq4MMXRYzJCTtOJ+nCxkDXuilNbjh/eKz/Pi95dQZOYXvccwq6rGA==" }, "vuetify-loader": { "version": "1.2.1", @@ -12970,7 +12996,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -13323,7 +13349,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, diff --git a/client/package.json b/client/package.json index f1a3e1f..a9d80b0 100644 --- a/client/package.json +++ b/client/package.json @@ -16,15 +16,15 @@ "vue-axios": "^2.1.4", "vue-markdown": "^2.2.4", "vue-router": "^3.0.2", - "vuetify": "^1.5.5", + "vuetify": "^1.5.6", "vuetify-stylus-fixed-table-header": "^1.1.0", "vuetify-upload-button": "^1.2.2", "vuex": "^3.1.0" }, "devDependencies": { - "@vue/cli-plugin-babel": "^3.5.0", - "@vue/cli-plugin-eslint": "^3.5.0", - "@vue/cli-service": "^3.5.0", + "@vue/cli-plugin-babel": "^3.5.1", + "@vue/cli-plugin-eslint": "^3.5.1", + "@vue/cli-service": "^3.5.1", "babel-eslint": "^10.0.1", "eslint": "^5.15.1", "eslint-config-vuetify": "^0.2.0", diff --git a/client/src/views/About.vue b/client/src/views/About.vue index ba2eb40..1222c73 100644 --- a/client/src/views/About.vue +++ b/client/src/views/About.vue @@ -36,6 +36,11 @@ full documentation.

+

Request New Feature

+

+ Do you like what you see but mising an important feature? Describe your need + and next business day we will let you know if and when it will be available. +