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