Quellcode durchsuchen

Improvements in the runs view. Team saving now respects leader and frontline indications.

Iñigo Valentin vor 6 Jahren
Ursprung
Commit
4086067135

+ 3 - 0
application/page/Runs_Page.php

@@ -102,6 +102,9 @@
                 FROM run
                 WHERE uid = '$UID'
              ";
+            if ($this->filters["AREA_TYPE"] > 0){
+                $s = $s . " AND area_type =  " . $this->filters["AREA_TYPE"] . " ";
+            }
             if ($this->filters["AREA"] > 0){
                 $s = $s . " AND area =  " . $this->filters["AREA"] . " ";
             }

+ 34 - 30
application/view/inc/filter_runs.php

@@ -17,13 +17,12 @@
                     Area
                 </span>
             </td>
-            <td class='filter'>
+            <td class='filter' colspan='2'>
 <?php
                 $selected = array_fill(0, 12 + 1, "");
                 $selected[$filters["AREA_TYPE"]] = "selected";
 ?>
-                <span>Region:</span>
-                <select name='area_type' id='filter_area'>
+                <select name='area_type' id='filter_area_type' onchange='selectAreaType();'>
                     <option value='0'>All</option>
                     <option value='<?=AREA_TYPE_ID::SCENARIO?>' <?=$selected[AREA_TYPE_ID::SCENARIO]?>>Scenario</option>
                     <option value='<?=AREA_TYPE_ID::CAIROS_DUNGEON?>' <?=$selected[AREA_TYPE_ID::CAIROS_DUNGEON]?>>Cairos Dungeon</option>
@@ -38,40 +37,45 @@
                     <option value='<?=AREA_TYPE_ID::WORLD_BOSS?>' <?=$selected[AREA_TYPE_ID::WORLD_BOSS]?>>World Boss</option>
                     <option value='<?=AREA_TYPE_ID::DIMENSIONAL_RIFT?>' <?=$selected[AREA_TYPE_ID::DIMENSIONAL_RIFT]?>>Dimensional Rift</option>
                 </select>
-            </td>
-            <td class='filter'>
 <?php
                 $selected = array_fill(0, 9002, "");
                 $selected[$filters["AREA"]] = "selected";
 ?>
-                <span>Area:</span>
-                <select name='area_scenario'>
+                <select id='filter_area_scenario' class='filter_area'>
+                    <option value='0'>All</option>
+                    <option value='<?=SCENARIO_ID::GAREN_FOREST?>' <?=$selected[SCENARIO_ID::GAREN_FOREST]?>>Garen Forest</option>
+                    <option value='<?=SCENARIO_ID::MT_SIZ?>' <?=$selected[SCENARIO_ID::MT_SIZ]?>>Mt. Siz</option>
+                    <option value='<?=SCENARIO_ID::KABIR_RUINS?>' <?=$selected[SCENARIO_ID::KABIR_RUINS]?>>Kabir Ruins</option>
+                    <option value='<?=SCENARIO_ID::MT_WHITE_RAGON?>' <?=$selected[SCENARIO_ID::MT_WHITE_RAGON]?>>Mt. White Ragon</option>
+                    <option value='<?=SCENARIO_ID::TELAIN_FOREST?>' <?=$selected[SCENARIO_ID::TELAIN_FOREST]?>>Telain Forest</option>
+                    <option value='<?=SCENARIO_ID::HYDENI_RUINS?>' <?=$selected[SCENARIO_ID::HYDENI_RUINS]?>>Hydeni Ruins</option>
+                    <option value='<?=SCENARIO_ID::TAMOR_DESERT?>' <?=$selected[SCENARIO_ID::TAMOR_DESERT]?>>Tamor Desert</option>
+                    <option value='<?=SCENARIO_ID::VROFAGUS_RUINS?>' <?=$selected[SCENARIO_ID::VROFAGUS_RUINS]?>>Vrofagus Ruins</option>
+                    <option value='<?=SCENARIO_ID::FAIMON_VOLCANO?>' <?=$selected[SCENARIO_ID::FAIMON_VOLCANO]?>>Faimon Volcano</option>
+                    <option value='<?=SCENARIO_ID::AIDEN_FOREST?>' <?=$selected[SCENARIO_ID::AIDEN_FOREST]?>>Aiden Forest</option>
+                    <option value='<?=SCENARIO_ID::FERUN_CASTLE?>' <?=$selected[SCENARIO_ID::FERUN_CASTLE]?>>Ferun Castle</option>
+                    <option value='<?=SCENARIO_ID::MT_RUNAR?>' <?=$selected[SCENARIO_ID::MT_RUNAR]?>>Mt. Runar</option>
+                    <option value='<?=SCENARIO_ID::CHIRUKA_REMAINS?>' <?=$selected[SCENARIO_ID::CHIRUKA_REMAINS]?>>Charuka Remains</option>
+                </select>
+                <select id='filter_area_cairos' class='filter_area'>
                     <option value='0'>All</option>
-                    <option value='1' <?=$selected[1]?>>Garen Forest</option>
-                    <option value='2' <?=$selected[2]?>>Mt. Siz</option>
-                    <option value='3' <?=$selected[3]?>>Kabir Ruins</option>
-                    <option value='4' <?=$selected[4]?>>Mt. White Ragon</option>
-                    <option value='5' <?=$selected[5]?>>Telain Forest</option>
-                    <option value='6' <?=$selected[6]?>>Hydeni Ruins</option>
-                    <option value='7' <?=$selected[7]?>>Tamor Desert</option>
-                    <option value='8' <?=$selected[8]?>>Vrofagus Ruins</option>
-                    <option value='9' <?=$selected[9]?>>Faimon Volcano</option>
-                    <option value='10' <?=$selected[10]?>>Aiden Forest</option>
-                    <option value='11' <?=$selected[11]?>>Ferun Castle</option>
-                    <option value='12' <?=$selected[12]?>>Mt. Runar</option>
-                    <option value='13' <?=$selected[13]?>>Charuka Remains</option>
+                    <option value='<?=DUNGEON_ID::GIANTS_KEEP?>' <?=$selected[DUNGEON_ID::GIANTS_KEEP]?>>Giant&#39;s Keep</option>
+                    <option value='<?=DUNGEON_ID::DRAGONS_LAIR?>' <?=$selected[DUNGEON_ID::DRAGONS_LAIR]?>>Dragon&#39;s Lair</option>
+                    <option value='<?=DUNGEON_ID::NECROPOLIS?>' <?=$selected[DUNGEON_ID::NECROPOLIS]?>>Necropolis</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_MAGIC?>' <?=$selected[DUNGEON_ID::HALL_OF_MAGIC]?>>Hall of Magic</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_LIGHT?>' <?=$selected[DUNGEON_ID::HALL_OF_LIGHT]?>>Hall of Light</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_DARK?>' <?=$selected[DUNGEON_ID::HALL_OF_DARK]?>>Hall of Dark</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_FIRE?>' <?=$selected[DUNGEON_ID::HALL_OF_FIRE]?>>Hall of Fire</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_WATER?>' <?=$selected[DUNGEON_ID::HALL_OF_WATER]?>>Hall of Water</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_WIND?>' <?=$selected[DUNGEON_ID::HALL_OF_WIND]?>>Hall of Wind</option>
                 </select>
-                <select name='area_cairos'>
+                <select id='filter_area_rift_dungeon' class='filter_area'>
                     <option value='0'>All</option>
-                    <option value='1001' <?=$selected[1001]?>>Hall of Dark</option>
-                    <option value='2001' <?=$selected[2001]?>>Hall of Fire</option>
-                    <option value='3001' <?=$selected[3001]?>>Hall of Water</option>
-                    <option value='4001' <?=$selected[4001]?>>Hall of Wind</option>
-                    <option value='5001' <?=$selected[5001]?>>Hall of Magic</option>
-                    <option value='6001' <?=$selected[6001]?>>Necropolis</option>
-                    <option value='7001' <?=$selected[7001]?>>Hall of Light</option>
-                    <option value='8001' <?=$selected[8001]?>>Giant&#39;s Keep</option>
-                    <option value='9001' <?=$selected[9001]?>>Dragon&#39;s Lair</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST]?>>Light Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST]?>>Dark Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST]?>>Fire Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST]?>>Ice Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST]?>>Wind Beast</option>
                 </select>
             </td>
         </tr>

+ 29 - 22
application/view/inc/filter_stats.php

@@ -36,31 +36,38 @@
 ?>
                 <select class='filter_area' id='filter_area_scenario'>
                     <option value='0'></option>
-                    <option value='1' <?=$selected[1]?>>Garen Forest</option>
-                    <option value='2' <?=$selected[2]?>>Mt. Siz</option>
-                    <option value='3' <?=$selected[3]?>>Kabir Ruins</option>
-                    <option value='4' <?=$selected[4]?>>Mt. White Ragon</option>
-                    <option value='5' <?=$selected[5]?>>Telain Forest</option>
-                    <option value='6' <?=$selected[6]?>>Hydeni Ruins</option>
-                    <option value='7' <?=$selected[7]?>>Tamor Desert</option>
-                    <option value='8' <?=$selected[8]?>>Vrofagus Ruins</option>
-                    <option value='9' <?=$selected[9]?>>Faimon Volcano</option>
-                    <option value='10' <?=$selected[10]?>>Aiden Forest</option>
-                    <option value='11' <?=$selected[11]?>>Ferun Castle</option>
-                    <option value='12' <?=$selected[12]?>>Mt. Runar</option>
-                    <option value='13' <?=$selected[13]?>>Charuka Remains</option>
+                    <option value='<?=AREA_TYPE_ID::SCENARIO?>' <?=$selected[AREA_TYPE_ID::SCENARIO]?>>Scenario</option>
+                    <option value='<?=AREA_TYPE_ID::CAIROS_DUNGEON?>' <?=$selected[AREA_TYPE_ID::CAIROS_DUNGEON]?>>Cairos Dungeon</option>
+                    <option value='<?=AREA_TYPE_ID::RIFT_DUNGEON?>' <?=$selected[AREA_TYPE_ID::RIFT_DUNGEON]?>>Rift Beast</option>
+                    <option value='<?=AREA_TYPE_ID::RIFT_RAID?>' <?=$selected[AREA_TYPE_ID::RIFT_RAID]?>>Rift Raid</option>
+                    <option value='<?=AREA_TYPE_ID::DIMENSIONAL_HOLE?>' <?=$selected[AREA_TYPE_ID::DIMENSIONAL_HOLE]?>>Dimensional Hole</option>
+                    <option value='<?=AREA_TYPE_ID::ARENA?>' <?=$selected[AREA_TYPE_ID::ARENA]?>>Arena</option>
+                    <option value='<?=AREA_TYPE_ID::GUILD_WAR?>' <?=$selected[AREA_TYPE_ID::GUILD_WAR]?>>Guild War</option>
+                    <option value='<?=AREA_TYPE_ID::GUILD_SIEGE?>' <?=$selected[AREA_TYPE_ID::GUILD_SIEGE]?>>Guild Siege</option>
+                    <option value='<?=AREA_TYPE_ID::TARTARUS_LABYRINTH?>' <?=$selected[AREA_TYPE_ID::TARTARUS_LABYRINTH]?>>Tartarus Labyrinth</option>
+                    <option value='<?=AREA_TYPE_ID::TRIAL_OF_ASCENSION?>' <?=$selected[AREA_TYPE_ID::TRIAL_OF_ASCENSION]?>>Trial of Ascension</option>
+                    <option value='<?=AREA_TYPE_ID::WORLD_BOSS?>' <?=$selected[AREA_TYPE_ID::WORLD_BOSS]?>>World Boss</option>
+                    <option value='<?=AREA_TYPE_ID::DIMENSIONAL_RIFT?>' <?=$selected[AREA_TYPE_ID::DIMENSIONAL_RIFT]?>>Dimensional Rift</option>
                 </select>
                 <select class='filter_area' id='filter_area_cairos'>
                     <option value='0'></option>
-                    <option value='1001' <?=$selected[1001]?>>Hall of Dark</option>
-                    <option value='2001' <?=$selected[2001]?>>Hall of Fire</option>
-                    <option value='3001' <?=$selected[3001]?>>Hall of Water</option>
-                    <option value='4001' <?=$selected[4001]?>>Hall of Wind</option>
-                    <option value='5001' <?=$selected[5001]?>>Hall of Magic</option>
-                    <option value='6001' <?=$selected[6001]?>>Necropolis</option>
-                    <option value='7001' <?=$selected[7001]?>>Hall of Light</option>
-                    <option value='8001' <?=$selected[8001]?>>Giant&#39;s Keep</option>
-                    <option value='9001' <?=$selected[9001]?>>Dragon&#39;s Lair</option>
+                    <option value='<?=DUNGEON_ID::GIANTS_KEEP?>' <?=$selected[DUNGEON_ID::GIANTS_KEEP]?>>Giant&#39;s Keep</option>
+                    <option value='<?=DUNGEON_ID::DRAGONS_LAIR?>' <?=$selected[DUNGEON_ID::DRAGONS_LAIR]?>>Dragon&#39;s Lair</option>
+                    <option value='<?=DUNGEON_ID::NECROPOLIS?>' <?=$selected[DUNGEON_ID::NECROPOLIS]?>>Necropolis</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_MAGIC?>' <?=$selected[DUNGEON_ID::HALL_OF_MAGIC]?>>Hall of Magic</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_LIGHT?>' <?=$selected[DUNGEON_ID::HALL_OF_LIGHT]?>>Hall of Light</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_DARK?>' <?=$selected[DUNGEON_ID::HALL_OF_DARK]?>>Hall of Dark</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_FIRE?>' <?=$selected[DUNGEON_ID::HALL_OF_FIRE]?>>Hall of Fire</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_WATER?>' <?=$selected[DUNGEON_ID::HALL_OF_WATER]?>>Hall of Water</option>
+                    <option value='<?=DUNGEON_ID::HALL_OF_WIND?>' <?=$selected[DUNGEON_ID::HALL_OF_WIND]?>>Hall of Wind</option>
+                </select>
+                <select id='filter_area_rift_dungeon' class='filter_area'>
+                    <option value='0'></option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST]?>>Light Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST]?>>Dark Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST]?>>Fire Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST]?>>Ice Beast</option>
+                    <option value='<?=ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST?>' <?=$selected[ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST]?>>Wind Beast</option>
                 </select>
                 <select id='filter_stage' name='stage'>
                 </select>

+ 49 - 2
application/view/runs.php

@@ -95,9 +95,49 @@
                     slid.style.transform = 'rotate(0deg)';
                 }
             };
+
+            /**
+             * Shows the appropiate area selector.
+             */
+            function selectAreaType(){
+                var areaType = document.getElementById('filter_area_type').options[document.getElementById('filter_area_type').selectedIndex].value;
+                // Clear all selectors
+                var areas = document.getElementsByClassName('filter_area');
+                for (var i = 0; i < areas.length; i++) {
+                    areas[i].style.display = 'none';
+                    areas[i].removeAttribute('name');
+                }
+
+                // Show selected selector.
+                switch (areaType){
+                    case '<?=AREA_TYPE_ID::SCENARIO?>':
+                        document.getElementById('filter_area_scenario').style.display = 'inline-block';
+                        document.getElementById('filter_area_scenario').setAttribute('name', 'area');
+                        break;
+                    case '<?=AREA_TYPE_ID::CAIROS_DUNGEON?>':
+                        document.getElementById('filter_area_cairos').style.display = 'inline-block';
+                        document.getElementById('filter_area_cairos').setAttribute('name', 'area');
+                        break;
+                    case '<?=AREA_TYPE_ID::RIFT_DUNGEON?>':
+                        document.getElementById('filter_area_rift_dungeon').style.display = 'inline-block';
+                        document.getElementById('filter_area_rift_dungeon').setAttribute('name', 'area');
+                        break;
+                    // Rift Raid: Don't filter by area.
+                    // Arena: Don't filter by area.
+                    // Guild War: Don't filter by area.
+                    // Guild Siege: Don't filter by area.
+                    // Rift Raid: Don't filter by area.
+                    // Tartarus: Don't filter by area.
+                    // TOA: Don't filter by area.
+                    // Rift Raid: Don't filter by area.
+                    // WB: Don't filter by area.
+                    // Dimensional Rift: Don't filter by area.
+                    // TODO: Filter Dimensional Hole dungeon
+                }
+            }
         </script>
     </head>
-    <body>
+    <body onload='selectAreaType();'>
 <?php
         include __DIR__ . "/inc/header.php";
 ?>
@@ -141,7 +181,7 @@
                     foreach ($page->runs as $run){
                         $enable_save = true;
 ?>
-                        <tr>
+                        <tr id='run_<?=$run->id?>'>
                             <td class='area'>
                                 <div class='area'>
                                     <img title='<?=$run->area->name?>' class='area' src='<?=$run->area->get_image($run->stage)?>'/>
@@ -213,6 +253,13 @@
 ?>
                                     <div class='monster_panel <?=$disabled?>'>
                                         <?=HTML::unit_panel($party)?>
+<?php
+                                            if ($party->id == $run->leader){
+?>
+                                                <img alt='Leader' class='leader' src='<?=URL::IMG["ICON"]?>leader.png'/>
+<?php
+                                            }
+?>
                                     </div>
 <?php
                                     if ($disabled == ""){

+ 17 - 3
application/view/stats.php

@@ -83,8 +83,22 @@
                         populateStage(10);
                         document.getElementById('filter_stage').style.display = 'inline-block';
                         break;
-                    // TODO initialvalues for stage and difficulty
+                    case '<?=AREA_TYPE_ID::RIFT_DUNGEON?>':
+                        document.getElementById('filter_area_rift_dungeon').style.display = 'inline-block';
+                        document.getElementById('filter_area_rift_dungeon').setAttribute('name', 'area');
+                        break;
                     // TODO: Other areas
+                    // Rift Raid: Don't filter by area.
+                    // Arena: Don't filter by area.
+                    // Guild War: Don't filter by area.
+                    // Guild Siege: Don't filter by area.
+                    // Rift Raid: Don't filter by area.
+                    // Tartarus: Don't filter by area.
+                    // TOA: Don't filter by area.
+                    // Rift Raid: Don't filter by area.
+                    // WB: Don't filter by area.
+                    // Dimensional Rift: Don't filter by area.
+                    // TODO: Filter Dimensional Hole dungeon
                 }
             }
 
@@ -520,12 +534,12 @@
             // TODO: Script to show/hide area selector
         </script>
     </head>
-    <body onload='populateDiagrams();'>
+    <body onload='populateDiagrams();selectAreaType();initialValues();'>
 <?php
         include __DIR__ . "/inc/header.php";
 ?>
         <section class='filters'>
-            <h2 id='filters_title' onClick='selectAreaType();initialValues();toggleFilters();'>
+            <h2 id='filters_title' onClick='toggleFilters();'>
                 <img id='filters_slid' id='filters_slid' alt=' ' src='<?=URL::IMG["ICON"]?>slid.png'/>
                 Stat filters
             </h2>

+ 24 - 11
public/css/runs.css

@@ -8,16 +8,12 @@ table#runs td.area, td.date, td.team, td.time, td.reward, td.action{
     border-top: 0.1em solid #99999977;
 }
 
-table#runs td.area div.area{
-    position: relative;
-    width: 2em;
-    height: 2em;
+table#runs td.area{
+    text-align: center;
+    width: 4em;
 }
 
 table#runs td.area div.area img.area{
-    position: absolute;
-    top: 0;
-    left: 0;
     width: 2em;
     height: 2em;
     border: 0.2em solid #555555;
@@ -26,10 +22,10 @@ table#runs td.area div.area img.area{
 }
 
 table#runs td.area div.area span.stage{
-    position: absolute;
-    top: 1.3em;
-    left: 0;
-    width: 2em;
+    position: relative;
+    left: -1.85em;
+    top: -0.4em;
+    font-size: 80%;
     text-align: right;
     text-shadow: 0 0 0.3em #000, 0 0 0.3em #000, 0 0 0.3em #000, 0 0 0.2em #000, 0 0 0.1em #000, 0 0 0.1em #000;
     pointer-events: none;
@@ -56,6 +52,7 @@ table#runs td.date{
 
 table#runs td.team{
     font-size: 30%;
+    width: 46em;
 }
 
 table#runs td.team div.helper{
@@ -68,6 +65,22 @@ table#runs td.team div.monster_panel.disabled{
     vertical-align: top;
 }
 
+table#runs td.team div.monster_panel img.leader{
+    width: 5em;
+    height: 5em;
+    display: block;
+    position: absolute;
+    top: -1.7em;
+    left: -0.7em;
+}
+
+table#runs td.team hr.frontline{
+    display: block;
+    width: 46em;
+    margin: -0.6em 0 0.2em 0;
+    color: #666666;
+}
+
 table#runs td.time{
     font-weight: bold;
     font-size: 75%;