From e72b84b43a61d5a34e6679236d0b69875cef890f Mon Sep 17 00:00:00 2001 From: vovastelmashchuk Date: Thu, 16 Jan 2025 00:02:05 +0200 Subject: [PATCH] Add landing page --- README.md | 3 - components/DialogWrapper.vue | 52 ++++++++++ components/DxfUpload.vue | 4 +- components/LoginView.vue | 12 +++ components/SpecBlock.vue | 21 ++++ composables/useLoginState.js | 3 + layouts/default.vue | 143 +++++++++++++++++--------- package-lock.json | 12 ++- package.json | 3 +- pages/landing.vue | 150 ++++++++++++++++++++++++++++ pages/queue/[slug].vue | 55 +++++++++- plugins/vue3-google-login.client.js | 8 ++ server/api/queue/[slug].get.js | 35 ++++++- server/db/mongo.js | 2 +- server/plugins/nest.js | 2 + server/workers/nestWorker.js | 2 - 16 files changed, 448 insertions(+), 59 deletions(-) create mode 100644 components/DialogWrapper.vue create mode 100644 components/LoginView.vue create mode 100644 components/SpecBlock.vue create mode 100644 composables/useLoginState.js create mode 100644 pages/landing.vue create mode 100644 plugins/vue3-google-login.client.js diff --git a/README.md b/README.md index 12a68d8..2bd32b1 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,3 @@ Sample of `.secret.json` file: - [Kendall 2000](http://www.graham-kendall.com/papers/k2001.pdf) - [E.K. Burke _et al._ 2006](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.440.379&rep=rep1&type=pdf) -``` - -``` diff --git a/components/DialogWrapper.vue b/components/DialogWrapper.vue new file mode 100644 index 0000000..0cd22c0 --- /dev/null +++ b/components/DialogWrapper.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/components/DxfUpload.vue b/components/DxfUpload.vue index 928c59a..8197960 100644 --- a/components/DxfUpload.vue +++ b/components/DxfUpload.vue @@ -26,9 +26,7 @@ d="M12 4v16m8-8H4" /> - - Drag & drop or click to upload DXF files - + Select DXF files +
+ +
+ + + diff --git a/components/SpecBlock.vue b/components/SpecBlock.vue new file mode 100644 index 0000000..429b5eb --- /dev/null +++ b/components/SpecBlock.vue @@ -0,0 +1,21 @@ + + + diff --git a/composables/useLoginState.js b/composables/useLoginState.js new file mode 100644 index 0000000..93b6953 --- /dev/null +++ b/composables/useLoginState.js @@ -0,0 +1,3 @@ +export const useLoginDialog = () => { + return useState("loginDialog", () => false); +}; diff --git a/layouts/default.vue b/layouts/default.vue index 7a49c9b..6feb628 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -1,64 +1,117 @@ - diff --git a/package-lock.json b/package-lock.json index 465dcfa..b4d3cf7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,8 @@ "tslib": "^2.8.1", "vite": "^6.0.6", "vue": "latest", - "vue-router": "latest" + "vue-router": "latest", + "vue3-google-login": "^2.0.33" }, "devDependencies": { "patch-package": "^8.0.0", @@ -12257,6 +12258,15 @@ "vue": "^3.2.0" } }, + "node_modules/vue3-google-login": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/vue3-google-login/-/vue3-google-login-2.0.33.tgz", + "integrity": "sha512-Hx3JJUREXWCFOOB4AzZKy/x7C+X18kxmT0AquBekm0TRubp11nrWijOLEgmhuij48dQPNumyaAi5IQAeDKk7yw==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.3" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index e9eeef3..b77af60 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "tslib": "^2.8.1", "vite": "^6.0.6", "vue": "latest", - "vue-router": "latest" + "vue-router": "latest", + "vue3-google-login": "^2.0.33" }, "devDependencies": { "patch-package": "^8.0.0", diff --git a/pages/landing.vue b/pages/landing.vue new file mode 100644 index 0000000..b140253 --- /dev/null +++ b/pages/landing.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/pages/queue/[slug].vue b/pages/queue/[slug].vue index 9db6b41..e8c77af 100644 --- a/pages/queue/[slug].vue +++ b/pages/queue/[slug].vue @@ -1,6 +1,59 @@ diff --git a/plugins/vue3-google-login.client.js b/plugins/vue3-google-login.client.js new file mode 100644 index 0000000..0754bea --- /dev/null +++ b/plugins/vue3-google-login.client.js @@ -0,0 +1,8 @@ +import vue3GoogleLogin from "vue3-google-login"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(vue3GoogleLogin, { + clientId: + "476104126469-bv13u3dlpooq1j3jglcgj7sup6dt26nk.apps.googleusercontent.com", + }); +}); diff --git a/server/api/queue/[slug].get.js b/server/api/queue/[slug].get.js index 76b0dc2..f39dc93 100644 --- a/server/api/queue/[slug].get.js +++ b/server/api/queue/[slug].get.js @@ -1,9 +1,40 @@ +import { db } from "~/server/db/mongo"; + export default defineEventHandler(async (event) => { const slug = getRouterParam(event, "slug"); - console.log(`GET ${slug}`); + const queueItem = await db.collection("nest_request").findOne({ slug: slug }); + + const project = await db + .collection("projects") + .findOne({ slug: queueItem.projectSlug }); + + const nestedFiles = queueItem.files.map((file) => { + const count = file.count; + const fileSlug = file.slug; + + const dxfFile = project.dxf.find((dxf) => dxf.slug === fileSlug); + const fileSvg = dxfFile.svg; + + return { + slug: fileSlug, + count: count, + fileName: dxfFile.name, + svg: fileSvg, + }; + }); return { - test: 1, + slug: queueItem.slug, + projectSlug: project.slug, + status: queueItem.status, + nestedFiles: nestedFiles, + resultSvg: queueItem?.svg?.svg, + params: { + width: queueItem.params.width, + height: queueItem.params.height, + tolerance: queueItem.params.tolerance, + }, + usage: queueItem.usage, }; }); diff --git a/server/db/mongo.js b/server/db/mongo.js index e3d185d..89333d5 100644 --- a/server/db/mongo.js +++ b/server/db/mongo.js @@ -7,7 +7,7 @@ let client; /** * @type {import('mongodb').Db} */ -let db; +export let db; export async function connectDB() { if (!client) { diff --git a/server/plugins/nest.js b/server/plugins/nest.js index 6a4c56d..87ce698 100644 --- a/server/plugins/nest.js +++ b/server/plugins/nest.js @@ -1,6 +1,8 @@ +import { connectDB } from "../db/mongo"; import { startNestWorker } from "../workers/nestWorker"; export default defineNitroPlugin(async (nitroApp) => { console.log("Nitro plugin start"); startNestWorker(); + connectDB(); }); diff --git a/server/workers/nestWorker.js b/server/workers/nestWorker.js index f328572..12f9a76 100644 --- a/server/workers/nestWorker.js +++ b/server/workers/nestWorker.js @@ -15,8 +15,6 @@ export async function startNestWorker() { { returnDocument: "after" } ); - console.log("task", task); - if (task) { const { _id } = task;