mirror of
https://github.com/inventree/InvenTree.git
synced 2026-10-04 09:25:21 +00:00
[P-UI] Home page (#5344)
* Add new start page * [FR/P-UI] Home/Start page - widgets * load widgets dynamic * code cleanup * remove lodash * refactor and rename to WidgetLayout * Add CSS serving * removed unneeded complexity * clean up UI; switch to menu for controls * change signature * added hotkey * removed hover * removed dummy widget * Add translations * fix test * uses real data for getting started * adapted style for GettingStartedCard * added placeholder usage to GettingStartedCard
This commit is contained in:
1 parent
62362455b8
commit
ebbc27047b
23 files changed
+3301
-729
No files matched your search
@@ -18,6 +18,7 @@
|
||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||
"@lingui/core": "^4.3.0",
|
||||
"@lingui/react": "^4.3.0",
|
||||
"@mantine/carousel": "^6.0.17",
|
||||
"@mantine/core": "^6.0.17",
|
||||
"@mantine/dates": "^6.0.17",
|
||||
"@mantine/dropzone": "^6.0.17",
|
||||
@@ -29,10 +30,12 @@
|
||||
"@tanstack/react-query": "^4.32.0",
|
||||
"axios": "^1.4.0",
|
||||
"dayjs": "^1.11.9",
|
||||
"embla-carousel-react": "^8.0.0-rc11",
|
||||
"html5-qrcode": "^2.3.8",
|
||||
"mantine-datatable": "^2.9.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-grid-layout": "^1.3.4",
|
||||
"react-router-dom": "^6.14.2",
|
||||
"zustand": "^4.3.9"
|
||||
},
|
||||
@@ -46,6 +49,7 @@
|
||||
"@types/node": "^20.4.4",
|
||||
"@types/react": "^18.2.15",
|
||||
"@types/react-dom": "^18.2.7",
|
||||
"@types/react-grid-layout": "^1.3.2",
|
||||
"@types/react-router-dom": "^5.3.3",
|
||||
"@vitejs/plugin-react": "^4.0.3",
|
||||
"babel-plugin-macros": "^3.1.0",
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
import { Trans } from '@lingui/macro';
|
||||
import { Carousel } from '@mantine/carousel';
|
||||
import {
|
||||
Anchor,
|
||||
Button,
|
||||
Paper,
|
||||
Text,
|
||||
Title,
|
||||
createStyles,
|
||||
rem
|
||||
} from '@mantine/core';
|
||||
|
||||
import { DocumentationLinkItem } from './DocumentationLinks';
|
||||
import { PlaceholderPill } from './Placeholder';
|
||||
|
||||
const useStyles = createStyles((theme) => ({
|
||||
card: {
|
||||
height: rem(170),
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'space-between',
|
||||
alignItems: 'flex-start',
|
||||
backgroundSize: 'cover',
|
||||
backgroundPosition: 'center'
|
||||
},
|
||||
|
||||
title: {
|
||||
fontWeight: 900,
|
||||
color:
|
||||
theme.colorScheme === 'dark' ? theme.colors.white : theme.colors.dark,
|
||||
lineHeight: 1.2,
|
||||
fontSize: rem(32),
|
||||
marginTop: 0
|
||||
},
|
||||
|
||||
category: {
|
||||
color:
|
||||
theme.colorScheme === 'dark' ? theme.colors.white : theme.colors.dark,
|
||||
opacity: 0.7,
|
||||
fontWeight: 700
|
||||
}
|
||||
}));
|
||||
|
||||
function StartedCard({
|
||||
title,
|
||||
description,
|
||||
link,
|
||||
placeholder
|
||||
}: DocumentationLinkItem) {
|
||||
const { classes } = useStyles();
|
||||
|
||||
return (
|
||||
<Paper shadow="md" p="xl" radius="md" className={classes.card}>
|
||||
<div>
|
||||
<Title order={3} className={classes.title}>
|
||||
{title} {placeholder && <PlaceholderPill />}
|
||||
</Title>
|
||||
<Text size="sm" className={classes.category} lineClamp={2}>
|
||||
{description}
|
||||
</Text>
|
||||
</div>
|
||||
<Anchor href={link} target="_blank">
|
||||
<Button>
|
||||
<Trans>Read more</Trans>
|
||||
</Button>
|
||||
</Anchor>
|
||||
</Paper>
|
||||
);
|
||||
}
|
||||
|
||||
export function GettingStartedCarousel({
|
||||
items
|
||||
}: {
|
||||
items: DocumentationLinkItem[];
|
||||
}) {
|
||||
const slides = items.map((item) => (
|
||||
<Carousel.Slide key={item.id}>
|
||||
<StartedCard {...item} />
|
||||
</Carousel.Slide>
|
||||
));
|
||||
|
||||
return (
|
||||
<Carousel
|
||||
slideSize="50%"
|
||||
breakpoints={[{ maxWidth: 'sm', slideSize: '100%', slideGap: rem(2) }]}
|
||||
slideGap="xl"
|
||||
align="start"
|
||||
>
|
||||
{slides}
|
||||
</Carousel>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import { Trans } from '@lingui/macro';
|
||||
import { SimpleGrid, Title } from '@mantine/core';
|
||||
|
||||
import { ColorToggle } from '../items/ColorToggle';
|
||||
import { LanguageSelect } from '../items/LanguageSelect';
|
||||
|
||||
export default function DisplayWidget() {
|
||||
return (
|
||||
<span>
|
||||
<Title order={5}>
|
||||
<Trans>Display Settings</Trans>
|
||||
</Title>
|
||||
<SimpleGrid cols={2} spacing={0}>
|
||||
<div>
|
||||
<Trans>Color Mode</Trans>
|
||||
</div>
|
||||
<div>
|
||||
<ColorToggle />
|
||||
</div>
|
||||
<div>
|
||||
<Trans>Language</Trans>
|
||||
</div>
|
||||
<div>
|
||||
<LanguageSelect />
|
||||
</div>
|
||||
</SimpleGrid>
|
||||
</span>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
import { Trans } from '@lingui/macro';
|
||||
import { Button, Stack, Title } from '@mantine/core';
|
||||
import { IconExternalLink } from '@tabler/icons-react';
|
||||
|
||||
export default function FeedbackWidget() {
|
||||
return (
|
||||
<Stack
|
||||
sx={(theme) => ({
|
||||
backgroundColor:
|
||||
theme.colorScheme === 'dark'
|
||||
? theme.colors.gray[9]
|
||||
: theme.colors.gray[1],
|
||||
borderRadius: theme.radius.md
|
||||
})}
|
||||
p={15}
|
||||
>
|
||||
<Title order={5}>
|
||||
<Trans>Something is new: Platform UI</Trans>
|
||||
</Title>
|
||||
<Trans>
|
||||
We are building a new UI with a modern stack. What you currently see is
|
||||
not fixed and will be redesigned but demonstrates the UI/UX
|
||||
possibilities we will have going forward.
|
||||
</Trans>
|
||||
<Button
|
||||
component="a"
|
||||
href="https://github.com/inventree/InvenTree/discussions/5328"
|
||||
variant="outline"
|
||||
leftIcon={<IconExternalLink size="0.9rem" />}
|
||||
>
|
||||
<Trans>Provide Feedback</Trans>
|
||||
</Button>
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import { Trans } from '@lingui/macro';
|
||||
import { Title } from '@mantine/core';
|
||||
|
||||
import { navDocLinks } from '../../defaults/links';
|
||||
import { GettingStartedCarousel } from '../items/GettingStartedCarousel';
|
||||
|
||||
export default function GetStartedWidget() {
|
||||
return (
|
||||
<span>
|
||||
<Title order={5}>
|
||||
<Trans>Getting started</Trans>
|
||||
</Title>
|
||||
<GettingStartedCarousel items={navDocLinks} />
|
||||
</span>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,246 @@
|
||||
import { Trans } from '@lingui/macro';
|
||||
import {
|
||||
ActionIcon,
|
||||
Container,
|
||||
Group,
|
||||
Indicator,
|
||||
createStyles
|
||||
} from '@mantine/core';
|
||||
import { Menu, Text } from '@mantine/core';
|
||||
import { useDisclosure, useHotkeys } from '@mantine/hooks';
|
||||
import {
|
||||
IconArrowBackUpDouble,
|
||||
IconDotsVertical,
|
||||
IconLayout2,
|
||||
IconSquare,
|
||||
IconSquareCheck
|
||||
} from '@tabler/icons-react';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { Responsive, WidthProvider } from 'react-grid-layout';
|
||||
|
||||
const ReactGridLayout = WidthProvider(Responsive);
|
||||
|
||||
interface LayoutStorage {
|
||||
[key: string]: {};
|
||||
}
|
||||
|
||||
const compactType = 'vertical';
|
||||
|
||||
const useItemStyle = createStyles((theme) => ({
|
||||
backgroundItem: {
|
||||
backgroundColor:
|
||||
theme.colorScheme === 'dark' ? theme.colors.dark[5] : theme.white,
|
||||
maxWidth: '100%',
|
||||
padding: '8px',
|
||||
boxShadow: theme.shadows.md
|
||||
},
|
||||
|
||||
baseItem: {
|
||||
maxWidth: '100%',
|
||||
padding: '8px'
|
||||
}
|
||||
}));
|
||||
|
||||
export interface LayoutItemType {
|
||||
i: number;
|
||||
val: string | JSX.Element | JSX.Element[] | (() => JSX.Element);
|
||||
w?: number;
|
||||
h?: number;
|
||||
x?: number;
|
||||
y?: number;
|
||||
minH?: number;
|
||||
}
|
||||
|
||||
export function WidgetLayout({
|
||||
items = [],
|
||||
className = 'layout',
|
||||
localstorageName = 'argl',
|
||||
rowHeight = 30
|
||||
}: {
|
||||
items: LayoutItemType[];
|
||||
className?: string;
|
||||
localstorageName?: string;
|
||||
rowHeight?: number;
|
||||
}) {
|
||||
const [layouts, setLayouts] = useState({});
|
||||
const [editable, setEditable] = useDisclosure(false);
|
||||
const [boxShown, setBoxShown] = useDisclosure(true);
|
||||
const { classes } = useItemStyle();
|
||||
|
||||
useEffect(() => {
|
||||
let layout = getFromLS('layouts') || [];
|
||||
const new_layout = JSON.parse(JSON.stringify(layout));
|
||||
setLayouts(new_layout);
|
||||
}, []);
|
||||
|
||||
function getFromLS(key: string) {
|
||||
let ls: LayoutStorage = {};
|
||||
if (localStorage) {
|
||||
try {
|
||||
ls = JSON.parse(localStorage.getItem(localstorageName) || '') || {};
|
||||
} catch (e) {
|
||||
/*Ignore*/
|
||||
}
|
||||
}
|
||||
return ls[key];
|
||||
}
|
||||
|
||||
function saveToLS(key: string, value: any) {
|
||||
if (localStorage) {
|
||||
localStorage.setItem(
|
||||
localstorageName,
|
||||
JSON.stringify({
|
||||
[key]: value
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function resetLayout() {
|
||||
setLayouts({});
|
||||
}
|
||||
|
||||
function onLayoutChange(layout: any, layouts: any) {
|
||||
saveToLS('layouts', layouts);
|
||||
setLayouts(layouts);
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<WidgetControlBar
|
||||
editable={editable}
|
||||
editFnc={setEditable.toggle}
|
||||
resetLayout={resetLayout}
|
||||
boxShown={boxShown}
|
||||
boxFnc={setBoxShown.toggle}
|
||||
/>
|
||||
{layouts ? (
|
||||
<ReactGridLayout
|
||||
className={className}
|
||||
cols={{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }}
|
||||
rowHeight={rowHeight}
|
||||
layouts={layouts}
|
||||
onLayoutChange={(layout, layouts) => onLayoutChange(layout, layouts)}
|
||||
compactType={compactType}
|
||||
isDraggable={editable}
|
||||
isResizable={editable}
|
||||
>
|
||||
{items.map((item) => {
|
||||
return LayoutItem(item, boxShown, classes);
|
||||
})}
|
||||
</ReactGridLayout>
|
||||
) : (
|
||||
<div>
|
||||
<Trans>Loading</Trans>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function WidgetControlBar({
|
||||
editable,
|
||||
editFnc,
|
||||
resetLayout,
|
||||
boxShown,
|
||||
boxFnc
|
||||
}: {
|
||||
editable: boolean;
|
||||
editFnc: () => void;
|
||||
resetLayout: () => void;
|
||||
boxShown: boolean;
|
||||
boxFnc: () => void;
|
||||
}) {
|
||||
useHotkeys([['mod+E', () => editFnc()]]);
|
||||
|
||||
return (
|
||||
<Group position="right">
|
||||
<Menu
|
||||
shadow="md"
|
||||
width={200}
|
||||
openDelay={100}
|
||||
closeDelay={400}
|
||||
position="bottom-end"
|
||||
>
|
||||
<Menu.Target>
|
||||
<Indicator
|
||||
color="red"
|
||||
position="bottom-start"
|
||||
processing
|
||||
disabled={!editable}
|
||||
>
|
||||
<ActionIcon variant="transparent">
|
||||
<IconDotsVertical />
|
||||
</ActionIcon>
|
||||
</Indicator>
|
||||
</Menu.Target>
|
||||
|
||||
<Menu.Dropdown>
|
||||
<Menu.Label>
|
||||
<Trans>Layout</Trans>
|
||||
</Menu.Label>
|
||||
<Menu.Item
|
||||
icon={<IconArrowBackUpDouble size={14} />}
|
||||
onClick={resetLayout}
|
||||
>
|
||||
<Trans>Reset Layout</Trans>
|
||||
</Menu.Item>
|
||||
<Menu.Item
|
||||
icon={
|
||||
<IconLayout2 size={14} color={editable ? 'red' : undefined} />
|
||||
}
|
||||
onClick={editFnc}
|
||||
rightSection={
|
||||
<Text size="xs" color="dimmed">
|
||||
⌘E
|
||||
</Text>
|
||||
}
|
||||
>
|
||||
{editable ? <Trans>Stop Edit</Trans> : <Trans>Edit Layout</Trans>}
|
||||
</Menu.Item>
|
||||
|
||||
<Menu.Divider />
|
||||
|
||||
<Menu.Label>
|
||||
<Trans>Appearance</Trans>
|
||||
</Menu.Label>
|
||||
<Menu.Item
|
||||
icon={
|
||||
boxShown ? (
|
||||
<IconSquareCheck size={14} />
|
||||
) : (
|
||||
<IconSquare size={14} />
|
||||
)
|
||||
}
|
||||
onClick={boxFnc}
|
||||
>
|
||||
<Trans>Show Boxes</Trans>
|
||||
</Menu.Item>
|
||||
</Menu.Dropdown>
|
||||
</Menu>
|
||||
</Group>
|
||||
);
|
||||
}
|
||||
|
||||
function LayoutItem(
|
||||
item: any,
|
||||
backgroundColor: boolean,
|
||||
classes: { backgroundItem: string; baseItem: string }
|
||||
) {
|
||||
return (
|
||||
<Container
|
||||
key={item.i}
|
||||
data-grid={{
|
||||
w: item.w || 3,
|
||||
h: item.h || 3,
|
||||
x: item.x || 0,
|
||||
y: item.y || 0,
|
||||
minH: item.minH || undefined,
|
||||
minW: item.minW || undefined
|
||||
}}
|
||||
className={backgroundColor ? classes.backgroundItem : classes.baseItem}
|
||||
>
|
||||
{item.val}
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
@@ -17,3 +17,8 @@ export const Loadable = (Component: any) => (props: JSX.IntrinsicAttributes) =>
|
||||
<Component {...props} />
|
||||
</Suspense>
|
||||
);
|
||||
|
||||
export function LoadingItem({ item }: { item: any }): JSX.Element {
|
||||
const Itm = Loadable(item);
|
||||
return <Itm />;
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,3 +1,3 @@
|
||||
/*eslint-disable*/ export const messages = JSON.parse(
|
||||
'{"MHrjPM":"Name","4GKuCs":"Login fehlgeschlagen","jCsNQS":"Überprüfen Sie Ihre Eingabe und versuchen Sie es erneut.","zM9Wd+":"Anmeldung erfolgreich","rxWA39":"Willkommen zurück!","yfblq9":"Mail erfolgreich gesendet","R2JMfc":"Prüfen Sie Ihren Posteingang auf den Anmeldelink. Wenn Sie ein Konto haben, erhalten Sie einen Anmeldelink. Prüfen Sie auch den Spam.","ccnxuA":"Eingabefehler","7sNhEz":"Nutzername","8ZsakT":"Passwort","9TO8nT":"Dein Passwort","RfwZxd":"Passwort zurücksetzen","O3oNi5":"Mail","Wr5sDQ":"Wir werden Ihnen einen Link für die Anmeldung senden","7ZOmjI":"Mail erhalten","XlWstl":"Benutzername und Passwort verwenden","sQia9P":"Einoggen","F+gz9Z":"Mail senden","Ai2U7L":"Adresse","6YtxFj":"Name","yWMzcH":"Kein Eintrag...","UYWLpE":"Adresse hinzufügen","tfDRzk":"Speichern","IvkbIT":"Mehr lesen","29VNqC":"Unbekannter Fehler","nlJhkA":"Ein Fehler ist aufgetreten:","DVAy0b":"InvenTree\'s Logo","3TnJRX":"This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing.","etqXdW":"PLH","XDwkfO":"Scan QR code","GU7xAr":"Unknown response","UHot+L":"Error while getting camera","bR26mb":"Error while scanning","fvJQqd":"Error while stopping","CMQ09J":"Scanning","Fg9r/3":"Not scanning","QuNKRX":"Select Camera","m3BKG+":"Start scanning","yFRXH8":"Stop scanning","3164SS":"No scans yet!","RWw9Lg":"Dialog schließen","iDNBZe":"Benachrichtigungen","vERlcd":"Profil","Tz0i8g":"Einstellungen","r5Xdbs":["Aktuelle Sprache ",["locale"]],"XXvCbv":"Zu Pseudo-Sprache wechseln","T3FM0r":"Benutzereinstellungen","nOhz3x":"Abmelden","rmlxV1":"Open Navigation","N6Pxr9":"Alle anzeigen","ZDIydz":"Loslegen","BQDL+H":"Übersicht über die wichtigsten Objekte, Funktionen und mögliche Anwendungsfälle.","UxKoFf":"Navigation","wRR604":"Pages","ohUJJM":"Plugins","TvY/XA":"Documentation","uyJsf6":"About","hQRttt":"Speichern","dEgA5A":"Abbrechen","vgP+9p":"Teil","tMMrz4":"Demo von InvenTree","vu8/DU":"Lokaler Server","On0aF2":"Webseite","RkXlPZ":"GitHub","kc+zZA":"Demo","i0qMbr":"Startseite","4GLxhy":"Getting Started","VAYCzI":"Getting started with InvenTree","OZtEcz":"API","aW0h/b":"InvenTree API documentation","BOAupq":"Developer Manual","kUcL4g":"InvenTree developer manual","/lDBHm":"FAQ","a3pVqb":"Frequently asked questions","kyAi7k":"Instance","Q5S3DY":"About this Inventree instance","vHeNia":"InvenTree","gfhzPz":"About the InvenTree org","snyG+w":"Licenses","tBjIo1":"Licenses for packages used by InvenTree","2AZart":"Open sourcea","v+Wp++":"Open source","fu2+tK":"Start page of your instance.","pTE4nz":"This Pokémon’s cry is very loud and distracting","S+oekQ":"This Pokémon’s cry is very loud and distracting and more and more and more","kNyJAF":"Profile page","CFYxhi":"User attributes and design settings.","uP4V6I":"Free for everyone","dyMOjI":"The fluid of Smeargle’s tail secretions changes","d1WpzX":"The fluid of Smeargle’s tail secretions changes in the intensity","1ekmeV":"abc","Wj+wQW":"Random image","sGi2sH":"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Name liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assume. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wLine truncated
|
||||
'{"MHrjPM":"Name","4GKuCs":"Login fehlgeschlagen","tnaYa/":"Check your input and try again.","6cPKtu":"Login successful","rxWA39":"Willkommen zurück!","jCsNQS":"Überprüfen Sie Ihre Eingabe und versuchen Sie es erneut.","zM9Wd+":"Anmeldung erfolgreich","XAIcYu":"Mail delivery successful","R2JMfc":"Prüfen Sie Ihren Posteingang auf den Anmeldelink. Wenn Sie ein Konto haben, erhalten Sie einen Anmeldelink. Prüfen Sie auch den Spam.","ccnxuA":"Eingabefehler","yfblq9":"Mail erfolgreich gesendet","BL4vL0":"Welcome, log in below","7sNhEz":"Nutzername","8ZsakT":"Passwort","9TO8nT":"Dein Passwort","RfwZxd":"Passwort zurücksetzen","O3oNi5":"Mail","Wr5sDQ":"Wir werden Ihnen einen Link für die Anmeldung senden","7ZOmjI":"Mail erhalten","XlWstl":"Benutzername und Passwort verwenden","sQia9P":"Einoggen","F+gz9Z":"Mail senden","Ai2U7L":"Adresse","6YtxFj":"Name","yWMzcH":"Kein Eintrag...","UYWLpE":"Adresse hinzufügen","tfDRzk":"Speichern","GG8+B2":"Select destination instance","uqEJlE":"Edit possible host options","GUtCZC":["Version: ",["0"]],"4/F1y3":["API:",["0"]],"UVRlfm":["Name: ",["0"]],"ed0N/H":["State: <0>worker</0> (",["0"],"), <1>plugins</1>",["1"]],"IvkbIT":"Mehr lesen","29VNqC":"Unbekannter Fehler","nlJhkA":"Ein Fehler ist aufgetreten:","DVAy0b":"InvenTree\'s Logo","3TnJRX":"This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing.","etqXdW":"PLH","XDwkfO":"Scan QR code","sGeXL3":"Thumbnail","GU7xAr":"Unknown response","UHot+L":"Error while getting camera","bR26mb":"Error while scanning","fvJQqd":"Error while stopping","CMQ09J":"Scanning","Fg9r/3":"Not scanning","QuNKRX":"Select Camera","m3BKG+":"Start scanning","yFRXH8":"Stop scanning","3164SS":"No scans yet!","RWw9Lg":"Dialog schließen","iDNBZe":"Benachrichtigungen","vERlcd":"Profil","Tz0i8g":"Einstellungen","T3FM0r":"Benutzereinstellungen","nOhz3x":"Abmelden","r5Xdbs":["Aktuelle Sprache ",["locale"]],"XXvCbv":"Zu Pseudo-Sprache wechseln","rmlxV1":"Open Navigation","N6Pxr9":"Alle anzeigen","ZDIydz":"Loslegen","BQDL+H":"Übersicht über die wichtigsten Objekte, Funktionen und mögliche Anwendungsfälle.","UxKoFf":"Navigation","wRR604":"Pages","ohUJJM":"Plugins","TvY/XA":"Documentation","uyJsf6":"About","pmRbKZ":"Parts","FcNRrt":"Supplier Parts","d0fBfb":"Manufacturer Parts","2GkbLI":"Part Categories","Jbck4N":"Stock Items","1eBWAw":"Stock Locations","RCVhIP":"Build Orders","s2QZS6":"Companies","85Yvr2":"Purchase Orders","B1TL+X":"Sales Orders","LlTg8M":"Return Orders","mO8KLE":"results","Dwt0g3":"Enter search text","9UYKcs":"Search Options","qkCZlJ":"Regex search","roauu/":"Whole word search","SlfejT":"Fehler","hJCuaV":"An error occurred during search query","Ev2r9A":"No results","dTtbrX":"No results available for search query","kCTFU8":"Select Columns","6N5Lt+":"CSV","Keu6yk":"TSV","UR8vqQ":"Excel","w+nnwj":"Download selected data","rn2/2V":"Remove filter","N73rrp":"Add table filter","ot7qsv":"Clear all filters","vCSBPD":"Add filter","c+xCSz":"True","ocUvR+":"False","jpXCTI":"Add Table Filter","R39XGq":"Select from the available filters","o7J4JM":"Filter","hpMOSe":"Select filter","wMHvYH":"Value","Fo55lj":"Select filter value","dEgA5A":"Abbrechen","PzFzS+":"Add Filter","EqGTpW":"No records found","UFBeQV":"Bad request","dA/8If":"Unauthorized","7JBW66":"Forbidden","KPx1UV":"Not found","v1qpjB":"Barcode actions","inVgrM":"Print actions","8RYNR1":"Refresh data","j2wMlR":"Table filters","N2C89m":"Reference","vgP+9p":"Teil","Nu4oKW":"Description","Sdfr6G":"Project Code","1hKEom":"Priority","VbWX2u":"Quantity","qqWcBV":"Completed","uAQUqI":"Status","d+F6q9":"Created","3wXEsN":"IPN","QrhaVg":"Units","K7tIrx":"Category","blbbPS":"Stock","YA4hwj":"Price Range","yzF66j":"Link","F6pfE9":"Active","PHri/6":"Filter by part active status","WL36Yh":"Assembly","oQzKsK":"Filter by assembly attribute","NgZniC":"Include Subcategories","5JhtGd":"Include parts in subcategories","dK3Z9j":"Component","oO7QIX":"Filter by component attribute","y6MnU0":"Trackable","MbixSq":"Filter by trackable attribute","YyRdJQ":"Has Units","WyFVby":"Filter by parts which have units","c9/Fqb":"Has IPN","jh/Aa+":"Filter by parts which have an internal part number","JqmfuT":"Has Stock","6Kd+HK":"Filter by parts which have stock","UgdO7s":"Low Stock","GDYPCw":"Filter by parts which have low stock","TW9g28":"Purchaseable","KMdl2R":"Filter by parts which are purchaseable","/3xNJ4":"Salable","V5i7hf":"Filter by parts which are salable","ksX7Wx":"Virtual","QDTpY6":"Filter by parts which are virtual","+SkaI8":"Not Virtual","rsx3xA":"Batch","wJijgU":"Location","7L01XJ":"Actions","VikQny":"Test Filter","ay6lVf":"This is a test filter","DdjH42":"Display Settings","FpsvqB":"Color Mode","vXIe7J":"Language","T/IST7":"Something is new: Platform UI","gSWyZa":"We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward.","GNA6/Q":"ProvidLine truncated
|
||||
);
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,3 +1,3 @@
|
||||
/*eslint-disable*/ export const messages = JSON.parse(
|
||||
'{"MHrjPM":"Title","4GKuCs":"Login failed","jCsNQS":"Check your your input and try again.","zM9Wd+":"Login successfull","rxWA39":"Welcome back!","yfblq9":"Mail delivery successfull","R2JMfc":"Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too.","ccnxuA":"Input error","7sNhEz":"Username","8ZsakT":"Password","9TO8nT":"Your password","RfwZxd":"Reset password","O3oNi5":"Email","Wr5sDQ":"We will send you a link to login - if you are registered","7ZOmjI":"Send me an email","XlWstl":"I will use username and password","sQia9P":"Log in","F+gz9Z":"Send mail","Ai2U7L":"Host","6YtxFj":"Name","yWMzcH":"No one here...","UYWLpE":"Add Host","tfDRzk":"Save","IvkbIT":"Read More","29VNqC":"Unknown error","nlJhkA":"An error occurred:","DVAy0b":"InvenTree Logo","3TnJRX":"This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing.","etqXdW":"PLH","XDwkfO":"Scan QR code","GU7xAr":"Unknown response","UHot+L":"Error while getting camera","bR26mb":"Error while scanning","fvJQqd":"Error while stopping","CMQ09J":"Scanning","Fg9r/3":"Not scanning","QuNKRX":"Select Camera","m3BKG+":"Start scanning","yFRXH8":"Stop scanning","3164SS":"No scans yet!","RWw9Lg":"Close modal","iDNBZe":"Notifications","vERlcd":"Profile","Tz0i8g":"Settings","r5Xdbs":["Current language ",["locale"]],"XXvCbv":"Switch to pseudo language","T3FM0r":"Account settings","nOhz3x":"Logout","rmlxV1":"Open Navigation","N6Pxr9":"View all","ZDIydz":"Get started","BQDL+H":"Overview over high-level objects, functions and possible usecases.","UxKoFf":"Navigation","wRR604":"Pages","ohUJJM":"Plugins","TvY/XA":"Documentation","uyJsf6":"About","hQRttt":"Submit","dEgA5A":"Cancel","vgP+9p":"Part","tMMrz4":"InvenTree Demo","vu8/DU":"Local Server","On0aF2":"Website","RkXlPZ":"GitHub","kc+zZA":"Demo","i0qMbr":"Home","4GLxhy":"Getting Started","VAYCzI":"Getting started with InvenTree","OZtEcz":"API","aW0h/b":"InvenTree API documentation","BOAupq":"Developer Manual","kUcL4g":"InvenTree developer manual","/lDBHm":"FAQ","a3pVqb":"Frequently asked questions","kyAi7k":"Instance","Q5S3DY":"About this Inventree instance","vHeNia":"InvenTree","gfhzPz":"About the InvenTree org","snyG+w":"Licenses","tBjIo1":"Licenses for packages used by InvenTree","2AZart":"Open sourcea","v+Wp++":"Open source","fu2+tK":"Start page of your instance.","pTE4nz":"This Pokémon’s cry is very loud and distracting","S+oekQ":"This Pokémon’s cry is very loud and distracting and more and more and more","kNyJAF":"Profile page","CFYxhi":"User attributes and design settings.","uP4V6I":"Free for everyone","dyMOjI":"The fluid of Smeargle’s tail secretions changes","d1WpzX":"The fluid of Smeargle’s tail secretions changes in the intensity","1ekmeV":"abc","Wj+wQW":"Random image","sGi2sH":"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Name liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assume. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulpLine truncated
|
||||
'{"MHrjPM":"Title","4GKuCs":"Login failed","tnaYa/":"Check your input and try again.","6cPKtu":"Login successful","rxWA39":"Welcome back!","jCsNQS":"Check your your input and try again.","zM9Wd+":"Login successfull","XAIcYu":"Mail delivery successful","R2JMfc":"Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too.","ccnxuA":"Input error","yfblq9":"Mail delivery successfull","BL4vL0":"Welcome, log in below","7sNhEz":"Username","8ZsakT":"Password","9TO8nT":"Your password","RfwZxd":"Reset password","O3oNi5":"Email","Wr5sDQ":"We will send you a link to login - if you are registered","7ZOmjI":"Send me an email","XlWstl":"I will use username and password","sQia9P":"Log in","F+gz9Z":"Send mail","Ai2U7L":"Host","6YtxFj":"Name","yWMzcH":"No one here...","UYWLpE":"Add Host","tfDRzk":"Save","GG8+B2":"Select destination instance","uqEJlE":"Edit possible host options","GUtCZC":["Version: ",["0"]],"4/F1y3":["API:",["0"]],"UVRlfm":["Name: ",["0"]],"ed0N/H":["State: <0>worker</0> (",["0"],"), <1>plugins</1>",["1"]],"IvkbIT":"Read More","29VNqC":"Unknown error","nlJhkA":"An error occurred:","DVAy0b":"InvenTree Logo","3TnJRX":"This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing.","etqXdW":"PLH","XDwkfO":"Scan QR code","sGeXL3":"Thumbnail","GU7xAr":"Unknown response","UHot+L":"Error while getting camera","bR26mb":"Error while scanning","fvJQqd":"Error while stopping","CMQ09J":"Scanning","Fg9r/3":"Not scanning","QuNKRX":"Select Camera","m3BKG+":"Start scanning","yFRXH8":"Stop scanning","3164SS":"No scans yet!","RWw9Lg":"Close modal","iDNBZe":"Notifications","vERlcd":"Profile","Tz0i8g":"Settings","T3FM0r":"Account settings","nOhz3x":"Logout","r5Xdbs":["Current language ",["locale"]],"XXvCbv":"Switch to pseudo language","rmlxV1":"Open Navigation","N6Pxr9":"View all","ZDIydz":"Get started","BQDL+H":"Overview over high-level objects, functions and possible usecases.","UxKoFf":"Navigation","wRR604":"Pages","ohUJJM":"Plugins","TvY/XA":"Documentation","uyJsf6":"About","pmRbKZ":"Parts","FcNRrt":"Supplier Parts","d0fBfb":"Manufacturer Parts","2GkbLI":"Part Categories","Jbck4N":"Stock Items","1eBWAw":"Stock Locations","RCVhIP":"Build Orders","s2QZS6":"Companies","85Yvr2":"Purchase Orders","B1TL+X":"Sales Orders","LlTg8M":"Return Orders","mO8KLE":"results","Dwt0g3":"Enter search text","9UYKcs":"Search Options","qkCZlJ":"Regex search","roauu/":"Whole word search","SlfejT":"Error","hJCuaV":"An error occurred during search query","Ev2r9A":"No results","dTtbrX":"No results available for search query","kCTFU8":"Select Columns","6N5Lt+":"CSV","Keu6yk":"TSV","UR8vqQ":"Excel","w+nnwj":"Download selected data","rn2/2V":"Remove filter","N73rrp":"Add table filter","ot7qsv":"Clear all filters","vCSBPD":"Add filter","c+xCSz":"True","ocUvR+":"False","jpXCTI":"Add Table Filter","R39XGq":"Select from the available filters","o7J4JM":"Filter","hpMOSe":"Select filter","wMHvYH":"Value","Fo55lj":"Select filter value","dEgA5A":"Cancel","PzFzS+":"Add Filter","EqGTpW":"No records found","UFBeQV":"Bad request","dA/8If":"Unauthorized","7JBW66":"Forbidden","KPx1UV":"Not found","v1qpjB":"Barcode actions","inVgrM":"Print actions","8RYNR1":"Refresh data","j2wMlR":"Table filters","N2C89m":"Reference","vgP+9p":"Part","Nu4oKW":"Description","Sdfr6G":"Project Code","1hKEom":"Priority","VbWX2u":"Quantity","qqWcBV":"Completed","uAQUqI":"Status","d+F6q9":"Created","3wXEsN":"IPN","QrhaVg":"Units","K7tIrx":"Category","blbbPS":"Stock","YA4hwj":"Price Range","yzF66j":"Link","F6pfE9":"Active","PHri/6":"Filter by part active status","WL36Yh":"Assembly","oQzKsK":"Filter by assembly attribute","NgZniC":"Include Subcategories","5JhtGd":"Include parts in subcategories","dK3Z9j":"Component","oO7QIX":"Filter by component attribute","y6MnU0":"Trackable","MbixSq":"Filter by trackable attribute","YyRdJQ":"Has Units","WyFVby":"Filter by parts which have units","c9/Fqb":"Has IPN","jh/Aa+":"Filter by parts which have an internal part number","JqmfuT":"Has Stock","6Kd+HK":"Filter by parts which have stock","UgdO7s":"Low Stock","GDYPCw":"Filter by parts which have low stock","TW9g28":"Purchaseable","KMdl2R":"Filter by parts which are purchaseable","/3xNJ4":"Salable","V5i7hf":"Filter by parts which are salable","ksX7Wx":"Virtual","QDTpY6":"Filter by parts which are virtual","+SkaI8":"Not Virtual","rsx3xA":"Batch","wJijgU":"Location","7L01XJ":"Actions","VikQny":"Test Filter","ay6lVf":"This is a test filter","DdjH42":"Display Settings","FpsvqB":"Color Mode","vXIe7J":"Language","T/IST7":"Something is new: Platform UI","gSWyZa":"We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward.","GNA6/Q":"Provide Feedback","7hktsm":"Getting started","yQE2r9":"Loading","rdU729":"Layout","Nw+C4g":"Reset Layout","fOql7D":"Stop Edit","NZubw3":"Edit Layout","aAIQg2":"AppearaLine truncated
|
||||
);
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,3 +1,3 @@
|
||||
/*eslint-disable*/ export const messages = JSON.parse(
|
||||
'{"MHrjPM":"Title","4GKuCs":"Login failed","jCsNQS":"Check your your input and try again.","zM9Wd+":"Login successfull","rxWA39":"Welcome back!","yfblq9":"Mail delivery successfull","R2JMfc":"Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too.","ccnxuA":"Input error","7sNhEz":"Username","8ZsakT":"Password","9TO8nT":"Your password","RfwZxd":"Reset password","O3oNi5":"Email","Wr5sDQ":"We will send you a link to login - if you are registered","7ZOmjI":"Send me an email","XlWstl":"I will use username and password","sQia9P":"Log in","F+gz9Z":"Send mail","Ai2U7L":"Host","6YtxFj":"Name","yWMzcH":"No one here...","UYWLpE":"Add Host","tfDRzk":"Save","IvkbIT":"Read More","29VNqC":"Unknown error","nlJhkA":"An error occurred:","DVAy0b":"InvenTree Logo","3TnJRX":"This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing.","etqXdW":"PLH","XDwkfO":"Scan QR code","GU7xAr":"Unknown response","UHot+L":"Error while getting camera","bR26mb":"Error while scanning","fvJQqd":"Error while stopping","CMQ09J":"Scanning","Fg9r/3":"Not scanning","QuNKRX":"Select Camera","m3BKG+":"Start scanning","yFRXH8":"Stop scanning","3164SS":"No scans yet!","RWw9Lg":"Close modal","iDNBZe":"Notifications","vERlcd":"Profile","Tz0i8g":"Settings","r5Xdbs":["Current language ",["locale"]],"XXvCbv":"Switch to pseudo language","T3FM0r":"Account settings","nOhz3x":"Logout","rmlxV1":"Open Navigation","N6Pxr9":"View all","ZDIydz":"Get started","BQDL+H":"Overview over high-level objects, functions and possible usecases.","UxKoFf":"Navigation","wRR604":"Pages","ohUJJM":"Plugins","TvY/XA":"Documentation","uyJsf6":"About","hQRttt":"Submit","dEgA5A":"Cancel","vgP+9p":"Alkatrész","tMMrz4":"InvenTree Demo","vu8/DU":"Local Server","On0aF2":"Website","RkXlPZ":"GitHub","kc+zZA":"Demo","i0qMbr":"Home","4GLxhy":"Getting Started","VAYCzI":"Getting started with InvenTree","OZtEcz":"API","aW0h/b":"InvenTree API documentation","BOAupq":"Developer Manual","kUcL4g":"InvenTree developer manual","/lDBHm":"FAQ","a3pVqb":"Frequently asked questions","kyAi7k":"Instance","Q5S3DY":"About this Inventree instance","vHeNia":"InvenTree","gfhzPz":"About the InvenTree org","snyG+w":"Licenses","tBjIo1":"Licenses for packages used by InvenTree","2AZart":"Open sourcea","v+Wp++":"Open source","fu2+tK":"Start page of your instance.","pTE4nz":"This Pokémon’s cry is very loud and distracting","S+oekQ":"This Pokémon’s cry is very loud and distracting and more and more and more","kNyJAF":"Profile page","CFYxhi":"User attributes and design settings.","uP4V6I":"Free for everyone","dyMOjI":"The fluid of Smeargle’s tail secretions changes","d1WpzX":"The fluid of Smeargle’s tail secretions changes in the intensity","1ekmeV":"abc","Wj+wQW":"Random image","sGi2sH":"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore the feugait nulla facilisi. Name liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assume. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit iLine truncated
|
||||
'{"MHrjPM":"Title","4GKuCs":"Login failed","tnaYa/":"Check your input and try again.","6cPKtu":"Login successful","rxWA39":"Welcome back!","jCsNQS":"Check your your input and try again.","zM9Wd+":"Login successfull","XAIcYu":"Mail delivery successful","R2JMfc":"Check your inbox for the login link. If you have an account, you will receive a login link. Check in spam too.","ccnxuA":"Input error","yfblq9":"Mail delivery successfull","BL4vL0":"Welcome, log in below","7sNhEz":"Username","8ZsakT":"Password","9TO8nT":"Your password","RfwZxd":"Reset password","O3oNi5":"Email","Wr5sDQ":"We will send you a link to login - if you are registered","7ZOmjI":"Send me an email","XlWstl":"I will use username and password","sQia9P":"Log in","F+gz9Z":"Send mail","Ai2U7L":"Host","6YtxFj":"Name","yWMzcH":"No one here...","UYWLpE":"Add Host","tfDRzk":"Save","GG8+B2":"Select destination instance","uqEJlE":"Edit possible host options","GUtCZC":["Version: ",["0"]],"4/F1y3":["API:",["0"]],"UVRlfm":["Name: ",["0"]],"ed0N/H":["State: <0>worker</0> (",["0"],"), <1>plugins</1>",["1"]],"IvkbIT":"Read More","29VNqC":"Unknown error","nlJhkA":"An error occurred:","DVAy0b":"InvenTree Logo","3TnJRX":"This feature/button/site is a placeholder for a feature that is not implemented, only partial or intended for testing.","etqXdW":"PLH","XDwkfO":"Scan QR code","sGeXL3":"Thumbnail","GU7xAr":"Unknown response","UHot+L":"Error while getting camera","bR26mb":"Error while scanning","fvJQqd":"Error while stopping","CMQ09J":"Scanning","Fg9r/3":"Not scanning","QuNKRX":"Select Camera","m3BKG+":"Start scanning","yFRXH8":"Stop scanning","3164SS":"No scans yet!","RWw9Lg":"Close modal","iDNBZe":"Notifications","vERlcd":"Profile","Tz0i8g":"Settings","T3FM0r":"Account settings","nOhz3x":"Logout","r5Xdbs":["Current language ",["locale"]],"XXvCbv":"Switch to pseudo language","rmlxV1":"Open Navigation","N6Pxr9":"View all","ZDIydz":"Get started","BQDL+H":"Overview over high-level objects, functions and possible usecases.","UxKoFf":"Navigation","wRR604":"Pages","ohUJJM":"Plugins","TvY/XA":"Documentation","uyJsf6":"About","pmRbKZ":"Parts","FcNRrt":"Supplier Parts","d0fBfb":"Manufacturer Parts","2GkbLI":"Part Categories","Jbck4N":"Stock Items","1eBWAw":"Stock Locations","RCVhIP":"Build Orders","s2QZS6":"Companies","85Yvr2":"Purchase Orders","B1TL+X":"Sales Orders","LlTg8M":"Return Orders","mO8KLE":"results","Dwt0g3":"Enter search text","9UYKcs":"Search Options","qkCZlJ":"Regex search","roauu/":"Whole word search","SlfejT":"Error","hJCuaV":"An error occurred during search query","Ev2r9A":"No results","dTtbrX":"No results available for search query","kCTFU8":"Select Columns","6N5Lt+":"CSV","Keu6yk":"TSV","UR8vqQ":"Excel","w+nnwj":"Download selected data","rn2/2V":"Remove filter","N73rrp":"Add table filter","ot7qsv":"Clear all filters","vCSBPD":"Add filter","c+xCSz":"True","ocUvR+":"False","jpXCTI":"Add Table Filter","R39XGq":"Select from the available filters","o7J4JM":"Filter","hpMOSe":"Select filter","wMHvYH":"Value","Fo55lj":"Select filter value","dEgA5A":"Cancel","PzFzS+":"Add Filter","EqGTpW":"No records found","UFBeQV":"Bad request","dA/8If":"Unauthorized","7JBW66":"Forbidden","KPx1UV":"Not found","v1qpjB":"Barcode actions","inVgrM":"Print actions","8RYNR1":"Refresh data","j2wMlR":"Table filters","N2C89m":"Reference","vgP+9p":"Alkatrész","Nu4oKW":"Description","Sdfr6G":"Project Code","1hKEom":"Priority","VbWX2u":"Quantity","qqWcBV":"Completed","uAQUqI":"Status","d+F6q9":"Created","3wXEsN":"IPN","QrhaVg":"Units","K7tIrx":"Category","blbbPS":"Stock","YA4hwj":"Price Range","yzF66j":"Link","F6pfE9":"Active","PHri/6":"Filter by part active status","WL36Yh":"Assembly","oQzKsK":"Filter by assembly attribute","NgZniC":"Include Subcategories","5JhtGd":"Include parts in subcategories","dK3Z9j":"Component","oO7QIX":"Filter by component attribute","y6MnU0":"Trackable","MbixSq":"Filter by trackable attribute","YyRdJQ":"Has Units","WyFVby":"Filter by parts which have units","c9/Fqb":"Has IPN","jh/Aa+":"Filter by parts which have an internal part number","JqmfuT":"Has Stock","6Kd+HK":"Filter by parts which have stock","UgdO7s":"Low Stock","GDYPCw":"Filter by parts which have low stock","TW9g28":"Purchaseable","KMdl2R":"Filter by parts which are purchaseable","/3xNJ4":"Salable","V5i7hf":"Filter by parts which are salable","ksX7Wx":"Virtual","QDTpY6":"Filter by parts which are virtual","+SkaI8":"Not Virtual","rsx3xA":"Batch","wJijgU":"Location","7L01XJ":"Actions","VikQny":"Test Filter","ay6lVf":"This is a test filter","DdjH42":"Display Settings","FpsvqB":"Color Mode","vXIe7J":"Language","T/IST7":"Something is new: Platform UI","gSWyZa":"We are building a new UI with a modern stack. What you currently see is not fixed and will be redesigned but demonstrates the UI/UX possibilities we will have going forward.","GNA6/Q":"Provide Feedback","7hktsm":"Getting started","yQE2r9":"Loading","rdU729":"Layout","Nw+C4g":"Reset Layout","fOql7D":"Stop Edit","NZubw3":"Edit Layout","aAIQg2":"ALine truncated
|
||||
);
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,3 +1,3 @@
|
||||
/*eslint-disable*/ export const messages = JSON.parse(
|
||||
'{"MHrjPM":"Ţĩţĺē","4GKuCs":"Ĺōĝĩń ƒàĩĺēď","jCsNQS":"Ćĥēćķ ŷōũŕ ŷōũŕ ĩńƥũţ àńď ţŕŷ àĝàĩń.","zM9Wd+":"Ĺōĝĩń śũććēśśƒũĺĺ","rxWA39":"Ŵēĺćōmē ƀàćķ!","yfblq9":"Màĩĺ ďēĺĩvēŕŷ śũććēśśƒũĺĺ","R2JMfc":"Ćĥēćķ ŷōũŕ ĩńƀōx ƒōŕ ţĥē ĺōĝĩń ĺĩńķ. Ĩƒ ŷōũ ĥàvē àń àććōũńţ, ŷōũ ŵĩĺĺ ŕēćēĩvē à ĺōĝĩń ĺĩńķ. Ćĥēćķ ĩń śƥàm ţōō.","ccnxuA":"Ĩńƥũţ ēŕŕōŕ","7sNhEz":"Ũśēŕńàmē","8ZsakT":"Ƥàśśŵōŕď","9TO8nT":"Ŷōũŕ ƥàśśŵōŕď","RfwZxd":"Ŕēśēţ ƥàśśŵōŕď","O3oNi5":"Ēmàĩĺ","Wr5sDQ":"Ŵē ŵĩĺĺ śēńď ŷōũ à ĺĩńķ ţō ĺōĝĩń - ĩƒ ŷōũ àŕē ŕēĝĩśţēŕēď","7ZOmjI":"Śēńď mē àń ēmàĩĺ","XlWstl":"Ĩ ŵĩĺĺ ũśē ũśēŕńàmē àńď ƥàśśŵōŕď","sQia9P":"Ĺōĝ ĩń","F+gz9Z":"Śēńď màĩĺ","Ai2U7L":"Ĥōśţ","6YtxFj":"Ńàmē","yWMzcH":"Ńō ōńē ĥēŕē...","UYWLpE":"Àďď Ĥōśţ","tfDRzk":"Śàvē","IvkbIT":"Ŕēàď Mōŕē","29VNqC":"Ũńķńōŵń ēŕŕōŕ","nlJhkA":"Àń ēŕŕōŕ ōććũŕŕēď:","DVAy0b":"ĨńvēńŢŕēē Ĺōĝō","3TnJRX":"Ţĥĩś ƒēàţũŕē/ƀũţţōń/śĩţē ĩś à ƥĺàćēĥōĺďēŕ ƒōŕ à ƒēàţũŕē ţĥàţ ĩś ńōţ ĩmƥĺēmēńţēď, ōńĺŷ ƥàŕţĩàĺ ōŕ ĩńţēńďēď ƒōŕ ţēśţĩńĝ.","etqXdW":"ƤĹĤ","XDwkfO":"Śćàń ǪŔ ćōďē","GU7xAr":"Ũńķńōŵń ŕēśƥōńśē","UHot+L":"Ēŕŕōŕ ŵĥĩĺē ĝēţţĩńĝ ćàmēŕà","bR26mb":"Ēŕŕōŕ ŵĥĩĺē śćàńńĩńĝ","fvJQqd":"Ēŕŕōŕ ŵĥĩĺē śţōƥƥĩńĝ","CMQ09J":"Śćàńńĩńĝ","Fg9r/3":"Ńōţ śćàńńĩńĝ","QuNKRX":"Śēĺēćţ Ćàmēŕà","m3BKG+":"Śţàŕţ śćàńńĩńĝ","yFRXH8":"Śţōƥ śćàńńĩńĝ","3164SS":"Ńō śćàńś ŷēţ!","RWw9Lg":"Ćĺōśē mōďàĺ","iDNBZe":"Ńōţĩƒĩćàţĩōńś","vERlcd":"Ƥŕōƒĩĺē","Tz0i8g":"Śēţţĩńĝś","r5Xdbs":["Ćũŕŕēńţ ĺàńĝũàĝē ",["locale"]],"XXvCbv":"Śŵĩţćĥ ţō ƥśēũďō ĺàńĝũàĝē","T3FM0r":"Àććōũńţ śēţţĩńĝś","nOhz3x":"Ĺōĝōũţ","rmlxV1":"Ōƥēń Ńàvĩĝàţĩōń","N6Pxr9":"Vĩēŵ àĺĺ","ZDIydz":"Ĝēţ śţàŕţēď","BQDL+H":"Ōvēŕvĩēŵ ōvēŕ ĥĩĝĥ-ĺēvēĺ ōƀĴēćţś, ƒũńćţĩōńś àńď ƥōśśĩƀĺē ũśēćàśēś.","UxKoFf":"Ńàvĩĝàţĩōń","wRR604":"Ƥàĝēś","ohUJJM":"Ƥĺũĝĩńś","TvY/XA":"Ďōćũmēńţàţĩōń","uyJsf6":"Àƀōũţ","hQRttt":"Śũƀmĩţ","dEgA5A":"Ćàńćēĺ","vgP+9p":"Ƥàŕţ","tMMrz4":"ĨńvēńŢŕēē Ďēmō","vu8/DU":"Ĺōćàĺ Śēŕvēŕ","On0aF2":"Ŵēƀśĩţē","RkXlPZ":"ĜĩţĤũƀ","kc+zZA":"Ďēmō","i0qMbr":"Ĥōmē","4GLxhy":"Ĝēţţĩńĝ Śţàŕţēď","VAYCzI":"Ĝēţţĩńĝ śţàŕţēď ŵĩţĥ ĨńvēńŢŕēē","OZtEcz":"ÀƤĨ","aW0h/b":"ĨńvēńŢŕēē ÀƤĨ ďōćũmēńţàţĩōń","BOAupq":"Ďēvēĺōƥēŕ Màńũàĺ","kUcL4g":"ĨńvēńŢŕēē ďēvēĺōƥēŕ màńũàĺ","/lDBHm":"ƑÀǪ","a3pVqb":"Ƒŕēǫũēńţĺŷ àśķēď ǫũēśţĩōńś","kyAi7k":"Ĩńśţàńćē","Q5S3DY":"Àƀōũţ ţĥĩś Ĩńvēńţŕēē ĩńśţàńćē","vHeNia":"ĨńvēńŢŕēē","gfhzPz":"Àƀōũţ ţĥē ĨńvēńŢŕēē ōŕĝ","snyG+w":"Ĺĩćēńśēś","tBjIo1":"Ĺĩćēńśēś ƒōŕ ƥàćķàĝēś ũśēď ƀŷ ĨńvēńŢŕēē","2AZart":"Ōƥēń śōũŕćēà","v+Wp++":"Ōƥēń śōũŕćē","fu2+tK":"Śţàŕţ ƥàĝē ōƒ ŷōũŕ ĩńśţàńćē.","pTE4nz":"Ţĥĩś Ƥōķémōń’ś ćŕŷ ĩś vēŕŷ ĺōũď àńď ďĩśţŕàćţĩńĝ","S+oekQ":"Ţĥĩś Ƥōķémōń’ś ćŕŷ ĩś vēŕŷ ĺōũď àńď ďĩśţŕàćţĩńĝ àńď mōŕē àńď mōŕē àńď mōŕē","kNyJAF":"Ƥŕōƒĩĺē ƥàĝē","CFYxhi":"Ũśēŕ àţţŕĩƀũţēś àńď ďēśĩĝń śēţţĩńĝś.","uP4V6I":"Ƒŕēē ƒōŕ ēvēŕŷōńē","dyMOjI":"Ţĥē ƒĺũĩď ōƒ Śmēàŕĝĺē’ś ţàĩĺ śēćŕēţĩōńś ćĥàńĝēś","d1WpzX":"Ţĥē ƒĺũĩď ōƒ Śmēàŕĝĺē’ś ţàĩĺ śēćŕēţĩōńś ćĥàńĝēś ĩń ţĥē ĩńţēńśĩţŷ","1ekmeV":"àƀć","Wj+wQW":"Ŕàńďōm ĩmàĝē","sGi2sH":"Ĺōŕēm ĩƥśũm ďōĺōŕ śĩţ àmēţ, ćōńśēţēţũŕ śàďĩƥśćĩńĝ ēĺĩţŕ, śēď ďĩàm ńōńũmŷ ēĩŕmōď ţēmƥōŕ ĩńvĩďũńţ ũţ ĺàƀōŕē ēţ ďōĺōŕē màĝńà àĺĩǫũŷàm ēŕàţ, śēď ďĩàm vōĺũƥţũà. Àţ vēŕō ēōś ēţ àććũśàm ēţ Ĵũśţō ďũō ďōĺōŕēś ēţ ēà ŕēƀũm. Śţēţ ćĺĩţà ķàśď ĝũƀēŕĝŕēń, ńō śēà ţàķĩmàţà śàńćţũś ēśţ Ĺōŕēm ĩƥśũm ďōĺōŕ śĩţ àmēţ. Ĺōŕēm ĩƥśũm ďōĺōŕ śĩţ àmēţ, ćōńśēţēţũŕ śàďĩƥśćĩńĝ ēĺĩţŕ, śēď ďĩàm ńōńũmŷ ēĩŕmōď ţēmƥōŕ ĩńvĩďũńţ ũţ ĺàƀōŕē ēţ ďōĺōŕē màĝńLine truncated
|
||||
'{"MHrjPM":"Ţĩţĺē","4GKuCs":"Ĺōĝĩń ƒàĩĺēď","tnaYa/":"Ćĥēćķ ŷōũŕ ĩńƥũţ àńď ţŕŷ àĝàĩń.","6cPKtu":"Ĺōĝĩń śũććēśśƒũĺ","rxWA39":"Ŵēĺćōmē ƀàćķ!","jCsNQS":"Ćĥēćķ ŷōũŕ ŷōũŕ ĩńƥũţ àńď ţŕŷ àĝàĩń.","zM9Wd+":"Ĺōĝĩń śũććēśśƒũĺĺ","XAIcYu":"Màĩĺ ďēĺĩvēŕŷ śũććēśśƒũĺ","R2JMfc":"Ćĥēćķ ŷōũŕ ĩńƀōx ƒōŕ ţĥē ĺōĝĩń ĺĩńķ. Ĩƒ ŷōũ ĥàvē àń àććōũńţ, ŷōũ ŵĩĺĺ ŕēćēĩvē à ĺōĝĩń ĺĩńķ. Ćĥēćķ ĩń śƥàm ţōō.","ccnxuA":"Ĩńƥũţ ēŕŕōŕ","yfblq9":"Màĩĺ ďēĺĩvēŕŷ śũććēśśƒũĺĺ","BL4vL0":"Ŵēĺćōmē, ĺōĝ ĩń ƀēĺōŵ","7sNhEz":"Ũśēŕńàmē","8ZsakT":"Ƥàśśŵōŕď","9TO8nT":"Ŷōũŕ ƥàśśŵōŕď","RfwZxd":"Ŕēśēţ ƥàśśŵōŕď","O3oNi5":"Ēmàĩĺ","Wr5sDQ":"Ŵē ŵĩĺĺ śēńď ŷōũ à ĺĩńķ ţō ĺōĝĩń - ĩƒ ŷōũ àŕē ŕēĝĩśţēŕēď","7ZOmjI":"Śēńď mē àń ēmàĩĺ","XlWstl":"Ĩ ŵĩĺĺ ũśē ũśēŕńàmē àńď ƥàśśŵōŕď","sQia9P":"Ĺōĝ ĩń","F+gz9Z":"Śēńď màĩĺ","Ai2U7L":"Ĥōśţ","6YtxFj":"Ńàmē","yWMzcH":"Ńō ōńē ĥēŕē...","UYWLpE":"Àďď Ĥōśţ","tfDRzk":"Śàvē","GG8+B2":"Śēĺēćţ ďēśţĩńàţĩōń ĩńśţàńćē","uqEJlE":"Ēďĩţ ƥōśśĩƀĺē ĥōśţ ōƥţĩōńś","GUtCZC":["Vēŕśĩōń: ",["0"]],"4/F1y3":["ÀƤĨ:",["0"]],"UVRlfm":["Ńàmē: ",["0"]],"ed0N/H":["Śţàţē: <0>ŵōŕķēŕ</0> (",["0"],"), <1>ƥĺũĝĩńś</1>",["1"]],"IvkbIT":"Ŕēàď Mōŕē","29VNqC":"Ũńķńōŵń ēŕŕōŕ","nlJhkA":"Àń ēŕŕōŕ ōććũŕŕēď:","DVAy0b":"ĨńvēńŢŕēē Ĺōĝō","3TnJRX":"Ţĥĩś ƒēàţũŕē/ƀũţţōń/śĩţē ĩś à ƥĺàćēĥōĺďēŕ ƒōŕ à ƒēàţũŕē ţĥàţ ĩś ńōţ ĩmƥĺēmēńţēď, ōńĺŷ ƥàŕţĩàĺ ōŕ ĩńţēńďēď ƒōŕ ţēśţĩńĝ.","etqXdW":"ƤĹĤ","XDwkfO":"Śćàń ǪŔ ćōďē","sGeXL3":"Ţĥũmƀńàĩĺ","GU7xAr":"Ũńķńōŵń ŕēśƥōńśē","UHot+L":"Ēŕŕōŕ ŵĥĩĺē ĝēţţĩńĝ ćàmēŕà","bR26mb":"Ēŕŕōŕ ŵĥĩĺē śćàńńĩńĝ","fvJQqd":"Ēŕŕōŕ ŵĥĩĺē śţōƥƥĩńĝ","CMQ09J":"Śćàńńĩńĝ","Fg9r/3":"Ńōţ śćàńńĩńĝ","QuNKRX":"Śēĺēćţ Ćàmēŕà","m3BKG+":"Śţàŕţ śćàńńĩńĝ","yFRXH8":"Śţōƥ śćàńńĩńĝ","3164SS":"Ńō śćàńś ŷēţ!","RWw9Lg":"Ćĺōśē mōďàĺ","iDNBZe":"Ńōţĩƒĩćàţĩōńś","vERlcd":"Ƥŕōƒĩĺē","Tz0i8g":"Śēţţĩńĝś","T3FM0r":"Àććōũńţ śēţţĩńĝś","nOhz3x":"Ĺōĝōũţ","r5Xdbs":["Ćũŕŕēńţ ĺàńĝũàĝē ",["locale"]],"XXvCbv":"Śŵĩţćĥ ţō ƥśēũďō ĺàńĝũàĝē","rmlxV1":"Ōƥēń Ńàvĩĝàţĩōń","N6Pxr9":"Vĩēŵ àĺĺ","ZDIydz":"Ĝēţ śţàŕţēď","BQDL+H":"Ōvēŕvĩēŵ ōvēŕ ĥĩĝĥ-ĺēvēĺ ōƀĴēćţś, ƒũńćţĩōńś àńď ƥōśśĩƀĺē ũśēćàśēś.","UxKoFf":"Ńàvĩĝàţĩōń","wRR604":"Ƥàĝēś","ohUJJM":"Ƥĺũĝĩńś","TvY/XA":"Ďōćũmēńţàţĩōń","uyJsf6":"Àƀōũţ","pmRbKZ":"Ƥàŕţś","FcNRrt":"Śũƥƥĺĩēŕ Ƥàŕţś","d0fBfb":"Màńũƒàćţũŕēŕ Ƥàŕţś","2GkbLI":"Ƥàŕţ Ćàţēĝōŕĩēś","Jbck4N":"Śţōćķ Ĩţēmś","1eBWAw":"Śţōćķ Ĺōćàţĩōńś","RCVhIP":"ßũĩĺď Ōŕďēŕś","s2QZS6":"Ćōmƥàńĩēś","85Yvr2":"Ƥũŕćĥàśē Ōŕďēŕś","B1TL+X":"Śàĺēś Ōŕďēŕś","LlTg8M":"Ŕēţũŕń Ōŕďēŕś","mO8KLE":"ŕēśũĺţś","Dwt0g3":"Ēńţēŕ śēàŕćĥ ţēxţ","9UYKcs":"Śēàŕćĥ Ōƥţĩōńś","qkCZlJ":"Ŕēĝēx śēàŕćĥ","roauu/":"Ŵĥōĺē ŵōŕď śēàŕćĥ","SlfejT":"Ēŕŕōŕ","hJCuaV":"Àń ēŕŕōŕ ōććũŕŕēď ďũŕĩńĝ śēàŕćĥ ǫũēŕŷ","Ev2r9A":"Ńō ŕēśũĺţś","dTtbrX":"Ńō ŕēśũĺţś àvàĩĺàƀĺē ƒōŕ śēàŕćĥ ǫũēŕŷ","kCTFU8":"Śēĺēćţ Ćōĺũmńś","6N5Lt+":"ĆŚV","Keu6yk":"ŢŚV","UR8vqQ":"Ēxćēĺ","w+nnwj":"Ďōŵńĺōàď śēĺēćţēď ďàţà","rn2/2V":"Ŕēmōvē ƒĩĺţēŕ","N73rrp":"Àďď ţàƀĺē ƒĩĺţēŕ","ot7qsv":"Ćĺēàŕ àĺĺ ƒĩĺţēŕś","vCSBPD":"Àďď ƒĩĺţēŕ","c+xCSz":"Ţŕũē","ocUvR+":"Ƒàĺśē","jpXCTI":"Àďď Ţàƀĺē Ƒĩĺţēŕ","R39XGq":"Śēĺēćţ ƒŕōm ţĥē àvàĩĺàƀĺē ƒĩĺţēŕś","o7J4JM":"Ƒĩĺţēŕ","hpMOSe":"Śēĺēćţ ƒĩĺţēŕ","wMHvYH":"Vàĺũē","Fo55lj":"Śēĺēćţ ƒĩĺţēŕ vàĺũē","dEgA5A":"Ćàńćēĺ","PzFzS+":"Àďď Ƒĩĺţēŕ","EqGTpW":"Ńō ŕēćōŕďś ƒōũńď","UFBeQV":"ßàď ŕēǫũēśţ","dA/8If":"Ũńàũţĥōŕĩźēď","7JBW66":"Ƒōŕƀĩďďēń","KPx1UV":"Ńōţ ƒōũńď","v1qpjB":"ßàŕćōďē àćţĩōńś","inVgrM":"Ƥŕĩńţ àćţĩōńś","8RYNR1":"Ŕēƒŕēśĥ ďàţà","j2wMlR":"Ţàƀĺē ƒĩĺţēŕś","N2C89m":"Ŕēƒēŕēńćē","vgP+9p":"Ƥàŕţ","Nu4oKW":"Ďēśćŕĩƥţĩōń","Sdfr6G":"ƤŕōĴēćţ Ćōďē","1hKEom":Line truncated
|
||||
);
|
||||
@@ -1,5 +1,7 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import 'react-grid-layout/css/styles.css';
|
||||
import 'react-resizable/css/styles.css';
|
||||
|
||||
import App from './App';
|
||||
|
||||
|
||||
@@ -1,18 +1,63 @@
|
||||
import { Trans } from '@lingui/macro';
|
||||
import { Group } from '@mantine/core';
|
||||
import { Title } from '@mantine/core';
|
||||
import { lazy } from 'react';
|
||||
|
||||
import { PlaceholderPill } from '../../components/items/Placeholder';
|
||||
import { StylishText } from '../../components/items/StylishText';
|
||||
import {
|
||||
LayoutItemType,
|
||||
WidgetLayout
|
||||
} from '../../components/widgets/WidgetLayout';
|
||||
import { LoadingItem } from '../../functions/loading';
|
||||
import { useApiState } from '../../states/ApiState';
|
||||
|
||||
const vals: LayoutItemType[] = [
|
||||
{
|
||||
i: 1,
|
||||
val: (
|
||||
<LoadingItem
|
||||
item={lazy(() => import('../../components/widgets/GetStartedWidget'))}
|
||||
/>
|
||||
),
|
||||
w: 12,
|
||||
h: 6,
|
||||
x: 0,
|
||||
y: 0,
|
||||
minH: 6
|
||||
},
|
||||
{
|
||||
i: 2,
|
||||
val: (
|
||||
<LoadingItem
|
||||
item={lazy(() => import('../../components/widgets/DisplayWidget'))}
|
||||
/>
|
||||
),
|
||||
w: 3,
|
||||
h: 3,
|
||||
x: 0,
|
||||
y: 7,
|
||||
minH: 3
|
||||
},
|
||||
{
|
||||
i: 4,
|
||||
val: (
|
||||
<LoadingItem
|
||||
item={lazy(() => import('../../components/widgets/FeedbackWidget'))}
|
||||
/>
|
||||
),
|
||||
w: 4,
|
||||
h: 6,
|
||||
x: 0,
|
||||
y: 9
|
||||
}
|
||||
];
|
||||
|
||||
export default function Home() {
|
||||
const [username] = useApiState((state) => [state.user?.name]);
|
||||
return (
|
||||
<>
|
||||
<Group>
|
||||
<StylishText>
|
||||
<Trans>Home</Trans>
|
||||
</StylishText>
|
||||
<PlaceholderPill />
|
||||
</Group>
|
||||
<Title order={1}>
|
||||
<Trans>Welcome to your Dashboard{username && `, ${username}`}</Trans>
|
||||
</Title>
|
||||
<WidgetLayout items={vals} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -11,5 +11,9 @@ test('Basic Platform UI test', async ({ page }) => {
|
||||
await page.goto('./platform/');
|
||||
|
||||
await expect(page).toHaveTitle('InvenTree Demo Server');
|
||||
await expect(page.getByText('Home').nth(1)).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('heading', {
|
||||
name: 'Welcome to your Dashboard, Ally Access'
|
||||
})
|
||||
).toBeVisible();
|
||||
});
|
||||
+70
-1
@@ -877,6 +877,13 @@
|
||||
"@babel/runtime" "^7.20.13"
|
||||
"@lingui/core" "4.3.0"
|
||||
|
||||
"@mantine/carousel@^6.0.17":
|
||||
version "6.0.17"
|
||||
resolved "https://registry.yarnpkg.com/@mantine/carousel/-/carousel-6.0.17.tgz#d31fc9bc9ef14bd5ea3e9162d4a130b904cb478e"
|
||||
integrity sha512-cKX7zGmWVXdq/mPff5QYaHLR2X6bujbR4YZ3Hs3TD8KuySTZDOHipUD9IAVH1DtYJRE0+FIRb6OeZ7X9/N2Erg==
|
||||
dependencies:
|
||||
"@mantine/utils" "6.0.17"
|
||||
|
||||
"@mantine/core@^6.0.17":
|
||||
version "6.0.17"
|
||||
resolved "https://registry.npmjs.org/@mantine/core/-/core-6.0.17.tgz"
|
||||
@@ -1167,6 +1174,13 @@
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-grid-layout@^1.3.2":
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-grid-layout/-/react-grid-layout-1.3.2.tgz#9f195666a018a5ae2b773887e3b552cb4378d67f"
|
||||
integrity sha512-ZzpBEOC1JTQ7MGe1h1cPKSLP4jSWuxc+yvT4TsAlEW9+EFPzAf8nxQfFd7ea9gL17Em7PbwJZAsiwfQQBUklZQ==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-router-dom@^5.3.3":
|
||||
version "5.3.3"
|
||||
resolved "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz"
|
||||
@@ -1442,6 +1456,11 @@ clsx@1.1.1:
|
||||
resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz"
|
||||
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
|
||||
|
||||
clsx@^1.1.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
|
||||
integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
|
||||
|
||||
color-convert@^1.9.0:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
|
||||
@@ -1578,6 +1597,24 @@ electron-to-chromium@^1.4.431:
|
||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz"
|
||||
integrity sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==
|
||||
|
||||
embla-carousel-react@^8.0.0-rc11:
|
||||
version "8.0.0-rc11"
|
||||
resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.0.0-rc11.tgz#0e2fde5cafa3cae9c30721e18aee648599527994"
|
||||
integrity sha512-hXOAUMOIa0GF5BtdTTqBuKcjgU+ipul6thTCXOZttqnu2c6VS3SIzUUT+onIIEw+AptzKJcPwGcoAByAGa9eJw==
|
||||
dependencies:
|
||||
embla-carousel "8.0.0-rc11"
|
||||
embla-carousel-reactive-utils "8.0.0-rc11"
|
||||
|
||||
embla-carousel-reactive-utils@8.0.0-rc11:
|
||||
version "8.0.0-rc11"
|
||||
resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.0.0-rc11.tgz#d5493bd2bfeb68b1cbf65d4c836a4d36779a03de"
|
||||
integrity sha512-pDNVJNCn0dybLkHw93My+cMfkRQ5oLZff6ZCwgmrw+96aPiZUyo5ANywz8Lb70SWWgD/TNBRrtQCquvjHS31Sg==
|
||||
|
||||
embla-carousel@8.0.0-rc11:
|
||||
version "8.0.0-rc11"
|
||||
resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.0.0-rc11.tgz#700ab6b3e4825ef9e6ac83238b81e3e1a316c3f4"
|
||||
integrity sha512-Toeaug98PGYzSY56p/xsa+u4zbQbAXgGymwEDUc2wqT+1XCnnUsH42MClglhABJQbobwDYxOabhJrfXyJKUMig==
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
|
||||
@@ -1987,6 +2024,11 @@ lodash.get@^4.4.2:
|
||||
resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz"
|
||||
integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
|
||||
|
||||
lodash.isequal@^4.0.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
|
||||
integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
|
||||
|
||||
lodash.sortby@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz"
|
||||
@@ -2231,7 +2273,7 @@ pretty-format@^29.6.1:
|
||||
ansi-styles "^5.0.0"
|
||||
react-is "^18.0.0"
|
||||
|
||||
prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
|
||||
prop-types@15.x, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
|
||||
version "15.8.1"
|
||||
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
|
||||
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
|
||||
@@ -2270,6 +2312,14 @@ react-dom@^18.2.0:
|
||||
loose-envify "^1.1.0"
|
||||
scheduler "^0.23.0"
|
||||
|
||||
react-draggable@^4.0.0, react-draggable@^4.0.3:
|
||||
version "4.4.5"
|
||||
resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.5.tgz#9e37fe7ce1a4cf843030f521a0a4cc41886d7e7c"
|
||||
integrity sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==
|
||||
dependencies:
|
||||
clsx "^1.1.1"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
react-dropzone@14.2.3:
|
||||
version "14.2.3"
|
||||
resolved "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz"
|
||||
@@ -2279,6 +2329,17 @@ react-dropzone@14.2.3:
|
||||
file-selector "^0.6.0"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
react-grid-layout@^1.3.4:
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/react-grid-layout/-/react-grid-layout-1.3.4.tgz#4fa819be24a1ba9268aa11b82d63afc4762a32ff"
|
||||
integrity sha512-sB3rNhorW77HUdOjB4JkelZTdJGQKuXLl3gNg+BI8gJkTScspL1myfZzW/EM0dLEn+1eH+xW+wNqk0oIM9o7cw==
|
||||
dependencies:
|
||||
clsx "^1.1.1"
|
||||
lodash.isequal "^4.0.0"
|
||||
prop-types "^15.8.1"
|
||||
react-draggable "^4.0.0"
|
||||
react-resizable "^3.0.4"
|
||||
|
||||
react-is@^16.13.1, react-is@^16.7.0:
|
||||
version "16.13.1"
|
||||
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
||||
@@ -2313,6 +2374,14 @@ react-remove-scroll@^2.5.5:
|
||||
use-callback-ref "^1.3.0"
|
||||
use-sidecar "^1.1.2"
|
||||
|
||||
react-resizable@^3.0.4:
|
||||
version "3.0.5"
|
||||
resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1"
|
||||
integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==
|
||||
dependencies:
|
||||
prop-types "15.x"
|
||||
react-draggable "^4.0.3"
|
||||
|
||||
react-router-dom@^6.14.2:
|
||||
version "6.14.2"
|
||||
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz"
|
||||
|
||||
Reference in new issue
Block a user