Project restructuring, fixing minor bugs related to vue CLI upgrade

* Removed PWA kit from project, this removes a ton of dependencies
This commit is contained in:
Max
2022-10-23 19:14:31 +00:00
parent 2b76f74dee
commit 0c107a60bd
19 changed files with 195 additions and 54 deletions
+6
View File
@@ -7,3 +7,9 @@ pids
*.seed *.seed
*.pid.lock *.pid.lock
.env .env
# exclude everything
staticFiles/*
# exception to the rule
!staticFiles/assets/
+12 -10
View File
@@ -1,5 +1,5 @@
{ {
"name": "client", "name": "solidscribe",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
@@ -8,19 +8,21 @@
}, },
"dependencies": { "dependencies": {
"axios": "^0.20.0", "axios": "^0.20.0",
"core-js": "^3.8.3", "core-js": "^3.6.5",
"es6-promise": "^4.2.8", "es6-promise": "^4.2.8",
"fomantic-ui-css": "^2.8.7", "fomantic-ui-css": "^2.8.7",
"vue": "^2.6.14", "vue": "^2.6.11",
"vue-router": "^3.5.1", "vue-router": "^3.2.0",
"vuex": "^3.6.2" "vuex": "^3.4.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~5.0.0", "@vue/cli-service": "~4.5.0",
"vue-template-compiler": "^2.6.14" "node-sass": "^4.12.0",
"sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.11"
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",
+59 -7
View File
@@ -1,17 +1,69 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang=""> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<title><%= htmlWebpackPlugin.options.title %></title>
<link rel="icon" href="/api/static/assets/favicon.ico" type="image/ico"/>
<link rel="shortcut icon" href="/api/static/assets/favicon.ico" type="image/x-icon"/>
<meta name="theme-color" content="#000" />
<link rel="manifest" href="/api/static/assets/manifest.json">
<title>Solid Scribe - An easy, encrypted Note App</title>
<!-- <title><%= htmlWebpackPlugin.options.title %></title> -->
</head> </head>
<body> <body>
<noscript> <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 Solid Scribe doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript> </noscript>
<div id="app"></div> <div id="app">
<!-- placeholder data for scrapers with no JS -->
<style>
body {
background-color: #212221;
color: #aeaeae;
height: 100vh;
width: 100%;
}
.centered {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
font-family: Arial, Helvetica, sans-serif;
}
.logo {
width: 200px;
height: auto;
}
.scrape-info {
opacity: 0;
}
</style>
<div class="centered">
<img class="logo" src="/api/static/assets/logo.svg" alt="Solid Scribe Logo - if you can read this your connection is really slow">
<h1>Solid Scribe</h1>
<h3>An easy, encrypted Note App</h3>
<h4>Loading...</h4>
</div>
<div class="scrape-info">
<h1>Solid Scribe</h1>
<h2>A note application that respects your privacy.</h2>
<p>Take notes with a clean editor that works on desktop or mobile.</p>
<p>Search notes, links and files to find what you need.</p>
<p>Accessable everywhere.</p>
<p>Categorize notes with tags.</p>
<p>Share data with fellow users.</p>
<p>Encrypt notes for additional security.</p>
<b>This site requires Javascipt to run.</b>
</div>
</div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
</body> </body>
</html> </html>
+1 -1
View File
@@ -164,7 +164,7 @@ div.ui.basic.green.label {
border-color: var(--dark_border_color) !important; border-color: var(--dark_border_color) !important;
} }
/*Overwrites for modifiable theme color */ /*Overwrites for modifiable theme color */
i.green.icon.icon.icon.icon { i.green.icon.icon.icon.icon, i.green.icon.icon.icon.icon.icon {
color: var(--main-accent); color: var(--main-accent);
} }
.button { .button {
+2 -2
View File
@@ -329,8 +329,8 @@
</div> </div>
<div class="menu-section" v-if="loggedIn"> <div class="menu-section" v-if="loggedIn">
<router-link class="menu-item menu-button" exact-active-class="active" to="/cycletrack"> <router-link class="menu-item menu-button" exact-active-class="active" to="/metrictrack">
<i class="calendar check outlin icon"></i>Cycle Track <i class="calendar check outlin icon"></i>Metric Track
</router-link> </router-link>
</div> </div>
+15 -12
View File
@@ -121,9 +121,6 @@
<div class="ui centered dividing header"> <div class="ui centered dividing header">
<br> <br>
Metric Tracking Beta Metric Tracking Beta
<span v-on:click="deleteData()">
<i class="clickable trash icon"></i>
</span>
</div> </div>
<!-- data input --> <!-- data input -->
@@ -136,16 +133,16 @@
</div> </div>
<div class="ui four wide right aligned middle aligned column"> <div class="ui four wide right aligned middle aligned column">
<span v-if="saving == 0"> <span v-if="saving == 0">
<i class="heart icon"></i> <i class=" icon"></i>
</span> </span>
<span v-if="saving == 1"> <span v-if="saving == 1">
<i class="asterisk icon"></i> Modified <i class="asterisk icon"></i>
</span> </span>
<span v-if="saving == 2"> <span v-if="saving == 2">
<i class="sync loading icon"></i> Saving <i class="sync loading icon"></i>
</span> </span>
<span v-if="saving == 3"> <span v-if="saving == 3">
<i class="green circle check icon"></i> Saved <i class="green circle check icon"></i>
</span> </span>
</div> </div>
</div> </div>
@@ -309,10 +306,10 @@
</div> </div>
<div class="ui basic segment"> <div class="ui basic segment">
<div class="ui clickable" v-on:click="toggleFolded('key')"> <a class="ui clickable" v-on:click="toggleFolded('key')">
<i class="tiny circular blue clickable plus icon"></i> <i class="tiny circular blue clickable plus icon"></i>
Calendar Explanation Calendar Explanation
</div> </a>
<div class="ui segment key-holder" v-if="folded.includes('key')"> <div class="ui segment key-holder" v-if="folded.includes('key')">
<div class="day"> <div class="day">
<span class="number">1</span> <span class="number">1</span>
@@ -410,6 +407,12 @@
<div class="ui segment"> <div class="ui segment">
If you do get pregnant, your body needs the lining — that’s why your period stops during pregnancy. Your period comes back when you’re not pregnant anymore. If you do get pregnant, your body needs the lining — that’s why your period stops during pregnancy. Your period comes back when you’re not pregnant anymore.
</div> </div>
<div class="ui segment">
Delete all data. Can not be undone.
<span class="ui tiny compact icon button" v-on:click="deleteData()">
<i class="clickable trash icon"></i>
</span>
</div>
</div> </div>
</div> </div>
@@ -703,7 +706,7 @@
}, },
fetchCycleData(){ fetchCycleData(){
axios.post('/api/cycle-tracking/get') axios.post('/api/metric-tracking/get')
.then(({ data }) => { .then(({ data }) => {
if(data.hasOwnProperty("text")){ if(data.hasOwnProperty("text")){
@@ -744,7 +747,7 @@
// 0 blank, 1 modified, 2 saving, 3 saved // 0 blank, 1 modified, 2 saving, 3 saved
this.saving = 2 // Working this.saving = 2 // Working
this.totalEntries = Object.keys(this.cycleData).length this.totalEntries = Object.keys(this.cycleData).length
axios.post('/api/cycle-tracking/save', { cycleData:appData }) axios.post('/api/metric-tracking/save', { cycleData:appData })
.then(response => { .then(response => {
// { this.$bus.$emit('notification', 'Data Saved') } // { this.$bus.$emit('notification', 'Data Saved') }
this.saving = 3 //Saved this.saving = 3 //Saved
@@ -755,7 +758,7 @@
.catch(error => { this.$bus.$emit('notification', error) }) .catch(error => { this.$bus.$emit('notification', error) })
}, },
deleteData(){ deleteData(){
axios.post('/api/cycle-tracking/save', { cycleData:'' }) axios.post('/api/metric-tracking/save', { cycleData:'' })
.then(response => { .then(response => {
{ this.$bus.$emit('notification', 'Data Deleted') } { this.$bus.$emit('notification', 'Data Deleted') }
this.fetchCycleData() this.fetchCycleData()
+3 -3
View File
@@ -117,9 +117,9 @@ export default new Router({
}, },
// Cycle Tracking // Cycle Tracking
{ {
path: '/cycletrack', path: '/metrictrack',
name: 'Cycle Tracking', name: 'Metric Tracking',
meta: {title:'Cycle Tracking'}, meta: {title:'Metric Tracking'},
component: () => import(/* webpackChunkName: "CycletrackingPage" */ '@/pages/CycletrackingPage') component: () => import(/* webpackChunkName: "CycletrackingPage" */ '@/pages/CycletrackingPage')
}, },
] ]
-4
View File
@@ -1,4 +0,0 @@
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true
})
+2 -2
View File
@@ -319,8 +319,8 @@ var quickNote = require('@routes/quicknoteController')
app.use('/api/quick-note', quickNote) app.use('/api/quick-note', quickNote)
//cycle tracking endpoint //cycle tracking endpoint
var cycleTracking = require('@routes/cycletrackingController') var metricTracking = require('@routes/metrictrackingController')
app.use('/api/cycle-tracking', cycleTracking) app.use('/api/metric-tracking', metricTracking)
//Output running status //Output running status
app.listen(ports.express, () => { app.listen(ports.express, () => {
@@ -2,10 +2,10 @@ let db = require('@config/database')
let Note = require('@models/Note') let Note = require('@models/Note')
let CycleTracking = module.exports = {} let MetricTracking = module.exports = {}
CycleTracking.get = (userId, masterKey) => { MetricTracking.get = (userId, masterKey) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
db.promise() db.promise()
@@ -25,7 +25,7 @@ CycleTracking.get = (userId, masterKey) => {
} else { } else {
//Or create a new note //Or create a new note
let finalId = null let finalId = null
return Note.create(userId, 'Cycle Tracking', '', masterKey) return Note.create(userId, 'Metric Tracking', '', masterKey)
.then(insertedId => { .then(insertedId => {
finalId = insertedId finalId = insertedId
db.promise().query('UPDATE note SET quick_note = 2 WHERE id = ? AND user_id = ?',[insertedId, userId]) db.promise().query('UPDATE note SET quick_note = 2 WHERE id = ? AND user_id = ?',[insertedId, userId])
@@ -47,12 +47,12 @@ CycleTracking.get = (userId, masterKey) => {
}) })
} }
CycleTracking.save = (userId, cycleData, masterKey) => { MetricTracking.save = (userId, cycleData, masterKey) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let finalId = null let finalId = null
CycleTracking.get(userId, masterKey) MetricTracking.get(userId, masterKey)
.then(noteObject => { .then(noteObject => {
return Note.update(userId, noteObject.id, cycleData, noteObject.title, noteObject.color, noteObject.pinned, noteObject.archived, null, masterKey) return Note.update(userId, noteObject.id, cycleData, noteObject.title, noteObject.color, noteObject.pinned, noteObject.archived, null, masterKey)
@@ -1,11 +1,11 @@
// //
// /api/cycle-tracking // /api/metric-tracking
// //
var express = require('express') var express = require('express')
var router = express.Router() var router = express.Router()
let CycleTracking = require('@models/CycleTracking'); let MetricTracking = require('@models/MetricTracking');
let userId = null let userId = null
let masterKey = null let masterKey = null
@@ -27,13 +27,13 @@ router.use(function setUserId (req, res, next) {
//Get quick note text //Get quick note text
router.post('/get', function (req, res) { router.post('/get', function (req, res) {
CycleTracking.get(userId, masterKey) MetricTracking.get(userId, masterKey)
.then( data => res.send(data) ) .then( data => res.send(data) )
}) })
//Push text to quick note //Push text to quick note
router.post('/save', function (req, res) { router.post('/save', function (req, res) {
CycleTracking.save(userId, req.body.cycleData, masterKey) MetricTracking.save(userId, req.body.cycleData, masterKey)
.then( data => res.send(data) ) .then( data => res.send(data) )
}) })
-4
View File
@@ -1,4 +0,0 @@
*
*/
!.gitignore
!assets
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg8" version="1.1" viewBox="0 0 132.29166 132.29167" height="500" width="500">
<defs id="defs2"/>
<metadata id="metadata5">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g style="display:inline" transform="translate(0,-164.70832)" id="layer1">
<path id="path3813-4" d="m 56.22733,165.36641 -55.56249926,15.875 8e-7,63.5 47.62499846,11.90625 v 27.78125 l -47.76066333,-13.9757 0.13566407,10.00695 55.56249926,15.875 v -47.625 l -47.6249985,-11.90625 -8e-7,-47.625 47.7606633,-13.94121 c 0.135664,-2.30629 -0.135664,-9.87129 -0.135664,-9.87129 z" style="fill:#0f7425;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path id="path4563" d="m 20.508581,220.92891 c 15.265814,-14.23899 27.809717,-7.68002 39.687499,3.96875 v -7.9375 C 51.75093,200.8366 37.512584,206.01499 20.508581,205.05391 Z" style="fill:#04cb03;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path id="path4563-6" d="m 111.78985,220.92891 c -15.265834,-14.23899 -27.809737,-7.68002 -39.68752,3.96875 v -7.9375 c 8.445151,-16.12356 22.683497,-10.94517 39.68752,-11.90625 z" style="display:inline;fill:#04cb03;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path id="path3813-4-2" d="m 76.07108,165.36641 55.5625,15.875 v 63.5 l -47.625,11.90625 v 27.78125 l 47.76067,-13.9757 -0.13567,10.00695 -55.5625,15.875 v -47.625 l 47.625,-11.90626 V 189.17891 L 75.93542,175.2377 c -0.13567,-2.30629 0.13566,-9.87129 0.13566,-9.87129 z" style="display:inline;fill:#04cb03;fill-opacity:1;stroke:none;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

+24
View File
@@ -0,0 +1,24 @@
{
"theme_color":"#000",
"background_color": "#000",
"description": "Take Notes",
"display": "standalone",
"icons": [
{
"src": "/api/static/assets/logo.png",
"sizes": "496x496",
"type": "image/png",
"purpose": "any"
},
{
"src": "/api/static/assets/maskable_icon.png",
"sizes": "826x826",
"type": "image/png",
"purpose": "maskable"
}
],
"name": "Solid Scribe",
"short_name": "Solid Scribe",
"start_url": "/#/notes",
"author":"Max"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" id="svg8" version="1.1" viewBox="0 0 132.29166 132.29167" height="500" width="500">
<defs id="defs2"/>
<metadata id="metadata5">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g style="display:inline" transform="translate(0,-164.70832)" id="layer1">
<path id="path3813-4" d="m 56.22733,165.36641 -55.56249926,15.875 8e-7,63.5 47.62499846,11.90625 v 27.78125 l -47.76066333,-13.9757 0.13566407,10.00695 55.56249926,15.875 v -47.625 l -47.6249985,-11.90625 -8e-7,-47.625 47.7606633,-13.94121 c 0.135664,-2.30629 -0.135664,-9.87129 -0.135664,-9.87129 z" style="fill:#0f7425;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<path id="path4563" d="m 20.508581,220.92891 c 15.265814,-14.23899 27.809717,-7.68002 39.687499,3.96875 v -7.9375 C 51.75093,200.8366 37.512584,206.01499 20.508581,205.05391 Z" style="fill:#04cb03;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path id="path4563-6" d="m 111.78985,220.92891 c -15.265834,-14.23899 -27.809737,-7.68002 -39.68752,3.96875 v -7.9375 c 8.445151,-16.12356 22.683497,-10.94517 39.68752,-11.90625 z" style="display:inline;fill:#04cb03;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
<path id="path3813-4-2" d="m 76.07108,165.36641 55.5625,15.875 v 63.5 l -47.625,11.90625 v 27.78125 l 47.76067,-13.9757 -0.13567,10.00695 -55.5625,15.875 v -47.625 l 47.625,-11.90626 V 189.17891 L 75.93542,175.2377 c -0.13567,-2.30629 0.13566,-9.87129 0.13566,-9.87129 z" style="display:inline;fill:#04cb03;fill-opacity:1;stroke:none;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,24 @@
{
"theme_color":"#000",
"background_color": "#000",
"description": "Take Notes",
"display": "standalone",
"icons": [
{
"src": "/api/static/assets/logo.png",
"sizes": "496x496",
"type": "image/png",
"purpose": "any"
},
{
"src": "/api/static/assets/maskable_icon.png",
"sizes": "826x826",
"type": "image/png",
"purpose": "maskable"
}
],
"name": "Solid Scribe",
"short_name": "Solid Scribe",
"start_url": "/#/notes",
"author":"Max"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB