Compare commits
No commits in common. "f01d77fde7f70f54611158ae56e8096b14c19ef6" and "59c865632887c0caf0d59f9b2f27ba18c6e611f0" have entirely different histories.
f01d77fde7
...
59c8656328
1 changed files with 62 additions and 70 deletions
|
|
@ -751,11 +751,8 @@ export default function Page() {
|
|||
}, [categories]);
|
||||
|
||||
function formatTrophies(value: number) {
|
||||
const sign = value > 0 ? '' : '+';
|
||||
let gained = false;
|
||||
if(sign === '+') gained = true;
|
||||
let suffix = gained ? 'gained' : 'lost';
|
||||
return `${sign}${value} trophies ${suffix}`;
|
||||
const sign = value > 0 ? '+' : '';
|
||||
return `${sign}${value} trophies`;
|
||||
}
|
||||
|
||||
function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
||||
|
|
@ -1120,31 +1117,30 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
<details>
|
||||
<summary><h3>Existing Categories</h3></summary>
|
||||
<ul className="list compact">
|
||||
{categories.length ? (
|
||||
categories.map((category) => (
|
||||
<li key={category.id} className="list-item">
|
||||
<div className="defense-header">
|
||||
<span>{category.name}</span>
|
||||
<div className="defense-meta">
|
||||
<button
|
||||
type="button"
|
||||
className="ghost small"
|
||||
onClick={() => handleDeleteCategory(category.id)}
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{categories.length ? (
|
||||
categories.map((category) => (
|
||||
<li key={category.id} className="list-item">
|
||||
<div className="defense-header">
|
||||
<span>{category.name}</span>
|
||||
<div className="defense-meta">
|
||||
<span>{new Date(category.createdAt).toLocaleDateString()}</span>
|
||||
<button
|
||||
type="button"
|
||||
className="ghost small"
|
||||
onClick={() => handleDeleteCategory(category.id)}
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
))
|
||||
) : (
|
||||
<li>No categories yet.</li>
|
||||
)}
|
||||
</ul>
|
||||
</details>
|
||||
</div>
|
||||
<div className="defense-meta">
|
||||
<span>{new Date(category.createdAt).toLocaleDateString()}</span>
|
||||
</div>
|
||||
</li>
|
||||
))
|
||||
) : (
|
||||
<li>No categories yet.</li>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div className="card">
|
||||
|
|
@ -1206,41 +1202,40 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
<details>
|
||||
<summary><h3>Manage Bases</h3></summary>
|
||||
<ul className="list compact">
|
||||
{bases.length ? (
|
||||
bases.map((base) => (
|
||||
<li key={base.id} className="list-item">
|
||||
<div className="defense-header">
|
||||
<div>
|
||||
<strong>{base.title}</strong>{' '}
|
||||
{base.isPrivate ? <span className="badge muted">Private</span> : null}
|
||||
</div>
|
||||
<div className="defense-meta">
|
||||
<button
|
||||
type="button"
|
||||
className="ghost small"
|
||||
onClick={() => startEditingBase(base.id)}
|
||||
>
|
||||
Edit
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="ghost small"
|
||||
onClick={() => handleDeleteBase(base.id)}
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
{bases.length ? (
|
||||
bases.map((base) => (
|
||||
<li key={base.id} className="list-item">
|
||||
<div className="defense-header">
|
||||
<div>
|
||||
<strong>{base.title}</strong>{' '}
|
||||
{base.isPrivate ? <span className="badge muted">Private</span> : null}
|
||||
</div>
|
||||
<div className="defense-meta">
|
||||
<span>{new Date(base.createdAt).toLocaleDateString()}</span>
|
||||
<button
|
||||
type="button"
|
||||
className="ghost small"
|
||||
onClick={() => startEditingBase(base.id)}
|
||||
>
|
||||
Edit
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="ghost small"
|
||||
onClick={() => handleDeleteBase(base.id)}
|
||||
>
|
||||
Delete
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
))
|
||||
) : (
|
||||
<li>No bases yet.</li>
|
||||
)}
|
||||
</ul>
|
||||
</details>
|
||||
</div>
|
||||
<div className="defense-meta">
|
||||
<span>{new Date(base.createdAt).toLocaleDateString()}</span>
|
||||
</div>
|
||||
</li>
|
||||
))
|
||||
) : (
|
||||
<li>No bases yet.</li>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
{baseBeingEdited && (
|
||||
<div className="subsection">
|
||||
|
|
@ -1445,7 +1440,6 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
{defenses.length > 10 ? (
|
||||
<p className="muted">Showing the latest 10 entries.</p>
|
||||
) : null}
|
||||
</details>
|
||||
</div>
|
||||
{defenseBeingEdited && (
|
||||
<div className="subsection">
|
||||
|
|
@ -1557,7 +1551,7 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
<input type="number" name="trophiesAtStart" min={0} step={1} required className="styled-number" />
|
||||
</label>
|
||||
<label>
|
||||
Trophies Gained/Lost
|
||||
Trophies Lost
|
||||
<input type="number" name="trophiesLost" step={1} required className="styled-number" />
|
||||
</label>
|
||||
<label>
|
||||
|
|
@ -1602,7 +1596,7 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
</div>
|
||||
<div className="defense-meta">
|
||||
<span>{reset.trophiesAtStart} trophies</span>
|
||||
<span>{formatTrophies(reset.trophiesLost)}</span>
|
||||
<span>{formatTrophies(reset.trophiesLost)} lost</span>
|
||||
<span>{reset.numberOfDefenses} defenses</span>
|
||||
</div>
|
||||
</li>
|
||||
|
|
@ -1640,7 +1634,7 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
<input type="number" name="trophiesAtStart" min={0} step={1} required className="styled-number" defaultValue={trophyResetBeingEdited.trophiesAtStart} />
|
||||
</label>
|
||||
<label>
|
||||
Trophies Gained/Lost
|
||||
Trophies Lost
|
||||
<input type="number" name="trophiesLost" step={1} required className="styled-number" defaultValue={trophyResetBeingEdited.trophiesLost} />
|
||||
</label>
|
||||
<label>
|
||||
|
|
@ -1738,7 +1732,6 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
<li>No army categories have attacked this base yet.</li>
|
||||
)}
|
||||
</ul>
|
||||
</details>
|
||||
</div>
|
||||
<div className="card">
|
||||
<details open>
|
||||
|
|
@ -1767,8 +1760,8 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
</div>
|
||||
</div>
|
||||
<div className="defense-meta">
|
||||
<span>{reset.trophiesAtStart} trophies</span>
|
||||
<span>{formatTrophies(reset.trophiesLost)}</span>
|
||||
<span>{reset.trophiesAtStart} trophies at start</span>
|
||||
<span>{formatTrophies(reset.trophiesLost)} lost</span>
|
||||
<span>{reset.numberOfDefenses} defenses</span>
|
||||
</div>
|
||||
</li>
|
||||
|
|
@ -1807,7 +1800,6 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
<li>No defenses recorded for this base yet.</li>
|
||||
)}
|
||||
</ul>
|
||||
</details>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
@ -1896,7 +1888,7 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
</ul>
|
||||
</div>
|
||||
<div className="card">
|
||||
<details open>
|
||||
<details>
|
||||
<summary><h3>Recent Resets</h3></summary>
|
||||
<ul className="list compact">
|
||||
{profileSelectedBase.trophyResets.length ? (
|
||||
|
|
@ -1905,7 +1897,7 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
|
|||
<div className="defense-header">
|
||||
<span>{new Date(reset.date).toLocaleDateString()}</span>
|
||||
<div className="defense-meta">
|
||||
<span>{reset.trophiesAtStart} trophies at start</span>
|
||||
<span>{reset.trophiesAtStart} trophies </span>
|
||||
<span>{formatTrophies(reset.trophiesLost)} lost</span>
|
||||
<span>{reset.numberOfDefenses} defenses</span>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue