<!DOCTYPE html>
<html data-theme="light">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Set Overview</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">

<!-- CSS Reset -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css">

<!-- Milligram CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css">
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"
/>

<style>
  body {
    margin: 0;
    padding: 0;
    font-family: Arial, sans-serif;
  }
  
  .grid-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 10px;
    padding: 10px;
  }

  .grid-item {
  	display: flex;
	flex-direction: column; /* Arrange content vertically */
  }

  .card {
    height: 100%;
    overflow: hidden;
    border: 1px solid #ccc;
    padding: 10px;
    box-sizing: border-box;
    padding-bottom:40px;   /* Height of the footer */
  }

/* Adjust height for smaller screens */
@media (max-width: 768px) {
  .card {
    height: auto; /* Let the height adjust dynamically */
  }
  
  .grid-item {
    height: auto; /* Let the height adjust dynamically */
    overflow: visible; /* Allow content to overflow if necessary */
  }
}

  .grid-item img { 
    max-width: 100%; 
    height: auto; 
    display: block;

  }
  .card p {
    margin: 0; /* Remove default margin */
  }
  .card-footer {
	  position:absolute;
   bottom:0;
   width:90%;
   height:40px;   /* Height of the footer */
  }
  
  .button {
  background-color: black;
  border-color: black;
}
.button.button-clear,
.button.button-outline {
  background-color: transparent;
  color: black;
}
.button.button-clear {
  border-color: transparent;
}
.search-container {
  padding: 10px;
}
</style>
</head>
<body>
	<div class="search-container">
		<input type="text" id="searchInput" onkeyup="searchFunction()" placeholder="Search...">
  </select>
  <center>
  <button class="button button-outline" onclick="dynamicSort('set_id')">Sort by ID</button>
  <button class="button button-outline" onclick="dynamicSort('set_year')">Sort by Year</button>
  <button class="button button-outline" onclick="dynamicSort('set_parts')">Sort by Parts</button>
  <button class="button button-outline" onclick="dynamicSort('set_name')">Sort by Name</button>
  </center>

  <!-- Add more buttons for other text values if needed -->
	</div>

	<div class="grid-container" id="gridContainer">

{% for i in set_list %}

<div class="grid-item">
<div class="card">
	<div class="card-image">
    	  <figure class="image is-4by3">
	    <a href="/{{ i['set_num'] }}">
	      <img style='height: 100%; width: 100%; object-fit: contain'  src="/static/sets/{{ i['set_num'] }}/cover.jpg" alt="Image">
	    </a>
	  </figure>
	</div>
 	<div class="wrapper" style="min-height: 120px;display:flex;flex-direction:column;"> 
	<div class="card-content" style="display: flex;flex-direction: column;flex: 1;">
	  <p class="title">
	  <span class="set_id">{{ i['set_num'] }}</span> <span class="set_name">{{ i['name'] }}</span>
	  </p>

	  <p class="subtitle"style="margin-bottom:auto;">
	    Theme - <span class='set_year'>{{ i['year'] }}</span>
	  </p>
	  <div style="margin:auto auto 0 0;">
            <b>Parts:</b> 
	    <span class='set_parts'>{{ i['num_parts'] }}</span>
	  </div>
	</div>
	
	<footer class="card-footer">
	  <p class="card-footer-item">
	    <span>
	      <a style="color: #363636;" href="/{{ i['set_num'] }}">Inventory</a>
	    </span>
	  </p>

	  <p class="card-footer-item">
	    <span>
	      <a style="color: #363636;" href="/{{ i['set_num'] }}">Instructions</a>
	    </span>
	  </p>
	</footer>
	</div>
</div>
</div>

{% endfor %}

	</div>
<script>
function searchFunction() {
  var input, filter, gridContainer, gridItems, i, txtValue;
  input = document.getElementById('searchInput');
  filter = input.value.toUpperCase();
  gridContainer = document.getElementById('gridContainer');
  gridItems = gridContainer.getElementsByClassName('grid-item');

  for (i = 0; i < gridItems.length; i++) {
    txtValue = gridItems[i].textContent || gridItems[i].innerText;
    if (txtValue.toUpperCase().indexOf(filter) > -1) {
      gridItems[i].style.display = "";
    } else {
      gridItems[i].style.display = "none";
    }
  }
}
function sortFunction() {
  var sortSelect, sortValue, gridContainer, gridItems, sortedItems, i;
  sortSelect = document.getElementById('sortSelect');
  sortValue = sortSelect.value;
  gridContainer = document.getElementById('gridContainer');
  gridItems = gridContainer.getElementsByClassName('grid-item');
  sortedItems = Array.from(gridItems);

  if (sortValue === 'alphabetical') {
    sortedItems.sort(function(a, b) {
      var textA = a.textContent.trim().toUpperCase();
      var textB = b.textContent.trim().toUpperCase();
      if (textA < textB) {
        return -1;
      }
      if (textA > textB) {
        return 1;
      }
      return 0;
    });
  }

  // Remove existing items
  while (gridContainer.firstChild) {
    gridContainer.removeChild(gridContainer.firstChild);
  }

  // Append sorted items
  for (i = 0; i < sortedItems.length; i++) {
    gridContainer.appendChild(sortedItems[i]);
  }
}
var sortOrder = 'asc';

function dynamicSort(className) {
  var gridContainer, gridItems, sortedItems, i;
  gridContainer = document.getElementById('gridContainer');
  gridItems = gridContainer.getElementsByClassName('grid-item');
  sortedItems = Array.from(gridItems);

  sortedItems.sort(function(a, b) {
    var textA = a.getElementsByClassName(className)[0].textContent.trim();
    var textB = b.getElementsByClassName(className)[0].textContent.trim();
    
       // Remove digits after hyphen if present
    textA = textA.replace(/-\d+$/, '').trim();
    textB = textB.replace(/-\d+$/, '').trim(); 
    // If text1 is an integer, parse it as a number
    if (!isNaN(textA) && !isNaN(textB)) {
      var result = parseInt(textA) - parseInt(textB);
      // Toggle result based on current sort order
      return sortOrder === 'asc' ? result : -result;
    }
    // If text1 is not an integer, treat it as a string
    else {
      textA = textA.toUpperCase();
      textB = textB.toUpperCase();
      var result = textA.localeCompare(textB);
      // Toggle result based on current sort order
      return sortOrder === 'asc' ? result : -result;
    }
  });

  // Reverse sort order for next click
  sortOrder = sortOrder === 'asc' ? 'desc' : 'asc';

  // Remove existing items
  while (gridContainer.firstChild) {
    gridContainer.removeChild(gridContainer.firstChild);
  }

  // Append sorted items
  for (i = 0; i < sortedItems.length; i++) {
    gridContainer.appendChild(sortedItems[i]);
  }
}
</script>
</body>
</html>