changeset 82:3428ff77ff47

More work, adding filtering.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 13 Mar 2014 02:58:50 +0200
parents cee8d7e68474
children 766bc2221e0b
files info/index.php info/style.css
diffstat 2 files changed, 58 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/info/index.php	Thu Mar 13 02:19:50 2014 +0200
+++ b/info/index.php	Thu Mar 13 02:58:50 2014 +0200
@@ -20,7 +20,10 @@
 );
 
 $seasonData = array(
-  "spring", "summer", "autumn", "winter",
+  "spring" => 0x01,
+  "summer" => 0x02,
+  "autumn" => 0x04,
+  "winter" => 0x08,
 );
 
 
@@ -46,31 +49,53 @@
       return $rkey;
   }
 
-  return FALSE;
+  return -1;
+}
+
+
+function tlGetSeasonFromName($name, $fail = FALSE)
+{
+  global $seasonData;
+  foreach ($seasonData as $rkey => $rval)
+  {
+    if ($rkey == $name)
+      return $rval;
+  }
+
+  if ($fail)
+    die("Invalid season name '".$name."'.\n");
+  else
+    return 0;
 }
 
 
-function tlGetSeasonFromName($name)
+function tlGetSeasonsFromFlags($val)
 {
+  $res = array();
   global $seasonData;
-  if (($season = array_search($name, $seasonData)) === FALSE)
-    die("Invalid season name '".$name."'.\n");
-  
-  return $season;
+  foreach ($seasonData as $rkey => $rval)
+  {
+    if ($val & $rval)
+      $res[] = $rkey;
+  }
+
+  return $res;
 }
 
 
-$fh = @fopen("herbs.csv", "r");
+//
+// Parse data from CSV input
+//
 $herbData = array();
-if ($fh !== FALSE)
+if (($fh = @fopen("herbs.csv", "r")) !== FALSE)
 {
   while ($data = fgetcsv($fh, 1000, ";"))
   {
-    $sdata = array();
+    $sdata = 0;
     foreach (preg_split("/, */", $data[1]) as $value)
     {
       if ($value != "")
-        $sdata[] = tlGetSeasonFromName($value);
+        $sdata |= tlGetSeasonFromName($value, TRUE);
     }
 
     $rdata = array();
@@ -110,25 +135,41 @@
 <th>Information</th>
 </tr>
 <?php
-$filter = -1;
+$sefilter = FALSE;
+$trfilter = FALSE;
 if (isset($_GET["terrain"]))
 {
   $data = tlGetTerrainDataByCode(strtolower(trim($_GET["terrain"])));
-  if ($data !== FALSE)
-    $filter = $data;
+  if ($data >= 0)
+    $trfilter = $data;
+}
+
+
+if (isset($_GET["season"]))
+{
+  $data = tlGetSeasonFromName(strtolower(trim($_GET["season"])));
+  if ($data > 0)
+    $sefilter = $data;
 }
 
 $row = 0;
 foreach ($herbData as $data)
 {
-  if ($filter >= 0 && array_search($filter, $data["terrains"]) === FALSE)
+  if ($trfilter !== FALSE && array_search($trfilter, $data["terrains"]) === FALSE)
+    continue;
+
+  if ($sefilter !== FALSE && ($data["seasons"] & $sefilter) == 0)
     continue;
 
+  $seasons = array_map(function($x) {
+      return "<a href=\"?season=".$x."\">".$x."</a>";
+    }, tlGetSeasonsFromFlags($data["seasons"]));
+
   $row++;
   echo
     "<tr class=\"".(($row % 2) ? "even" : "odd")."\">".
     "<td>".$data["name"]."</td>".
-    "<td>".implode(", ", $data["seasons"])."</td>".
+    "<td>".implode(", ", $seasons)."</td>".
     "<td>";
 
   foreach ($data["terrains"] as $rkey)
--- a/info/style.css	Thu Mar 13 02:19:50 2014 +0200
+++ b/info/style.css	Thu Mar 13 02:58:50 2014 +0200
@@ -1,4 +1,4 @@
-body {background: black; color: white; font-family: arial,helvetica; font-size: 12px;}
+body {background: black; color: white; font-family: arial,helvetica;}
 a {color: white; text-decoration: none;} 
 a:visited {color: white; text-decoration: none;} 
 th {font-weight: bold; background: #08f; text-align: left;}