update xivplan to support export button, try to make it clear db mod is not the same as xivplan for bug reporting

This commit is contained in:
Ean Milligan
2026-04-24 14:47:59 -04:00
parent f412f06e10
commit 8b36742150

View File

@@ -1,8 +1,28 @@
diff --git a/index.html b/index.html
index 65570da..ff4ae99 100644
--- a/index.html
+++ b/index.html
@@ -2,10 +2,12 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
- <title>FFXIV Raid Planner</title>
- <meta name="description" content="A tool for diagramming raid strategies for Final Fantasy XIV" />
+ <title>FFXIV Raid Planner + DB</title>
+ <meta
+ name="description"
+ content="A tool for diagramming raid strategies for Final Fantasy XIV. This instance includes a small mod to add a built in online DB to simplify sharing plans."
+ />
<meta name="viewport" content="width=1280, initial-scale=1.0" />
- <meta name="description" content="FFXIV Raid Planner" />
<meta name="theme-color" content="#1e1e1e" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
</head>
diff --git a/src/AboutDialog.tsx b/src/AboutDialog.tsx diff --git a/src/AboutDialog.tsx b/src/AboutDialog.tsx
index a346146..b4ef320 100644 index a346146..12c5487 100644
--- a/src/AboutDialog.tsx --- a/src/AboutDialog.tsx
+++ b/src/AboutDialog.tsx +++ b/src/AboutDialog.tsx
@@ -30,6 +30,13 @@ export const AboutDialog: React.FC<AboutDialogProps> = (props) => { @@ -30,6 +30,18 @@ export const AboutDialog: React.FC<AboutDialogProps> = (props) => {
<HotkeyBlockingDialogBody> <HotkeyBlockingDialogBody>
<DialogTitle>About</DialogTitle> <DialogTitle>About</DialogTitle>
<DialogContent className={classes.content}> <DialogContent className={classes.content}>
@@ -12,10 +32,34 @@ index a346146..b4ef320 100644
+ very basic database behind it to make more accessible share links. This minimal mod is open + very basic database behind it to make more accessible share links. This minimal mod is open
+ source and can be found{' '} + source and can be found{' '}
+ <ExternalLink href="https://git.milligan.dev/xivdev/XIVPlan-DB">here</ExternalLink>. + <ExternalLink href="https://git.milligan.dev/xivdev/XIVPlan-DB">here</ExternalLink>.
+ </p>
+ <p>
+ If you run into any issues regarding saving/loading/signing into the DB mod (basically
+ anything that is on the Online DB part of the Open/Save screens), please email{' '}
+ <Link>ean [at] milligan [dot] dev</Link>.
+ </p> + </p>
<p> <p>
XIVPlan is a tool for quickly diagramming raid strategies for Final Fantasy XIV, inspired by{' '} XIVPlan is a tool for quickly diagramming raid strategies for Final Fantasy XIV, inspired by{' '}
<ExternalLink href="https://raidplan.io">RaidPlan.io</ExternalLink> and{' '} <ExternalLink href="https://raidplan.io">RaidPlan.io</ExternalLink> and{' '}
@@ -41,7 +53,8 @@ export const AboutDialog: React.FC<AboutDialogProps> = (props) => {
<p>
XIVPlan is open source on{' '}
<ExternalLink href="https://github.com/joelspadin/xivplan">GitHub</ExternalLink>. If you
- find a bug or have other feedback, please create a{' '}
+ find a bug with XIVPlan itself (excluding anything relating to the Online DB) or have other
+ feedback, please create a{' '}
<ExternalLink href="https://github.com/joelspadin/xivplan/issues/new/choose">
new issue
</ExternalLink>{' '}
@@ -61,7 +74,7 @@ export const AboutDialog: React.FC<AboutDialogProps> = (props) => {
<ExternalLink href="https://github.com/kotarou3/ffxiv-arena-images">
arena background images
</ExternalLink>{' '}
- by kotarou3
+ by kotarou3.
</p>
</DialogContent>
<DialogActions>
diff --git a/src/App.tsx b/src/App.tsx diff --git a/src/App.tsx b/src/App.tsx
index 05a2fb7..f7ed022 100644 index 05a2fb7..f7ed022 100644
--- a/src/App.tsx --- a/src/App.tsx
@@ -133,7 +177,7 @@ index 0000000..81bad97
+ return <>Loading plan from DB, please wait . . .</>; + return <>Loading plan from DB, please wait . . .</>;
+}; +};
diff --git a/src/SiteHeader.tsx b/src/SiteHeader.tsx diff --git a/src/SiteHeader.tsx b/src/SiteHeader.tsx
index 524a0d3..8642bd4 100644 index 524a0d3..695a0f3 100644
--- a/src/SiteHeader.tsx --- a/src/SiteHeader.tsx
+++ b/src/SiteHeader.tsx +++ b/src/SiteHeader.tsx
@@ -75,7 +75,7 @@ export const SiteHeader: React.FC<HTMLAttributes<HTMLElement>> = ({ className, . @@ -75,7 +75,7 @@ export const SiteHeader: React.FC<HTMLAttributes<HTMLElement>> = ({ className, .
@@ -145,6 +189,15 @@ index 524a0d3..8642bd4 100644
</Text> </Text>
{source && <SourceIndicator source={source} />} {source && <SourceIndicator source={source} />}
</div> </div>
@@ -87,7 +87,7 @@ export const SiteHeader: React.FC<HTMLAttributes<HTMLElement>> = ({ className, .
Help
</Link>
<AboutDialog className={classes.link} />
- <ExternalLink className={classes.link} href="https://github.com/joelspadin/xivplan" noIcon>
+ <ExternalLink className={classes.link} href="https://git.milligan.dev/xivdev/XIVPlan-DB" noIcon>
GitHub
</ExternalLink>
<div>
@@ -117,7 +117,10 @@ const SourceIndicator: React.FC<SourceIndicatorProps> = ({ source }) => { @@ -117,7 +117,10 @@ const SourceIndicator: React.FC<SourceIndicatorProps> = ({ source }) => {
return ( return (
<Tooltip content={tooltip} relationship="description"> <Tooltip content={tooltip} relationship="description">
@@ -297,10 +350,10 @@ index 63a473b..d32cb53 100644
</TabActivity> </TabActivity>
diff --git a/src/file/FileDialogDB.tsx b/src/file/FileDialogDB.tsx diff --git a/src/file/FileDialogDB.tsx b/src/file/FileDialogDB.tsx
new file mode 100644 new file mode 100644
index 0000000..05ea7ce index 0000000..2e4a31c
--- /dev/null --- /dev/null
+++ b/src/file/FileDialogDB.tsx +++ b/src/file/FileDialogDB.tsx
@@ -0,0 +1,508 @@ @@ -0,0 +1,515 @@
+import { +import {
+ Button, + Button,
+ Checkbox, + Checkbox,
@@ -533,6 +586,16 @@ index 0000000..05ea7ce
+ } + }
+ }; + };
+ +
+ const exportAll = (event: MouseEvent<HTMLElement>) => {
+ event.preventDefault();
+ const a = document.createElement('a');
+ a.href = `/api/export/${dbUser?.userId}`;
+ a.download = `${dbUser?.userName}-plans.zip`;
+ document.body.appendChild(a);
+ a.click();
+ document.body.removeChild(a);
+ };
+
+ const loadPlans = async (userId: string) => { + const loadPlans = async (userId: string) => {
+ const newPlans = await getPlans(userId); + const newPlans = await getPlans(userId);
+ +
@@ -721,17 +784,14 @@ index 0000000..05ea7ce
+ {renderModal2()} + {renderModal2()}
+ <InPortal node={actions}> + <InPortal node={actions}>
+ <DialogActions fluid style={{ width: '100%' }}> + <DialogActions fluid style={{ width: '100%' }}>
+ <Tooltip + <Button
+ appearance="inverted" + icon={<ArrowDownloadRegular />}
+ showDelay={0} + style={{ marginRight: 'auto' }}
+ relationship="label" + disabled={!dbUser}
+ content="Coming Soon&trade;" + onClick={exportAll}
+ withArrow
+ > + >
+ <Button icon={<ArrowDownloadRegular />} style={{ marginRight: 'auto' }} disabled>
+ Export all + Export all
+ </Button> + </Button>
+ </Tooltip>
+ <Button appearance="primary" disabled={!dbUser || selectedRows.size === 0} onClick={openCallback}> + <Button appearance="primary" disabled={!dbUser || selectedRows.size === 0} onClick={openCallback}>
+ Open + Open
+ </Button> + </Button>