From fe63b10e215b6c32cd66b6244547748aba2d5c0f Mon Sep 17 00:00:00 2001 From: Knut Ahlers Date: Tue, 30 Nov 2021 02:04:01 +0100 Subject: [PATCH] Start implementing frontend Signed-off-by: Knut Ahlers --- package-lock.json | 106 +++++++++++++++++++++++++++++++++++++++++- package.json | 7 ++- src/app.vue | 52 +++++++++++++++++++++ src/catalog_index.vue | 95 +++++++++++++++++++++++++++++++++++++ src/log.vue | 59 +++++++++++++++++++++++ src/main.js | 12 +++++ src/router.js | 27 +++++++++++ 7 files changed, 356 insertions(+), 2 deletions(-) create mode 100644 src/app.vue create mode 100644 src/catalog_index.vue create mode 100644 src/log.vue create mode 100644 src/router.js diff --git a/package-lock.json b/package-lock.json index f4007b1..dee0200 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,12 +5,17 @@ "packages": { "": { "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.36", + "@fortawesome/free-brands-svg-icons": "^5.15.4", + "@fortawesome/free-solid-svg-icons": "^5.15.4", + "@fortawesome/vue-fontawesome": "^2.0.6", "axios": "^0.24.0", "bootstrap": "^4.6.0", "bootstrap-vue": "^2.21.2", "bootswatch": "^4.6.0", "moment": "^2.29.1", - "vue": "^2.6.14" + "vue": "^2.6.14", + "vue-router": "^3.5.3" }, "devDependencies": { "babel-eslint": "^10.1.0", @@ -220,6 +225,60 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", + "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", + "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.4.tgz", + "integrity": "sha512-f1witbwycL9cTENJegcmcZRYyawAFbm8+c6IirLmwbbpqz46wyjbQYLuxOc7weXFXfB7QR8/Vd2u5R3q6JYD9g==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", + "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.6.tgz", + "integrity": "sha512-V3vT3flY15AKbUS31aZOP12awQI3aAzkr2B1KnqcHLmwrmy51DW3pwyBczKdypV8QxBZ8U68Hl2XxK2nudTxpg==", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || >=1.3.0-beta1", + "vue": "~2" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -3301,6 +3360,11 @@ "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" }, + "node_modules/vue-router": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.3.tgz", + "integrity": "sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg==" + }, "node_modules/vue-template-compiler": { "version": "2.6.14", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", @@ -3538,6 +3602,41 @@ } } }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", + "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", + "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/free-brands-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.4.tgz", + "integrity": "sha512-f1witbwycL9cTENJegcmcZRYyawAFbm8+c6IirLmwbbpqz46wyjbQYLuxOc7weXFXfB7QR8/Vd2u5R3q6JYD9g==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", + "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + } + }, + "@fortawesome/vue-fontawesome": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.6.tgz", + "integrity": "sha512-V3vT3flY15AKbUS31aZOP12awQI3aAzkr2B1KnqcHLmwrmy51DW3pwyBczKdypV8QxBZ8U68Hl2XxK2nudTxpg==", + "requires": {} + }, "@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -5958,6 +6057,11 @@ "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" }, + "vue-router": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.3.tgz", + "integrity": "sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg==" + }, "vue-template-compiler": { "version": "2.6.14", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", diff --git a/package.json b/package.json index 5a41638..dbb99f8 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,16 @@ "vue-template-compiler": "^2.6.14" }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.36", + "@fortawesome/free-brands-svg-icons": "^5.15.4", + "@fortawesome/free-solid-svg-icons": "^5.15.4", + "@fortawesome/vue-fontawesome": "^2.0.6", "axios": "^0.24.0", "bootstrap": "^4.6.0", "bootstrap-vue": "^2.21.2", "bootswatch": "^4.6.0", "moment": "^2.29.1", - "vue": "^2.6.14" + "vue": "^2.6.14", + "vue-router": "^3.5.3" } } diff --git a/src/app.vue b/src/app.vue new file mode 100644 index 0000000..e86847c --- /dev/null +++ b/src/app.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/catalog_index.vue b/src/catalog_index.vue new file mode 100644 index 0000000..8e00670 --- /dev/null +++ b/src/catalog_index.vue @@ -0,0 +1,95 @@ + + + diff --git a/src/log.vue b/src/log.vue new file mode 100644 index 0000000..220d691 --- /dev/null +++ b/src/log.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/main.js b/src/main.js index 6554a67..5783ebe 100644 --- a/src/main.js +++ b/src/main.js @@ -4,17 +4,29 @@ import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap-vue/dist/bootstrap-vue.css' import 'bootswatch/dist/darkly/bootstrap.css' +import { library } from '@fortawesome/fontawesome-svg-core' +import { fab } from '@fortawesome/free-brands-svg-icons' +import { fas } from '@fortawesome/free-solid-svg-icons' +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' + +library.add(fab, fas) + import Vue from 'vue' import { BootstrapVue } from 'bootstrap-vue' +import VueRouter from 'vue-router' import App from './app.vue' +import router from './router.js' Vue.config.devtools = process.env.NODE_ENV === 'dev' +Vue.component('FontAwesomeIcon', FontAwesomeIcon) Vue.use(BootstrapVue) +Vue.use(VueRouter) new Vue({ components: { App }, el: '#app', name: 'GoLatestVer', render: h => h(App), + router, }) diff --git a/src/router.js b/src/router.js new file mode 100644 index 0000000..fc52faa --- /dev/null +++ b/src/router.js @@ -0,0 +1,27 @@ +import CatalogEntry from './catalog_entry.vue' +import CatalogIndex from './catalog_index.vue' +import Log from './log.vue' +import VueRouter from 'vue-router' + +const router = new VueRouter({ + mode: 'history', + routes: [ + { + component: CatalogIndex, + name: 'index', + path: '/', + }, + { + component: CatalogEntry, + name: 'entry', + path: '/:name/:tag', + }, + { + component: Log, + name: 'log', + path: '/log', + }, + ], +}) + +export default router