docs(notifcations): docs for intro, notifcations, reprint added
All checks were successful
Build and Push LST Docker Image / docker (push) Successful in 2m25s
All checks were successful
Build and Push LST Docker Image / docker (push) Successful in 2m25s
This commit is contained in:
@@ -9,11 +9,15 @@ import {
|
||||
import { returnFunc } from "../utils/returnHelper.utils.js";
|
||||
import { sendEmail } from "../utils/sendEmail.utils.js";
|
||||
import { tryCatch } from "../utils/trycatch.utils.js";
|
||||
import { v1QueryRun } from "../utils/pgConnectToLst.utils.js";
|
||||
import { v2QueryRun } from "../utils/pgConnectToLst.utils.js";
|
||||
|
||||
const reprint = async (data: any, emails: string) => {
|
||||
let shutoffv1 = false
|
||||
const func = async (data: any, emails: string) => {
|
||||
// TODO: remove this disable once all 17 plants are on this new lst
|
||||
v1QueryRun(`update public.notifications set active = false where name = '${data.name}'`)
|
||||
if (!shutoffv1){
|
||||
v2QueryRun(`update public.notifications set active = false where name = '${data.name}'`)
|
||||
shutoffv1 = true
|
||||
}
|
||||
|
||||
const { data: l, error: le } = (await tryCatch(
|
||||
db.select().from(notifications).where(eq(notifications.id, data.id)),
|
||||
@@ -106,4 +110,4 @@ const reprint = async (data: any, emails: string) => {
|
||||
}
|
||||
};
|
||||
|
||||
export default reprint;
|
||||
export default func;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
vars {
|
||||
url: http://localhost:3600/lst
|
||||
url: http://localhost:3000/lst
|
||||
readerIp: 10.44.14.215
|
||||
}
|
||||
vars:secret [
|
||||
|
||||
@@ -14,7 +14,7 @@ body:json {
|
||||
{
|
||||
"userId":"m6AbQXFwOXoX3YKLfwWgq2LIdDqS5jqv",
|
||||
"notificationId": "0399eb2a-39df-48b7-9f1c-d233cec94d2e",
|
||||
"emails": ["blake.mattes@alpla.com","cowchmonkey@gmail.com"]
|
||||
"emails": ["blake.matthes@alpla.com","blake.matthes@alpla.com"]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
1486
frontend/package-lock.json
generated
1486
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,8 @@
|
||||
"radix-ui": "^1.4.3",
|
||||
"react": "^19.1.1",
|
||||
"react-dom": "^19.1.1",
|
||||
"react-markdown": "^10.1.0",
|
||||
"remark-gfm": "^4.0.1",
|
||||
"shadcn": "^4.0.8",
|
||||
"socket.io-client": "^4.8.3",
|
||||
"sonner": "^2.0.7",
|
||||
@@ -36,6 +38,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.36.0",
|
||||
"@tailwindcss/typography": "^0.5.19",
|
||||
"@tanstack/router-plugin": "^1.166.7",
|
||||
"@types/react": "^19.1.13",
|
||||
"@types/react-dom": "^19.1.9",
|
||||
|
||||
BIN
frontend/public/imgs/docs/notifications/dk_profile.png
Normal file
BIN
frontend/public/imgs/docs/notifications/dk_profile.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
frontend/public/imgs/docs/notifications/lt_profile.png
Normal file
BIN
frontend/public/imgs/docs/notifications/lt_profile.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
BIN
frontend/public/imgs/docs/notifications/lt_reprints.png
Normal file
BIN
frontend/public/imgs/docs/notifications/lt_reprints.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
62
frontend/src/docs/notifications/intro.tsx
Normal file
62
frontend/src/docs/notifications/intro.tsx
Normal file
@@ -0,0 +1,62 @@
|
||||
export default function into() {
|
||||
return (
|
||||
<div className="mx-auto w-full max-w-4xl px-6 py-8">
|
||||
<h1 className="text-3xl underline p-2">Notifications</h1>
|
||||
|
||||
<p className="p-2">
|
||||
All notifications are a subscription based, please open the menu and
|
||||
select the notification you would like to know more info about
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
<p>To subscribe to a notification</p>
|
||||
<ol className="list-decimal list-inside">
|
||||
<li>Click on your profile</li>
|
||||
|
||||
<img
|
||||
src="/lst/app/imgs/docs/notifications/lt_profile.png"
|
||||
alt="Reprint notification example"
|
||||
className="m-2 rounded-lg border-2"
|
||||
/>
|
||||
<li>Click account</li>
|
||||
<li>Select the notification you would like to subscribe to.</li>
|
||||
<img
|
||||
src="/lst/app/imgs/docs/notifications/lt_notification_select.png"
|
||||
alt="Reprint notification example"
|
||||
className="m-2 rounded-lg border-2"
|
||||
/>
|
||||
<li>
|
||||
If you want to have more people on the notification you can add more
|
||||
emails by clicking the add email button.{" "}
|
||||
<p className="text-sm underline">
|
||||
Please note that each user can subscribe on there own so you do not
|
||||
need to add others unless you want to add them.
|
||||
</p>
|
||||
</li>
|
||||
<li>When you are ready click subscribe</li>
|
||||
</ol>
|
||||
<br />
|
||||
<p className="">
|
||||
NOTE: you can select the same notification and add more people or just
|
||||
your self only, when you do this it will override you current
|
||||
subscription and add / remove the emails
|
||||
</p>
|
||||
<hr className="m-2" />
|
||||
<div>
|
||||
<p>
|
||||
The table at the bottom of your profile is where all of your current
|
||||
subscriptions will be at.
|
||||
</p>
|
||||
<p>
|
||||
Clicking the trash can will remove the notifications from sending you
|
||||
emails
|
||||
</p>
|
||||
<img
|
||||
src="/lst/app/imgs/docs/notifications/lt_notification_table.png"
|
||||
alt="Reprint notification example"
|
||||
className="m-2 rounded-lg border-2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
18
frontend/src/docs/notifications/reprints.tsx
Normal file
18
frontend/src/docs/notifications/reprints.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
export default function reprints() {
|
||||
return (
|
||||
<div className="mx-auto w-full max-w-4xl px-6 py-8">
|
||||
<h1 className="text-3xl underline p-2">Reprints</h1>
|
||||
|
||||
<p className="p-2">
|
||||
The reprint alert will monitor for labels that have been printed within
|
||||
a defined time. when a label is printed in the defined time an email
|
||||
will sent out that looks similar to the below
|
||||
</p>
|
||||
<img
|
||||
src="/lst/app/imgs/docs/notifications/lt_reprints.png"
|
||||
alt="Reprint notification example"
|
||||
className="m-2 rounded-lg border-2"
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
31
frontend/src/routes/docs/$.tsx
Normal file
31
frontend/src/routes/docs/$.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
import { createFileRoute, Link } from "@tanstack/react-router";
|
||||
import { getDoc } from "../../lib/docs";
|
||||
|
||||
export const Route = createFileRoute("/docs/$")({
|
||||
component: RouteComponent,
|
||||
});
|
||||
|
||||
function RouteComponent() {
|
||||
const { _splat } = Route.useParams();
|
||||
const slug = _splat || "";
|
||||
|
||||
const Doc = getDoc(slug);
|
||||
|
||||
if (!Doc) {
|
||||
return (
|
||||
<div>
|
||||
<p>
|
||||
You Have reached a doc page that dose not seem to exist please
|
||||
validate and come back
|
||||
</p>
|
||||
<Link to="/docs">Docs Home</Link>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="mx-auto w-full max-w-4xl px-6 py-8">
|
||||
<Doc />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
100
frontend/src/routes/docs/index.tsx
Normal file
100
frontend/src/routes/docs/index.tsx
Normal file
@@ -0,0 +1,100 @@
|
||||
import { createFileRoute, Link } from "@tanstack/react-router";
|
||||
|
||||
export const Route = createFileRoute("/docs/")({
|
||||
component: RouteComponent,
|
||||
});
|
||||
|
||||
function RouteComponent() {
|
||||
return (
|
||||
<div className="mx-auto w-full max-w-4xl px-6 py-8">
|
||||
<h1 className="text-3xl underline p-2">Logistics Support Tool Intro</h1>
|
||||
<h2 className="text-2xl shadow-2xl p-2">What is lst</h2>
|
||||
<p className="p-2">
|
||||
Lst is a logistics support tool, and aid to ALPLAprod All data in here
|
||||
is just to be treated as an aid and can still be completed manually in
|
||||
alplaprod. These docs are here to help show what LST has to offer as
|
||||
well as the manual process via alpla prod.
|
||||
</p>
|
||||
<hr />
|
||||
<h2 className="text-2xl shadow-2xl p-2">What dose LST offer</h2>
|
||||
<ul className="list-disc list-inside">
|
||||
<li>One click print</li>
|
||||
<ul className="list-disc list-inside indent-8">
|
||||
<li>Controls printing of labels</li>
|
||||
<li>devices that can be used</li>
|
||||
<ul className="list-disc list-inside indent-16">
|
||||
<li>Printer control</li>
|
||||
<li>plc control</li>
|
||||
<li>ame palletizer control</li>
|
||||
</ul>
|
||||
<li>considers more business logic than alplaprod</li>
|
||||
<ul className="list-disc list-inside indent-16">
|
||||
<li>
|
||||
enough material is needed in the system to create the next pallet
|
||||
</li>
|
||||
<li>this will be the same for packaging as well.</li>
|
||||
</ul>
|
||||
<li>special processes</li>
|
||||
<ul className="list-disc list-inside indent-16">
|
||||
<li>in-house delivery triggered once booked in</li>
|
||||
<li>stop gap on printing labels at specific times</li>
|
||||
<li>per line delay in printing</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<li>Silos Management</li>
|
||||
<ul className="list-disc list-inside indent-8">
|
||||
<li>Silo adjustments per location</li>
|
||||
<ul className="list-disc list-inside indent-16">
|
||||
<li>Charts for the last 10 adjustments</li>
|
||||
<li>Historical data</li>
|
||||
<li>Comments on per adjustment</li>
|
||||
<li>Automatic email for more than 5% deviation</li>
|
||||
</ul>
|
||||
<li>Attach silo</li>
|
||||
<ul className="list-disc list-inside indent-16">
|
||||
<li>Only shows machines not attached to this silo</li>
|
||||
</ul>
|
||||
<li>Detach silo</li>
|
||||
<ul className="list-disc list-inside indent-16">
|
||||
Only shows machines that are attached to the silo.
|
||||
</ul>
|
||||
</ul>
|
||||
<li>TMS integration</li>
|
||||
<ul className="list-disc list-inside indent-8">
|
||||
<li>integration with TI to auto add in orders</li>
|
||||
<ul className="list-disc list-inside indent-16">
|
||||
<li>orders are based on a time defined per plant.</li>
|
||||
<li>carriers can be auto set.</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<li>
|
||||
<Link
|
||||
to={"/docs/$"}
|
||||
params={{ _splat: "notifications/intro" }}
|
||||
className="underline"
|
||||
>
|
||||
Notifications
|
||||
</Link>
|
||||
</li>
|
||||
<ul className="list-disc list-inside indent-8">
|
||||
<li>Automated alerts</li>
|
||||
<li>Subscription based</li>
|
||||
<li>Processes notifications</li>
|
||||
</ul>
|
||||
<li>Datamart</li>
|
||||
<ul className="list-disc list-inside indent-8">
|
||||
<li>queries that can be pulled via excel</li>
|
||||
<li>queries are created to allow better views for the plants</li>
|
||||
<li>Faster customer reports</li>
|
||||
</ul>
|
||||
<li>Fake EDI (Demand Management)</li>
|
||||
<ul className="list-disc list-inside indent-8">
|
||||
<li>Orders in (standard template)</li>
|
||||
<li>Customer specific orders templates per plant</li>
|
||||
<li>Forecast (standard Template)</li>
|
||||
<li>Customer specific forecast per plant</li>
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import { tanstackRouter } from "@tanstack/router-plugin/vite";
|
||||
import react from "@vitejs/plugin-react-swc";
|
||||
import { defineConfig } from "vite";
|
||||
|
||||
|
||||
// https://vite.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
|
||||
Reference in New Issue
Block a user