{"id":10651,"date":"2025-11-04T21:57:29","date_gmt":"2025-11-04T20:57:29","guid":{"rendered":"https:\/\/my-ehealth.de\/?page_id=10651"},"modified":"2025-11-04T22:44:14","modified_gmt":"2025-11-04T21:44:14","slug":"statistik-tagebuch","status":"publish","type":"page","link":"https:\/\/my-ehealth.de\/?page_id=10651","title":{"rendered":"Statistik Tagebuch"},"content":{"rendered":"<h1 class=\"text-center mb-5\">Tagebuch Statistiken<\/h1>\r\n\r\n<br><br>\r\n<h3 class=\"mt-5 mb-4\">Welche \u00dcbungen habe ich gemacht?<\/h3>\r\n<script>var tspv2_69d97f0c8c3679_60011701_ChartData   = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c3679_60011701_ChartLabels = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c3679_60011701_ChartDates  = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c3679_60011701_ChartOptions= {\"legend_label\":\"\",\"background_color\":[],\"border_color\":[],\"fill\":false,\"tension\":0.1,\"borderwidth\":1,\"legend\":0,\"min\":0,\"max\":null,\"ylabels\":{},\"x_label\":\"\",\"y_label\":\"\",\"default_period\":\"aktuelle_woche\",\"available_periods\":{\"aktuelle_woche\":\"Aktuelle Woche\",\"aktueller_monat\":\"Aktueller Monat\",\"aktuelles_jahr\":\"Aktuelles Jahr\",\"letzte_7_tage\":\"Letzte 7 Tage\",\"letzte_14_tage\":\"Letzte 14 Tage\",\"letzte_30_tage\":\"Letzte 30 Tage\",\"letzte_60_tage\":\"Letzte 60 Tage\",\"letzte_90_tage\":\"Letzte 90 Tage\",\"letzte_6_monate\":\"Letzte 6 Monate\",\"letzte_12_monate\":\"Letzte 12 Monate\",\"woche\":\"Durchschnitt pro Woche\",\"monat\":\"Durchschnitt pro Monat\",\"jahr\":\"Durchschnitt pro Jahr\",\"individueller_zeitraum\":\"Individueller Zeitraum\"}};<\/script><script>\n\/\/ Function to initialize list type\nfunction tspv2InitListInstance(canvasId, chartData, chartLabels, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates; \/\/ Y-m-d Format f\u00fcr Vergleiche\n  var savedRanges = (window.tspv2CustomRange = window.tspv2CustomRange || {});\n  \n  function updateList(period) {\n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (!tbody) return;\n    \n    tbody.innerHTML = \"\";\n    \n    if (period === \"individueller_zeitraum\") {\n      var saved = (window.tspv2CustomRange && window.tspv2CustomRange[canvasId]) || null;\n      var labels = saved && Array.isArray(saved.labels) ? saved.labels : [];\n      var values = saved && Array.isArray(saved.data) ? saved.data : [];\n      var vonEl = document.getElementById(canvasId + \"_von\");\n      var bisEl = document.getElementById(canvasId + \"_bis\");\n      if (saved) {\n        if (vonEl && saved.s) vonEl.value = saved.s;\n        if (bisEl && saved.e) bisEl.value = saved.e;\n      }\n    } else {\n      var labels = lab[period] || [];\n      var values = seri[period] || [];\n    }\n    var hasData = labels.length > 0;\n    \n    if (hasData) {\n      for (var i = 0; i < labels.length; i++) {\n        var row = tbody.insertRow();\n        var cell1 = row.insertCell(0);\n        var cell2 = row.insertCell(1);\n        cell1.textContent = labels[i];\n        cell2.textContent = values[i];\n      }\n    }\n    \n    \/\/ Show\/hide data warning\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n  }\n  \n     \/\/ Initialize with currently selected period (fallback: default_period)\n   var initialSelect = document.getElementById(canvasId + \"_periode\");\n   var initialPeriod = initialSelect ? initialSelect.value : \"aktuelle_woche\";\n  updateList(initialPeriod);\n  var initialPick = document.getElementById(canvasId + \"_zeitraum_picker\");\n  if (initialPick) {\n    initialPick.style.display = (initialPeriod === \"individueller_zeitraum\") ? \"block\" : \"none\";\n  }\n  \n  \/\/ Dropdown & Picker-Listener\n  var sel  = document.getElementById(canvasId + \"_periode\"),\n      pick = document.getElementById(canvasId + \"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId + \"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId + \"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId + \"_von\"),\n      bis  = document.getElementById(canvasId + \"_bis\");\n  \n  if (sel) sel.addEventListener(\"change\", function(e){\n    var v = e.target.value;\n    if (v === \"individueller_zeitraum\") {\n      if (pick) pick.style.display = \"block\";\n      updateList(v);\n    } else {\n      if (pick) pick.style.display = \"none\";\n      updateList(v);\n    }\n  });\n  \n  if (btn) btn.addEventListener(\"click\", function(){\n    var s = von.value, e = bis.value;\n    if (!s || !e) { \n      if (warn) warn.textContent = \"Bitte beide Daten w\u00e4hlen!\"; \n      return; \n    }\n    if (new Date(s) > new Date(e)) { \n      if (warn) warn.textContent = \"Startdatum muss vor Enddatum liegen!\"; \n      return; \n    }\n    \n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (tbody) {\n      tbody.innerHTML = \"\";\n      \n      var nl = [], nw = [];\n      if (dat && dat[\"tage\"]) {\n        dat[\"tage\"].forEach(function(d, i){\n          var dt = new Date(d);\n          if (dt >= new Date(s) && dt <= new Date(e)) { \n            nl.push(lab[\"tage\"][i]); \n            nw.push(seri[\"tage\"][i]); \n          }\n        });\n      }\n      \/\/ Persist the chosen range for this tab\n      window.tspv2CustomRange = window.tspv2CustomRange || {};\n      window.tspv2CustomRange[canvasId] = { labels: nl.slice(), data: nw.slice(), s: s, e: e };\n      \n      if (nl.length > 0) {\n        for (var i = 0; i < nl.length; i++) {\n          var row = tbody.insertRow();\n          var cell1 = row.insertCell(0);\n          var cell2 = row.insertCell(1);\n          cell1.textContent = nl[i];\n          cell2.textContent = nw[i];\n        }\n      }\n      \n      \/\/ Show\/hide warnings\n      if (noDataWarn) {\n        if (nl.length === 0) {\n          noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n          noDataWarn.style.display = \"block\";\n          if (warn) warn.textContent = \"\";\n        } else {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n          if (warn) warn.textContent = \"\";\n        }\n      }\n    }\n  });\n}\n\nfunction tspv2InitChartInstance(canvasId, chartType, chartData, chartLabels, chartOptions, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates, \/\/ Y-m-d Format f\u00fcr Vergleiche\n      opts = chartOptions;\n  \n  \/\/ ZUERST pr\u00fcfen ob bereits ein Chart existiert und es zerst\u00f6ren\n  var canvas = document.getElementById(canvasId);\n  if (canvas) {\n    var existingChart = Chart.getChart(canvas);\n    if (existingChart) {\n      try {\n        existingChart.destroy();\n      } catch (e) {\n        console.warn(\"Existing chart destroy error:\", e);\n      }\n    }\n    if (canvas.chart) {\n      try {\n        canvas.chart.destroy();\n      } catch (e) {\n        console.warn(\"Canvas chart destroy error:\", e);\n      }\n      canvas.chart = null;\n    }\n  }\n  \n  var ctx = document.getElementById(canvasId).getContext(\"2d\");\n  var scaleOpts = {};\n  if (chartType===\"bar\"||chartType===\"line\") {\n    var sg=true;\n    scaleOpts = {\n      x: { \n        display:sg, \n        grid:{display:sg}, \n        ticks:{maxTicksLimit:10},\n        title: {\n          display: opts.x_label && opts.x_label.length > 0,\n          text: opts.x_label || \"\"\n        }\n      },\n      y: {\n        display:sg, \n        grid:{display:sg},\n        min: opts.min, \n        max: opts.max,\n        title: {\n          display: opts.y_label && opts.y_label.length > 0,\n          text: opts.y_label || \"\"\n        },\n        ticks: { \n          stepSize:1,\n          callback:function(v){return opts.ylabels[v]|| (Number.isInteger(v)?v:\"\");}\n        }\n      }\n    };\n  }\n  var chart = new Chart(ctx, {\n    type: chartType,\n    data: {\n      labels: lab[\"aktuelle_woche\"],\n      datasets: [{\n        label: opts.legend_label || null,\n        data: seri[\"aktuelle_woche\"],\n        backgroundColor: opts.background_color,\n        borderColor:     opts.border_color,\n        fill:            opts.fill,\n        tension:         opts.tension,\n        borderWidth:     opts.borderwidth,\n        pointBackgroundColor: opts.background_color,\n        pointBorderColor:     opts.border_color\n      }]\n    },\n    options: { responsive:true,\n      plugins:{ legend:{ display: opts.legend==1 } },\n      scales: scaleOpts\n    }\n  });\n\n  \/\/ Chart-Referenz speichern\n  ctx.canvas.chart = chart;\n\n  var sel  = document.getElementById(canvasId+\"_periode\"),\n      pick = document.getElementById(canvasId+\"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId+\"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId+\"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId+\"_von\"),\n      bis  = document.getElementById(canvasId+\"_bis\");\n\n  \/\/ Funktion zum Pr\u00fcfen und Anzeigen von Datenwarnungen\n  function checkAndShowDataWarning(period) {\n    var hasData = false;\n    if (period === \"individueller_zeitraum\") {\n      \/\/ Bei individuellem Zeitraum keine Warnung anzeigen - wird erst nach Button-Klick gepr\u00fcft\n      var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n      if (noDataWarn) {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n      return false;\n    } else {\n      hasData = lab[period] && lab[period].length > 0;\n    }\n    \n    \/\/ Warnung anzeigen\/verstecken\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n    \n    return hasData;\n  }\n\n  \/\/ Initiale Datenpr\u00fcfung\n  checkAndShowDataWarning(\"aktuelle_woche\");\n\n  if (sel) sel.addEventListener(\"change\", function(e){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var v=e.target.value;\n    if (v===\"individueller_zeitraum\") {\n      pick.style.display=\"block\"; \n      currentChart.data.labels=[]; \n      currentChart.data.datasets[0].data=[];\n      checkAndShowDataWarning(v);\n    } else {\n      pick.style.display=\"none\"; \n      currentChart.data.labels=lab[v]; \n      currentChart.data.datasets[0].data=seri[v];\n      checkAndShowDataWarning(v);\n    }\n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n  });\n\n  if (btn) btn.addEventListener(\"click\", function(){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var s=von.value, e=bis.value;\n    if (!s||!e){ warn.textContent=\"Bitte beide Daten w\u00e4hlen!\"; return; }\n    if (new Date(s)>new Date(e)){ warn.textContent=\"Startdatum muss vor Enddatum liegen!\"; return; }\n    var nl=[], nw=[];\n    if (dat && dat[\"tage\"]) {\n      dat[\"tage\"].forEach(function(d,i){\n        var dt=new Date(d);\n        if (dt>=new Date(s)&&dt<=new Date(e)){ nl.push(lab[\"tage\"][i]); nw.push(seri[\"tage\"][i]); }\n      });\n    }\n    currentChart.data.labels=nl; currentChart.data.datasets[0].data=nw; \n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n    \n    \/\/ Nur eine Warnung anzeigen - die allgemeine Datenwarnung verwenden\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (nl.length === 0) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      }\n    }\n  });\n}\n<\/script><div class='mb-2'><select id='tschart_69d97f0c8c366_periode' class='form-select form-select-sm' style='width:auto;display:inline-block;margin-right:10px;'><option value='aktuelle_woche' selected>Aktuelle Woche<\/option><option value='aktueller_monat'>Aktueller Monat<\/option><option value='aktuelles_jahr'>Aktuelles Jahr<\/option><option value='letzte_7_tage'>Letzte 7 Tage<\/option><option value='letzte_14_tage'>Letzte 14 Tage<\/option><option value='letzte_30_tage'>Letzte 30 Tage<\/option><option value='letzte_60_tage'>Letzte 60 Tage<\/option><option value='letzte_90_tage'>Letzte 90 Tage<\/option><option value='letzte_6_monate'>Letzte 6 Monate<\/option><option value='letzte_12_monate'>Letzte 12 Monate<\/option><option value='woche'>Durchschnitt pro Woche<\/option><option value='monat'>Durchschnitt pro Monat<\/option><option value='jahr'>Durchschnitt pro Jahr<\/option><option value='individueller_zeitraum'>Individueller Zeitraum<\/option><\/select><\/div><div id='tschart_69d97f0c8c366_zeitraum_picker' class='mb-2' style='display:none;'><div class='d-flex align-items-end gap-2 flex-wrap'><div><label class='form-label mb-0' for='tschart_69d97f0c8c366_von'>Von:<\/label><input type='date' id='tschart_69d97f0c8c366_von' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><div><label class='form-label mb-0' for='tschart_69d97f0c8c366_bis'>Bis:<\/label><input type='date' id='tschart_69d97f0c8c366_bis' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><button id='tschart_69d97f0c8c366_zeitraum_btn' class='btn btn-primary btn-sm'>Anzeigen<\/button><\/div><div id='tschart_69d97f0c8c366_zeitraum_picker_warn' class='text-danger mt-1' style='min-height:1.5em;'><\/div><\/div><div id='tschart_69d97f0c8c366_no_data_warn' class='text-warning mt-2' style='min-height:1.5em;display:none;'><\/div><div id='tschart_69d97f0c8c366_table_container' class='table-responsive'><table id='tschart_69d97f0c8c366_table' class='table table-striped table-hover'><thead><tr><th>Datum<\/th><th>\u00dcbungen<\/th><\/tr><\/thead><tbody id='tschart_69d97f0c8c366_table_body'><\/tbody><\/table><\/div><script>tspv2InitListInstance('tschart_69d97f0c8c366', tspv2_69d97f0c8c3679_60011701_ChartData, tspv2_69d97f0c8c3679_60011701_ChartLabels, tspv2_69d97f0c8c3679_60011701_ChartDates);<\/script>\r\n<br><br><br><br>\r\n<h3 class=\"mt-5 mb-4\">Wie hat das \u00dcben insgesamt f\u00fcr Dich geklappt?<\/h3>\r\n<ul class=\"nav nav-tabs\" id=\"tschart_tabs_69d97f0c8c51e_nav\" role=\"tablist\"><li class=\"nav-item\" role=\"presentation\"><button class=\"nav-link active\" id=\"tschart_tabs_69d97f0c8c51e_tab_0\" data-tab-target=\"tschart_tabs_69d97f0c8c51e_content_0\" type=\"button\" role=\"tab\" aria-controls=\"tschart_tabs_69d97f0c8c51e_content_0\" aria-selected=\"true\">Liniendiagramm<\/button><\/li><li class=\"nav-item\" role=\"presentation\"><button class=\"nav-link\" id=\"tschart_tabs_69d97f0c8c51e_tab_1\" data-tab-target=\"tschart_tabs_69d97f0c8c51e_content_1\" type=\"button\" role=\"tab\" aria-controls=\"tschart_tabs_69d97f0c8c51e_content_1\" aria-selected=\"false\">Liste<\/button><\/li><\/ul><div class=\"tab-content\" id=\"tschart_tabs_69d97f0c8c51e_content\"><div class=\"tab-pane fade show active\" id=\"tschart_tabs_69d97f0c8c51e_content_0\" role=\"tabpanel\" aria-labelledby=\"tschart_tabs_69d97f0c8c51e_tab_0\" style=\"padding: 0.5rem;\"><script>var tspv2c_69d97f0c8c51f4_82244701_ChartData   = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2c_69d97f0c8c51f4_82244701_ChartLabels = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2c_69d97f0c8c51f4_82244701_ChartDates  = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2c_69d97f0c8c51f4_82244701_ChartOptions= {\"legend_label\":\"\",\"background_color\":\"#007bff\",\"border_color\":\"#007bff\",\"fill\":false,\"tension\":0.1,\"borderwidth\":1,\"legend\":0,\"min\":0,\"max\":null,\"ylabels\":{},\"x_label\":\"\",\"y_label\":\"\",\"default_period\":\"aktuelle_woche\",\"available_periods\":{\"aktuelle_woche\":\"Aktuelle Woche\",\"aktueller_monat\":\"Aktueller Monat\",\"aktuelles_jahr\":\"Aktuelles Jahr\",\"letzte_7_tage\":\"Letzte 7 Tage\",\"letzte_14_tage\":\"Letzte 14 Tage\",\"letzte_30_tage\":\"Letzte 30 Tage\",\"letzte_60_tage\":\"Letzte 60 Tage\",\"letzte_90_tage\":\"Letzte 90 Tage\",\"letzte_6_monate\":\"Letzte 6 Monate\",\"letzte_12_monate\":\"Letzte 12 Monate\",\"woche\":\"Durchschnitt pro Woche\",\"monat\":\"Durchschnitt pro Monat\",\"jahr\":\"Durchschnitt pro Jahr\",\"individueller_zeitraum\":\"Individueller Zeitraum\"}};<\/script><div class='mb-2'><select id='tschart_tabs_69d97f0c8c51e_chart_0_periode' class='form-select form-select-sm' style='width:auto;display:inline-block;margin-right:10px;'><option value='aktuelle_woche' selected>Aktuelle Woche<\/option><option value='aktueller_monat'>Aktueller Monat<\/option><option value='aktuelles_jahr'>Aktuelles Jahr<\/option><option value='letzte_7_tage'>Letzte 7 Tage<\/option><option value='letzte_14_tage'>Letzte 14 Tage<\/option><option value='letzte_30_tage'>Letzte 30 Tage<\/option><option value='letzte_60_tage'>Letzte 60 Tage<\/option><option value='letzte_90_tage'>Letzte 90 Tage<\/option><option value='letzte_6_monate'>Letzte 6 Monate<\/option><option value='letzte_12_monate'>Letzte 12 Monate<\/option><option value='woche'>Durchschnitt pro Woche<\/option><option value='monat'>Durchschnitt pro Monat<\/option><option value='jahr'>Durchschnitt pro Jahr<\/option><option value='individueller_zeitraum'>Individueller Zeitraum<\/option><\/select><\/div><div id='tschart_tabs_69d97f0c8c51e_chart_0_zeitraum_picker' class='mb-2' style='display:none;'><div class='d-flex align-items-end gap-2 flex-wrap'><div><label class='form-label mb-0' for='tschart_tabs_69d97f0c8c51e_chart_0_von'>Von:<\/label><input type='date' id='tschart_tabs_69d97f0c8c51e_chart_0_von' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><div><label class='form-label mb-0' for='tschart_tabs_69d97f0c8c51e_chart_0_bis'>Bis:<\/label><input type='date' id='tschart_tabs_69d97f0c8c51e_chart_0_bis' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><button id='tschart_tabs_69d97f0c8c51e_chart_0_zeitraum_btn' class='btn btn-primary btn-sm'>Anzeigen<\/button><\/div><div id='tschart_tabs_69d97f0c8c51e_chart_0_zeitraum_picker_warn' class='text-danger mt-1' style='min-height:1.5em;'><\/div><\/div><div id='tschart_tabs_69d97f0c8c51e_chart_0_no_data_warn' class='text-warning mt-2' style='min-height:1.5em;display:none;'><\/div><canvas id='tschart_tabs_69d97f0c8c51e_chart_0'><\/canvas><\/div><div class=\"tab-pane fade\" id=\"tschart_tabs_69d97f0c8c51e_content_1\" role=\"tabpanel\" aria-labelledby=\"tschart_tabs_69d97f0c8c51e_tab_1\" style=\"padding: 0.5rem;\"><div class='mb-2'><select id='tschart_tabs_69d97f0c8c51e_chart_1_periode' class='form-select form-select-sm' style='width:auto;display:inline-block;margin-right:10px;'><option value='aktuelle_woche' selected>Aktuelle Woche<\/option><option value='aktueller_monat'>Aktueller Monat<\/option><option value='aktuelles_jahr'>Aktuelles Jahr<\/option><option value='letzte_7_tage'>Letzte 7 Tage<\/option><option value='letzte_14_tage'>Letzte 14 Tage<\/option><option value='letzte_30_tage'>Letzte 30 Tage<\/option><option value='letzte_60_tage'>Letzte 60 Tage<\/option><option value='letzte_90_tage'>Letzte 90 Tage<\/option><option value='letzte_6_monate'>Letzte 6 Monate<\/option><option value='letzte_12_monate'>Letzte 12 Monate<\/option><option value='woche'>Durchschnitt pro Woche<\/option><option value='monat'>Durchschnitt pro Monat<\/option><option value='jahr'>Durchschnitt pro Jahr<\/option><option value='individueller_zeitraum'>Individueller Zeitraum<\/option><\/select><\/div><div id='tschart_tabs_69d97f0c8c51e_chart_1_zeitraum_picker' class='mb-2' style='display:none;'><div class='d-flex align-items-end gap-2 flex-wrap'><div><label class='form-label mb-0' for='tschart_tabs_69d97f0c8c51e_chart_1_von'>Von:<\/label><input type='date' id='tschart_tabs_69d97f0c8c51e_chart_1_von' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><div><label class='form-label mb-0' for='tschart_tabs_69d97f0c8c51e_chart_1_bis'>Bis:<\/label><input type='date' id='tschart_tabs_69d97f0c8c51e_chart_1_bis' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><button id='tschart_tabs_69d97f0c8c51e_chart_1_zeitraum_btn' class='btn btn-primary btn-sm'>Anzeigen<\/button><\/div><div id='tschart_tabs_69d97f0c8c51e_chart_1_zeitraum_picker_warn' class='text-danger mt-1' style='min-height:1.5em;'><\/div><\/div><div id='tschart_tabs_69d97f0c8c51e_chart_1_no_data_warn' class='text-warning mt-2' style='min-height:1.5em;display:none;'><\/div><div id='tschart_tabs_69d97f0c8c51e_chart_1_table_container' class='table-responsive'><table id='tschart_tabs_69d97f0c8c51e_chart_1_table' class='table table-striped table-hover'><thead><tr><th>Datum<\/th><th>Wert<\/th><\/tr><\/thead><tbody id='tschart_tabs_69d97f0c8c51e_chart_1_table_body'><\/tbody><\/table><\/div><\/div><\/div><script>\n\/\/ Function to initialize list type\nfunction tspv2InitListInstance(canvasId, chartData, chartLabels, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates; \/\/ Y-m-d Format f\u00fcr Vergleiche\n  \n  function updateList(period) {\n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (!tbody) return;\n    \n    tbody.innerHTML = \"\";\n    \n    if (period === \"individueller_zeitraum\") {\n      \/\/ Handle individual time period - will be handled by button click\n      if (noDataWarn) {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n      return;\n    }\n    \n    var labels = lab[period] || [];\n    var values = seri[period] || [];\n    var hasData = labels.length > 0;\n    \n    if (hasData) {\n      for (var i = 0; i < labels.length; i++) {\n        var row = tbody.insertRow();\n        var cell1 = row.insertCell(0);\n        var cell2 = row.insertCell(1);\n        cell1.textContent = labels[i];\n        cell2.textContent = values[i];\n      }\n    }\n    \n    \/\/ Show\/hide data warning\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n  }\n  \n  \/\/ Initialize with current week\n  updateList(\"aktuelle_woche\");\n  \n  \/\/ Dropdown & Picker-Listener\n  var sel  = document.getElementById(canvasId + \"_periode\"),\n      pick = document.getElementById(canvasId + \"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId + \"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId + \"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId + \"_von\"),\n      bis  = document.getElementById(canvasId + \"_bis\");\n  \n  if (sel) sel.addEventListener(\"change\", function(e){\n    var v = e.target.value;\n    if (v === \"individueller_zeitraum\") {\n      if (pick) pick.style.display = \"block\";\n      updateList(v);\n    } else {\n      if (pick) pick.style.display = \"none\";\n      updateList(v);\n    }\n  });\n  \n  if (btn) btn.addEventListener(\"click\", function(){\n    var s = von.value, e = bis.value;\n    if (!s || !e) { \n      if (warn) warn.textContent = \"Bitte beide Daten w\u00e4hlen!\"; \n      return; \n    }\n    if (new Date(s) > new Date(e)) { \n      if (warn) warn.textContent = \"Startdatum muss vor Enddatum liegen!\"; \n      return; \n    }\n    \n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (tbody) {\n      tbody.innerHTML = \"\";\n      \n      var nl = [], nw = [];\n      if (dat && dat[\"tage\"]) {\n        dat[\"tage\"].forEach(function(d, i){\n          var dt = new Date(d);\n          if (dt >= new Date(s) && dt <= new Date(e)) { \n            nl.push(lab[\"tage\"][i]); \n            nw.push(seri[\"tage\"][i]); \n          }\n        });\n      }\n      \n      if (nl.length > 0) {\n        for (var i = 0; i < nl.length; i++) {\n          var row = tbody.insertRow();\n          var cell1 = row.insertCell(0);\n          var cell2 = row.insertCell(1);\n          cell1.textContent = nl[i];\n          cell2.textContent = nw[i];\n        }\n      }\n      \n      \/\/ Show\/hide warnings\n      if (noDataWarn) {\n        if (nl.length === 0) {\n          noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n          noDataWarn.style.display = \"block\";\n          if (warn) warn.textContent = \"\";\n        } else {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n          if (warn) warn.textContent = \"\";\n        }\n      }\n    }\n  });\n}\n\n\/\/ Function to initialize chart types (line, bar, etc.)\nfunction tspv2InitChartInstance(canvasId, chartType, chartData, chartLabels, chartOptions, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates, \/\/ Y-m-d Format f\u00fcr Vergleiche\n      opts = chartOptions;\n  \n  \/\/ ZUERST pr\u00fcfen ob bereits ein Chart existiert und es zerst\u00f6ren\n  var canvas = document.getElementById(canvasId);\n  if (canvas) {\n    var existingChart = Chart.getChart(canvas);\n    if (existingChart) {\n      try {\n        existingChart.destroy();\n      } catch (e) {\n        console.warn(\"Existing chart destroy error:\", e);\n      }\n    }\n    if (canvas.chart) {\n      try {\n        canvas.chart.destroy();\n      } catch (e) {\n        console.warn(\"Canvas chart destroy error:\", e);\n      }\n      canvas.chart = null;\n    }\n  }\n  \n  var ctx = document.getElementById(canvasId).getContext(\"2d\");\n  var scaleOpts = {};\n  if (chartType===\"bar\"||chartType===\"line\") {\n    var sg=true;\n    scaleOpts = {\n      x: { \n        display:sg, \n        grid:{display:sg}, \n        ticks:{maxTicksLimit:10},\n        title: {\n          display: opts.x_label && opts.x_label.length > 0,\n          text: opts.x_label || \"\"\n        }\n      },\n      y: {\n        display:sg, \n        grid:{display:sg},\n        min: opts.min, \n        max: opts.max,\n        title: {\n          display: opts.y_label && opts.y_label.length > 0,\n          text: opts.y_label || \"\"\n        },\n        ticks: { \n          stepSize:1,\n          callback:function(v){return opts.ylabels[v]|| (Number.isInteger(v)?v:\"\");}\n        }\n      }\n    };\n  }\n  var chart = new Chart(ctx, {\n    type: chartType,\n    data: {\n      labels: lab[\"aktuelle_woche\"],\n      datasets: [{\n        label: opts.legend_label || null,\n        data: seri[\"aktuelle_woche\"],\n        backgroundColor: opts.background_color,\n        borderColor:     opts.border_color,\n        fill:            opts.fill,\n        tension:         opts.tension,\n        borderWidth:     opts.borderwidth,\n        pointBackgroundColor: opts.background_color,\n        pointBorderColor:     opts.border_color\n      }]\n    },\n    options: { responsive:true,\n      plugins:{ legend:{ display: opts.legend==1 } },\n      scales: scaleOpts\n    }\n  });\n  \n  \/\/ Chart-Referenz speichern\n  ctx.canvas.chart = chart;\n  \n  \/\/ Event-Listener mit verz\u00f6gerter Initialisierung\n  setTimeout(function() {\n    var sel  = document.getElementById(canvasId+\"_periode\"),\n        pick = document.getElementById(canvasId+\"_zeitraum_picker\"),\n        warn = document.getElementById(canvasId+\"_zeitraum_picker_warn\"),\n        btn  = document.getElementById(canvasId+\"_zeitraum_btn\"),\n        von  = document.getElementById(canvasId+\"_von\"),\n        bis  = document.getElementById(canvasId+\"_bis\");\n  \n    \/\/ Funktion zum Pr\u00fcfen und Anzeigen von Datenwarnungen\n    function checkAndShowDataWarning(period) {\n      var hasData = false;\n      if (period === \"individueller_zeitraum\") {\n        \/\/ Bei individuellem Zeitraum keine Warnung anzeigen - wird erst nach Button-Klick gepr\u00fcft\n        var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n        if (noDataWarn) {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n        }\n        return false;\n      } else {\n        hasData = lab[period] && lab[period].length > 0;\n      }\n      \n      \/\/ Warnung anzeigen\/verstecken\n      var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n      if (noDataWarn) {\n        if (!hasData) {\n          noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n          noDataWarn.style.display = \"block\";\n        } else {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n        }\n      }\n      \n      return hasData;\n    }\n  \n    \/\/ Initial state based on current select value (respect saved custom range)\n    var currentSelect = document.getElementById(canvasId+\"_periode\");\n    var currentPeriod = currentSelect ? currentSelect.value : opts.default_period || \"aktuelle_woche\";\n    var chartCanvas = document.getElementById(canvasId);\n    var currentChart = (chartCanvas && Chart.getChart(chartCanvas)) || (chartCanvas ? chartCanvas.chart : null);\n    if (currentPeriod === \"individueller_zeitraum\") {\n      if (pick) pick.style.display = \"block\";\n      var savedInit = (window.tspv2CustomRange && window.tspv2CustomRange[canvasId]) || null;\n      if (currentChart) {\n        currentChart.data.labels = savedInit && Array.isArray(savedInit.labels) ? savedInit.labels : [];\n        currentChart.data.datasets[0].data = savedInit && Array.isArray(savedInit.data) ? savedInit.data : [];\n      }\n      \/\/ restore inputs\n      var vonEl0 = document.getElementById(canvasId+\"_von\");\n      var bisEl0 = document.getElementById(canvasId+\"_bis\");\n      if (savedInit) {\n        if (vonEl0 && savedInit.s) vonEl0.value = savedInit.s;\n        if (bisEl0 && savedInit.e) bisEl0.value = savedInit.e;\n      }\n    } else {\n      if (pick) pick.style.display = \"none\";\n      if (currentChart) {\n        currentChart.data.labels = lab[currentPeriod] || [];\n        currentChart.data.datasets[0].data = seri[currentPeriod] || [];\n      }\n    }\n    checkAndShowDataWarning(currentPeriod);\n    try { if (currentChart) currentChart.update(\"none\"); } catch (e) { console.warn(\"Chart initial update failed:\", e); }\n  \n    \/\/ Dropdown Event-Listener\n    if (sel && !sel.hasAttribute(\"data-listener-attached\")) {\n      sel.setAttribute(\"data-listener-attached\", \"true\");\n      sel.addEventListener(\"change\", function(e){\n        var canvas = document.getElementById(canvasId);\n        var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n        if (!currentChart) { return; }\n        var v=e.target.value;\n        if (v===\"individueller_zeitraum\") {\n          if (pick) pick.style.display=\"block\"; \n          var saved = (window.tspv2CustomRange && window.tspv2CustomRange[canvasId]) || null;\n          currentChart.data.labels = saved && Array.isArray(saved.labels) ? saved.labels : [];\n          currentChart.data.datasets[0].data = saved && Array.isArray(saved.data) ? saved.data : [];\n          \/\/ Restore inputs if saved\n          if (saved) {\n            if (von) von.value = saved.s || \"\";\n            if (bis) bis.value = saved.e || \"\";\n          }\n          checkAndShowDataWarning(v);\n        } else {\n          if (pick) pick.style.display=\"none\"; \n          currentChart.data.labels=lab[v]; \n          currentChart.data.datasets[0].data=seri[v];\n          checkAndShowDataWarning(v);\n        }\n        try {\n          currentChart.update(\"none\"); \/\/ \"none\" verhindert Animation und reduziert Event-Probleme\n        } catch (e) {\n          console.warn(\"Chart update failed:\", e);\n        }\n      });\n    }\n  \n    \/\/ Button Event-Listener\n    if (btn && !btn.hasAttribute(\"data-listener-attached\")) {\n      btn.setAttribute(\"data-listener-attached\", \"true\");\n      btn.addEventListener(\"click\", function(){\n        var canvas = document.getElementById(canvasId);\n        var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n        if (!currentChart) { return; }\n        var s=von.value, e=bis.value;\n        if (!s||!e){ if (warn) warn.textContent=\"Bitte beide Daten w\u00e4hlen!\"; return; }\n        if (new Date(s)>new Date(e)){ if (warn) warn.textContent=\"Startdatum muss vor Enddatum liegen!\"; return; }\n        var nl=[], nw=[];\n        if (dat && dat[\"tage\"]) {\n          dat[\"tage\"].forEach(function(d,i){\n            var dt=new Date(d);\n            if (dt>=new Date(s)&&dt<=new Date(e)){ nl.push(lab[\"tage\"][i]); nw.push(seri[\"tage\"][i]); }\n          });\n        }\n        currentChart.data.labels=nl; currentChart.data.datasets[0].data=nw; \n        \/\/ Persist range for this tab\n        window.tspv2CustomRange = window.tspv2CustomRange || {};\n        window.tspv2CustomRange[canvasId] = { labels: nl.slice(), data: nw.slice(), s: s, e: e };\n        try {\n          currentChart.update(\"none\"); \/\/ \"none\" verhindert Animation und reduziert Event-Probleme\n        } catch (e) {\n          console.warn(\"Chart update failed:\", e);\n        }\n        \n        \/\/ Nur eine Warnung anzeigen - die allgemeine Datenwarnung verwenden\n        var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n        if (noDataWarn) {\n          if (nl.length === 0) {\n            noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n            noDataWarn.style.display = \"block\";\n            if (warn) warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n          } else {\n            noDataWarn.textContent = \"\";\n            noDataWarn.style.display = \"none\";\n            if (warn) warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n          }\n        }\n      });\n    }\n  }, 100); \/\/ 100ms Verz\u00f6gerung f\u00fcr DOM-Bereitschaft\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function(){\n  var containerId = \"tschart_tabs_69d97f0c8c51e\";\n  var types = [\"line\",\"list\"];\n  var dataVarData = tspv2c_69d97f0c8c51f4_82244701_ChartData;\n  var dataVarLabels = tspv2c_69d97f0c8c51f4_82244701_ChartLabels;\n  var dataVarDates = tspv2c_69d97f0c8c51f4_82244701_ChartDates;\n  var dataVarOptions = tspv2c_69d97f0c8c51f4_82244701_ChartOptions;\n  \n  \/\/ Erstes Chart initialisieren\n  setTimeout(function() {\n    if (types[0] === \"list\") {\n      tspv2InitListInstance(containerId + \"_chart_0\", dataVarData, dataVarLabels, dataVarDates);\n    } else {\n      tspv2InitChartInstance(containerId + \"_chart_0\", types[0], dataVarData, dataVarLabels, dataVarOptions, dataVarDates);\n    }\n  }, 100);\n  \n     \/\/ Tab-Funktionalit\u00e4t mit Bootstrap-Style\n   var tabContainer = document.getElementById(containerId + \"_nav\");\n   if (tabContainer) {\n     tabContainer.addEventListener(\"click\", function(e) {\n       if (e.target && e.target.classList.contains(\"nav-link\")) {\n         e.preventDefault();\n         \n         \/\/ Pr\u00fcfen ob der Tab bereits aktiv ist\n         if (e.target.classList.contains(\"active\")) {\n           return; \/\/ Tab ist bereits aktiv, nichts tun\n         }\n         \n         var targetId = e.target.getAttribute(\"data-tab-target\");\n         if (targetId) {\n           var chartIndex = targetId.match(\/_content_(\\d+)\/);\n           if (chartIndex && chartIndex[1]) {\n             var chartId = containerId + \"_chart_\" + chartIndex[1];\n             var tabIndex = parseInt(chartIndex[1]);\n             \n             \/\/ ZUERST alle bestehenden Charts zerst\u00f6ren (vor Tab-Wechsel!)\n             var allCanvases = document.querySelectorAll(\"#\" + containerId + \" canvas\");\n             allCanvases.forEach(function(canvas) {\n               \/\/ Chart aus Registry entfernen\n               var existingChart = Chart.getChart(canvas);\n               if (existingChart) {\n                 try {\n                   existingChart.destroy();\n                 } catch (e) {\n                   console.warn(\"Registry chart destroy error:\", e);\n                 }\n               }\n               \/\/ Chart-Referenz l\u00f6schen\n               if (canvas.chart) {\n                 try {\n                   canvas.chart.destroy();\n                 } catch (e) {\n                   console.warn(\"Chart destroy error:\", e);\n                 }\n                 canvas.chart = null;\n               }\n               \/\/ Zus\u00e4tzlich: Alle Chart.js Instanzen mit dieser Canvas-ID zerst\u00f6ren\n               var chartId = canvas.id;\n               if (chartId) {\n                 var chartInstance = Chart.getChart(chartId);\n                 if (chartInstance) {\n                   try {\n                     chartInstance.destroy();\n                   } catch (e) {\n                     console.warn(\"Chart ID destroy error:\", e);\n                   }\n                 }\n               }\n             });\n             \n             \/\/ Bootstrap-Style Tab-Wechsel\n             var allTabs = document.querySelectorAll(\"#\" + containerId + \"_content .tab-pane\");\n             var allTabButtons = document.querySelectorAll(\"#\" + containerId + \"_nav .nav-link\");\n             \n             \/\/ Alle Tabs ausblenden\n             allTabs.forEach(function(tab) {\n               tab.classList.remove(\"show\", \"active\");\n             });\n             \n             \/\/ Alle Tab-Buttons deaktivieren\n             allTabButtons.forEach(function(btn) {\n               btn.classList.remove(\"active\");\n               btn.setAttribute(\"aria-selected\", \"false\");\n             });\n             \n             \/\/ Gew\u00e4hlten Tab anzeigen\n             var targetTab = document.getElementById(targetId);\n             if (targetTab) {\n               targetTab.classList.add(\"show\", \"active\");\n             }\n             \n             \/\/ Tab-Button aktivieren\n             e.target.classList.add(\"active\");\n             e.target.setAttribute(\"aria-selected\", \"true\");\n             \n             \/\/ Chart initialisieren wenn noch nicht initialisiert\n             setTimeout(function() {\n               if (types[tabIndex] === \"list\") {\n                 \/\/ List ohne Canvas initialisieren\n                 tspv2InitListInstance(chartId, dataVarData, dataVarLabels, dataVarDates);\n               } else {\n                 var canvas = document.getElementById(chartId);\n                 if (canvas) {\n                   \/\/ Neues Chart erstellen (Canvas ist bereits sauber)\n                   tspv2InitChartInstance(chartId, types[tabIndex], dataVarData, dataVarLabels, dataVarOptions, dataVarDates);\n                 }\n               }\n               \/\/ Auswahl des eigenen Tabs erzwingen\n               var selEl = document.getElementById(chartId + \"_periode\");\n               if (selEl) {\n                 try { selEl.dispatchEvent(new Event(\"change\")); } catch (e) {}\n               }\n             }, 300);\n           }\n         }\n       }\n     });\n   }\n});\n<\/script>\r\n<br><br><br><br>\r\n<h3 class=\"mt-5 mb-4\">Sind Dir dabei belastende oder negative Gedanken gekommen? z.B. &#8222;Das klappt nie.&#8220; oder &#8222;Ich bin Schuld.&#8220;<\/h3>\r\n<script>var tspv2_69d97f0c8c6ea8_20035419_ChartData   = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c6ea8_20035419_ChartLabels = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c6ea8_20035419_ChartDates  = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c6ea8_20035419_ChartOptions= {\"legend_label\":\"\",\"background_color\":[],\"border_color\":[],\"fill\":false,\"tension\":0.1,\"borderwidth\":1,\"legend\":0,\"min\":0,\"max\":null,\"ylabels\":{},\"x_label\":\"\",\"y_label\":\"\",\"default_period\":\"aktuelle_woche\",\"available_periods\":{\"aktuelle_woche\":\"Aktuelle Woche\",\"aktueller_monat\":\"Aktueller Monat\",\"aktuelles_jahr\":\"Aktuelles Jahr\",\"letzte_7_tage\":\"Letzte 7 Tage\",\"letzte_14_tage\":\"Letzte 14 Tage\",\"letzte_30_tage\":\"Letzte 30 Tage\",\"letzte_60_tage\":\"Letzte 60 Tage\",\"letzte_90_tage\":\"Letzte 90 Tage\",\"letzte_6_monate\":\"Letzte 6 Monate\",\"letzte_12_monate\":\"Letzte 12 Monate\",\"woche\":\"Durchschnitt pro Woche\",\"monat\":\"Durchschnitt pro Monat\",\"jahr\":\"Durchschnitt pro Jahr\",\"individueller_zeitraum\":\"Individueller Zeitraum\"}};<\/script><script>\n\/\/ Function to initialize list type\nfunction tspv2InitListInstance(canvasId, chartData, chartLabels, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates; \/\/ Y-m-d Format f\u00fcr Vergleiche\n  var savedRanges = (window.tspv2CustomRange = window.tspv2CustomRange || {});\n  \n  function updateList(period) {\n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (!tbody) return;\n    \n    tbody.innerHTML = \"\";\n    \n    if (period === \"individueller_zeitraum\") {\n      var saved = (window.tspv2CustomRange && window.tspv2CustomRange[canvasId]) || null;\n      var labels = saved && Array.isArray(saved.labels) ? saved.labels : [];\n      var values = saved && Array.isArray(saved.data) ? saved.data : [];\n      var vonEl = document.getElementById(canvasId + \"_von\");\n      var bisEl = document.getElementById(canvasId + \"_bis\");\n      if (saved) {\n        if (vonEl && saved.s) vonEl.value = saved.s;\n        if (bisEl && saved.e) bisEl.value = saved.e;\n      }\n    } else {\n      var labels = lab[period] || [];\n      var values = seri[period] || [];\n    }\n    var hasData = labels.length > 0;\n    \n    if (hasData) {\n      for (var i = 0; i < labels.length; i++) {\n        var row = tbody.insertRow();\n        var cell1 = row.insertCell(0);\n        var cell2 = row.insertCell(1);\n        cell1.textContent = labels[i];\n        cell2.textContent = values[i];\n      }\n    }\n    \n    \/\/ Show\/hide data warning\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n  }\n  \n     \/\/ Initialize with currently selected period (fallback: default_period)\n   var initialSelect = document.getElementById(canvasId + \"_periode\");\n   var initialPeriod = initialSelect ? initialSelect.value : \"aktuelle_woche\";\n  updateList(initialPeriod);\n  var initialPick = document.getElementById(canvasId + \"_zeitraum_picker\");\n  if (initialPick) {\n    initialPick.style.display = (initialPeriod === \"individueller_zeitraum\") ? \"block\" : \"none\";\n  }\n  \n  \/\/ Dropdown & Picker-Listener\n  var sel  = document.getElementById(canvasId + \"_periode\"),\n      pick = document.getElementById(canvasId + \"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId + \"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId + \"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId + \"_von\"),\n      bis  = document.getElementById(canvasId + \"_bis\");\n  \n  if (sel) sel.addEventListener(\"change\", function(e){\n    var v = e.target.value;\n    if (v === \"individueller_zeitraum\") {\n      if (pick) pick.style.display = \"block\";\n      updateList(v);\n    } else {\n      if (pick) pick.style.display = \"none\";\n      updateList(v);\n    }\n  });\n  \n  if (btn) btn.addEventListener(\"click\", function(){\n    var s = von.value, e = bis.value;\n    if (!s || !e) { \n      if (warn) warn.textContent = \"Bitte beide Daten w\u00e4hlen!\"; \n      return; \n    }\n    if (new Date(s) > new Date(e)) { \n      if (warn) warn.textContent = \"Startdatum muss vor Enddatum liegen!\"; \n      return; \n    }\n    \n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (tbody) {\n      tbody.innerHTML = \"\";\n      \n      var nl = [], nw = [];\n      if (dat && dat[\"tage\"]) {\n        dat[\"tage\"].forEach(function(d, i){\n          var dt = new Date(d);\n          if (dt >= new Date(s) && dt <= new Date(e)) { \n            nl.push(lab[\"tage\"][i]); \n            nw.push(seri[\"tage\"][i]); \n          }\n        });\n      }\n      \/\/ Persist the chosen range for this tab\n      window.tspv2CustomRange = window.tspv2CustomRange || {};\n      window.tspv2CustomRange[canvasId] = { labels: nl.slice(), data: nw.slice(), s: s, e: e };\n      \n      if (nl.length > 0) {\n        for (var i = 0; i < nl.length; i++) {\n          var row = tbody.insertRow();\n          var cell1 = row.insertCell(0);\n          var cell2 = row.insertCell(1);\n          cell1.textContent = nl[i];\n          cell2.textContent = nw[i];\n        }\n      }\n      \n      \/\/ Show\/hide warnings\n      if (noDataWarn) {\n        if (nl.length === 0) {\n          noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n          noDataWarn.style.display = \"block\";\n          if (warn) warn.textContent = \"\";\n        } else {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n          if (warn) warn.textContent = \"\";\n        }\n      }\n    }\n  });\n}\n\nfunction tspv2InitChartInstance(canvasId, chartType, chartData, chartLabels, chartOptions, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates, \/\/ Y-m-d Format f\u00fcr Vergleiche\n      opts = chartOptions;\n  \n  \/\/ ZUERST pr\u00fcfen ob bereits ein Chart existiert und es zerst\u00f6ren\n  var canvas = document.getElementById(canvasId);\n  if (canvas) {\n    var existingChart = Chart.getChart(canvas);\n    if (existingChart) {\n      try {\n        existingChart.destroy();\n      } catch (e) {\n        console.warn(\"Existing chart destroy error:\", e);\n      }\n    }\n    if (canvas.chart) {\n      try {\n        canvas.chart.destroy();\n      } catch (e) {\n        console.warn(\"Canvas chart destroy error:\", e);\n      }\n      canvas.chart = null;\n    }\n  }\n  \n  var ctx = document.getElementById(canvasId).getContext(\"2d\");\n  var scaleOpts = {};\n  if (chartType===\"bar\"||chartType===\"line\") {\n    var sg=true;\n    scaleOpts = {\n      x: { \n        display:sg, \n        grid:{display:sg}, \n        ticks:{maxTicksLimit:10},\n        title: {\n          display: opts.x_label && opts.x_label.length > 0,\n          text: opts.x_label || \"\"\n        }\n      },\n      y: {\n        display:sg, \n        grid:{display:sg},\n        min: opts.min, \n        max: opts.max,\n        title: {\n          display: opts.y_label && opts.y_label.length > 0,\n          text: opts.y_label || \"\"\n        },\n        ticks: { \n          stepSize:1,\n          callback:function(v){return opts.ylabels[v]|| (Number.isInteger(v)?v:\"\");}\n        }\n      }\n    };\n  }\n  var chart = new Chart(ctx, {\n    type: chartType,\n    data: {\n      labels: lab[\"aktuelle_woche\"],\n      datasets: [{\n        label: opts.legend_label || null,\n        data: seri[\"aktuelle_woche\"],\n        backgroundColor: opts.background_color,\n        borderColor:     opts.border_color,\n        fill:            opts.fill,\n        tension:         opts.tension,\n        borderWidth:     opts.borderwidth,\n        pointBackgroundColor: opts.background_color,\n        pointBorderColor:     opts.border_color\n      }]\n    },\n    options: { responsive:true,\n      plugins:{ legend:{ display: opts.legend==1 } },\n      scales: scaleOpts\n    }\n  });\n\n  \/\/ Chart-Referenz speichern\n  ctx.canvas.chart = chart;\n\n  var sel  = document.getElementById(canvasId+\"_periode\"),\n      pick = document.getElementById(canvasId+\"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId+\"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId+\"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId+\"_von\"),\n      bis  = document.getElementById(canvasId+\"_bis\");\n\n  \/\/ Funktion zum Pr\u00fcfen und Anzeigen von Datenwarnungen\n  function checkAndShowDataWarning(period) {\n    var hasData = false;\n    if (period === \"individueller_zeitraum\") {\n      \/\/ Bei individuellem Zeitraum keine Warnung anzeigen - wird erst nach Button-Klick gepr\u00fcft\n      var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n      if (noDataWarn) {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n      return false;\n    } else {\n      hasData = lab[period] && lab[period].length > 0;\n    }\n    \n    \/\/ Warnung anzeigen\/verstecken\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n    \n    return hasData;\n  }\n\n  \/\/ Initiale Datenpr\u00fcfung\n  checkAndShowDataWarning(\"aktuelle_woche\");\n\n  if (sel) sel.addEventListener(\"change\", function(e){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var v=e.target.value;\n    if (v===\"individueller_zeitraum\") {\n      pick.style.display=\"block\"; \n      currentChart.data.labels=[]; \n      currentChart.data.datasets[0].data=[];\n      checkAndShowDataWarning(v);\n    } else {\n      pick.style.display=\"none\"; \n      currentChart.data.labels=lab[v]; \n      currentChart.data.datasets[0].data=seri[v];\n      checkAndShowDataWarning(v);\n    }\n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n  });\n\n  if (btn) btn.addEventListener(\"click\", function(){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var s=von.value, e=bis.value;\n    if (!s||!e){ warn.textContent=\"Bitte beide Daten w\u00e4hlen!\"; return; }\n    if (new Date(s)>new Date(e)){ warn.textContent=\"Startdatum muss vor Enddatum liegen!\"; return; }\n    var nl=[], nw=[];\n    if (dat && dat[\"tage\"]) {\n      dat[\"tage\"].forEach(function(d,i){\n        var dt=new Date(d);\n        if (dt>=new Date(s)&&dt<=new Date(e)){ nl.push(lab[\"tage\"][i]); nw.push(seri[\"tage\"][i]); }\n      });\n    }\n    currentChart.data.labels=nl; currentChart.data.datasets[0].data=nw; \n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n    \n    \/\/ Nur eine Warnung anzeigen - die allgemeine Datenwarnung verwenden\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (nl.length === 0) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      }\n    }\n  });\n}\n<\/script><div class='mb-2'><select id='tschart_69d97f0c8c6e9_periode' class='form-select form-select-sm' style='width:auto;display:inline-block;margin-right:10px;'><option value='aktuelle_woche' selected>Aktuelle Woche<\/option><option value='aktueller_monat'>Aktueller Monat<\/option><option value='aktuelles_jahr'>Aktuelles Jahr<\/option><option value='letzte_7_tage'>Letzte 7 Tage<\/option><option value='letzte_14_tage'>Letzte 14 Tage<\/option><option value='letzte_30_tage'>Letzte 30 Tage<\/option><option value='letzte_60_tage'>Letzte 60 Tage<\/option><option value='letzte_90_tage'>Letzte 90 Tage<\/option><option value='letzte_6_monate'>Letzte 6 Monate<\/option><option value='letzte_12_monate'>Letzte 12 Monate<\/option><option value='woche'>Durchschnitt pro Woche<\/option><option value='monat'>Durchschnitt pro Monat<\/option><option value='jahr'>Durchschnitt pro Jahr<\/option><option value='individueller_zeitraum'>Individueller Zeitraum<\/option><\/select><\/div><div id='tschart_69d97f0c8c6e9_zeitraum_picker' class='mb-2' style='display:none;'><div class='d-flex align-items-end gap-2 flex-wrap'><div><label class='form-label mb-0' for='tschart_69d97f0c8c6e9_von'>Von:<\/label><input type='date' id='tschart_69d97f0c8c6e9_von' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><div><label class='form-label mb-0' for='tschart_69d97f0c8c6e9_bis'>Bis:<\/label><input type='date' id='tschart_69d97f0c8c6e9_bis' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><button id='tschart_69d97f0c8c6e9_zeitraum_btn' class='btn btn-primary btn-sm'>Anzeigen<\/button><\/div><div id='tschart_69d97f0c8c6e9_zeitraum_picker_warn' class='text-danger mt-1' style='min-height:1.5em;'><\/div><\/div><div id='tschart_69d97f0c8c6e9_no_data_warn' class='text-warning mt-2' style='min-height:1.5em;display:none;'><\/div><div id='tschart_69d97f0c8c6e9_table_container' class='table-responsive'><table id='tschart_69d97f0c8c6e9_table' class='table table-striped table-hover'><thead><tr><th>Datum<\/th><th>Wert<\/th><\/tr><\/thead><tbody id='tschart_69d97f0c8c6e9_table_body'><\/tbody><\/table><\/div><script>tspv2InitListInstance('tschart_69d97f0c8c6e9', tspv2_69d97f0c8c6ea8_20035419_ChartData, tspv2_69d97f0c8c6ea8_20035419_ChartLabels, tspv2_69d97f0c8c6ea8_20035419_ChartDates);<\/script>\r\n<br><br><br><br>\r\n<h3 class=\"mt-5 mb-4\">Meine Gedanken<\/h3>\r\n<script>var tspv2_69d97f0c8c8583_23066602_ChartData   = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c8583_23066602_ChartLabels = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c8583_23066602_ChartDates  = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c8583_23066602_ChartOptions= {\"legend_label\":\"\",\"background_color\":[],\"border_color\":[],\"fill\":false,\"tension\":0.1,\"borderwidth\":1,\"legend\":0,\"min\":0,\"max\":null,\"ylabels\":{},\"x_label\":\"\",\"y_label\":\"\",\"default_period\":\"aktuelle_woche\",\"available_periods\":{\"aktuelle_woche\":\"Aktuelle Woche\",\"aktueller_monat\":\"Aktueller Monat\",\"aktuelles_jahr\":\"Aktuelles Jahr\",\"letzte_7_tage\":\"Letzte 7 Tage\",\"letzte_14_tage\":\"Letzte 14 Tage\",\"letzte_30_tage\":\"Letzte 30 Tage\",\"letzte_60_tage\":\"Letzte 60 Tage\",\"letzte_90_tage\":\"Letzte 90 Tage\",\"letzte_6_monate\":\"Letzte 6 Monate\",\"letzte_12_monate\":\"Letzte 12 Monate\",\"woche\":\"Durchschnitt pro Woche\",\"monat\":\"Durchschnitt pro Monat\",\"jahr\":\"Durchschnitt pro Jahr\",\"individueller_zeitraum\":\"Individueller Zeitraum\"}};<\/script><script>\n\/\/ Function to initialize list type\nfunction tspv2InitListInstance(canvasId, chartData, chartLabels, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates; \/\/ Y-m-d Format f\u00fcr Vergleiche\n  var savedRanges = (window.tspv2CustomRange = window.tspv2CustomRange || {});\n  \n  function updateList(period) {\n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (!tbody) return;\n    \n    tbody.innerHTML = \"\";\n    \n    if (period === \"individueller_zeitraum\") {\n      var saved = (window.tspv2CustomRange && window.tspv2CustomRange[canvasId]) || null;\n      var labels = saved && Array.isArray(saved.labels) ? saved.labels : [];\n      var values = saved && Array.isArray(saved.data) ? saved.data : [];\n      var vonEl = document.getElementById(canvasId + \"_von\");\n      var bisEl = document.getElementById(canvasId + \"_bis\");\n      if (saved) {\n        if (vonEl && saved.s) vonEl.value = saved.s;\n        if (bisEl && saved.e) bisEl.value = saved.e;\n      }\n    } else {\n      var labels = lab[period] || [];\n      var values = seri[period] || [];\n    }\n    var hasData = labels.length > 0;\n    \n    if (hasData) {\n      for (var i = 0; i < labels.length; i++) {\n        var row = tbody.insertRow();\n        var cell1 = row.insertCell(0);\n        var cell2 = row.insertCell(1);\n        cell1.textContent = labels[i];\n        cell2.textContent = values[i];\n      }\n    }\n    \n    \/\/ Show\/hide data warning\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n  }\n  \n     \/\/ Initialize with currently selected period (fallback: default_period)\n   var initialSelect = document.getElementById(canvasId + \"_periode\");\n   var initialPeriod = initialSelect ? initialSelect.value : \"aktuelle_woche\";\n  updateList(initialPeriod);\n  var initialPick = document.getElementById(canvasId + \"_zeitraum_picker\");\n  if (initialPick) {\n    initialPick.style.display = (initialPeriod === \"individueller_zeitraum\") ? \"block\" : \"none\";\n  }\n  \n  \/\/ Dropdown & Picker-Listener\n  var sel  = document.getElementById(canvasId + \"_periode\"),\n      pick = document.getElementById(canvasId + \"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId + \"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId + \"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId + \"_von\"),\n      bis  = document.getElementById(canvasId + \"_bis\");\n  \n  if (sel) sel.addEventListener(\"change\", function(e){\n    var v = e.target.value;\n    if (v === \"individueller_zeitraum\") {\n      if (pick) pick.style.display = \"block\";\n      updateList(v);\n    } else {\n      if (pick) pick.style.display = \"none\";\n      updateList(v);\n    }\n  });\n  \n  if (btn) btn.addEventListener(\"click\", function(){\n    var s = von.value, e = bis.value;\n    if (!s || !e) { \n      if (warn) warn.textContent = \"Bitte beide Daten w\u00e4hlen!\"; \n      return; \n    }\n    if (new Date(s) > new Date(e)) { \n      if (warn) warn.textContent = \"Startdatum muss vor Enddatum liegen!\"; \n      return; \n    }\n    \n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (tbody) {\n      tbody.innerHTML = \"\";\n      \n      var nl = [], nw = [];\n      if (dat && dat[\"tage\"]) {\n        dat[\"tage\"].forEach(function(d, i){\n          var dt = new Date(d);\n          if (dt >= new Date(s) && dt <= new Date(e)) { \n            nl.push(lab[\"tage\"][i]); \n            nw.push(seri[\"tage\"][i]); \n          }\n        });\n      }\n      \/\/ Persist the chosen range for this tab\n      window.tspv2CustomRange = window.tspv2CustomRange || {};\n      window.tspv2CustomRange[canvasId] = { labels: nl.slice(), data: nw.slice(), s: s, e: e };\n      \n      if (nl.length > 0) {\n        for (var i = 0; i < nl.length; i++) {\n          var row = tbody.insertRow();\n          var cell1 = row.insertCell(0);\n          var cell2 = row.insertCell(1);\n          cell1.textContent = nl[i];\n          cell2.textContent = nw[i];\n        }\n      }\n      \n      \/\/ Show\/hide warnings\n      if (noDataWarn) {\n        if (nl.length === 0) {\n          noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n          noDataWarn.style.display = \"block\";\n          if (warn) warn.textContent = \"\";\n        } else {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n          if (warn) warn.textContent = \"\";\n        }\n      }\n    }\n  });\n}\n\nfunction tspv2InitChartInstance(canvasId, chartType, chartData, chartLabels, chartOptions, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates, \/\/ Y-m-d Format f\u00fcr Vergleiche\n      opts = chartOptions;\n  \n  \/\/ ZUERST pr\u00fcfen ob bereits ein Chart existiert und es zerst\u00f6ren\n  var canvas = document.getElementById(canvasId);\n  if (canvas) {\n    var existingChart = Chart.getChart(canvas);\n    if (existingChart) {\n      try {\n        existingChart.destroy();\n      } catch (e) {\n        console.warn(\"Existing chart destroy error:\", e);\n      }\n    }\n    if (canvas.chart) {\n      try {\n        canvas.chart.destroy();\n      } catch (e) {\n        console.warn(\"Canvas chart destroy error:\", e);\n      }\n      canvas.chart = null;\n    }\n  }\n  \n  var ctx = document.getElementById(canvasId).getContext(\"2d\");\n  var scaleOpts = {};\n  if (chartType===\"bar\"||chartType===\"line\") {\n    var sg=true;\n    scaleOpts = {\n      x: { \n        display:sg, \n        grid:{display:sg}, \n        ticks:{maxTicksLimit:10},\n        title: {\n          display: opts.x_label && opts.x_label.length > 0,\n          text: opts.x_label || \"\"\n        }\n      },\n      y: {\n        display:sg, \n        grid:{display:sg},\n        min: opts.min, \n        max: opts.max,\n        title: {\n          display: opts.y_label && opts.y_label.length > 0,\n          text: opts.y_label || \"\"\n        },\n        ticks: { \n          stepSize:1,\n          callback:function(v){return opts.ylabels[v]|| (Number.isInteger(v)?v:\"\");}\n        }\n      }\n    };\n  }\n  var chart = new Chart(ctx, {\n    type: chartType,\n    data: {\n      labels: lab[\"aktuelle_woche\"],\n      datasets: [{\n        label: opts.legend_label || null,\n        data: seri[\"aktuelle_woche\"],\n        backgroundColor: opts.background_color,\n        borderColor:     opts.border_color,\n        fill:            opts.fill,\n        tension:         opts.tension,\n        borderWidth:     opts.borderwidth,\n        pointBackgroundColor: opts.background_color,\n        pointBorderColor:     opts.border_color\n      }]\n    },\n    options: { responsive:true,\n      plugins:{ legend:{ display: opts.legend==1 } },\n      scales: scaleOpts\n    }\n  });\n\n  \/\/ Chart-Referenz speichern\n  ctx.canvas.chart = chart;\n\n  var sel  = document.getElementById(canvasId+\"_periode\"),\n      pick = document.getElementById(canvasId+\"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId+\"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId+\"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId+\"_von\"),\n      bis  = document.getElementById(canvasId+\"_bis\");\n\n  \/\/ Funktion zum Pr\u00fcfen und Anzeigen von Datenwarnungen\n  function checkAndShowDataWarning(period) {\n    var hasData = false;\n    if (period === \"individueller_zeitraum\") {\n      \/\/ Bei individuellem Zeitraum keine Warnung anzeigen - wird erst nach Button-Klick gepr\u00fcft\n      var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n      if (noDataWarn) {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n      return false;\n    } else {\n      hasData = lab[period] && lab[period].length > 0;\n    }\n    \n    \/\/ Warnung anzeigen\/verstecken\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n    \n    return hasData;\n  }\n\n  \/\/ Initiale Datenpr\u00fcfung\n  checkAndShowDataWarning(\"aktuelle_woche\");\n\n  if (sel) sel.addEventListener(\"change\", function(e){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var v=e.target.value;\n    if (v===\"individueller_zeitraum\") {\n      pick.style.display=\"block\"; \n      currentChart.data.labels=[]; \n      currentChart.data.datasets[0].data=[];\n      checkAndShowDataWarning(v);\n    } else {\n      pick.style.display=\"none\"; \n      currentChart.data.labels=lab[v]; \n      currentChart.data.datasets[0].data=seri[v];\n      checkAndShowDataWarning(v);\n    }\n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n  });\n\n  if (btn) btn.addEventListener(\"click\", function(){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var s=von.value, e=bis.value;\n    if (!s||!e){ warn.textContent=\"Bitte beide Daten w\u00e4hlen!\"; return; }\n    if (new Date(s)>new Date(e)){ warn.textContent=\"Startdatum muss vor Enddatum liegen!\"; return; }\n    var nl=[], nw=[];\n    if (dat && dat[\"tage\"]) {\n      dat[\"tage\"].forEach(function(d,i){\n        var dt=new Date(d);\n        if (dt>=new Date(s)&&dt<=new Date(e)){ nl.push(lab[\"tage\"][i]); nw.push(seri[\"tage\"][i]); }\n      });\n    }\n    currentChart.data.labels=nl; currentChart.data.datasets[0].data=nw; \n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n    \n    \/\/ Nur eine Warnung anzeigen - die allgemeine Datenwarnung verwenden\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (nl.length === 0) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      }\n    }\n  });\n}\n<\/script><div class='mb-2'><select id='tschart_69d97f0c8c857_periode' class='form-select form-select-sm' style='width:auto;display:inline-block;margin-right:10px;'><option value='aktuelle_woche' selected>Aktuelle Woche<\/option><option value='aktueller_monat'>Aktueller Monat<\/option><option value='aktuelles_jahr'>Aktuelles Jahr<\/option><option value='letzte_7_tage'>Letzte 7 Tage<\/option><option value='letzte_14_tage'>Letzte 14 Tage<\/option><option value='letzte_30_tage'>Letzte 30 Tage<\/option><option value='letzte_60_tage'>Letzte 60 Tage<\/option><option value='letzte_90_tage'>Letzte 90 Tage<\/option><option value='letzte_6_monate'>Letzte 6 Monate<\/option><option value='letzte_12_monate'>Letzte 12 Monate<\/option><option value='woche'>Durchschnitt pro Woche<\/option><option value='monat'>Durchschnitt pro Monat<\/option><option value='jahr'>Durchschnitt pro Jahr<\/option><option value='individueller_zeitraum'>Individueller Zeitraum<\/option><\/select><\/div><div id='tschart_69d97f0c8c857_zeitraum_picker' class='mb-2' style='display:none;'><div class='d-flex align-items-end gap-2 flex-wrap'><div><label class='form-label mb-0' for='tschart_69d97f0c8c857_von'>Von:<\/label><input type='date' id='tschart_69d97f0c8c857_von' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><div><label class='form-label mb-0' for='tschart_69d97f0c8c857_bis'>Bis:<\/label><input type='date' id='tschart_69d97f0c8c857_bis' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><button id='tschart_69d97f0c8c857_zeitraum_btn' class='btn btn-primary btn-sm'>Anzeigen<\/button><\/div><div id='tschart_69d97f0c8c857_zeitraum_picker_warn' class='text-danger mt-1' style='min-height:1.5em;'><\/div><\/div><div id='tschart_69d97f0c8c857_no_data_warn' class='text-warning mt-2' style='min-height:1.5em;display:none;'><\/div><div id='tschart_69d97f0c8c857_table_container' class='table-responsive'><table id='tschart_69d97f0c8c857_table' class='table table-striped table-hover'><thead><tr><th>Datum<\/th><th>Wert<\/th><\/tr><\/thead><tbody id='tschart_69d97f0c8c857_table_body'><\/tbody><\/table><\/div><script>tspv2InitListInstance('tschart_69d97f0c8c857', tspv2_69d97f0c8c8583_23066602_ChartData, tspv2_69d97f0c8c8583_23066602_ChartLabels, tspv2_69d97f0c8c8583_23066602_ChartDates);<\/script>\r\n<br><br><br><br>\r\n<h3 class=\"mt-5 mb-4\">Was hat heute gut geklappt?<\/h3>\r\n<script>var tspv2_69d97f0c8c9b98_03365584_ChartData   = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c9b98_03365584_ChartLabels = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c9b98_03365584_ChartDates  = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8c9b98_03365584_ChartOptions= {\"legend_label\":\"\",\"background_color\":[],\"border_color\":[],\"fill\":false,\"tension\":0.1,\"borderwidth\":1,\"legend\":0,\"min\":0,\"max\":null,\"ylabels\":{},\"x_label\":\"\",\"y_label\":\"\",\"default_period\":\"aktuelle_woche\",\"available_periods\":{\"aktuelle_woche\":\"Aktuelle Woche\",\"aktueller_monat\":\"Aktueller Monat\",\"aktuelles_jahr\":\"Aktuelles Jahr\",\"letzte_7_tage\":\"Letzte 7 Tage\",\"letzte_14_tage\":\"Letzte 14 Tage\",\"letzte_30_tage\":\"Letzte 30 Tage\",\"letzte_60_tage\":\"Letzte 60 Tage\",\"letzte_90_tage\":\"Letzte 90 Tage\",\"letzte_6_monate\":\"Letzte 6 Monate\",\"letzte_12_monate\":\"Letzte 12 Monate\",\"woche\":\"Durchschnitt pro Woche\",\"monat\":\"Durchschnitt pro Monat\",\"jahr\":\"Durchschnitt pro Jahr\",\"individueller_zeitraum\":\"Individueller Zeitraum\"}};<\/script><script>\n\/\/ Function to initialize list type\nfunction tspv2InitListInstance(canvasId, chartData, chartLabels, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates; \/\/ Y-m-d Format f\u00fcr Vergleiche\n  var savedRanges = (window.tspv2CustomRange = window.tspv2CustomRange || {});\n  \n  function updateList(period) {\n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (!tbody) return;\n    \n    tbody.innerHTML = \"\";\n    \n    if (period === \"individueller_zeitraum\") {\n      var saved = (window.tspv2CustomRange && window.tspv2CustomRange[canvasId]) || null;\n      var labels = saved && Array.isArray(saved.labels) ? saved.labels : [];\n      var values = saved && Array.isArray(saved.data) ? saved.data : [];\n      var vonEl = document.getElementById(canvasId + \"_von\");\n      var bisEl = document.getElementById(canvasId + \"_bis\");\n      if (saved) {\n        if (vonEl && saved.s) vonEl.value = saved.s;\n        if (bisEl && saved.e) bisEl.value = saved.e;\n      }\n    } else {\n      var labels = lab[period] || [];\n      var values = seri[period] || [];\n    }\n    var hasData = labels.length > 0;\n    \n    if (hasData) {\n      for (var i = 0; i < labels.length; i++) {\n        var row = tbody.insertRow();\n        var cell1 = row.insertCell(0);\n        var cell2 = row.insertCell(1);\n        cell1.textContent = labels[i];\n        cell2.textContent = values[i];\n      }\n    }\n    \n    \/\/ Show\/hide data warning\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n  }\n  \n     \/\/ Initialize with currently selected period (fallback: default_period)\n   var initialSelect = document.getElementById(canvasId + \"_periode\");\n   var initialPeriod = initialSelect ? initialSelect.value : \"aktuelle_woche\";\n  updateList(initialPeriod);\n  var initialPick = document.getElementById(canvasId + \"_zeitraum_picker\");\n  if (initialPick) {\n    initialPick.style.display = (initialPeriod === \"individueller_zeitraum\") ? \"block\" : \"none\";\n  }\n  \n  \/\/ Dropdown & Picker-Listener\n  var sel  = document.getElementById(canvasId + \"_periode\"),\n      pick = document.getElementById(canvasId + \"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId + \"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId + \"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId + \"_von\"),\n      bis  = document.getElementById(canvasId + \"_bis\");\n  \n  if (sel) sel.addEventListener(\"change\", function(e){\n    var v = e.target.value;\n    if (v === \"individueller_zeitraum\") {\n      if (pick) pick.style.display = \"block\";\n      updateList(v);\n    } else {\n      if (pick) pick.style.display = \"none\";\n      updateList(v);\n    }\n  });\n  \n  if (btn) btn.addEventListener(\"click\", function(){\n    var s = von.value, e = bis.value;\n    if (!s || !e) { \n      if (warn) warn.textContent = \"Bitte beide Daten w\u00e4hlen!\"; \n      return; \n    }\n    if (new Date(s) > new Date(e)) { \n      if (warn) warn.textContent = \"Startdatum muss vor Enddatum liegen!\"; \n      return; \n    }\n    \n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (tbody) {\n      tbody.innerHTML = \"\";\n      \n      var nl = [], nw = [];\n      if (dat && dat[\"tage\"]) {\n        dat[\"tage\"].forEach(function(d, i){\n          var dt = new Date(d);\n          if (dt >= new Date(s) && dt <= new Date(e)) { \n            nl.push(lab[\"tage\"][i]); \n            nw.push(seri[\"tage\"][i]); \n          }\n        });\n      }\n      \/\/ Persist the chosen range for this tab\n      window.tspv2CustomRange = window.tspv2CustomRange || {};\n      window.tspv2CustomRange[canvasId] = { labels: nl.slice(), data: nw.slice(), s: s, e: e };\n      \n      if (nl.length > 0) {\n        for (var i = 0; i < nl.length; i++) {\n          var row = tbody.insertRow();\n          var cell1 = row.insertCell(0);\n          var cell2 = row.insertCell(1);\n          cell1.textContent = nl[i];\n          cell2.textContent = nw[i];\n        }\n      }\n      \n      \/\/ Show\/hide warnings\n      if (noDataWarn) {\n        if (nl.length === 0) {\n          noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n          noDataWarn.style.display = \"block\";\n          if (warn) warn.textContent = \"\";\n        } else {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n          if (warn) warn.textContent = \"\";\n        }\n      }\n    }\n  });\n}\n\nfunction tspv2InitChartInstance(canvasId, chartType, chartData, chartLabels, chartOptions, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates, \/\/ Y-m-d Format f\u00fcr Vergleiche\n      opts = chartOptions;\n  \n  \/\/ ZUERST pr\u00fcfen ob bereits ein Chart existiert und es zerst\u00f6ren\n  var canvas = document.getElementById(canvasId);\n  if (canvas) {\n    var existingChart = Chart.getChart(canvas);\n    if (existingChart) {\n      try {\n        existingChart.destroy();\n      } catch (e) {\n        console.warn(\"Existing chart destroy error:\", e);\n      }\n    }\n    if (canvas.chart) {\n      try {\n        canvas.chart.destroy();\n      } catch (e) {\n        console.warn(\"Canvas chart destroy error:\", e);\n      }\n      canvas.chart = null;\n    }\n  }\n  \n  var ctx = document.getElementById(canvasId).getContext(\"2d\");\n  var scaleOpts = {};\n  if (chartType===\"bar\"||chartType===\"line\") {\n    var sg=true;\n    scaleOpts = {\n      x: { \n        display:sg, \n        grid:{display:sg}, \n        ticks:{maxTicksLimit:10},\n        title: {\n          display: opts.x_label && opts.x_label.length > 0,\n          text: opts.x_label || \"\"\n        }\n      },\n      y: {\n        display:sg, \n        grid:{display:sg},\n        min: opts.min, \n        max: opts.max,\n        title: {\n          display: opts.y_label && opts.y_label.length > 0,\n          text: opts.y_label || \"\"\n        },\n        ticks: { \n          stepSize:1,\n          callback:function(v){return opts.ylabels[v]|| (Number.isInteger(v)?v:\"\");}\n        }\n      }\n    };\n  }\n  var chart = new Chart(ctx, {\n    type: chartType,\n    data: {\n      labels: lab[\"aktuelle_woche\"],\n      datasets: [{\n        label: opts.legend_label || null,\n        data: seri[\"aktuelle_woche\"],\n        backgroundColor: opts.background_color,\n        borderColor:     opts.border_color,\n        fill:            opts.fill,\n        tension:         opts.tension,\n        borderWidth:     opts.borderwidth,\n        pointBackgroundColor: opts.background_color,\n        pointBorderColor:     opts.border_color\n      }]\n    },\n    options: { responsive:true,\n      plugins:{ legend:{ display: opts.legend==1 } },\n      scales: scaleOpts\n    }\n  });\n\n  \/\/ Chart-Referenz speichern\n  ctx.canvas.chart = chart;\n\n  var sel  = document.getElementById(canvasId+\"_periode\"),\n      pick = document.getElementById(canvasId+\"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId+\"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId+\"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId+\"_von\"),\n      bis  = document.getElementById(canvasId+\"_bis\");\n\n  \/\/ Funktion zum Pr\u00fcfen und Anzeigen von Datenwarnungen\n  function checkAndShowDataWarning(period) {\n    var hasData = false;\n    if (period === \"individueller_zeitraum\") {\n      \/\/ Bei individuellem Zeitraum keine Warnung anzeigen - wird erst nach Button-Klick gepr\u00fcft\n      var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n      if (noDataWarn) {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n      return false;\n    } else {\n      hasData = lab[period] && lab[period].length > 0;\n    }\n    \n    \/\/ Warnung anzeigen\/verstecken\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n    \n    return hasData;\n  }\n\n  \/\/ Initiale Datenpr\u00fcfung\n  checkAndShowDataWarning(\"aktuelle_woche\");\n\n  if (sel) sel.addEventListener(\"change\", function(e){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var v=e.target.value;\n    if (v===\"individueller_zeitraum\") {\n      pick.style.display=\"block\"; \n      currentChart.data.labels=[]; \n      currentChart.data.datasets[0].data=[];\n      checkAndShowDataWarning(v);\n    } else {\n      pick.style.display=\"none\"; \n      currentChart.data.labels=lab[v]; \n      currentChart.data.datasets[0].data=seri[v];\n      checkAndShowDataWarning(v);\n    }\n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n  });\n\n  if (btn) btn.addEventListener(\"click\", function(){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var s=von.value, e=bis.value;\n    if (!s||!e){ warn.textContent=\"Bitte beide Daten w\u00e4hlen!\"; return; }\n    if (new Date(s)>new Date(e)){ warn.textContent=\"Startdatum muss vor Enddatum liegen!\"; return; }\n    var nl=[], nw=[];\n    if (dat && dat[\"tage\"]) {\n      dat[\"tage\"].forEach(function(d,i){\n        var dt=new Date(d);\n        if (dt>=new Date(s)&&dt<=new Date(e)){ nl.push(lab[\"tage\"][i]); nw.push(seri[\"tage\"][i]); }\n      });\n    }\n    currentChart.data.labels=nl; currentChart.data.datasets[0].data=nw; \n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n    \n    \/\/ Nur eine Warnung anzeigen - die allgemeine Datenwarnung verwenden\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (nl.length === 0) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      }\n    }\n  });\n}\n<\/script><div class='mb-2'><select id='tschart_69d97f0c8c9b8_periode' class='form-select form-select-sm' style='width:auto;display:inline-block;margin-right:10px;'><option value='aktuelle_woche' selected>Aktuelle Woche<\/option><option value='aktueller_monat'>Aktueller Monat<\/option><option value='aktuelles_jahr'>Aktuelles Jahr<\/option><option value='letzte_7_tage'>Letzte 7 Tage<\/option><option value='letzte_14_tage'>Letzte 14 Tage<\/option><option value='letzte_30_tage'>Letzte 30 Tage<\/option><option value='letzte_60_tage'>Letzte 60 Tage<\/option><option value='letzte_90_tage'>Letzte 90 Tage<\/option><option value='letzte_6_monate'>Letzte 6 Monate<\/option><option value='letzte_12_monate'>Letzte 12 Monate<\/option><option value='woche'>Durchschnitt pro Woche<\/option><option value='monat'>Durchschnitt pro Monat<\/option><option value='jahr'>Durchschnitt pro Jahr<\/option><option value='individueller_zeitraum'>Individueller Zeitraum<\/option><\/select><\/div><div id='tschart_69d97f0c8c9b8_zeitraum_picker' class='mb-2' style='display:none;'><div class='d-flex align-items-end gap-2 flex-wrap'><div><label class='form-label mb-0' for='tschart_69d97f0c8c9b8_von'>Von:<\/label><input type='date' id='tschart_69d97f0c8c9b8_von' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><div><label class='form-label mb-0' for='tschart_69d97f0c8c9b8_bis'>Bis:<\/label><input type='date' id='tschart_69d97f0c8c9b8_bis' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><button id='tschart_69d97f0c8c9b8_zeitraum_btn' class='btn btn-primary btn-sm'>Anzeigen<\/button><\/div><div id='tschart_69d97f0c8c9b8_zeitraum_picker_warn' class='text-danger mt-1' style='min-height:1.5em;'><\/div><\/div><div id='tschart_69d97f0c8c9b8_no_data_warn' class='text-warning mt-2' style='min-height:1.5em;display:none;'><\/div><div id='tschart_69d97f0c8c9b8_table_container' class='table-responsive'><table id='tschart_69d97f0c8c9b8_table' class='table table-striped table-hover'><thead><tr><th>Datum<\/th><th>Wert<\/th><\/tr><\/thead><tbody id='tschart_69d97f0c8c9b8_table_body'><\/tbody><\/table><\/div><script>tspv2InitListInstance('tschart_69d97f0c8c9b8', tspv2_69d97f0c8c9b98_03365584_ChartData, tspv2_69d97f0c8c9b98_03365584_ChartLabels, tspv2_69d97f0c8c9b98_03365584_ChartDates);<\/script>\r\n<br><br><br><br>\r\n<h3 class=\"mt-5 mb-4\">M\u00f6chtest Du sonst noch etwas notieren?<\/h3>\r\n<script>var tspv2_69d97f0c8cb6d6_83744842_ChartData   = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8cb6d6_83744842_ChartLabels = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8cb6d6_83744842_ChartDates  = {\"aktuelle_woche\":[],\"aktueller_monat\":[],\"aktuelles_jahr\":[],\"letzte_7_tage\":[],\"letzte_14_tage\":[],\"letzte_30_tage\":[],\"letzte_60_tage\":[],\"letzte_90_tage\":[],\"letzte_6_monate\":[],\"letzte_12_monate\":[],\"woche\":[],\"monat\":[],\"jahr\":[],\"tage\":[],\"individueller_zeitraum\":[]};var tspv2_69d97f0c8cb6d6_83744842_ChartOptions= {\"legend_label\":\"\",\"background_color\":[],\"border_color\":[],\"fill\":false,\"tension\":0.1,\"borderwidth\":1,\"legend\":0,\"min\":0,\"max\":null,\"ylabels\":{},\"x_label\":\"\",\"y_label\":\"\",\"default_period\":\"aktuelle_woche\",\"available_periods\":{\"aktuelle_woche\":\"Aktuelle Woche\",\"aktueller_monat\":\"Aktueller Monat\",\"aktuelles_jahr\":\"Aktuelles Jahr\",\"letzte_7_tage\":\"Letzte 7 Tage\",\"letzte_14_tage\":\"Letzte 14 Tage\",\"letzte_30_tage\":\"Letzte 30 Tage\",\"letzte_60_tage\":\"Letzte 60 Tage\",\"letzte_90_tage\":\"Letzte 90 Tage\",\"letzte_6_monate\":\"Letzte 6 Monate\",\"letzte_12_monate\":\"Letzte 12 Monate\",\"woche\":\"Durchschnitt pro Woche\",\"monat\":\"Durchschnitt pro Monat\",\"jahr\":\"Durchschnitt pro Jahr\",\"individueller_zeitraum\":\"Individueller Zeitraum\"}};<\/script><script>\n\/\/ Function to initialize list type\nfunction tspv2InitListInstance(canvasId, chartData, chartLabels, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates; \/\/ Y-m-d Format f\u00fcr Vergleiche\n  var savedRanges = (window.tspv2CustomRange = window.tspv2CustomRange || {});\n  \n  function updateList(period) {\n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (!tbody) return;\n    \n    tbody.innerHTML = \"\";\n    \n    if (period === \"individueller_zeitraum\") {\n      var saved = (window.tspv2CustomRange && window.tspv2CustomRange[canvasId]) || null;\n      var labels = saved && Array.isArray(saved.labels) ? saved.labels : [];\n      var values = saved && Array.isArray(saved.data) ? saved.data : [];\n      var vonEl = document.getElementById(canvasId + \"_von\");\n      var bisEl = document.getElementById(canvasId + \"_bis\");\n      if (saved) {\n        if (vonEl && saved.s) vonEl.value = saved.s;\n        if (bisEl && saved.e) bisEl.value = saved.e;\n      }\n    } else {\n      var labels = lab[period] || [];\n      var values = seri[period] || [];\n    }\n    var hasData = labels.length > 0;\n    \n    if (hasData) {\n      for (var i = 0; i < labels.length; i++) {\n        var row = tbody.insertRow();\n        var cell1 = row.insertCell(0);\n        var cell2 = row.insertCell(1);\n        cell1.textContent = labels[i];\n        cell2.textContent = values[i];\n      }\n    }\n    \n    \/\/ Show\/hide data warning\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n  }\n  \n     \/\/ Initialize with currently selected period (fallback: default_period)\n   var initialSelect = document.getElementById(canvasId + \"_periode\");\n   var initialPeriod = initialSelect ? initialSelect.value : \"aktuelle_woche\";\n  updateList(initialPeriod);\n  var initialPick = document.getElementById(canvasId + \"_zeitraum_picker\");\n  if (initialPick) {\n    initialPick.style.display = (initialPeriod === \"individueller_zeitraum\") ? \"block\" : \"none\";\n  }\n  \n  \/\/ Dropdown & Picker-Listener\n  var sel  = document.getElementById(canvasId + \"_periode\"),\n      pick = document.getElementById(canvasId + \"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId + \"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId + \"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId + \"_von\"),\n      bis  = document.getElementById(canvasId + \"_bis\");\n  \n  if (sel) sel.addEventListener(\"change\", function(e){\n    var v = e.target.value;\n    if (v === \"individueller_zeitraum\") {\n      if (pick) pick.style.display = \"block\";\n      updateList(v);\n    } else {\n      if (pick) pick.style.display = \"none\";\n      updateList(v);\n    }\n  });\n  \n  if (btn) btn.addEventListener(\"click\", function(){\n    var s = von.value, e = bis.value;\n    if (!s || !e) { \n      if (warn) warn.textContent = \"Bitte beide Daten w\u00e4hlen!\"; \n      return; \n    }\n    if (new Date(s) > new Date(e)) { \n      if (warn) warn.textContent = \"Startdatum muss vor Enddatum liegen!\"; \n      return; \n    }\n    \n    var tbody = document.getElementById(canvasId + \"_table_body\");\n    var noDataWarn = document.getElementById(canvasId + \"_no_data_warn\");\n    \n    if (tbody) {\n      tbody.innerHTML = \"\";\n      \n      var nl = [], nw = [];\n      if (dat && dat[\"tage\"]) {\n        dat[\"tage\"].forEach(function(d, i){\n          var dt = new Date(d);\n          if (dt >= new Date(s) && dt <= new Date(e)) { \n            nl.push(lab[\"tage\"][i]); \n            nw.push(seri[\"tage\"][i]); \n          }\n        });\n      }\n      \/\/ Persist the chosen range for this tab\n      window.tspv2CustomRange = window.tspv2CustomRange || {};\n      window.tspv2CustomRange[canvasId] = { labels: nl.slice(), data: nw.slice(), s: s, e: e };\n      \n      if (nl.length > 0) {\n        for (var i = 0; i < nl.length; i++) {\n          var row = tbody.insertRow();\n          var cell1 = row.insertCell(0);\n          var cell2 = row.insertCell(1);\n          cell1.textContent = nl[i];\n          cell2.textContent = nw[i];\n        }\n      }\n      \n      \/\/ Show\/hide warnings\n      if (noDataWarn) {\n        if (nl.length === 0) {\n          noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n          noDataWarn.style.display = \"block\";\n          if (warn) warn.textContent = \"\";\n        } else {\n          noDataWarn.textContent = \"\";\n          noDataWarn.style.display = \"none\";\n          if (warn) warn.textContent = \"\";\n        }\n      }\n    }\n  });\n}\n\nfunction tspv2InitChartInstance(canvasId, chartType, chartData, chartLabels, chartOptions, chartDates) {\n  var seri = chartData,\n      lab  = chartLabels,\n      dat  = chartDates || window.tspv2ChartDates, \/\/ Y-m-d Format f\u00fcr Vergleiche\n      opts = chartOptions;\n  \n  \/\/ ZUERST pr\u00fcfen ob bereits ein Chart existiert und es zerst\u00f6ren\n  var canvas = document.getElementById(canvasId);\n  if (canvas) {\n    var existingChart = Chart.getChart(canvas);\n    if (existingChart) {\n      try {\n        existingChart.destroy();\n      } catch (e) {\n        console.warn(\"Existing chart destroy error:\", e);\n      }\n    }\n    if (canvas.chart) {\n      try {\n        canvas.chart.destroy();\n      } catch (e) {\n        console.warn(\"Canvas chart destroy error:\", e);\n      }\n      canvas.chart = null;\n    }\n  }\n  \n  var ctx = document.getElementById(canvasId).getContext(\"2d\");\n  var scaleOpts = {};\n  if (chartType===\"bar\"||chartType===\"line\") {\n    var sg=true;\n    scaleOpts = {\n      x: { \n        display:sg, \n        grid:{display:sg}, \n        ticks:{maxTicksLimit:10},\n        title: {\n          display: opts.x_label && opts.x_label.length > 0,\n          text: opts.x_label || \"\"\n        }\n      },\n      y: {\n        display:sg, \n        grid:{display:sg},\n        min: opts.min, \n        max: opts.max,\n        title: {\n          display: opts.y_label && opts.y_label.length > 0,\n          text: opts.y_label || \"\"\n        },\n        ticks: { \n          stepSize:1,\n          callback:function(v){return opts.ylabels[v]|| (Number.isInteger(v)?v:\"\");}\n        }\n      }\n    };\n  }\n  var chart = new Chart(ctx, {\n    type: chartType,\n    data: {\n      labels: lab[\"aktuelle_woche\"],\n      datasets: [{\n        label: opts.legend_label || null,\n        data: seri[\"aktuelle_woche\"],\n        backgroundColor: opts.background_color,\n        borderColor:     opts.border_color,\n        fill:            opts.fill,\n        tension:         opts.tension,\n        borderWidth:     opts.borderwidth,\n        pointBackgroundColor: opts.background_color,\n        pointBorderColor:     opts.border_color\n      }]\n    },\n    options: { responsive:true,\n      plugins:{ legend:{ display: opts.legend==1 } },\n      scales: scaleOpts\n    }\n  });\n\n  \/\/ Chart-Referenz speichern\n  ctx.canvas.chart = chart;\n\n  var sel  = document.getElementById(canvasId+\"_periode\"),\n      pick = document.getElementById(canvasId+\"_zeitraum_picker\"),\n      warn = document.getElementById(canvasId+\"_zeitraum_picker_warn\"),\n      btn  = document.getElementById(canvasId+\"_zeitraum_btn\"),\n      von  = document.getElementById(canvasId+\"_von\"),\n      bis  = document.getElementById(canvasId+\"_bis\");\n\n  \/\/ Funktion zum Pr\u00fcfen und Anzeigen von Datenwarnungen\n  function checkAndShowDataWarning(period) {\n    var hasData = false;\n    if (period === \"individueller_zeitraum\") {\n      \/\/ Bei individuellem Zeitraum keine Warnung anzeigen - wird erst nach Button-Klick gepr\u00fcft\n      var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n      if (noDataWarn) {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n      return false;\n    } else {\n      hasData = lab[period] && lab[period].length > 0;\n    }\n    \n    \/\/ Warnung anzeigen\/verstecken\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (!hasData) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n      }\n    }\n    \n    return hasData;\n  }\n\n  \/\/ Initiale Datenpr\u00fcfung\n  checkAndShowDataWarning(\"aktuelle_woche\");\n\n  if (sel) sel.addEventListener(\"change\", function(e){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var v=e.target.value;\n    if (v===\"individueller_zeitraum\") {\n      pick.style.display=\"block\"; \n      currentChart.data.labels=[]; \n      currentChart.data.datasets[0].data=[];\n      checkAndShowDataWarning(v);\n    } else {\n      pick.style.display=\"none\"; \n      currentChart.data.labels=lab[v]; \n      currentChart.data.datasets[0].data=seri[v];\n      checkAndShowDataWarning(v);\n    }\n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n  });\n\n  if (btn) btn.addEventListener(\"click\", function(){\n    var canvas = document.getElementById(canvasId);\n    var currentChart = (canvas && Chart.getChart(canvas)) || (canvas ? canvas.chart : null);\n    if (!currentChart) { return; }\n    var s=von.value, e=bis.value;\n    if (!s||!e){ warn.textContent=\"Bitte beide Daten w\u00e4hlen!\"; return; }\n    if (new Date(s)>new Date(e)){ warn.textContent=\"Startdatum muss vor Enddatum liegen!\"; return; }\n    var nl=[], nw=[];\n    if (dat && dat[\"tage\"]) {\n      dat[\"tage\"].forEach(function(d,i){\n        var dt=new Date(d);\n        if (dt>=new Date(s)&&dt<=new Date(e)){ nl.push(lab[\"tage\"][i]); nw.push(seri[\"tage\"][i]); }\n      });\n    }\n    currentChart.data.labels=nl; currentChart.data.datasets[0].data=nw; \n    try {\n      currentChart.update();\n    } catch (e) {\n      console.warn(\"Chart update error:\", e);\n    }\n    \n    \/\/ Nur eine Warnung anzeigen - die allgemeine Datenwarnung verwenden\n    var noDataWarn = document.getElementById(canvasId+\"_no_data_warn\");\n    if (noDataWarn) {\n      if (nl.length === 0) {\n        noDataWarn.textContent = \"Keine Daten f\u00fcr den gew\u00e4hlten Zeitraum vorhanden.\";\n        noDataWarn.style.display = \"block\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      } else {\n        noDataWarn.textContent = \"\";\n        noDataWarn.style.display = \"none\";\n        warn.textContent = \"\"; \/\/ Urspr\u00fcngliche Warnung ausblenden\n      }\n    }\n  });\n}\n<\/script><div class='mb-2'><select id='tschart_69d97f0c8cb6c_periode' class='form-select form-select-sm' style='width:auto;display:inline-block;margin-right:10px;'><option value='aktuelle_woche' selected>Aktuelle Woche<\/option><option value='aktueller_monat'>Aktueller Monat<\/option><option value='aktuelles_jahr'>Aktuelles Jahr<\/option><option value='letzte_7_tage'>Letzte 7 Tage<\/option><option value='letzte_14_tage'>Letzte 14 Tage<\/option><option value='letzte_30_tage'>Letzte 30 Tage<\/option><option value='letzte_60_tage'>Letzte 60 Tage<\/option><option value='letzte_90_tage'>Letzte 90 Tage<\/option><option value='letzte_6_monate'>Letzte 6 Monate<\/option><option value='letzte_12_monate'>Letzte 12 Monate<\/option><option value='woche'>Durchschnitt pro Woche<\/option><option value='monat'>Durchschnitt pro Monat<\/option><option value='jahr'>Durchschnitt pro Jahr<\/option><option value='individueller_zeitraum'>Individueller Zeitraum<\/option><\/select><\/div><div id='tschart_69d97f0c8cb6c_zeitraum_picker' class='mb-2' style='display:none;'><div class='d-flex align-items-end gap-2 flex-wrap'><div><label class='form-label mb-0' for='tschart_69d97f0c8cb6c_von'>Von:<\/label><input type='date' id='tschart_69d97f0c8cb6c_von' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><div><label class='form-label mb-0' for='tschart_69d97f0c8cb6c_bis'>Bis:<\/label><input type='date' id='tschart_69d97f0c8cb6c_bis' class='form-control form-control-sm' style='width:auto;display:inline-block;'><\/div><button id='tschart_69d97f0c8cb6c_zeitraum_btn' class='btn btn-primary btn-sm'>Anzeigen<\/button><\/div><div id='tschart_69d97f0c8cb6c_zeitraum_picker_warn' class='text-danger mt-1' style='min-height:1.5em;'><\/div><\/div><div id='tschart_69d97f0c8cb6c_no_data_warn' class='text-warning mt-2' style='min-height:1.5em;display:none;'><\/div><div id='tschart_69d97f0c8cb6c_table_container' class='table-responsive'><table id='tschart_69d97f0c8cb6c_table' class='table table-striped table-hover'><thead><tr><th>Datum<\/th><th>Wert<\/th><\/tr><\/thead><tbody id='tschart_69d97f0c8cb6c_table_body'><\/tbody><\/table><\/div><script>tspv2InitListInstance('tschart_69d97f0c8cb6c', tspv2_69d97f0c8cb6d6_83744842_ChartData, tspv2_69d97f0c8cb6d6_83744842_ChartLabels, tspv2_69d97f0c8cb6d6_83744842_ChartDates);<\/script>\r\n<button class=\"btn btn-primary mt-5\" onclick=\"window.location.href='https:\/\/my-ehealth.de\/?page_id=10637'\">Zur\u00fcck zum Kalender<\/button><div class=\"modal fade\" id=\"inactive-modal\" data-userlogged =\"0\"  role=\"dialog\" aria-labelledby=\"inactive-modal-label\"\n    aria-hidden=\"true\" hidden style=\"overflow: auto;\">\n    <div class=\"modal-dialog modal-lg modal-dialog-centered\" role=\"document\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h3 class=\"modal-title\" id=\"inactive-modal-title-label\">Zeit\u00fcberschreitung der Browsersitzung<\/h3>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                    <span aria-hidden=\"true\">&times;<\/span>\n                <\/button>\n            <\/div>\n            <div class=\"modal-body\">\n              <p class=\"mb-0\">Sie haben das System l\u00e4ngere Zeit nicht mehr genutzt. Aus Sicherheitsgr\u00fcnden werden Sie automatisch aus dem System abgemeldet.\n              <\/p>\n            <\/div>\n            <div class=\"modal-footer\">\n                    <button type=\"button\" class=\"btn btn-secondary mr-auto\" data-dismiss=\"modal\" style=\"float: left;\">Abbrechen<\/button>\n                    <button id=\"continue-session\" type=\"button\" class=\"btn btn-primary\" data-dismiss=\"modal\">Sitzung fortsetzen <span class=\"countdown\"><\/span><\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"modal fade\" id=\"logged-out-modal\" role=\"dialog\" aria-labelledby=\"logged-out-modal-label\"\n    aria-hidden=\"true\" hidden style=\"overflow: auto;\">\n    <div class=\"modal-dialog modal-lg modal-dialog-centered\" role=\"document\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h3 class=\"modal-title\" id=\"logged-out-modal-title-label\">Zeit\u00fcberschreitung der Browsersitzung<\/h3>\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                    <span aria-hidden=\"true\">&times;<\/span>\n                <\/button>\n            <\/div>\n            <div class=\"modal-body\">\n              <p class=\"mb-0\">Sie haben das System l\u00e4ngere Zeit nicht mehr genutzt. Zu Ihrer eigenen Sicherheit wurden Sie daher automatisch aus dem System abgemeldet.\n              <\/p>\n            <\/div>\n            <div class=\"modal-footer\">\n                <a id=\"continue-session-done\" href=\"https:\/\/my-ehealth.de\" role=\"button\" class=\"btn btn-primary\">Zur Startseite<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div> ","protected":false},"excerpt":{"rendered":"Tagebuch Statistiken Welche \u00dcbungen habe ich gemacht? Wie hat das \u00dcben insgesamt f\u00fcr Dich geklappt? Sind Dir dabei belastende oder negative Gedanken gekommen? z.B. &#8222;Das klappt nie.&#8220; oder &#8222;Ich bin Schuld.&#8220; Meine Gedanken Was hat heute gut geklappt? M\u00f6chtest Du sonst noch etwas notieren? Zur\u00fcck zum Kalender Zeit\u00fcberschreitung der Browsersitzung &times; Sie haben das System&hellip;","protected":false},"author":21,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-10651","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/my-ehealth.de\/index.php?rest_route=\/wp\/v2\/pages\/10651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my-ehealth.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/my-ehealth.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/my-ehealth.de\/index.php?rest_route=\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/my-ehealth.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10651"}],"version-history":[{"count":6,"href":"https:\/\/my-ehealth.de\/index.php?rest_route=\/wp\/v2\/pages\/10651\/revisions"}],"predecessor-version":[{"id":10668,"href":"https:\/\/my-ehealth.de\/index.php?rest_route=\/wp\/v2\/pages\/10651\/revisions\/10668"}],"wp:attachment":[{"href":"https:\/\/my-ehealth.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}