diff --git a/src/tabs/Chars.php b/src/tabs/Chars.php index 2c98bdc..a7376bc 100644 --- a/src/tabs/Chars.php +++ b/src/tabs/Chars.php @@ -22,43 +22,88 @@ EOT; cData['Quests'] as $quest) { - foreach ($quest as $difficulty => $q) { - $quests .= "

$difficulty

"; +$quests = ''; +$accordionCounter = 1; - foreach ($q as $k => $v) { - $kD = str_replace("_", " ", $k); - $kD = str_replace([" NM", " Hell"], "", $kD); - $checked = ($v == 1) ? 'checked' : ''; +foreach ($c->cData['Quests'] as $quest) { + foreach ($quest as $difficulty => $q) { + $isExpanded = ($accordionCounter === 1) ? 'show' : ''; + $collapseId = 'collapseq-' . $accordionCounter; + $headingId = 'headingq-' . $accordionCounter; - $quests .= "
"; - $quests .= "
"; - } - } + $quests .= "
"; + $quests .= "
"; + $quests .= "
"; + $quests .= ""; + $quests .= "
"; + $quests .= "
"; + + $quests .= "
"; + $quests .= "
"; + + foreach ($q as $k => $v) { + $kD = str_replace("_", " ", $k); + $kD = str_replace([" NM", " Hell"], "", $kD); + $checked = ($v == 1) ? 'checked' : ''; + + $quests .= "
"; + $quests .= ""; + $quests .= "
"; + $quests .= "
"; } + $quests .= "
"; + $quests .= "
"; + + $quests .= "
"; + $accordionCounter++; + } +} + $wps = ''; //$wps .= ""; //$wps .= "
"; //$wps .= ""; //$wps .= "
"; - foreach ($c->cData['Waypoints'] as $diff => $waypoints) { // diff is difficulty - $wps .= "

$diff

"; - array_pop($waypoints); - $wp_count = 0; - foreach ($waypoints as $k => $v) { +$wps = ''; +$accordionCounter = 1; - $kD = str_replace("_", " ", $k); - $kD = str_replace([" NM", " Hell"], "", $kD); - $checked = ($v == 1 && $k != '') ? 'checked ' : ''; +foreach ($c->cData['Waypoints'] as $diff => $waypoints) { + $isExpanded = ($accordionCounter === 1) ? 'show' : ''; + $collapseId = 'collapsewps-' . $accordionCounter; + $headingId = 'headingwps-' . $accordionCounter; - $wps .= "
"; - $wps .= "
"; - $wp_count++; - } - } + $wps .= "
"; + $wps .= "
"; + $wps .= "
"; + $wps .= ""; + $wps .= "
"; + $wps .= "
"; + + $wps .= "
"; + $wps .= "
"; + + array_pop($waypoints); + $wp_count = 0; + foreach ($waypoints as $k => $v) { + $kD = str_replace("_", " ", $k); + $kD = str_replace([" NM", " Hell"], "", $kD); + $checked = ($v == 1 && $k != '') ? 'checked ' : ''; + + $wps .= "
"; + $wps .= ""; + $wps .= "
"; + $wps .= "
"; + $wp_count++; + } + + $wps .= "
"; + $wps .= "
"; + + $wps .= "
"; + $accordionCounter++; +} $classOptions = [ 'Amazon', 'Assassin', 'Barbarian', 'Druid', 'Paladin', 'Necromancer', 'Sorceress' @@ -106,8 +151,42 @@ EOT; $skills .= ": {$skill['skill']}
"; $skillcounter++; } + +$skillsByPage = array(); +foreach ($c->cData['skills']['skills'] as $skill) { + $page = $skill['page']; + if (!isset($skillsByPage[$page])) { + $skillsByPage[$page] = array(); + } + $skillsByPage[$page][] = $skill; +} - // ddump($c->cData['CharacterStatusDied']); +$skillDivs = ''; +$accordionCounter = 1; +foreach ($skillsByPage as $page => $skills) { + $isExpanded = ($accordionCounter === 1) ? 'show' : ''; + $collapseId = 'collapseskills-' . $accordionCounter; + $headingId = 'headingskills-' . $accordionCounter; + + $skillDivs .= '
'; + $skillDivs .= '
'; + $skillDivs .= '
'; + $skillDivs .= ''; + $skillDivs .= '
'; + $skillDivs .= '
'; + + $skillDivs .= '
'; + $skillDivs .= '
'; + foreach ($skills as $skill) { + $skillcounter++; + $skillDivs .= ": {$skill['skill']}
"; + } + $skillDivs .= '
'; + $skillDivs .= '
'; + + $skillDivs .= '
'; + $accordionCounter++; +} $statuses = [ @@ -129,30 +208,81 @@ EOT; HTML; } - $items = "
"; - foreach($c->cData['items'] as $item) { - $i = array_filter($item->iData); - - $items .= "
-

- {$i['basename']}
- -

-
    -
  • Code: {$i['code']}
  • -
  • Socketed: {$i['gems_in']}
  • -
  • Item Level{$i['ilvl']}
  • -
  • Identified: {$i['identified']}
  • -
  • Starting Item: {$i['startingItem']}
  • -
  • Ethereal: {$i['ethereal']}
  • -
  • Quality: {$i['iquality']}
  • -
  • Container: {$i['container']}
  • -
  • Runeword:{$i['runeword']}
  • -
-
"; - + // Create a new array to store objects sorted by container + $sortedArray = []; + // Iterate over the original array + foreach ($c->cData['items'] as $item) { + // Get the value of 'container' property + $container = $item->iData['container']; + + // Check if the container key already exists in the sorted array + if (!array_key_exists($container, $sortedArray)) { + // If not, create a new empty array for the container + $sortedArray[$container] = []; + } + + // Add the current object to the corresponding container in the sorted array + $sortedArray[$container][] = $item; } - $items .= "
"; + +// Sort the sub-arrays (objects with the same container) by the container property + foreach ($sortedArray as &$containerArray) { + usort($containerArray, function ($a, $b) { + return strcmp($a->iData['container'], $b->iData['container']); + }); + } + + + +$items = "
"; + +foreach ($sortedArray as $index => $container) { + $containerId = "container_" . $index; + + // Create accordion card for the container + $items .= "
"; + $items .= "
"; + $items .= "
"; + $items .= ""; + $items .= "
"; + $items .= "
"; + + // Create accordion content for the container + $isExpanded = ($index === 0) ? "show" : ""; + $items .= "
"; + $items .= "
"; + $items .= "
"; + + foreach ($container as $item) { + $i = array_filter($item->iData); + + $items .= "
"; + $items .= "

"; + $items .= "{$i['basename']}
"; + $items .= ""; + $items .= "

"; + $items .= "
    "; + $items .= "
  • Code: {$i['code']}
  • "; + $items .= "
  • Socketed: {$i['gems_in']}
  • "; + $items .= "
  • Item Level: {$i['ilvl']}
  • "; + $items .= "
  • Identified: {$i['identified']}
  • "; + $items .= "
  • Starting Item: {$i['startingItem']}
  • "; + $items .= "
  • Ethereal: {$i['ethereal']}
  • "; + $items .= "
  • Quality: {$i['iquality']}
  • "; + $items .= "
  • Container: {$i['container']}
  • "; + $items .= "
  • Runeword: {$i['runeword']}
  • "; + $items .= "
"; + $items .= "
"; + } + + $items .= "
"; + $items .= "
"; + $items .= "
"; + + $items .= "
"; +} + +$items .= "
"; $tabContent .= <<

Skills

- $skills +
+ $skillDivs +
@@ -253,7 +385,7 @@ $checkboxes
- +

Items on Character

$items