From d3e455a401163abbb16b3757dca6e0981110e788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nico=20G=C3=B6rlich?= <73133626+koilebeit@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:37:17 +0100 Subject: [PATCH 1/2] Revert "fix timeline (#171)" (#173) This reverts commit 5f70da86a80c1a68dd8f6c11065967fdbab01cfc. --- _layouts/timeline_edtf.html | 32 +++++++++--------------- _plugins/jekyll_regex_match.rb | 30 ----------------------- _plugins/sort_edtf.rb | 45 +++------------------------------- 3 files changed, 15 insertions(+), 92 deletions(-) diff --git a/_layouts/timeline_edtf.html b/_layouts/timeline_edtf.html index 5a3efbc9..c1b19dc2 100644 --- a/_layouts/timeline_edtf.html +++ b/_layouts/timeline_edtf.html @@ -10,17 +10,16 @@ {% else %} {%- assign items = site.data[site.metadata] | where_exp: 'item', 'item.objectid and item.parentid == nil' -%} {% endif %} -{% assign regex = '[-]?[\dXu]{4,}' %} {%- assign items = items | where_exp: 'item', 'item[field]' -%} {%- assign raw-dates = items | map: field | compact | uniq -%} +{% assign regex = '[\dX]{4}' %} {%- capture clean-years -%}{% for date in raw-dates %}{{date | regex_match: regex | join: ';' }}{% unless forloop.last %};{% endunless %}{%- endfor -%}{%- endcapture -%} {%- assign uniqueYears = clean-years | remove: ' ' | replace: ';;', ';' | split: ';' | uniq | sort -%} -{% assign sorted_years = uniqueYears | sort_edtf %} {%- if site.data.theme['year-navigation'] -%} {%- assign navYears = site.data.theme['year-navigation'] | split: ';' -%} {%- elsif site.data.theme['year-nav-increment'] -%} {%- capture navYears -%} -{%- for i in sorted_years -%}{%- assign t = i | modulo: site.data.theme.year-nav-increment -%} +{%- for i in uniqueYears -%}{%- assign t = i | modulo: site.data.theme.year-nav-increment -%} {%- if t == 0 -%}{{ i }}{% unless forloop.last %};{% endunless %}{% endif %}{% endfor %}{%- endcapture -%} {%- assign navYears = navYears | split: ';' -%} {%- endif -%} @@ -38,13 +37,8 @@ {%- endif -%} @@ -52,25 +46,21 @@ {{ content }}

- {% assign first_year = sorted_years | first | split: ':' %} - {% assign last_year = sorted_years | last | split: ':' %} - {% if first_year.size == 2 and last_year.size == 2 %} - {{ first_year[0] }} – - {{ last_year[0] }} - {% endif %} + {{ uniqueYears | first }} + {{- uniqueYears | last -}} +

- {% for date in sorted_years %} - {% assign year = date | split: ':' %} - + {% for year in uniqueYears %} +
-

{{ year[0] }}

+

{{ year }}

- {%- assign inYear = items | filter_items_by_year: year[1], '[-]?[\dXu]{4,}' -%} + {%- assign inYear = items | where_exp: 'item', 'item[field] contains year' -%} {% for item in inYear %}
diff --git a/_plugins/jekyll_regex_match.rb b/_plugins/jekyll_regex_match.rb index b598cb00..24024758 100644 --- a/_plugins/jekyll_regex_match.rb +++ b/_plugins/jekyll_regex_match.rb @@ -20,36 +20,6 @@ def regex_match_once(input_str, regex_str) return nil end end - - def filter_items_by_year(items, year, regex_pattern = '[-]?[\dXu]{4,}') - raise ArgumentError, 'Regex pattern too complex' if regex_pattern.length > 50 - return [] unless items.is_a?(Array) && !year.nil? - begin - - # Clear cache if it grows too large - if defined?(@cache_size) && @cache_size > 1000 - items.each { |item| item.delete('cached_dates') } - @cache_size = 0 - end - - regex = Regexp.new(regex_pattern) - items.select do |item| - next false unless item.is_a?(Hash) && item['date'].is_a?(String) - - # Track cache size - @cache_size ||= 0 - @cache_size += 1 unless item['cached_dates'] - - dates = item['cached_dates'] ||= item['date'].scan(regex).map(&:to_s) - dates.include?(year) - end - rescue RegexpError => e - Jekyll.logger.error "RegexMatch:", "Invalid regex pattern: #{e.message}" - # Handle invalid regex pattern - [] - end - end - end end diff --git a/_plugins/sort_edtf.rb b/_plugins/sort_edtf.rb index e2e60737..b04774a1 100644 --- a/_plugins/sort_edtf.rb +++ b/_plugins/sort_edtf.rb @@ -1,47 +1,10 @@ module Jekyll - module SortEDTF - def sort_edtf(array_of_strings) - - # Remove any empty strings after stripping whitespace - valid_dates = array_of_strings.reject { |str| str.strip.empty? } - - # Parse each string into a hash with numeric, original, and display representations - parsed_dates = valid_dates.map do |str| - cleaned_str = str.gsub(/[Xu]/, '0') # Replace X/x with 0 for numeric comparison - - # Remove leading zeros for numeric value calculation - numeric_value = if cleaned_str.start_with?('-') - numeric_str = cleaned_str.sub(/^-0+/, '-') - else - numeric_str = cleaned_str.sub(/^0+/, '') - end - - # Validate that numeric_str is a valid integer - if numeric_str.match?(/^-?\d+$/) - numeric_value = numeric_str.to_i - else - raise ArgumentError, "Invalid date format: #{str}" + module SortEDTF + def sort_edtf(array_of_strings) + sorted = array_of_strings.map { |str| str.gsub('X', '0') } + sorted.sort_by { |str| str[/\d+/].to_i } end - - # Create a human-readable display format - # For display format, we use the original string, just without leading zeros - display_format = if str.start_with?('-') - "#{str[1..-1].sub(/^0+/, '')} v. Chr." # For negative, remove minus and leading zeros for display - else - str.sub(/^0+/, '') # Remove leading zeros for positive values - end - - # Return a hash with numeric, original, and display_format - { numeric: numeric_value, original: str, display_format: display_format } - end - - # Sort by the numeric representation - sorted_dates = parsed_dates.sort_by { |date| date[:numeric] } - - # Return an array of "display_format:original" strings - sorted_dates.map { |date| "#{date[:display_format]}:#{date[:original]}" } end - end end Liquid::Template.register_filter(Jekyll::SortEDTF) \ No newline at end of file From 797b95228ea3d9473b92ffa848baddd31a491c01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20M=C3=A4hr?= Date: Thu, 31 Oct 2024 14:49:07 +0100 Subject: [PATCH 2/2] =?UTF-8?q?add=20detailed=20description=20of=20researc?= =?UTF-8?q?h=20data=20types=20and=20interdisciplinary=E2=80=A6=20(#163)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add detailed description of research data types and interdisciplinary approach in index.md * feat: update index.md to enhance descriptions of historical research data and improve clarity --- pages/index.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pages/index.md b/pages/index.md index b757140b..3f259975 100644 --- a/pages/index.md +++ b/pages/index.md @@ -4,13 +4,15 @@ title: Auf der Forschungsdatenplattform von Stadt.Geschichte.Basel finden Sie na permalink: / --- -# Forschungsdatenplattform +# Quellen und historische Forschungsdaten der Stadtgeschichte {% include feature/alert.html text="Die Forschungsdatenplattform befindet sich noch in der Testphase. Wir arbeiten daran, die Sammlung zu erweitern und die Plattform zu verbessern. Wir freuen uns über Ihr Feedback und Ihre Anregungen. Schreiben Sie uns eine E-Mail." color="warning" %} -Diese öffentlich zugängliche Plattform dient der Bereitstellung von Quellen und historischen Forschungsdaten. In naher Zukunft werden Sie auf dieser Plattform eine umfangreiche Sammlung von Ressourcen zur Geschichte der Stadt Basel finden können. Sie bietet direkten Zugang zu nachnutzbaren Quellen und Daten, die aus verschiedenen Bänden stammen. Die sorgfältige Aufbereitung dieser Objekte ermöglicht es, Themen aus der Basler Geschichte aus verschiedenen Perspektiven zu erforschen – sei es auf einer Karte, entlang einer Zeitachse oder durch Inhalte, die mit Schlagworten versehen sind. Darüber hinaus werden wissenschaftliche Publikationen, die im Zusammenhang mit dem Forschungsprojekt stehen, sowie eine Bibliographie mit sämtlicher in den Bänden zitierter Literatur zur Verfügung gestellt. +Diese öffentlich zugängliche Plattform stellt Quellen und historische Forschungsdaten bereit. In Kürze wird sie eine umfangreiche Sammlung von Ressourcen zur Geschichte Basels enthalten. Sie ermöglicht direkten Zugang zu nachnutzbaren Quellen und Daten aus verschiedenen Bänden der [Stadtgeschichte](https://www.merianverlag.ch/buecher/stadt.geschichte.basel.html){:target="\_blank"}. Durch die sorgfältige Aufbereitung lassen sich Themen der Basler Geschichte aus verschiedenen Perspektiven erkunden – sei es über Karten, Zeitachsen oder Schlagwörter. Zudem werden wissenschaftliche Publikationen und eine Bibliographie der in den Bänden zitierten Literatur bereitgestellt. -Da die Plattform noch im Testbetrieb ist, werden kontinuierlich weitere Daten hinzugefügt, bis das Projekt Ende 2025 abgeschlossen wird. Wir laden Sie ein, die Plattform regelmässig zu besuchen, um die neuesten Updates zu entdecken, und ermutigen Sie, Fehler oder Unstimmigkeiten zu melden. Die Daten wurden auf der Gundlage des [Handbuchs zur Erstellung diskriminierungsfreier Metadaten für historische Quellen und Forschungsdaten](https://maehr.github.io/diskriminierungsfreie-metadaten/){:target="\_blank"} erstellt. +Unser breites Verständnis von Forschungsdaten umfasst nicht nur klassische Daten wie Statistiken, sondern auch narrative Quellen, historische Texte, Bilder, Karten und audiovisuelle Medien. Diese Vielfalt ermöglicht eine tiefere Auseinandersetzung mit den historischen Themen und fördert interdisziplinäre Forschung. + +Da sich die Plattform noch im Testbetrieb befindet, werden laufend weitere Daten ergänzt, bis das Projekt Ende 2025 abgeschlossen ist. Wir laden Sie ein, die Plattform regelmässig zu besuchen, um Updates zu entdecken, und bitten Sie, etwaige Fehler oder Unstimmigkeiten zu melden. Die Daten werden auf der Grundlage des [Handbuchs zur Erstellung diskriminierungsfreier Metadaten für historische Quellen und Forschungsdaten](https://maehr.github.io/diskriminierungsfreie-metadaten/){:target="\_blank"} aufbereitet. {% include index/carousel.html title="Daten aus der Sammlung" %}