<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tools on Schegl blog</title>
    <link>https://flowmetrics.space/tools/</link>
    <description>Recent content in Tools on Schegl blog</description>
    <image>
      <title>Schegl blog</title>
      <url>https://flowmetrics.space/images/preview.png</url>
      <link>https://flowmetrics.space/images/preview.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://flowmetrics.space/tools/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pace Calculator</title>
      <link>https://flowmetrics.space/tools/pace-calculator/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://flowmetrics.space/tools/pace-calculator/</guid>
      <description>&lt;h2 id=&#34;pace-calculator&#34;&gt;Pace Calculator&lt;/h2&gt;
&lt;style&gt;
.calc-box {
  background: #1e1e1e;
  padding: 16px;
  border-radius: 12px;
  max-width: 650px; /* немного шире */
}

.calc-row {
  margin-bottom: 12px;
}

.calc-inline input {
  width: 55px;
  padding: 5px;
  margin-right: 4px;
  border-radius: 6px;
  border: 1px solid #444;
  background: #111;
  color: white;
  font-size: 14px;
}

.buttons {
  margin-top: 8px;
}

.buttons button {
  margin: 3px;
  padding: 5px 8px;
  border-radius: 6px;
  border: 1px solid #555;
  background: #222;
  color: white;
  cursor: pointer;
  font-size: 13px;
}

.buttons button.active {
  background: #4caf50;
  border-color: #4caf50;
}

/* 🔥 ФИКС: 4 КОЛОНКИ */
.splits {
  margin-top: 15px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px 14px;
  font-size: 13px;
}

.split-row {
  display: flex;
  justify-content: space-between;
  opacity: 0.9;
}

.split-key {
  font-weight: bold;
  color: #4caf50;
}
&lt;/style&gt;
&lt;div class=&#34;calc-box&#34;&gt;
  &lt;div class=&#34;calc-row&#34;&gt;
    &lt;b&gt;Distance&lt;/b&gt;&lt;br&gt;
    &lt;input id=&#34;distance&#34; value=&#34;10000&#34;&gt;
  &lt;/div&gt;
  &lt;div class=&#34;buttons&#34;&gt;
    &lt;button onclick=&#34;setDistance(this,1000)&#34;&gt;1 km&lt;/button&gt;
    &lt;button onclick=&#34;setDistance(this,5000)&#34;&gt;5 km&lt;/button&gt;
    &lt;button onclick=&#34;setDistance(this,10000)&#34;&gt;10 km&lt;/button&gt;
    &lt;button onclick=&#34;setDistance(this,21097)&#34;&gt;21.1 km&lt;/button&gt;
    &lt;button onclick=&#34;setDistance(this,42195)&#34;&gt;42.2 km&lt;/button&gt;
  &lt;/div&gt;
  &lt;div class=&#34;calc-row&#34;&gt;
    &lt;b&gt;Time&lt;/b&gt;&lt;br&gt;
    &lt;div class=&#34;calc-inline&#34;&gt;
      &lt;input id=&#34;hours&#34; value=&#34;0&#34;&gt;h
      &lt;input id=&#34;minutes&#34; value=&#34;50&#34;&gt;m
      &lt;input id=&#34;seconds&#34; value=&#34;0&#34;&gt;s
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&#34;calc-row&#34;&gt;
    &lt;b&gt;Pace&lt;/b&gt;&lt;br&gt;
    &lt;div class=&#34;calc-inline&#34;&gt;
      &lt;input id=&#34;paceMin&#34; value=&#34;5&#34;&gt;min
      &lt;input id=&#34;paceSec&#34; value=&#34;0&#34;&gt;sec
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&#34;splits&#34; class=&#34;splits&#34;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script&gt;
let active = null;

function setDistance(btn, d) {
  document.getElementById(&#34;distance&#34;).value = d;

  document.querySelectorAll(&#34;.buttons button&#34;).forEach(b =&gt; b.classList.remove(&#34;active&#34;));
  btn.classList.add(&#34;active&#34;);

  calculate();
}

window.onload = function() {
  [&#34;distance&#34;,&#34;hours&#34;,&#34;minutes&#34;,&#34;seconds&#34;,&#34;paceMin&#34;,&#34;paceSec&#34;].forEach(id =&gt; {
    document.getElementById(id).addEventListener(&#34;input&#34;, (e) =&gt; {
      active = id;
      calculate();
    });
  });

  calculate();
};

function calculate() {
  const d = parseFloat(document.getElementById(&#34;distance&#34;).value);

  const h = parseFloat(document.getElementById(&#34;hours&#34;).value) || 0;
  const m = parseFloat(document.getElementById(&#34;minutes&#34;).value) || 0;
  const s = parseFloat(document.getElementById(&#34;seconds&#34;).value) || 0;

  const paceMin = parseFloat(document.getElementById(&#34;paceMin&#34;).value) || 0;
  const paceSec = parseFloat(document.getElementById(&#34;paceSec&#34;).value) || 0;

  if (!d) return;

  // TIME → PACE
  if ([&#34;hours&#34;,&#34;minutes&#34;,&#34;seconds&#34;].includes(active)) {
    const totalSec = h*3600 + m*60 + s;
    if (totalSec === 0) return;

    const pace = totalSec / (d / 1000);

    document.getElementById(&#34;paceMin&#34;).value = Math.floor(pace / 60);
    document.getElementById(&#34;paceSec&#34;).value = Math.round(pace % 60);
  }

  // PACE → TIME
  if ([&#34;paceMin&#34;,&#34;paceSec&#34;].includes(active)) {
    const paceTotal = paceMin*60 + paceSec;
    if (paceTotal === 0) return;

    const totalSec = paceTotal * (d / 1000);

    document.getElementById(&#34;hours&#34;).value = Math.floor(totalSec / 3600);
    document.getElementById(&#34;minutes&#34;).value = Math.floor((totalSec % 3600) / 60);
    document.getElementById(&#34;seconds&#34;).value = Math.round(totalSec % 60);
  }

  updateSplits();
}

function formatTime(totalSec) {
  const h = Math.floor(totalSec / 3600);
  const m = Math.floor((totalSec % 3600) / 60);
  const s = Math.round(totalSec % 60);

  return `${h}:${String(m).padStart(2,&#39;0&#39;)}:${String(s).padStart(2,&#39;0&#39;)}`;
}

function updateSplits() {
  const d = parseFloat(document.getElementById(&#34;distance&#34;).value);
  const paceMin = parseFloat(document.getElementById(&#34;paceMin&#34;).value) || 0;
  const paceSec = parseFloat(document.getElementById(&#34;paceSec&#34;).value) || 0;

  const paceTotal = paceMin * 60 + paceSec;
  if (!d || !paceTotal) return;

  const totalKm = Math.floor(d / 1000);

  let html = &#34;&#34;;

  for (let i = 1; i &lt;= totalKm; i++) {

    const sec = paceTotal * i;
    const isKey = (i % 5 === 0 || i === totalKm);

    html += `
      &lt;div class=&#34;split-row ${isKey ? &#39;split-key&#39; : &#39;&#39;}&#34;&gt;
        &lt;span&gt;${i} km&lt;/span&gt;
        &lt;span&gt;${formatTime(sec)}&lt;/span&gt;
      &lt;/div&gt;
    `;
  }

  document.getElementById(&#34;splits&#34;).innerHTML = html;
}
&lt;/script&gt;</description>
    </item>
  </channel>
</rss>
