templates/content/downloads.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block main_content %}
  3.     <div>
  4.         <div class="content-header">
  5.             <p>Download suchen</p>
  6.         </div>
  7.         <div class="content-area">
  8.             <form id="register-form" method="post" name="Register" action="/register_user">
  9.                 <div class="content-form">
  10.                     <input id="download-search" type="text" name="manual" size="50"
  11.                            placeholder="Geben Sie einen Modellnamen ein" required>
  12.                 </div>
  13.             </form>
  14.         </div>
  15.         <!-- results grid -->
  16.         <div class="content-results">
  17.             <div id="results-grid" class="results-grid">
  18.                 <div class="row header">
  19.                     <div>Kurzbeschreibung</div>
  20.                     <div>Hersteller</div>
  21.                     <div>Manualtyp</div>
  22.                     <div>Dok.Nr.</div>
  23.                     <div>Typ</div>
  24.                 </div>
  25.                 <!-- rows injected by JS -->
  26.             </div>
  27.         </div>
  28.         <style>
  29.             .content-results {
  30.                 margin-top: 20px;
  31.                 padding: 16px; /* cushion inside container */
  32.                 background: #f9f9f9;
  33.                 border-radius: 8px;
  34.             }
  35.             .results-grid {
  36.                 display: grid;
  37.                 grid-template-columns: repeat(5, 1fr);
  38.                 border: 1px solid #ddd;
  39.                 border-radius: 6px;
  40.                 overflow: hidden;
  41.             }
  42.             .results-grid .row {
  43.                 display: contents; /* lets children align to grid columns */
  44.             }
  45.             .results-grid .row > div {
  46.                 padding: 10px;
  47.                 border-bottom: 1px solid #eee;
  48.             }
  49.             .results-grid .header > div {
  50.                 background: linear-gradient(to bottom, #888 0%, #fff 100%);
  51.                 font-weight: bold;
  52.                 border-bottom: 2px solid #ccc;
  53.             }
  54.             /* zebra striping */
  55.             .results-grid .row:nth-child(even) > div {
  56.                 background-color: #EAECED;
  57.             }
  58.             .results-grid .row:nth-child(odd):not(.header) > div {
  59.                 background-color: #fff;
  60.             }
  61.         </style>
  62.         <script src="/scripts/autocomplete.js"></script>
  63.         <script>
  64.             jQuery(window).ready(function () {
  65.                 $('#download-search').searchAutocomplete({
  66.                     url: '/search-download-fast',
  67.                     processData: function (data, $input, response) {
  68.                         var $grid = $('#results-grid');
  69.                         $grid.find('.row:not(.header)').remove();
  70.                         var items = (data || []).map(function (row) {
  71.                             var ext = '';
  72.                             if (row.file_name) {
  73.                                 var parts = row.file_name.split('.');
  74.                                 if (parts.length > 1) ext = parts.pop();
  75.                             }
  76.                             // build row
  77.                             var $row = $('<div class="row">');
  78.                             $row.append($('<div>').text(row.description || ""));
  79.                             $row.append($('<div>').text(row.hersteller || ""));
  80.                             $row.append($('<div>').text("")); // Manualtyp empty
  81.                             $row.append($('<div>').text(row.file_id || ""));
  82.                             $row.append($('<div>').text(ext));
  83.                             $grid.append($row);
  84.                             return {
  85.                                 label: row.description,
  86.                                 value: row.description,
  87.                                 category: row.hersteller
  88.                             };
  89.                         });
  90.                         items.sort(function (a, b) {
  91.                             var c = a.category.localeCompare(b.category);
  92.                             return c !== 0 ? c : a.label.localeCompare(b.label);
  93.                         });
  94.                         response(items);
  95.                     }
  96.                 });
  97.             });
  98.         </script>
  99.     </div>
  100. {% endblock %}