diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-02-28 00:23:20 +0100 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-02-28 00:23:20 +0100 |
| commit | ff8a99329c9b79b3c5c8427d8f830821f13ccd32 (patch) | |
| tree | d665180b82c2cf34f5d89f45c744d90225b3e084 /templates | |
| parent | 54e247945dfa3a4bd80f71fce1b506bec12178a9 (diff) | |
multirange-ify yearsmain
Diffstat (limited to 'templates')
| -rw-r--r-- | templates/index.html | 76 |
1 files changed, 63 insertions, 13 deletions
diff --git a/templates/index.html b/templates/index.html index cf4e616..955d813 100644 --- a/templates/index.html +++ b/templates/index.html | |||
| @@ -5,39 +5,89 @@ | |||
| 5 | td { vertical-align: top; } | 5 | td { vertical-align: top; } |
| 6 | tr.color_1 { background: #ccc; } | 6 | tr.color_1 { background: #ccc; } |
| 7 | table { border: none; } | 7 | table { border: none; } |
| 8 | #year-slider { margin: 0.3em; width: 50vw; } | ||
| 9 | #slider-container { display: inline; padding: 0.3em; } | ||
| 8 | </style> | 10 | </style> |
| 11 | <link rel="stylesheet" type="text/css" href="static/nouislider.min.css"> | ||
| 12 | <script src="static/nouislider.min.js"></script> | ||
| 9 | </head> | 13 | </head> |
| 10 | <body> | 14 | <body> |
| 11 | <form action="/" METHOD="POST"> | 15 | <div>Jahre: <div id="slider-container"><div id="year-slider" class="search_entry"></div></div> |
| 16 | <div id="main-form"><form action="/" METHOD="POST"> | ||
| 17 | {% set yrmin = rv.get('year_range_min', 0) | int %} | ||
| 18 | {% set yrmax = rv.get('year_range_max', convert.year_map | length - 1 ) | int %} | ||
| 19 | <label for="year-range-value-min">Ab Jahr</label> | ||
| 20 | <select id="year-range-value-min" name="year_range_min"> | ||
| 21 | {%- for year in convert.year_map -%} | ||
| 22 | <option value="{{loop.index - 1}}" {% if loop.index - 1 == yrmin %} selected="selected"{% endif %}>{{year}}</option> | ||
| 23 | {%- endfor -%} | ||
| 24 | </select> | ||
| 25 | <label for="year-range-value-max">Bis Jahr</label> | ||
| 26 | <select id="year-range-value-max" name="year_range_max"> | ||
| 27 | {%- for year in convert.year_map -%} | ||
| 28 | <option value="{{loop.index - 1}}" {% if loop.index - 1 == yrmax %} selected="selected"{% endif %}>{{year}}</option> | ||
| 29 | {%- endfor -%} | ||
| 30 | </select> | ||
| 31 | |||
| 32 | <!--p><b>Wir importieren momentan das neue Telefonbuch Herbst 2025. Wahrscheinlich wird die Suche solange nicht korrekt funktionieren.</b></p--> | ||
| 33 | |||
| 12 | {%- for field in range(1,5) -%} | 34 | {%- for field in range(1,5) -%} |
| 13 | <div class="search_entry"> | 35 | <div class="search_entry"> |
| 14 | <select name="search_{{ field }}_column"> | 36 | <select name="s{{ field }}_col"> |
| 15 | {% set column_search = request.form.get('search_'+(field|string)+'_string', '') %} | 37 | {% set column_search = rv.get('s'+(field|string)+'_val', '') %} |
| 16 | {% if column_search | length %} | 38 | {% if column_search | length %} |
| 17 | {% set column_val = request.form.get('search_'+(field|string)+'_column') %} | 39 | {% set column_val = rv.get('s'+(field|string)+'_col') %} |
| 18 | {% set operator_val = request.form.get('search_'+(field|string)+'_operator') %} | 40 | {% set operator_val = rv.get('s'+(field|string)+'_op') %} |
| 19 | {% set any_val = request.form.get('search_'+(field|string)+'_any') %} | 41 | {% set any_val = rv.get('s'+(field|string)+'_any') %} |
| 20 | {% else %} | 42 | {% else %} |
| 21 | {% set column_val = ['nachname', 'vorname', 'ort', 'rufnummer'][field-1] %} | 43 | {% set column_val = ['nachname', 'vorname', 'ort', 'rufnummer'][field-1] %} |
| 22 | {% set operator_val = ['equals', 'contains', 'equals', 'contains'][field-1] %} | 44 | {% set operator_val = ['equals', 'equals', 'equals', 'beginswith'][field-1] %} |
| 23 | {% set any_val = ['', '', 'on', ''][field-1] %} | 45 | {% set any_val = ['', '', 'on', ''][field-1] %} |
| 24 | {% endif %} | 46 | {% endif %} |
| 25 | {%- for column in [ ['vorname', 'Vorname'], ['nachname', 'Nachname'], ['zip', 'PLZ'], ['ort', 'Ort'], ['vorwahl', 'Vorwahl'], ['rufnummer', 'Rufnummer'], ['strasse', 'Straße'], ['hausnummer', 'Hausnummer'], ['zusaetze', 'Zusatz'], ['verweise', 'Verweise / Branche'], ['email', 'E-Mail'], ['web', 'Webseite'] ] -%} | 47 | {%- for column in [ ['vorname', 'Vorname'], ['nachname', 'Nachname'], ['zip', 'PLZ'], ['ort', 'Ort'], ['vorwahl', 'Vorwahl'], ['rufnummer', 'Rufnummer'], ['strasse', 'Straße'], ['hausnummer', 'Hausnummer'], ['zusaetze', 'Zusatz'], ['verweise', 'Verweise / Branche'], ['email', 'E-Mail'], ['web', 'Webseite'] ] -%} |
| 26 | <option value="{{ column[0] }}" {%- if column_val== column[0] -%}selected="selected"{%- endif -%}>{{ column[1] }}</option> | 48 | <option value="{{ column[0] }}" {%- if column_val== column[0] -%}selected="selected"{%- endif -%}>{{ column[1] }}</option> |
| 27 | {%- endfor -%} | 49 | {%- endfor -%} |
| 28 | </select> | 50 | </select> |
| 29 | <select name="search_{{ field }}_operator"> | 51 | <select name="s{{ field }}_op"> |
| 30 | {%- for operator in [ [ 'equals', 'equals'], ['beginswith', 'begins with'], ['contains', 'contains' ], ['equalsnot', 'equals not'], ['containsnot', 'contains not'] ] -%} | 52 | {%- for operator in [ [ 'equals', 'equals'], ['beginswith', 'begins with'], ['beginslike', 'begins like'], ['contains', 'contains' ], ['equalsnot', 'equals not'], ['containsnot', 'contains not'] ] -%} |
| 31 | <option value="{{ operator[0] }}" {%- if operator_val == operator[0] -%}selected="selected"{%- endif -%}>{{ operator[1] }}</option> | 53 | <option value="{{ operator[0] }}" {%- if operator_val == operator[0] -%}selected="selected"{%- endif -%}>{{ operator[1] }}</option> |
| 32 | {%- endfor -%} | 54 | {%- endfor -%} |
| 33 | </select> | 55 | </select> |
| 34 | <input type="checkbox" name="search_{{ field }}_any" {%- if any_val == 'on' -%}checked="{%- endif -%}">any</input> | 56 | <input type="checkbox" name="s{{ field }}_any" {%- if any_val == 'on' -%}checked="{%- endif -%}">any</input> |
| 35 | <input type="text" name="search_{{ field }}_string" value="{{ request.form.get('search_'+(field|string)+'_string', '') }}"> | 57 | <input type="text" name="s{{ field }}_val" value="{{ rv.get('s'+(field|string)+'_val', '') }}"> |
| 36 | </div> | 58 | </div> |
| 37 | {%- endfor -%} | 59 | {%- endfor -%} |
| 60 | <input type="checkbox" value="on" name="huge" id="huge" {%- if rv.get('huge', '') == "on" -%}checked{%- endif -%}> | ||
| 61 | <label for="huge">unlimited</label> | ||
| 38 | <input type="submit" value="Search"> | 62 | <input type="submit" value="Search"> |
| 39 | </form> | 63 | </form> |
| 40 | {% if rows | length > 0 -%}<h3>Found {{ rows | length }} matches.</h3>{% endif %} | 64 | <script> |
| 65 | var slider = document.getElementById('year-slider'); | ||
| 66 | var dropdownmin = document.getElementById('year-range-value-min'); | ||
| 67 | var dropdownmax = document.getElementById('year-range-value-max'); | ||
| 68 | noUiSlider.create(slider, { | ||
| 69 | start: [ {{ yrmin }}, {{ yrmax }} ], | ||
| 70 | connect: true, | ||
| 71 | step: 1, | ||
| 72 | range: { 'min': 0, 'max': {{ convert.year_map | length - 1}} }, | ||
| 73 | }); | ||
| 74 | var year_map = [ | ||
| 75 | {%- for year in convert.year_map -%} | ||
| 76 | '{{ year }}', | ||
| 77 | {%- endfor -%} | ||
| 78 | ]; | ||
| 79 | var year_range_display = document.getElementById('year-range-display'); | ||
| 80 | var year_range_value_min = document.getElementById('year-range-value-min'); | ||
| 81 | var year_range_value_max = document.getElementById('year-range-value-max'); | ||
| 82 | slider.noUiSlider.on('update', function (values, handle) { | ||
| 83 | year_range_value_min.value = Math.floor(values[0]); | ||
| 84 | year_range_value_max.value = Math.floor(values[1]); | ||
| 85 | }); | ||
| 86 | dropdownmin.onchange = function() { slider.noUiSlider.set( [this.value, null]); } | ||
| 87 | dropdownmax.onchange = function() { slider.noUiSlider.set( [null, this.value]); } | ||
| 88 | </script> | ||
| 89 | </div> | ||
| 90 | <h3>Found {{ rows | length }} matches for your <a href="{{ url_for(request.endpoint,**rv) }}">query</a>. <small>You may also try <a href="/facebook">the facebook search</a></small>.</h3> <!-- *dict(request.values)) }}">query</a>.</h3--> | ||
| 41 | {% set color = { 'value': 0 } %} | 91 | {% set color = { 'value': 0 } %} |
| 42 | <table> | 92 | <table> |
| 43 | <thead><td>flags</td><td>zip</td></thead> | 93 | <thead><td>flags</td><td>zip</td></thead> |
| @@ -47,7 +97,7 @@ | |||
| 47 | {% if ( r == 0 ) and ( color.update({ 'value': 1 - color.value }) ) %} {% endif %} | 97 | {% if ( r == 0 ) and ( color.update({ 'value': 1 - color.value }) ) %} {% endif %} |
| 48 | <tr class="color_{{ color.value }}"> | 98 | <tr class="color_{{ color.value }}"> |
| 49 | {%- if r == 0 -%} | 99 | {%- if r == 0 -%} |
| 50 | <td rowspan="{{span}}">{{ convert.bits_to_years(row[0]|int) }} : {{ convert.bits_to_years(row[1]|int) }} : {{ convert.bits_to_years(row[2]|int) }}</td> | 100 | <td rowspan="{{span}}">{{ convert.multirange_to_years(row[0]) }} : {{ convert.multirange_to_years(row[1]) }} : {{ convert.multirange_to_years(row[2]) }}</td> |
| 51 | {%- endif -%} | 101 | {%- endif -%} |
| 52 | {%- for c in range(3, 16) -%} | 102 | {%- for c in range(3, 16) -%} |
| 53 | <td>{{ row[c][r] or '' }}</td> | 103 | <td>{{ row[c][r] or '' }}</td> |
