Commit a0d706a1 authored by Niklas Zantner's avatar Niklas Zantner
Browse files

Depenedency upgrades and fixes

parent a6f0bb33
......@@ -2,5 +2,6 @@
"trailingComma": "all",
"tabWidth": 2,
"semi": true,
"printWidth": 120
"printWidth": 120,
"arrowParens": "avoid"
}
......@@ -5,45 +5,57 @@ I just wanted to try NestJS and build a bunch of views for stuff I usually use a
## Screenshots
### Login
![Login](./screenshots/1_Login.png)
### Welcome
![Login](./screenshots/2_Welcome.png)
### Crypto Dashboard
![Crypto Dashboard](./screenshots/3_Crypto_Dashboard.png)
### Sheets
![Sheets](./screenshots/4_Sheets.png)
### Files
![Files](./screenshots/5_Files.png)
### PDF File Viewer
![PDF File Viewer](./screenshots/6_PDF_File_Viewer.png)
### Notes
![Notes](./screenshots/7_Notes.png)
### Worklog
![Worklog](./screenshots/8_Worklog.png)
### User Administration
![User Administration](./screenshots/9_User_Administration.png)
![User Administration](./screenshots/9_User_Administration.png)
## Dev Build
```
npm install
```
### Compiles and hot-reloads for development
Make sure your server is running on localhost:8080
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
module.exports = {
presets: ['@vue/cli-plugin-babel/preset'],
presets: ["@vue/cli-plugin-babel/preset"],
};
{
"compilerOptions": {
"baseUrl": ".",
"baseUrl": "."
},
"exclude": ["node_modules", "dist"]
}
This diff is collapsed.
......@@ -8,52 +8,47 @@
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.19.2",
"axios": "^0.21.1",
"chart.js": "^2.9.4",
"core-js": "^3.8.3",
"darkmode-js": "^1.5.7",
"dayjs": "^1.10.4",
"highlight.js": "^10.5.0",
"lodash": "^4.17.20",
"markdown-it": "^11.0.1",
"material-design-icons-iconfont": "^5.0.1",
"moment": "^2.29.1",
"markdown-it": "^12.0.4",
"material-design-icons-iconfont": "^6.1.0",
"pdfjs-dist": "^2.6.347",
"register-service-worker": "^1.7.2",
"typeface-jetbrains-mono": "^2.0.0",
"typeface-work-sans": "0.0.72",
"uuid": "^8.3.2",
"vee-validate": "^2.2.15",
"typeface-work-sans": "^1.1.13",
"vue": "^2.6.12",
"vue-chartjs": "^3.5.1",
"vue-i18n": "^8.22.4",
"vue-moment": "^4.1.0",
"vue-resize-sensor": "^2.0.0",
"vue-router": "^3.4.9",
"vuetify": "^2.4.2"
"vue-router": "^3.5.1",
"vuetify": "^2.4.3"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.5.10",
"@vue/cli-plugin-eslint": "^4.5.10",
"@vue/cli-plugin-pwa": "^4.5.10",
"@vue/cli-plugin-router": "^4.5.10",
"@vue/cli-service": "^4.5.10",
"@vue/cli-plugin-babel": "^4.5.11",
"@vue/cli-plugin-eslint": "^4.5.11",
"@vue/cli-plugin-pwa": "^4.5.11",
"@vue/cli-plugin-router": "^4.5.11",
"@vue/cli-service": "^4.5.11",
"@vue/eslint-config-airbnb": "^5.3.0",
"@vue/eslint-config-prettier": "^6.0.0",
"babel-eslint": "^10.1.0",
"dart-sass": "^1.25.0",
"eslint": "^6.7.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^6.2.2",
"git-describe": "^4.0.4",
"less": "^3.13.1",
"less-loader": "^6.2.0",
"node-sass": "^5.0.0",
"prettier": "^1.19.1",
"prettier": "^2.2.1",
"sass": "^1.32.5",
"sass-loader": "^8.0.2",
"vue-cli-plugin-vuetify": "^2.0.9",
"sass-loader": "^10.1.1",
"vue-cli-plugin-vuetify": "^2.1.0",
"vue-template-compiler": "^2.6.12",
"vuetify-loader": "^1.6.0",
"vuetify-loader": "^1.7.1",
"worker-loader": "^3.0.7"
}
}
......@@ -73,4 +73,4 @@
"type": "image/png"
}
]
}
\ No newline at end of file
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="shortcut icon" type="image/x-icon" href="./favicon.ico">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="shortcut icon" type="image/x-icon" href="./favicon.ico" />
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
<strong
>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please
enable it to continue.</strong
>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
......
......@@ -46,7 +46,7 @@
:width="300"
:height="'100%'"
:mobile-breakpoint="mobileBreakpoint"
style="z-index: 100;"
style="z-index: 100"
>
<v-list>
<v-list-item>
......@@ -59,7 +59,7 @@
</v-list-item-content>
</v-list-item>
<v-list-item v-if="isUpdateAvailable" :link="true" style="background: aquamarine;">
<v-list-item v-if="isUpdateAvailable" :link="true" style="background: aquamarine">
<v-list-item-icon>
<v-icon>system_update_alt</v-icon>
</v-list-item-icon>
......@@ -76,7 +76,7 @@
<v-list-item
v-for="group in groupsWithOneItem"
:key="group.title"
style="flex: initial;"
style="flex: initial"
:link="true"
:disabled="!isAllowedAccess(group.items[0])"
@click="selectNavigationItem(group.items[0])"
......@@ -158,7 +158,7 @@
</v-list>
</v-navigation-drawer>
<v-main style="height: 100%;">
<v-main style="height: 100%">
<router-view :key="$route.fullPath" class="main"></router-view>
</v-main>
</v-app>
......
<template>
<div class="c-flex column w100 h100 align-center justify-center">
<v-text-field style="flex:initial" name="email" v-model="email" label="Your Email" filled type="text">
<v-text-field style="flex: initial" name="email" v-model="email" label="Your Email" filled type="text">
</v-text-field>
<v-btn outlined :loading="isLoading" @click="verify">Send reset password link</v-btn>
......
......@@ -7,7 +7,7 @@ ul {
<template>
<div class="c-flex column w100 h100 align-center justify-center">
<v-text-field
style="flex:initial"
style="flex: initial"
name="password"
v-model="password"
label="New Password"
......@@ -21,9 +21,7 @@ ul {
<v-btn outlined :loading="isLoading" @click="verify">Verify</v-btn>
<div v-if="isSuccessFull">
<p>
Die Verifikation Ihres Accounts wurde erfolgreich durchgeführt. Sie können sich nun einloggen.
</p>
<p>Die Verifikation Ihres Accounts wurde erfolgreich durchgeführt. Sie können sich nun einloggen.</p>
<v-btn outlined @click="$router.push('/login')">Zum Login</v-btn>
</div>
......@@ -33,7 +31,8 @@ ul {
<li>Account wurde bereits aktiviert</li>
<li>Sie sind einem ungültigen Link gefolgt</li>
<li>
Falls Sie den Link kopiert haben, prüfen Sie bitte, ob Sie jedes Zeichen und kein Zeichen zuviel kopiert haben
Falls Sie den Link kopiert haben, prüfen Sie bitte, ob Sie jedes Zeichen und kein Zeichen zuviel kopiert
haben.
</li>
</ul>
</div>
......
......@@ -6,7 +6,7 @@ canvas {
</style>
<script>
import moment from "moment";
import dayjs from "dayjs";
import { Line } from "vue-chartjs";
export default {
......@@ -17,7 +17,7 @@ export default {
mounted() {
const labels = Object.keys(this.data)
.map(timeStamp => timeStamp * 1000)
.map(time => moment(time).format("DD.MM"));
.map(time => dayjs(time).format("DD.MM"));
const data = Object.values(this.data);
this.renderChart(
......
......@@ -23,7 +23,7 @@
</v-toolbar>
<div style="padding: 8px; background: white; border-radius: 4px">
<p style="padding: 16px 0 8px 0; margin: 0;">Add a single Crypto Currency</p>
<p style="padding: 16px 0 8px 0; margin: 0">Add a single Crypto Currency</p>
<div class="c-flex row w100 create align-center">
<v-text-field v-model="currency.name" placeholder="Name" filled hide-details></v-text-field>
<v-text-field v-model="currency.abbreviation" placeholder="Abbreviation" filled hide-details></v-text-field>
......@@ -36,7 +36,7 @@
placeholder="Amount"
filled
hide-details
style="padding-left:8px"
style="padding-left: 8px"
></v-text-field>
<v-text-field v-model="currency.investment" placeholder="Investment" filled hide-details></v-text-field>
</div>
......@@ -45,16 +45,14 @@
</div>
<div v-if="isNew" class="c-flex column">
<p style="padding: 16px 0 8px 0; margin: 0;">Or bulk add a bunch of them as a JSON array</p>
<p style="padding: 16px 0 8px 0; margin: 0">Or bulk add a bunch of them as a JSON array</p>
<v-textarea
filled
v-model="currencyJSONImport"
hide-details
:placeholder="
`The properties of each JSON object have to be ${Object.keys(generateNewProtoCryptoCurrency()).join(
', ',
)}`
"
:placeholder="`The properties of each JSON object have to be ${Object.keys(
generateNewProtoCryptoCurrency(),
).join(', ')}`"
></v-textarea>
<div v-if="jsonParsingError">
<pre class="parser-warning">{{ jsonParsingError }}</pre>
......
......@@ -89,9 +89,7 @@
<v-dialog v-model="isCryptoAPIKeyDialogVisible" width="500">
<v-card class="pa-4">
<label class="headline">
Set an API key
</label>
<label class="headline"> Set an API key </label>
<p class="pt-4">
To be able to use this feature, you need to add your personal API KEY for CryptoCompare. Head over to
......@@ -134,7 +132,7 @@
<div
v-if="cryptoCurrencies.length && priceMap && historyMap"
class="c-flex w50 responsive"
style="background: white; padding: 8px; border-radius: 4px;"
style="background: white; padding: 8px; border-radius: 4px"
>
<line-chart
v-if="aggregatedHistoryData"
......@@ -211,7 +209,7 @@
<td>
<div class="cell">
<span v-if="crypto.boughtDate">{{ new Date(crypto.boughtDate) | moment("DD.MM.YYYY") }}</span>
<span v-if="crypto.boughtDate">{{ new Date(crypto.boughtDate) | format("DD.MM.YYYY") }}</span>
<small>{{ crypto.accessEvent }}</small>
</div>
</td>
......@@ -222,7 +220,7 @@
</div>
</td>
<td style="text-align:right;">
<td style="text-align: right">
{{
priceMap && priceMap[crypto.abbreviation]
? toReadablePrice(priceMap[crypto.abbreviation][FIAT_CURRENCY].PRICE)
......@@ -237,7 +235,7 @@
></price-trend>
</td>
<td style="text-align:right;">
<td style="text-align: right">
{{
priceMap && priceMap[crypto.abbreviation]
? toReadablePrice(priceMap[crypto.abbreviation][FIAT_CURRENCY].PRICE * crypto.amount, 2)
......
......@@ -84,7 +84,7 @@
<td>
<span>
{{ file.uploadDate | moment("DD.MM.YYYY HH:mm") }}
{{ file.uploadDate | format("DD.MM.YYYY HH:mm") }}
</span>
</td>
......
......@@ -112,7 +112,7 @@
</v-menu>
</div>
<div class="c-flex grow" style="position: relative;">
<div class="c-flex grow" style="position: relative">
<pdf
ref="pdfViewer"
:src="src"
......
......@@ -66,7 +66,7 @@
<span v-if="note && note.updatedAt">{{ isLoading ? "Saving ..." : "Saved" }}</span>
<small v-if="!note || !note.updatedAt">Not yet created</small>
<small v-if="note && note.updatedAt">at {{ note.updatedAt | moment("DD.MM.YYYY HH:mm") }}</small>
<small v-if="note && note.updatedAt">at {{ note.updatedAt | format("DD.MM.YYYY HH:mm") }}</small>
</div>
<v-progress-circular size="24" v-if="isLoading" indeterminate color="primary"></v-progress-circular>
......
......@@ -45,7 +45,7 @@
<v-progress-circular v-if="isLoading" indeterminate color="primary"></v-progress-circular>
<div v-if="!isLoading" class="c-flex row h100" style="overflow: hidden;">
<div v-if="!isLoading" class="c-flex row h100" style="overflow: hidden">
<div class="c-flex column align-left pr-1 pb-8 list-wrapper" v-if="isMobile ? !selectedNote : true">
<div class="pb-2">
<v-btn color="white" depressed @click="selectedNote = { content: '', title: 'New Empty Note' }"
......@@ -60,9 +60,9 @@
class="c-flex row w100 justify-between align-center note"
@click="selectedNote = note"
>
<div class="c-flex column grow" style="overflow: hidden;">
<div class="c-flex column grow" style="overflow: hidden">
<label>{{ note.title }}</label>
<small>{{ note.updatedAt | moment("DD.MM.YYYY HH:mm") }}</small>
<small>{{ note.updatedAt | format("DD.MM.YYYY HH:mm") }}</small>
</div>
<DeleteConfirm :action="deleteNote" small :item="note.id">
......@@ -72,9 +72,7 @@
</div>
</div>
<div v-if="notes && !notes.length">
No notes exist yet. Go a head and create a new one.
</div>
<div v-if="notes && !notes.length">No notes exist yet. Go a head and create a new one.</div>
</div>
<note
......
......@@ -33,8 +33,8 @@
<td>
<v-checkbox disabled v-model="user.isActivated"></v-checkbox>
</td>
<td>{{ user.createdAt | moment("DD.MM.YYYY") }}</td>
<td>{{ user.updatedAt | moment("DD.MM.YYYY") }}</td>
<td>{{ user.createdAt | format("DD.MM.YYYY") }}</td>
<td>{{ user.updatedAt | format("DD.MM.YYYY") }}</td>
<td>
<div class="c-flex row justify-end">
<v-btn icon @click="userToEdit = user"><v-icon>edit</v-icon></v-btn>
......@@ -50,9 +50,7 @@
</template>
<template slot="no-data">
<v-alert :value="true" color="info" icon="new_releases">
Es sind noch keine Benutzer angelegt.
</v-alert>
<v-alert :value="true" color="info" icon="new_releases"> Es sind noch keine Benutzer angelegt. </v-alert>
</template>
</v-data-table>
</div>
......
......@@ -29,7 +29,7 @@
</template>
<script>
import moment from "moment";
import dayjs from "dayjs";
export default {
props: {
......@@ -52,14 +52,14 @@ export default {
computed: {
displayDate() {
return this.value ? moment(this.value).format("DD.MM.YYYY") : "Kein Datum ausgewählt";
return this.value ? dayjs(this.value).format("DD.MM.YYYY") : "Kein Datum ausgewählt";
},
date: {
get: function get() {
return this.value;
},
set: function set(value) {
const date = moment(value).toISOString();
const date = dayjs(value).toISOString();
this.$emit("input", date);
if (this.isClosingOnSelect) {
......
Supports Markdown
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