{"id":7009,"date":"2025-06-26T15:47:56","date_gmt":"2025-06-26T13:47:56","guid":{"rendered":"https:\/\/inventi.pl\/?page_id=7009"},"modified":"2025-06-26T16:23:02","modified_gmt":"2025-06-26T14:23:02","slug":"timer","status":"publish","type":"page","link":"https:\/\/inventi.pl\/en\/timer\/","title":{"rendered":"timer"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"7009\" class=\"elementor elementor-7009\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50ded06 e-con-full e-flex e-con e-parent\" data-id=\"50ded06\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c54b7d elementor-widget elementor-widget-html\" data-id=\"0c54b7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\">\r\n  <title>OBS Countdown Timer<\/title>\r\n  <style>\r\n    html, body {\r\n      margin: 0;\r\n      padding: 0;\r\n      background: black;\r\n      overflow: hidden;\r\n      height: 100%;\r\n      font-family: sans-serif;\r\n    }\r\n    canvas {\r\n      display: block;\r\n    }\r\n    #setupModal {\r\n      position: absolute;\r\n      top: 0;\r\n      left: 0;\r\n      width: 100vw;\r\n      height: 100vh;\r\n      background: rgba(0,0,0,0.9);\r\n      color: white;\r\n      display: flex;\r\n      flex-direction: column;\r\n      justify-content: center;\r\n      align-items: center;\r\n      font-size: 24px;\r\n      z-index: 10;\r\n    }\r\n    #setupModal input[type=\"number\"] {\r\n      font-size: 24px;\r\n      width: 80px;\r\n      margin: 10px;\r\n    }\r\n    #setupModal label {\r\n      margin-top: 10px;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n    }\r\n    #startBtn {\r\n      margin-top: 20px;\r\n      padding: 10px 30px;\r\n      font-size: 20px;\r\n      cursor: pointer;\r\n      background: orange;\r\n      border: none;\r\n      color: black;\r\n      border-radius: 5px;\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n<div id=\"setupModal\">\r\n  <div>\r\n    <label>Enter Minutes: <input type=\"number\" id=\"minutesInput\" value=\"43\" min=\"1\" \/><\/label>\r\n    <label><input type=\"checkbox\" id=\"fullMinutesChk\" \/> Full-minute display (MM:00)<\/label>\r\n    <button id=\"startBtn\">Start<\/button>\r\n  <\/div>\r\n<\/div>\r\n<canvas id=\"timerCanvas\"><\/canvas>\r\n<script>\r\n  const defaultFullMinuteMode = false;\r\n\r\n  const canvas = document.getElementById(\"timerCanvas\");\r\n  const ctx = canvas.getContext(\"2d\");\r\n  let width = canvas.width = window.innerWidth;\r\n  let height = canvas.height = window.innerHeight;\r\n\r\n  let totalSeconds = 0;\r\n  let remaining = 0;\r\n  let startTime = 0;\r\n  let endTime = 0;\r\n  let running = false;\r\n  let flashing = false;\r\n  let flashState = false;\r\n  let fullMinuteDisplay = defaultFullMinuteMode;\r\n  let autoStartTriggered = false;\r\n\r\n  document.getElementById(\"fullMinutesChk\").checked = defaultFullMinuteMode;\r\n\r\n  function startCountdown(minutes, useFullMinuteMode) {\r\n    fullMinuteDisplay = useFullMinuteMode;\r\n    totalSeconds = minutes * 60;\r\n    remaining = totalSeconds;\r\n    startTime = Date.now();\r\n    endTime = startTime + totalSeconds * 1000;\r\n    running = true;\r\n    document.getElementById(\"setupModal\").style.display = \"none\";\r\n    requestAnimationFrame(draw);\r\n  }\r\n\r\n  document.getElementById(\"startBtn\").onclick = () => {\r\n    if (running) return;\r\n    const mins = parseInt(document.getElementById(\"minutesInput\").value, 10);\r\n    if (!mins || mins < 1) return;\r\n    const useFullMinute = document.getElementById(\"fullMinutesChk\").checked;\r\n    startCountdown(mins, useFullMinute);\r\n  };\r\n\r\n  setTimeout(() => {\r\n    if (!running) {\r\n      autoStartTriggered = true;\r\n      startCountdown(42, defaultFullMinuteMode);\r\n    }\r\n  }, 10000);\r\n\r\n  function formatParts(sec) {\r\n    const m = Math.floor(sec \/ 60).toString().padStart(2, '0');\r\n    const showSeconds = !fullMinuteDisplay || sec <= 59;\r\n    const s = showSeconds ? Math.floor(sec % 60).toString().padStart(2, '0') : \"00\";\r\n    return [m, \":\", s];\r\n  }\r\n\r\n  function draw() {\r\n    ctx.clearRect(0, 0, width, height);\r\n\r\n    ctx.fillStyle = flashing ? (flashState ? \"white\" : \"black\") : \"black\";\r\n    ctx.fillRect(0, 0, width, height);\r\n    ctx.fillStyle = flashing ? (flashState ? \"black\" : \"white\") : \"white\";\r\n\r\n    const fontSize = Math.floor(width * 0.3);\r\n    ctx.font = `bold ${fontSize}px sans-serif`;\r\n    ctx.textBaseline = \"middle\";\r\n    ctx.textAlign = \"left\";\r\n\r\n    const [mm, colon, ss] = formatParts(remaining);\r\n    const spacing = ctx.measureText(\"88\").width;\r\n    const colonWidth = ctx.measureText(\":\").width;\r\n    const totalTextWidth = spacing * 2 + colonWidth;\r\n    const startX = (width - totalTextWidth) \/ 2;\r\n    const centerY = height \/ 2;\r\n\r\n    ctx.fillText(mm, startX, centerY);\r\n    ctx.fillText(colon, startX + spacing, centerY);\r\n    ctx.fillText(ss, startX + spacing + colonWidth, centerY);\r\n\r\n    if (!flashing) {\r\n      const progress = 1 - (remaining \/ totalSeconds);\r\n      const barWidth = width * 0.8;\r\n      const barHeight = 80;\r\n      const barX = (width - barWidth) \/ 2;\r\n      const barY = height * 0.8;\r\n      const gap = 30;\r\n      const chunk = (barWidth - 3 * gap) \/ 4;\r\n\r\n      for (let i = 0; i < 4; i++) {\r\n        const x = barX + i * (chunk + gap);\r\n        ctx.fillStyle = \"midnightblue\";\r\n        ctx.fillRect(x, barY, chunk, barHeight);\r\n      }\r\n\r\n      ctx.fillStyle = \"orangered\";\r\n      const fillPercent = progress * 100;\r\n      for (let i = 0; i < 4; i++) {\r\n        const x = barX + i * (chunk + gap);\r\n        const chunkStartPercent = i * 25;\r\n        const chunkEndPercent = (i + 1) * 25;\r\n\r\n        if (fillPercent >= chunkEndPercent) {\r\n          ctx.fillRect(x, barY, chunk, barHeight);\r\n        } else if (fillPercent > chunkStartPercent) {\r\n          const percentInChunk = (fillPercent - chunkStartPercent) \/ 25;\r\n          ctx.fillRect(x, barY, chunk * percentInChunk, barHeight);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (running) {\r\n      const now = Date.now();\r\n      remaining = Math.max(0, Math.floor((endTime - now) \/ 1000));\r\n      if (remaining > 0) {\r\n        requestAnimationFrame(draw);\r\n      } else {\r\n        running = false;\r\n        startFlashing();\r\n      }\r\n    } else if (flashing) {\r\n      requestAnimationFrame(draw);\r\n    }\r\n  }\r\n\r\n  function startFlashing() {\r\n    flashing = true;\r\n    setInterval(() => {\r\n      flashState = !flashState;\r\n    }, 500);\r\n    requestAnimationFrame(draw);\r\n  }\r\n\r\n  window.onresize = () => {\r\n    width = canvas.width = window.innerWidth;\r\n    height = canvas.height = window.innerHeight;\r\n    if (running || flashing) draw();\r\n  };\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>OBS Countdown Timer Enter Minutes: Full-minute display (MM:00) Start<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-7009","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>timer &#060; Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/inventi.pl\/en\/timer\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"timer &#060; Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.\" \/>\n<meta property=\"og:description\" content=\"OBS Countdown Timer Enter Minutes: Full-minute display (MM:00) Start\" \/>\n<meta property=\"og:url\" content=\"https:\/\/inventi.pl\/en\/timer\/\" \/>\n<meta property=\"og:site_name\" content=\"Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Inventi.szkolenia\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-26T14:23:02+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/inventi.pl\\\/timer\\\/\",\"url\":\"https:\\\/\\\/inventi.pl\\\/timer\\\/\",\"name\":\"timer &#060; Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/inventi.pl\\\/#website\"},\"datePublished\":\"2025-06-26T13:47:56+00:00\",\"dateModified\":\"2025-06-26T14:23:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/inventi.pl\\\/timer\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/inventi.pl\\\/timer\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/inventi.pl\\\/timer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/inventi.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"timer\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/inventi.pl\\\/#website\",\"url\":\"https:\\\/\\\/inventi.pl\\\/\",\"name\":\"Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.\",\"description\":\"Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.\",\"publisher\":{\"@id\":\"https:\\\/\\\/inventi.pl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/inventi.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/inventi.pl\\\/#organization\",\"name\":\"INVENTI Consulting\",\"url\":\"https:\\\/\\\/inventi.pl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/inventi.pl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/inventi.pl\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/inventi.pl\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/logo.png\",\"width\":1626,\"height\":694,\"caption\":\"INVENTI Consulting\"},\"image\":{\"@id\":\"https:\\\/\\\/inventi.pl\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Inventi.szkolenia\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inventiconsulting\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"timer &#060; Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/inventi.pl\/en\/timer\/","og_locale":"en_US","og_type":"article","og_title":"timer &#060; Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.","og_description":"OBS Countdown Timer Enter Minutes: Full-minute display (MM:00) Start","og_url":"https:\/\/inventi.pl\/en\/timer\/","og_site_name":"Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.","article_publisher":"https:\/\/www.facebook.com\/Inventi.szkolenia","article_modified_time":"2025-06-26T14:23:02+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/inventi.pl\/timer\/","url":"https:\/\/inventi.pl\/timer\/","name":"timer &#060; Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.","isPartOf":{"@id":"https:\/\/inventi.pl\/#website"},"datePublished":"2025-06-26T13:47:56+00:00","dateModified":"2025-06-26T14:23:02+00:00","breadcrumb":{"@id":"https:\/\/inventi.pl\/timer\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/inventi.pl\/timer\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/inventi.pl\/timer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/inventi.pl\/"},{"@type":"ListItem","position":2,"name":"timer"}]},{"@type":"WebSite","@id":"https:\/\/inventi.pl\/#website","url":"https:\/\/inventi.pl\/","name":"Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.","description":"Szkolenia i strategie rozwojowe dla klient\u00f3w korporacyjnych od 2006 r.","publisher":{"@id":"https:\/\/inventi.pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/inventi.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/inventi.pl\/#organization","name":"INVENTI Consulting","url":"https:\/\/inventi.pl\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/inventi.pl\/#\/schema\/logo\/image\/","url":"https:\/\/inventi.pl\/wp-content\/uploads\/2017\/07\/logo.png","contentUrl":"https:\/\/inventi.pl\/wp-content\/uploads\/2017\/07\/logo.png","width":1626,"height":694,"caption":"INVENTI Consulting"},"image":{"@id":"https:\/\/inventi.pl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Inventi.szkolenia","https:\/\/www.linkedin.com\/company\/inventiconsulting\/"]}]}},"_links":{"self":[{"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/pages\/7009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/comments?post=7009"}],"version-history":[{"count":22,"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/pages\/7009\/revisions"}],"predecessor-version":[{"id":7035,"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/pages\/7009\/revisions\/7035"}],"wp:attachment":[{"href":"https:\/\/inventi.pl\/en\/wp-json\/wp\/v2\/media?parent=7009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}