From 48e607a5d22b98d9def19c89dc45f3abfd36a1d4 Mon Sep 17 00:00:00 2001 From: BinarySandia04 Date: Sat, 5 Oct 2024 14:31:09 +0200 Subject: [PATCH] Documentation! --- DOCS.md | 37 ++++++++++ backend/services/api.js | 68 ++++++++++++++++-- backend/services/plugins.js | 4 +- build.sh | 9 ++- client/index.html | 4 +- client/public/favicon.ico | Bin 1150 -> 0 bytes media/logo.png => client/public/favicon.png | Bin client/src/views/windows/LoginWindow.vue | 6 +- jsdoc.json | 10 ++- {media => static/media}/logo-splash-light.png | Bin {media => static/media}/logo-splash.png | Bin static/media/logo.png | Bin 0 -> 10443 bytes static/scripts/themeWatch.js | 27 +++++++ tutorials/Test.md | 2 + tutorials/tutorials.json | 5 ++ 15 files changed, 157 insertions(+), 15 deletions(-) create mode 100644 DOCS.md delete mode 100644 client/public/favicon.ico rename media/logo.png => client/public/favicon.png (100%) rename {media => static/media}/logo-splash-light.png (100%) rename {media => static/media}/logo-splash.png (100%) create mode 100644 static/media/logo.png create mode 100644 static/scripts/themeWatch.js create mode 100644 tutorials/Test.md create mode 100644 tutorials/tutorials.json diff --git a/DOCS.md b/DOCS.md new file mode 100644 index 00000000..8f5bca7f --- /dev/null +++ b/DOCS.md @@ -0,0 +1,37 @@ +
+ + +
+ +
+

+ Original web | + Documentation +

+
+ +# Quick start + +## Installation 🛠️ + +Run +``` +./install.sh +``` + +This will install all the necesary npm packages both for the frontend and the backend + +## Running 🚀 + +Run +``` +./start.sh +``` + +or + +``` +./start-dev.sh +``` + +if you want to start the development environments \ No newline at end of file diff --git a/backend/services/api.js b/backend/services/api.js index 1334c0f1..862d5d6d 100644 --- a/backend/services/api.js +++ b/backend/services/api.js @@ -1,24 +1,80 @@ const mongoose = require("mongoose"); const Schema = mongoose.Schema; -class BackendApi { +/** + * Test + */ +class Router { + constructor(){ + + } + /** - * Plugin + * @param {String} route + * Hola + */ + get(route){ + + } + + /** + * @param {String} route + * + */ + post(route){ + + } + + /** + * @param {String} route + * + */ + put(route){ + + } + + /** + * @param {String} route + * + */ + delete(route){ + + } +} + +class BackendApi { + #_plugin; + #_router; + + /** + * This object is already created for you * @param {plugin} Plugin instance */ constructor(plugin){ - this.plugin = plugin; + this._plugin = plugin; + this._router = new Router(); } - createRoute(){ - + /** + * Gets the router for your plugin + * @type {Router} router + */ + get router(){ + return this.router; } + /** + * Returns a new database model for the plguin + * @param {String} name + * @param {Object} schema + * @returns {mongoose.model} + */ createModel(name, schema){ return mongoose.model(name, new Schema(schema)) } }; module.exports = { - BackendApi + BackendApi, + Router } \ No newline at end of file diff --git a/backend/services/plugins.js b/backend/services/plugins.js index 7e0cb209..a1d24a1d 100644 --- a/backend/services/plugins.js +++ b/backend/services/plugins.js @@ -1,6 +1,6 @@ const fs = require('fs'); const path = require('path') -const Api = require('./api').Api +const BackendApi = require('./api').BackendApi const basePath = path.resolve(__dirname, '../') console.log(basePath) @@ -25,7 +25,7 @@ function init(){ // Execute main Object.keys(plugins).forEach(k => { - plugins[k].Main(new Api(k)) + plugins[k].Main(new BackendApi(k)) }) } diff --git a/build.sh b/build.sh index f5a47307..62340309 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,10 @@ #!/bin/bash -node prebuild.js +# Gen docs npm run generate-docs -cp -r media docs/dragonroll/1.0.0/ \ No newline at end of file + +# Copy media to all versions of documentation (if there is more than one) +# for d in docs/dragonroll/*/; do cp -r media "$d/media"; done + +# Prebuild files for execution +node prebuild.js \ No newline at end of file diff --git a/client/index.html b/client/index.html index 52ec691d..47d976b1 100644 --- a/client/index.html +++ b/client/index.html @@ -2,7 +2,9 @@ - + Dragonroll diff --git a/client/public/favicon.ico b/client/public/favicon.ico deleted file mode 100644 index 31b0d670d657dda90cbac360325913daf84031d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcma)+e@xV67{K2~n=Tg_;&H&mkKBkkD(SXbKbF)Vr!{M<{(!Vr|CB$Nn=7XgMF$*G zxs05EaB*_dk-`ba1nvv{$PW0Kf#yAT>7M5;}zSwBZ2c(%jm66;nKbodMwEdRK)Sok=2Od z8pPGldFq?j`OX;4`aK1b-sPnkJgjMra`xY>XRNOq_SF<{|s-zIL@R&b^IKCYH) zSk}3jwu1OD-;y6guzeH1Up@>Mt>E8H)Xf$a1Zrj9Brn$&L)DyZ$l#ham2tVgxLk%W zUmNC|joRtauQT~$*a!X1&|8oGmYaL8H<8s{B6FB2@w~xIt)2->3h%T$&%#r=bVyF^ z-%%J>dan9m2zZ$oJISu#8D0o>vFgS#9vo?8d7qhumv+-*e}c{fkI1#l*=~CpkK`1u zr1^tr#yxMrWG`)#=W&jD;b#jcf2kxb@D&!{7T)x(NAy*2fBWX}IaJ&n?=;05S__vF z@a0lZki) - + + + + Dragonroll logo +
diff --git a/jsdoc.json b/jsdoc.json index 3ae04dbe..4c56dd44 100644 --- a/jsdoc.json +++ b/jsdoc.json @@ -1,22 +1,26 @@ { "source": { "includePattern": ".+\\.js(doc|x)?$", - "include": ["./client/src/services/Api.js", "./backend/services/api.js", "package.json", "README.md"], + "include": ["./client/src/services/Api.js", "./backend/services/api.js", "package.json", "DOCS.md"], "exclude": ["node_modules"] }, "plugins": ["plugins/markdown"], "recurseDepth": 10, "opts": { "encoding": "utf8", - "readme": "./README.md", + "readme": "./DOCS.md", "destination": "docs/", "recurse": true, "verbose": true, "template": "node_modules/clean-jsdoc-theme", + "tutorials": "./tutorials", "theme_opts": { "default_theme": "dark", "homepageTitle": "Dragonroll API", - "title": "" + "title": "", + "static_dir": ["./static"], + "include_js": ["./static/scripts/themeWatch.js"], + "favicon": "static/media/logo.png" } }, "markdown": { diff --git a/media/logo-splash-light.png b/static/media/logo-splash-light.png similarity index 100% rename from media/logo-splash-light.png rename to static/media/logo-splash-light.png diff --git a/media/logo-splash.png b/static/media/logo-splash.png similarity index 100% rename from media/logo-splash.png rename to static/media/logo-splash.png diff --git a/static/media/logo.png b/static/media/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2e59fc31808d979c420f2e51af612484680e1c GIT binary patch literal 10443 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 S8t`8T5Z2hzsN#rQ{C@$&#ahY$ literal 0 HcmV?d00001 diff --git a/static/scripts/themeWatch.js b/static/scripts/themeWatch.js new file mode 100644 index 00000000..774e89a8 --- /dev/null +++ b/static/scripts/themeWatch.js @@ -0,0 +1,27 @@ +function updateLogoThemes(){ + let theme = localStorage.getItem('theme') + let darkLogos = document.getElementsByClassName('logo-splash-dark'); + let lightLogos = document.getElementsByClassName('logo-splash-light'); + if(theme == 'dark'){ + for(let i = 0; i < darkLogos.length; i++) darkLogos[i].style.display = "unset"; + for(let i = 0; i < lightLogos.length; i++) lightLogos[i].style.display = "none"; + } else { + for(let i = 0; i < darkLogos.length; i++) darkLogos[i].style.display = "none"; + for(let i = 0; i < lightLogos.length; i++) lightLogos[i].style.display = "unset"; + } +} + +document.addEventListener("DOMContentLoaded", (event) => { + + const attrObserver = new MutationObserver((mutations) => { + mutations.forEach(mu => { + if (mu.type !== "attributes" && mu.attributeName !== "class") return; + updateLogoThemes(); + }); + }); + + const ELS_test = document.querySelectorAll("body"); + ELS_test.forEach(el => attrObserver.observe(el, {attributes: true})); + + updateLogoThemes(); +}); diff --git a/tutorials/Test.md b/tutorials/Test.md new file mode 100644 index 00000000..f0de4041 --- /dev/null +++ b/tutorials/Test.md @@ -0,0 +1,2 @@ +# Hola +hola test \ No newline at end of file diff --git a/tutorials/tutorials.json b/tutorials/tutorials.json new file mode 100644 index 00000000..48579229 --- /dev/null +++ b/tutorials/tutorials.json @@ -0,0 +1,5 @@ +{ + "test": { + "title": "Test tutorial" + } +} \ No newline at end of file