diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx index 0f354cd..f3f15d9 100644 --- a/frontend/app/page.tsx +++ b/frontend/app/page.tsx @@ -751,7 +751,8 @@ export default function Page() { }, [categories]); function formatTrophies(value: number) { - const sign = value > 0 ? '+' : ''; + const sign = value > 0 ? '' : '+'; + return `${sign}${value} trophies`; } @@ -1117,30 +1118,31 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {

Existing Categories

+
+ {new Date(category.createdAt).toLocaleDateString()} +
+ + )) + ) : ( +
  • No categories yet.
  • + )} + +
    @@ -1202,40 +1204,41 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {

    Manage Bases

    -
    - {new Date(base.createdAt).toLocaleDateString()} -
    - - )) - ) : ( -
  • No bases yet.
  • - )} - + + )) + ) : ( +
  • No bases yet.
  • + )} + + {baseBeingEdited && (
    @@ -1396,50 +1399,51 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {

    Manage Attacks

    -
    - {defense.stars}★ - {defense.percent}% - {formatTrophies(defense.trophies)} - {new Date(defense.createdAt).toLocaleString()} -
    - - ); - }) - ) : ( -
  • No attacks logged yet.
  • - )} - - {defenses.length > 10 ? ( -

    Showing the latest 10 entries.

    - ) : null} + + ); + }) + ) : ( +
  • No attacks logged yet.
  • + )} + + {defenses.length > 10 ? ( +

    Showing the latest 10 entries.

    + ) : null} + {defenseBeingEdited && (
    @@ -1710,28 +1714,29 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {

    Army Categories vs This Base

    + {baseDetail && baseDetail.categories.length ? ( + baseDetail.categories.map((category) => ( +
  • openCategoryDetail(category.categoryId)} + > +
    + {category.name} + {category.count} attacks +
    +
    + {category.averageStars}★ avg + {category.averagePercent}% avg + {formatTrophies(category.averageTrophies)} avg +
    +
  • + )) + ) : ( +
  • No army categories have attacked this base yet.
  • + )} + +
    @@ -1776,30 +1781,31 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {

    Defenses

      - {defenses.filter((defense) => defense.baseId === selectedBaseId).length ? ( - defenses - .filter((defense) => defense.baseId === selectedBaseId) - .map((defense) => { - const date = new Date(defense.createdAt); - const categoryName = categoryNameMap.get(defense.armyCategoryId) || '(No category)'; - return ( -
    • -
      - {categoryName} -
      - {defense.stars}★ • {defense.percent}% • {formatTrophies(defense.trophies)} + {defenses.filter((defense) => defense.baseId === selectedBaseId).length ? ( + defenses + .filter((defense) => defense.baseId === selectedBaseId) + .map((defense) => { + const date = new Date(defense.createdAt); + const categoryName = categoryNameMap.get(defense.armyCategoryId) || '(No category)'; + return ( +
    • +
      + {categoryName} +
      + {defense.stars}★ • {defense.percent}% • {formatTrophies(defense.trophies)} +
      -
    -
    - {date.toLocaleString()} -
    - - ); - }) - ) : ( -
  • No defenses recorded for this base yet.
  • - )} - +
    + {date.toLocaleString()} +
    + + ); + }) + ) : ( +
  • No defenses recorded for this base yet.
  • + )} + + @@ -1888,7 +1894,7 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
    -
    +

    Recent Resets

      {profileSelectedBase.trophyResets.length ? ( @@ -1897,7 +1903,7 @@ function summarizeProfileDefenses(defenses: ProfileDefense[]): Summary {
      {new Date(reset.date).toLocaleDateString()}
      - {reset.trophiesAtStart} trophies + {reset.trophiesAtStart} trophies at start {formatTrophies(reset.trophiesLost)} lost {reset.numberOfDefenses} defenses