{"id":17375,"date":"2026-09-20T07:01:59","date_gmt":"2026-09-20T07:01:59","guid":{"rendered":"https:\/\/www.dgcrane.com\/?p=17375"},"modified":"2026-09-20T07:02:02","modified_gmt":"2026-09-20T07:02:02","slug":"crane-travelling-static-resistance-calculator","status":"publish","type":"post","link":"https:\/\/www.dgcrane.com\/el\/crane-travelling-static-resistance-calculator\/","title":{"rendered":"\u03a5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae\u03c2 \u03c3\u03c4\u03b1\u03c4\u03b9\u03ba\u03ae\u03c2 \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd"},"content":{"rendered":"<div id=\"calculator\">\n  <div class=\"calculator-shell\">\n    <form id=\"calculator-form\" novalidate action=\"\">\n      <span class=\"calculator-sr-only\">\u0392\u03ac\u03c3\u03b7 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03cd: EN 13135:2026. \u03a0\u03b5\u03b4\u03af\u03bf \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2: \u03c7\u03b1\u03bb\u03cd\u03b2\u03b4\u03b9\u03bd\u03bf\u03b9 \u03c4\u03c1\u03bf\u03c7\u03bf\u03af \u03bc\u03b5 \u03c1\u03bf\u03c5\u03bb\u03b5\u03bc\u03ac\u03bd \u03c3\u03b5 \u03c7\u03b1\u03bb\u03cd\u03b2\u03b4\u03b9\u03bd\u03b5\u03c2 \u03c1\u03ac\u03b3\u03b5\u03c2. \u03a4\u03bf ISO 8686-1:2012 \u03b4\u03b5\u03bd \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03b5\u03be\u03af\u03c3\u03c9\u03c3\u03b7. \u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03b5\u03c0\u03b1\u03bb\u03ae\u03b8\u03b5\u03c5\u03c3\u03b7\u03c2: 17-09-2026.<\/span>\n\n      <section class=\"calculator-section\">\n        <div class=\"calculator-grid\">\n          <div class=\"calculator-field\">\n            <label for=\"calculator-loadMass\">\u039f\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc \u03c6\u03bf\u03c1\u03c4\u03af\u03bf, G<sub>\u03bd<\/sub> (\u03ba\u03b9\u03bb\u03cc)<\/label>\n            <input id=\"calculator-loadMass\" name=\"loadMass\" type=\"number\" inputmode=\"decimal\" min=\"0\" max=\"1000000000\" step=\"any\" value=\"10000\" aria-describedby=\"calculator-loadMass-error\">\n            <span id=\"calculator-loadMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-gravity\">\u0392\u03b1\u03c1\u03cd\u03c4\u03b7\u03c4\u03b1, g (N\/kg)<\/label>\n            <input id=\"calculator-gravity\" name=\"gravity\" type=\"number\" inputmode=\"decimal\" min=\"1\" max=\"20\" step=\"any\" value=\"10\" aria-describedby=\"calculator-gravity-error\">\n            <span id=\"calculator-gravity-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-gradient\">\u0391\u03bd\u03b7\u03c6\u03bf\u03c1\u03b9\u03ba\u03ae \u03ba\u03bb\u03af\u03c3\u03b7, i (\u2030)<\/label>\n            <input id=\"calculator-gradient\" name=\"gradient\" type=\"number\" inputmode=\"decimal\" min=\"0\" max=\"100\" step=\"any\" value=\"1\" aria-describedby=\"calculator-gradient-error\">\n            <span id=\"calculator-gradient-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-wheelType\">\u039a\u03b1\u03c4\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae \u03c4\u03c1\u03bf\u03c7\u03ce\u03bd<\/label>\n            <select id=\"calculator-wheelType\" name=\"wheelType\">\n              <option value=\"flanged\" selected>\u03a4\u03c1\u03bf\u03c7\u03bf\u03af \u03bc\u03b5 \u03c6\u03bb\u03ac\u03bd\u03c4\u03b6\u03b1<\/option>\n              <option value=\"flangeless\">\u03a4\u03c1\u03bf\u03c7\u03bf\u03af \u03c7\u03c9\u03c1\u03af\u03c2 \u03c6\u03bb\u03ac\u03bd\u03c4\u03b6\u03b1<\/option>\n            <\/select>\n            <span id=\"calculator-wheelType-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneMass\">\u0399\u03b4\u03b9\u03bf\u03bc\u03ac\u03b6\u03b1 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd, G (kg)<\/label>\n            <input id=\"calculator-craneMass\" name=\"craneMass\" type=\"number\" inputmode=\"decimal\" min=\"0.000001\" max=\"1000000000\" step=\"any\" value=\"20000\" aria-describedby=\"calculator-craneMass-error\">\n            <span id=\"calculator-craneMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyMass\">\u0391\u03c5\u03c4\u03bf\u03bc\u03ac\u03b6\u03b1 \u03ba\u03b1\u03c1\u03bf\u03c4\u03c3\u03b9\u03bf\u03cd, G<sub>1<\/sub> (\u03ba\u03b9\u03bb\u03cc)<\/label>\n            <input id=\"calculator-trolleyMass\" name=\"trolleyMass\" type=\"number\" inputmode=\"decimal\" min=\"0.000001\" max=\"1000000000\" step=\"any\" value=\"2000\" aria-describedby=\"calculator-trolleyMass-error\">\n            <span id=\"calculator-trolleyMass-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneDiameter\">\u03a4\u03c1\u03bf\u03c7\u03cc\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd D<sub>w<\/sub> (mm)<\/label>\n            <select id=\"calculator-craneDiameter\" name=\"craneDiameter\">\n              <option value=\"50\">50<\/option>\n              <option value=\"80\">80<\/option>\n              <option value=\"100\">100<\/option>\n              <option value=\"125\">125<\/option>\n              <option value=\"160\">160<\/option>\n              <option value=\"250\">250<\/option>\n              <option value=\"320\">320<\/option>\n              <option value=\"400\" selected>400<\/option>\n              <option value=\"630\">630 \u03ba\u03b1\u03b9 \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03bf<\/option>\n            <\/select>\n            <span id=\"calculator-craneDiameter-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-craneFactor\">\u03a3\u03c5\u03bd\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd, F<sub>\u03c1<\/sub><\/label>\n            <select id=\"calculator-craneFactor\" name=\"craneFactor\" aria-describedby=\"calculator-craneFactor-error\"><\/select>\n            <span id=\"calculator-craneFactor-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyDiameter\">\u03a4\u03c1\u03bf\u03c7\u03cc\u03c2 \u03c4\u03c1\u03cc\u03bb\u03b5\u03ca D<sub>w<\/sub> (mm)<\/label>\n            <select id=\"calculator-trolleyDiameter\" name=\"trolleyDiameter\">\n              <option value=\"50\">50<\/option>\n              <option value=\"80\">80<\/option>\n              <option value=\"100\">100<\/option>\n              <option value=\"125\">125<\/option>\n              <option value=\"160\" selected>160<\/option>\n              <option value=\"250\">250<\/option>\n              <option value=\"320\">320<\/option>\n              <option value=\"400\">400<\/option>\n              <option value=\"630\">630 \u03ba\u03b1\u03b9 \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03bf<\/option>\n            <\/select>\n            <span id=\"calculator-trolleyDiameter-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n\n          <div class=\"calculator-field\">\n            <label for=\"calculator-trolleyFactor\">\u03a3\u03c5\u03bd\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u03c4\u03c1\u03cc\u03bb\u03b5\u03ca, F<sub>\u03c1<\/sub><\/label>\n            <select id=\"calculator-trolleyFactor\" name=\"trolleyFactor\" aria-describedby=\"calculator-trolleyFactor-error\"><\/select>\n            <span id=\"calculator-trolleyFactor-error\" class=\"error-msg\" aria-live=\"polite\"><\/span>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <div id=\"calculator-error-summary\" class=\"calculator-error-summary\" role=\"alert\" tabindex=\"-1\"><\/div>\n\n      <div class=\"calculator-actions\">\n        <button type=\"submit\">\u03a5\u03c0\u03bf\u03bb\u03bf\u03b3\u03af\u03b6\u03c9<\/button>\n        <button type=\"reset\" class=\"calculator-reset\">\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac<\/button>\n      <\/div>\n    <input type=\"hidden\" name=\"trp-form-language\" value=\"el\"\/><\/form>\n\n    <section class=\"calculator-results\" aria-live=\"polite\" aria-atomic=\"true\">\n      <div class=\"calculator-result-card calculator-result-main\">\n        <span>\u03a3\u03c4\u03b1\u03c4\u03b9\u03ba\u03ae \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd, F<sub>st,max<\/sub><\/span>\n        <strong id=\"calculator-craneTotal\">\u2014<\/strong>\n      <\/div>\n\n      <div class=\"calculator-result-card\">\n        <span>\u03a3\u03c4\u03b1\u03c4\u03b9\u03ba\u03ae \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03ba\u03b1\u03c1\u03bf\u03c4\u03c3\u03b9\u03bf\u03cd, F<sub>st,max<\/sub><\/span>\n        <strong id=\"calculator-trolleyTotal\">\u2014<\/strong>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <style>\n    #calculator {\n      --primary-color: #0a3487;\n      --primary-hover: #F58423;\n      --error-color: #e53935;\n      --bg-color: #EAEEF7;\n      --text-color: #4a4a4a;\n      --surface-color: #ffffff;\n      --border-color: #cccccc;\n      --soft-primary: #edf2ff;\n      --soft-error: #fff3f2;\n      --focus-shadow: rgba(10, 52, 135, 0.18);\n\n      max-width: 545px;\n      margin: 0 auto;\n      padding: 30px;\n      color: var(--text-color);\n      background: var(--bg-color);\n      font-family: Arial, Helvetica, sans-serif;\n      line-height: 1.5;\n      box-sizing: border-box;\n    }\n\n    #calculator *,\n    #calculator *::before,\n    #calculator *::after {\n      box-sizing: border-box;\n    }\n\n    #calculator .calculator-shell {\n      padding: 24px;\n      border-top: 5px solid var(--primary-color);\n      background: var(--surface-color);\n    }\n\n    #calculator .calculator-sr-only {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n\n    #calculator .calculator-section {\n      margin: 0 0 16px;\n      padding: 16px;\n      background: var(--bg-color);\n    }\n\n    #calculator .calculator-grid {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 12px 14px;\n      align-items: start;\n    }\n\n    #calculator .calculator-field {\n      min-width: 0;\n    }\n\n    #calculator label,\n    #calculator button,\n    #calculator select {\n      font-size: 14px;\n    }\n\n    #calculator label {\n      display: flex;\n      min-height: 38px;\n      margin-bottom: 5px;\n      align-items: flex-end;\n      font-weight: 700;\n    }\n\n    #calculator input,\n    #calculator select,\n    #calculator button {\n      width: 100%;\n      border-radius: 0;\n      transition: 0.2s ease;\n    }\n\n    #calculator input,\n    #calculator select {\n      height: 36px;\n      padding: 5px 9px;\n      border: 1px solid var(--border-color);\n      color: var(--text-color);\n      background: var(--surface-color);\n      font-size: 16px;\n    }\n\n    #calculator input:focus,\n    #calculator select:focus {\n      border: 2px solid var(--primary-color);\n      outline: 0;\n      box-shadow: 0 0 0 3px var(--focus-shadow);\n    }\n\n    #calculator input.error,\n    #calculator select.error,\n    #calculator input.error:focus,\n    #calculator select.error:focus {\n      border: 2px solid var(--error-color);\n      box-shadow: none;\n    }\n\n    #calculator .error-msg {\n      display: none;\n      margin-top: 5px;\n      color: var(--error-color);\n      font-size: 12px;\n      font-weight: 700;\n    }\n\n    #calculator .error-msg.visible {\n      display: block;\n    }\n\n    #calculator .calculator-error-summary {\n      display: none;\n      margin-bottom: 14px;\n      padding: 10px;\n      border-left: 4px solid var(--error-color);\n      color: var(--error-color);\n      background: var(--soft-error);\n      font-weight: 700;\n    }\n\n    #calculator .calculator-error-summary.visible {\n      display: block;\n    }\n\n    #calculator .calculator-actions {\n      display: flex;\n      gap: 12px;\n      margin-top: 4px;\n    }\n\n    #calculator button {\n      height: 34px;\n      padding: 0 16px;\n      border: 0;\n      color: var(--surface-color);\n      background: var(--primary-color);\n      font-weight: 700;\n      line-height: 34px;\n      cursor: pointer;\n    }\n\n    #calculator button:hover,\n    #calculator button:focus-visible {\n      background: var(--primary-hover);\n      outline: 2px solid var(--primary-color);\n      outline-offset: 2px;\n    }\n\n    #calculator button.calculator-reset {\n      color: var(--primary-color);\n      background: var(--surface-color);\n      border: 1px solid var(--primary-color);\n    }\n\n    #calculator button.calculator-reset:hover,\n    #calculator button.calculator-reset:focus-visible {\n      color: var(--surface-color);\n      background: var(--primary-hover);\n    }\n\n    #calculator .calculator-results {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 12px;\n      margin-top: 18px;\n    }\n\n    #calculator .calculator-result-card {\n      margin: 0;\n      padding: 14px;\n      border-left: 4px solid var(--primary-color);\n      background: var(--soft-primary);\n    }\n\n    #calculator .calculator-result-card > span {\n      display: block;\n      font-size: 13px;\n      font-weight: 700;\n    }\n\n    #calculator .calculator-result-card strong {\n      display: block;\n      margin: 4px 0 10px;\n      color: var(--primary-color);\n      font-size: 32px;\n      line-height: 1.15;\n      overflow-wrap: anywhere;\n    }\n\n    @media (max-width: 768px) {\n      #calculator {\n        padding: 0.3rem;\n      }\n\n      #calculator .calculator-shell {\n        padding: 0.3rem;\n      }\n\n      #calculator label,\n      #calculator input,\n      #calculator select,\n      #calculator button {\n        font-size: 0.28rem;\n      }\n\n      #calculator input,\n      #calculator select,\n      #calculator button {\n        min-height: 0.7rem;\n        height: 0.7rem;\n      }\n\n      #calculator button {\n        line-height: 0.7rem;\n      }\n\n      #calculator .calculator-actions {\n        flex-direction: column;\n      }\n\n      #calculator .calculator-actions button {\n        width: 100%;\n      }\n\n      #calculator .calculator-grid {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        gap: 0.24rem;\n      }\n\n      #calculator label {\n        min-height: 0.7rem;\n      }\n\n      #calculator .calculator-results {\n        grid-template-columns: 1fr;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      #calculator *,\n      #calculator *::before,\n      #calculator *::after {\n        transition: none;\n      }\n    }\n  <\/style>\n\n  <script>\n    (() => {\n      \"use strict\";\n\n      const root = document.getElementById(\"calculator\");\n      if (!root) return;\n\n      const form = root.querySelector(\"#calculator-form\");\n      const summary = root.querySelector(\"#calculator-error-summary\");\n\n      const diameterPoints = [\n        50, 80, 100, 125, 160, 250, 320, 400, 630\n      ];\n\n      const factorSets = {\n        flanged: [\n          0.013, 0.011, 0.010, 0.009, 0.008,\n          0.0065, 0.006, 0.0055, 0.005\n        ],\n        flangeless: [\n          0.011, 0.0095, 0.0085, 0.0075, 0.007,\n          0.0055, 0.0052, 0.005, 0.0045\n        ]\n      };\n\n      const fields = {\n        loadMass: root.querySelector(\"#calculator-loadMass\"),\n        gravity: root.querySelector(\"#calculator-gravity\"),\n        gradient: root.querySelector(\"#calculator-gradient\"),\n        wheelType: root.querySelector(\"#calculator-wheelType\"),\n        craneMass: root.querySelector(\"#calculator-craneMass\"),\n        craneDiameter: root.querySelector(\"#calculator-craneDiameter\"),\n        craneFactor: root.querySelector(\"#calculator-craneFactor\"),\n        trolleyMass: root.querySelector(\"#calculator-trolleyMass\"),\n        trolleyDiameter: root.querySelector(\"#calculator-trolleyDiameter\"),\n        trolleyFactor: root.querySelector(\"#calculator-trolleyFactor\")\n      };\n\n      const outputs = {\n        craneTotal: root.querySelector(\"#calculator-craneTotal\"),\n        trolleyTotal: root.querySelector(\"#calculator-trolleyTotal\")\n      };\n\n      function setError(fieldName, message) {\n        const input = fields[fieldName];\n        const error = root.querySelector(\n          `#calculator-${fieldName}-error`\n        );\n\n        input.classList.add(\"error\");\n        input.setAttribute(\"aria-invalid\", \"true\");\n\n        if (error) {\n          error.textContent = message;\n          error.classList.add(\"visible\");\n        }\n      }\n\n      function clearError(fieldName) {\n        const input = fields[fieldName];\n        const error = root.querySelector(\n          `#calculator-${fieldName}-error`\n        );\n\n        input.classList.remove(\"error\");\n        input.removeAttribute(\"aria-invalid\");\n\n        if (error) {\n          error.textContent = \"\";\n          error.classList.remove(\"visible\");\n        }\n      }\n\n      function validateInput(\n        fieldName,\n        label,\n        minimum,\n        maximum,\n        allowZero\n      ) {\n        const input = fields[fieldName];\n        const value = Number.parseFloat(input.value);\n\n        clearError(fieldName);\n\n        if (\n          input.value.trim() === \"\" ||\n          !Number.isFinite(value)\n        ) {\n          setError(\n            fieldName,\n            `${label} is required and must be a finite number.`\n          );\n          return null;\n        }\n\n        if (\n          (!allowZero && value <= minimum) ||\n          (allowZero &#038;&#038; value < minimum) ||\n          value > maximum\n        ) {\n          const relation = allowZero\n            ? `from ${minimum}`\n            : `greater than ${minimum}`;\n\n          setError(\n            fieldName,\n            `${label} must be ${relation} and no more than ${maximum}.`\n          );\n          return null;\n        }\n\n        return value;\n      }\n\n      function rollingFactor(wheelType, diameter) {\n        const factors = factorSets[wheelType];\n\n        if (!factors) {\n          throw new Error(\"Unsupported wheel construction.\");\n        }\n\n        const index = diameterPoints.indexOf(Number(diameter));\n\n        if (index === -1) {\n          throw new Error(\n            \"Unsupported wheel diameter selection.\"\n          );\n        }\n\n        return factors[index];\n      }\n\n      function calculateTravelResistance(\n        loadMass,\n        selfMass,\n        gravity,\n        gradientPerMille,\n        factor\n      ) {\n        const normalForce =\n          (loadMass + selfMass) * gravity;\n\n        const rolling =\n          normalForce * factor;\n\n        const grade =\n          normalForce * gradientPerMille \/ 1000;\n\n        return {\n          total: rolling + grade\n        };\n      }\n\n      function clearResults() {\n        outputs.craneTotal.textContent = \"\u2014\";\n        outputs.trolleyTotal.textContent = \"\u2014\";\n      }\n\n      function formatForce(value) {\n        return `${value.toLocaleString(\"en-US\", {\n          minimumFractionDigits: 2,\n          maximumFractionDigits: 2\n        })} N`;\n      }\n\n      function formatFactor(value) {\n        return value\n          .toFixed(6)\n          .replace(\/0+$\/, \"\")\n          .replace(\/\\.$\/, \"\");\n      }\n\n      function populateFactorOptions(prefix) {\n        const wheelType = fields.wheelType.value;\n        const diameter =\n          Number(fields[`${prefix}Diameter`].value);\n\n        const factorSelect =\n          fields[`${prefix}Factor`];\n\n        const factors = factorSets[wheelType];\n\n        const options = factors.map((factor) => {\n          const option =\n            document.createElement(\"option\");\n\n          option.value = String(factor);\n          option.textContent =\n            formatFactor(factor);\n\n          return option;\n        });\n\n        factorSelect.replaceChildren(...options);\n\n        factorSelect.value = String(\n          rollingFactor(wheelType, diameter)\n        );\n      }\n\n      function syncWheelSelectors(\n        prefix,\n        changedField\n      ) {\n        const wheelType =\n          fields.wheelType.value;\n\n        const diameterSelect =\n          fields[`${prefix}Diameter`];\n\n        const factorSelect =\n          fields[`${prefix}Factor`];\n\n        if (changedField === \"type\") {\n          populateFactorOptions(prefix);\n          return;\n        }\n\n        if (changedField === \"factor\") {\n          const factor =\n            Number(factorSelect.value);\n\n          const index =\n            factorSets[wheelType].findIndex(\n              (candidate) => candidate === factor\n            );\n\n          if (index !== -1) {\n            diameterSelect.value =\n              String(diameterPoints[index]);\n          }\n\n          return;\n        }\n\n        factorSelect.value = String(\n          rollingFactor(\n            wheelType,\n            Number(diameterSelect.value)\n          )\n        );\n      }\n\n      function readAndValidate() {\n        const values = {\n          loadMass: validateInput(\n            \"loadMass\",\n            \"Rated load\",\n            0,\n            1000000000,\n            true\n          ),\n\n          gravity: validateInput(\n            \"gravity\",\n            \"Gravity\",\n            1,\n            20,\n            false\n          ),\n\n          gradient: validateInput(\n            \"gradient\",\n            \"Uphill gradient\",\n            0,\n            100,\n            true\n          ),\n\n          craneMass: validateInput(\n            \"craneMass\",\n            \"Crane self mass\",\n            0,\n            1000000000,\n            false\n          ),\n\n          craneDiameter:\n            Number(fields.craneDiameter.value),\n\n          craneFactor:\n            Number(fields.craneFactor.value),\n\n          trolleyMass: validateInput(\n            \"trolleyMass\",\n            \"Trolley self mass\",\n            0,\n            1000000000,\n            false\n          ),\n\n          trolleyDiameter:\n            Number(fields.trolleyDiameter.value),\n\n          trolleyFactor:\n            Number(fields.trolleyFactor.value),\n\n          wheelType:\n            fields.wheelType.value\n        };\n\n        const linkedSelectionsValid =\n          values.craneFactor === rollingFactor(\n            values.wheelType,\n            values.craneDiameter\n          ) &&\n          values.trolleyFactor === rollingFactor(\n            values.wheelType,\n            values.trolleyDiameter\n          );\n\n        const invalid =\n          Object.entries(values).filter(\n            ([name, value]) =>\n              name !== \"wheelType\" &&\n              (\n                value === null ||\n                !Number.isFinite(value)\n              )\n          );\n\n        if (!linkedSelectionsValid) {\n          setError(\n            \"craneFactor\",\n            \"Wheel construction, diameter and factor must match.\"\n          );\n\n          setError(\n            \"trolleyFactor\",\n            \"Wheel construction, diameter and factor must match.\"\n          );\n\n          return null;\n        }\n\n        return invalid.length ? null : values;\n      }\n\n      function showResults(crane, trolley) {\n        outputs.craneTotal.textContent =\n          formatForce(crane.total);\n\n        outputs.trolleyTotal.textContent =\n          formatForce(trolley.total);\n      }\n\n      populateFactorOptions(\"crane\");\n      populateFactorOptions(\"trolley\");\n\n      fields.wheelType.addEventListener(\n        \"change\",\n        () => {\n          syncWheelSelectors(\"crane\", \"type\");\n          syncWheelSelectors(\"trolley\", \"type\");\n        }\n      );\n\n      fields.craneDiameter.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"crane\",\n          \"diameter\"\n        )\n      );\n\n      fields.craneFactor.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"crane\",\n          \"factor\"\n        )\n      );\n\n      fields.trolleyDiameter.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"trolley\",\n          \"diameter\"\n        )\n      );\n\n      fields.trolleyFactor.addEventListener(\n        \"change\",\n        () => syncWheelSelectors(\n          \"trolley\",\n          \"factor\"\n        )\n      );\n\n      Object.keys(fields).forEach(\n        (fieldName) => {\n          fields[fieldName].addEventListener(\n            \"input\",\n            () => clearError(fieldName)\n          );\n\n          fields[fieldName].addEventListener(\n            \"change\",\n            () => clearError(fieldName)\n          );\n        }\n      );\n\n      form.addEventListener(\n        \"submit\",\n        (event) => {\n          event.preventDefault();\n\n          summary.textContent = \"\";\n          summary.classList.remove(\"visible\");\n\n          const values = readAndValidate();\n\n          if (!values) {\n            clearResults();\n\n            summary.textContent =\n              \"Please correct the highlighted fields.\";\n\n            summary.classList.add(\"visible\");\n            summary.focus();\n            return;\n          }\n\n          const crane =\n            calculateTravelResistance(\n              values.loadMass,\n              values.craneMass,\n              values.gravity,\n              values.gradient,\n              values.craneFactor\n            );\n\n          const trolley =\n            calculateTravelResistance(\n              values.loadMass,\n              values.trolleyMass,\n              values.gravity,\n              values.gradient,\n              values.trolleyFactor\n            );\n\n          showResults(crane, trolley);\n        }\n      );\n\n      form.addEventListener(\n        \"reset\",\n        () => {\n          window.setTimeout(() => {\n            Object.keys(fields).forEach(\n              clearError\n            );\n\n            summary.textContent = \"\";\n            summary.classList.remove(\"visible\");\n\n            populateFactorOptions(\"crane\");\n            populateFactorOptions(\"trolley\");\n            clearResults();\n          }, 0);\n        }\n      );\n    })();\n  <\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u03a4\u03cd\u03c0\u03bf\u03c2 \u03a5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae \u03a3\u03c4\u03b1\u03c4\u03b9\u03ba\u03ae\u03c2 \u0391\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u0393\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd<\/h2>\n\n\n\n<div id=\"travel-resistance-formulas\">\n  <div class=\"formula\">\n    \u03c6\u03ac<sub>\u03c6\u03ac<\/sub>\n    = (\u0393<sub>\u03bd<\/sub> + G) \u00d7 g \u00d7 f<sub>\u03c1<\/sub>\n  <\/div>\n\n  <div class=\"formula\">\n    \u03c6\u03ac<sub>\u03bc\u03b9\u03ba\u03c1\u03cc<\/sub>\n    = (\u0393<sub>\u03bd<\/sub> + G) \u00d7 g \u00d7 i\n    <span class=\"formula-condition\">\n    <\/span>\n  <\/div>\n\n  <div class=\"formula formula-total\">\n    \u03c6\u03ac<sub>st,max<\/sub>\n    = \u03a6<sub>\u03c6\u03ac<\/sub>\n    + \u03a6<sub>\u03bc\u03b9\u03ba\u03c1\u03cc<\/sub>\n  <\/div>\n\n  <style>\n    #travel-resistance-formulas {\n      --text-color: #4a4a4a;\n\n      width: 100%;\n      margin: 0;\n      padding: 0;\n      color: var(--text-color);\n      box-sizing: border-box;\n    }\n\n    #travel-resistance-formulas *,\n    #travel-resistance-formulas *::before,\n    #travel-resistance-formulas *::after {\n      box-sizing: border-box;\n    }\n\n    #travel-resistance-formulas .formula {\n      padding: 7px 0;\n      color: var(--text-color);\n      font-family: \"Segoe UI\", Arial, Helvetica, sans-serif;\n      font-size: 20px;\n      font-style: normal;\n      font-weight: 400;\n      line-height: 1.55;\n      text-align: left;\n      white-space: nowrap;\n    }\n\n    #travel-resistance-formulas .formula sub {\n      font-size: 65%;\n      font-style: normal;\n      vertical-align: -0.3em;\n    }\n\n    #travel-resistance-formulas .formula-condition {\n      margin-left: 8px;\n      font-size: 16px;\n      font-style: normal;\n      font-weight: 400;\n    }\n\n    #travel-resistance-formulas .formula-total {\n      color: var(--text-color);\n      font-size: 20px;\n      font-style: normal;\n      font-weight: 600;\n    }\n\n    @media (max-width: 520px) {\n      #travel-resistance-formulas {\n        overflow-x: auto;\n      }\n\n      #travel-resistance-formulas .formula {\n        font-size: 18px;\n      }\n\n      #travel-resistance-formulas .formula-condition {\n        font-size: 14px;\n      }\n\n      #travel-resistance-formulas .formula-total {\n        font-size: 18px;\n      }\n    }\n  <\/style>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u03c3\u03bf\u03bb<sub>\u03bd<\/sub>: \u039f\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc \u03c6\u03bf\u03c1\u03c4\u03af\u03bf \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd, \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1: kg<\/li>\n\n\n\n<li>G: \u038a\u03b4\u03b9\u03bf \u03b2\u03ac\u03c1\u03bf\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd, \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1: kg<\/li>\n\n\n\n<li>\u03c3\u03bf\u03bb<sub>1<\/sub>: \u038a\u03b4\u03b9\u03bf \u03b2\u03ac\u03c1\u03bf\u03c2 \u03ba\u03b1\u03c1\u03bf\u03c4\u03c3\u03b9\u03bf\u03cd, \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1: kg<\/li>\n\n\n\n<li>g: \u0392\u03b1\u03c1\u03cd\u03c4\u03b7\u03c4\u03b1 (\u03b7 \u03c4\u03b9\u03bc\u03ae \u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c9\u03c2 10 N\/kg)<\/li>\n\n\n\n<li>\u03c6\u03ac<sub>\u03c1<\/sub>\u03a3\u03c5\u03bd\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u03c4\u03c1\u03b9\u03b2\u03ae\u03c2 \u03ba\u03cd\u03bb\u03b9\u03c3\u03b7\u03c2<\/li>\n\n\n\n<li>i: \u03a5\u03c0\u03bf\u03c4\u03b9\u03b8\u03ad\u03bc\u03b5\u03bd\u03b7 \u03ba\u03bb\u03af\u03c3\u03b7<\/li>\n\n\n\n<li>\u03c6\u03ac<sub>\u03c6\u03ac<\/sub>: \u0391\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03c1\u03b9\u03b2\u03ae\u03c2, \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1: N<\/li>\n\n\n\n<li>Fs: \u0391\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03bb\u03af\u03c3\u03b7\u03c2, \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1: N<\/li>\n\n\n\n<li>\u03c6\u03ac<sub>st, max<\/sub>\u03a3\u03c4\u03b1\u03c4\u03b9\u03ba\u03ae \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd, \u03bc\u03bf\u03bd\u03ac\u03b4\u03b1: N<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u03a3\u03b7\u03bc\u03b5\u03b9\u03ce\u03c3\u03b5\u03b9\u03c2<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0391\u03c5\u03c4\u03cc \u03c4\u03bf f<sub>\u03c1<\/sub> \u039f \u03c3\u03c5\u03bd\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u03c3\u03c4\u03b7\u03bd \u03c0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc\u03c4\u03b7\u03c4\u03b1 \u03b1\u03bd\u03c4\u03b9\u03c0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b5\u03cd\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03cd\u03bb\u03b9\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c4\u03c1\u03bf\u03c7\u03bf\u03cd \u03c3\u03c5\u03bd \u03c4\u03b7\u03bd \u03c4\u03c1\u03b9\u03b2\u03ae \u03c4\u03c9\u03bd \u03c1\u03bf\u03c5\u03bb\u03b5\u03bc\u03ac\u03bd \u03c4\u03bf\u03c5 \u03c4\u03c1\u03bf\u03c7\u03bf\u03cd, \u03bc\u03b1\u03b6\u03af \u03bc\u03b5 \u03c4\u03b9\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b5\u03c2 \u03b5\u03c0\u03b9\u03b4\u03c1\u03ac\u03c3\u03b5\u03b9\u03c2 \u03c0\u03bf\u03c5 \u03c3\u03c7\u03b5\u03c4\u03af\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03c4\u03b7 \u03c6\u03bb\u03ac\u03bd\u03c4\u03b6\u03b1 \u03c4\u03bf\u03c5 \u03c4\u03c1\u03bf\u03c7\u03bf\u03cd.<\/li>\n\n\n\n<li>\u03a3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2, \u03bf\u03b9 \u03b4\u03b9\u03ac\u03bc\u03b5\u03c4\u03c1\u03bf\u03b9 \u03c4\u03c9\u03bd \u03c4\u03c1\u03bf\u03c7\u03ce\u03bd \u03c4\u03bf\u03c5 \u03bc\u03b7\u03c7\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03b5\u03c2 \u03b1\u03c0\u03cc \u03b1\u03c5\u03c4\u03ad\u03c2 \u03c4\u03bf\u03c5 \u03bc\u03b7\u03c7\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c4\u03c1\u03cc\u03bb\u03b5\u03ca. \u0395\u03c0\u03bf\u03bc\u03ad\u03bd\u03c9\u03c2, \u03b1\u03c5\u03c4\u03ae \u03b7 \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03bc\u03b7\u03c7\u03b1\u03bd\u03ae \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03b9 \u03be\u03b5\u03c7\u03c9\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd\u03c2 \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03bf\u03cd\u03c2 \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03b9\u03c2 \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03c2 \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03c4\u03c1\u03bf\u03c5\u03c2.<\/li>\n\n\n\n<li>\u0393\u03b9\u03b1 \u03c4\u03bf\u03c5\u03c2 \u03ba\u03b9\u03bd\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c5\u03c2 \u03bc\u03b7\u03c7\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03c5\u03c2 \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03ba\u03b9\u03bd\u03b7\u03c4\u03ae\u03c1\u03b5\u03c2, \u03bf\u03b9 \u03b1\u03c0\u03b1\u03b9\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2 \u03b9\u03c3\u03c7\u03cd\u03bf\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03b5\u03c5\u03b1\u03af\u03c3\u03b8\u03b7\u03c4\u03b5\u03c2. \u0391\u03ba\u03cc\u03bc\u03b7 \u03ba\u03b1\u03b9 \u03bc\u03b9\u03b1 \u03ba\u03bb\u03af\u03c3\u03b7 \u03bc\u03cc\u03bb\u03b9\u03c2 1\u2030 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03b9\u03ba\u03ae \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2. \u0395\u03c0\u03bf\u03bc\u03ad\u03bd\u03c9\u03c2, \u03b5\u03bb\u03bb\u03b5\u03af\u03c8\u03b5\u03b9 \u03bc\u03b5\u03c4\u03c1\u03bf\u03cd\u03bc\u03b5\u03bd\u03c9\u03bd \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7, \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03ce\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bc\u03b9\u03b1 \u03c5\u03c0\u03bf\u03c4\u03b9\u03b8\u03ad\u03bc\u03b5\u03bd\u03b7 \u03ba\u03bb\u03af\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03c6\u03b5\u03c5\u03c7\u03b8\u03b5\u03af \u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ae\u03c1\u03b1 \u03bc\u03b9\u03ba\u03c1\u03cc\u03c4\u03b5\u03c1\u03bf\u03c5 \u03bc\u03b5\u03b3\u03ad\u03b8\u03bf\u03c5\u03c2.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0395\u03c6\u03b1\u03c1\u03bc\u03cc\u03c3\u03b9\u03bc\u03bf\u03b9 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03af<\/h2>\n\n\n\n<p>\u03a4\u03b1 \u03c0\u03c1\u03bf\u03ca\u03cc\u03bd\u03c4\u03b1 \u03c0\u03bf\u03c5 \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03c5\u03c1\u03af\u03c9\u03c2 \u03ba\u03b1\u03c4\u03ac\u03bb\u03bb\u03b7\u03bb\u03b1 \u03b3\u03b9\u03b1 \u03c7\u03c1\u03ae\u03c3\u03b7 \u03c3\u03b5 \u03ba\u03bb\u03b5\u03b9\u03c3\u03c4\u03ac \u03b5\u03c3\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ac \u03b5\u03c1\u03b3\u03bf\u03c3\u03c4\u03b1\u03c3\u03b9\u03b1\u03ba\u03ac \u03c0\u03b5\u03c1\u03b9\u03b2\u03ac\u03bb\u03bb\u03bf\u03bd\u03c4\u03b1.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0393\u03b5\u03c1\u03b1\u03bd\u03cc\u03c2 \u03bc\u03bf\u03bd\u03ae\u03c2 \u03b4\u03bf\u03ba\u03bf\u03cd<\/li>\n\n\n\n<li>\u0394\u03b9\u03c0\u03bb\u03cc\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03cc\u03c2 \u03bc\u03b5 \u03b4\u03bf\u03ba\u03cc<\/li>\n\n\n\n<li>\u0393\u03b5\u03c1\u03b1\u03bd\u03bf\u03b3\u03ad\u03c6\u03c5\u03c1\u03b1 \u03bc\u03bf\u03bd\u03ae\u03c2 \u03b4\u03bf\u03ba\u03bf\u03cd (\u03b3\u03b9\u03b1 \u03b5\u03c3\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ae \u03c7\u03c1\u03ae\u03c3\u03b7)<\/li>\n\n\n\n<li>\u0393\u03b5\u03c1\u03b1\u03bd\u03bf\u03b3\u03ad\u03c6\u03c5\u03c1\u03b1 \u03b4\u03b9\u03c0\u03bb\u03ae\u03c2 \u03b4\u03bf\u03ba\u03bf\u03cd (\u03b3\u03b9\u03b1 \u03b5\u03c3\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ae \u03c7\u03c1\u03ae\u03c3\u03b7)<\/li>\n\n\n\n<li>\u03a4\u03c1\u03cc\u03bb\u03b5\u03ca \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd<\/li>\n\n\n\n<li>\u03a4\u03c1\u03cc\u03bb\u03b5\u03ca \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd Gantry<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"\u0397 \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03bc\u03b7\u03c7\u03b1\u03bd\u03ae \u03c3\u03c4\u03b1\u03c4\u03b9\u03ba\u03ae\u03c2 \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd \u03b5\u03ba\u03c4\u03b9\u03bc\u03ac \u03c4\u03b7 \u03b4\u03cd\u03bd\u03b1\u03bc\u03b7 \u03c0\u03bf\u03c5 \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c5\u03c0\u03b5\u03c1\u03bd\u03af\u03ba\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03c1\u03b9\u03b2\u03ae\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b7\u03c2 \u03ba\u03bb\u03af\u03c3\u03b7\u03c2 \u03c4\u03b7\u03c2 \u03c4\u03c1\u03bf\u03c7\u03b9\u03ac\u03c2 \u03b3\u03b9\u03b1 \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae \u03ba\u03af\u03bd\u03b7\u03c3\u03b7. \u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ce\u03bd\u03c4\u03b1\u03c2 \u03c4\u03bf \u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03cc \u03c6\u03bf\u03c1\u03c4\u03af\u03bf \u03ba\u03b1\u03b9 \u03c4\u03bf \u03bd\u03b5\u03ba\u03c1\u03cc \u03b2\u03ac\u03c1\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd, \u03b5\u03bb\u03ad\u03b3\u03c7\u03b5\u03b9 \u03b5\u03ac\u03bd \u03bf\u03b9 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ae\u03c1\u03b5\u03c2 \u03ba\u03b1\u03b9 \u03bf\u03b9 \u03ba\u03b9\u03bd\u03b7\u03c4\u03ae\u03c1\u03b5\u03c2 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03bc\u03b5\u03c4\u03b1\u03ba\u03b9\u03bd\u03ae\u03c3\u03bf\u03c5\u03bd \u03c4\u03bf\u03bd \u03b3\u03b5\u03c1\u03b1\u03bd\u03cc. \u03a4\u03b1 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03bf\u03c5\u03bd \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03bf\u03b9\u03c7\u03c9\u03bd \u03ba\u03b9\u03bd\u03b7\u03c4\u03ae\u03c1\u03c9\u03bd, \u03ba\u03b9\u03b2\u03c9\u03c4\u03af\u03c9\u03bd \u03c4\u03b1\u03c7\u03c5\u03c4\u03ae\u03c4\u03c9\u03bd \u03ba\u03b1\u03b9 \u03c4\u03c1\u03bf\u03c7\u03ce\u03bd. \u0397 \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03bc\u03b7\u03c7\u03b1\u03bd\u03ae \u03c3\u03c4\u03b1\u03c4\u03b9\u03ba\u03ae\u03c2 \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd \u03b2\u03bf\u03b7\u03b8\u03ac \u03b5\u03c0\u03af\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7\u03bd \u03b1\u03be\u03b9\u03bf\u03bb\u03cc\u03b3\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03b9\u03bd\u03b4\u03cd\u03bd\u03bf\u03c5 \u03bf\u03bb\u03af\u03c3\u03b8\u03b7\u03c3\u03b7\u03c2 \u03c4\u03c9\u03bd \u03c4\u03c1\u03bf\u03c7\u03ce\u03bd. \u0393\u03b9\u03b1 \u03ba\u03b5\u03ba\u03bb\u03b9\u03bc\u03ad\u03bd\u03b5\u03c2 \u03c4\u03c1\u03bf\u03c7\u03b9\u03ad\u03c2, \u03bf \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b1\u03be\u03b9\u03bf\u03bb\u03bf\u03b3\u03b5\u03af \u03c4\u03b7\u03bd \u03c0\u03b9\u03b8\u03b1\u03bd\u03ae \u03bf\u03bb\u03af\u03c3\u03b8\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b3\u03b5\u03c1\u03b1\u03bd\u03bf\u03cd \u03bc\u03b5\u03c4\u03ac \u03c4\u03bf \u03c3\u03c4\u03b1\u03bc\u03ac\u03c4\u03b7\u03bc\u03b1, \u03b1\u03c0\u03bf\u03c4\u03c1\u03ad\u03c0\u03bf\u03bd\u03c4\u03b1\u03c2 \u03b6\u03b7\u03bc\u03b9\u03ad\u03c2 \u03c3\u03c4\u03b1 \u03c1\u03bf\u03c5\u03bb\u03b5\u03bc\u03ac\u03bd, \u03b4\u03ac\u03b3\u03ba\u03c9\u03bc\u03b1 \u03c3\u03c4\u03b7 \u03c3\u03b9\u03b4\u03b7\u03c1\u03bf\u03c4\u03c1\u03bf\u03c7\u03b9\u03ac \u03ba\u03b1\u03b9 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03c0\u03bf\u03c5 \u03c3\u03c7\u03b5\u03c4\u03af\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03c4\u03b7\u03bd \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7.","protected":false},"author":8,"featured_media":17373,"parent":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"single-onlinetools.php","format":"standard","meta":{"_acf_changed":false,"rank_math_lock_modified_date":false,"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[1059],"tags":[],"class_list":["post-17375","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-online-tools"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/posts\/17375"}],"collection":[{"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/comments?post=17375"}],"version-history":[{"count":5,"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/posts\/17375\/revisions"}],"predecessor-version":[{"id":17380,"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/posts\/17375\/revisions\/17380"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/media\/17373"}],"wp:attachment":[{"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/media?parent=17375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/categories?post=17375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dgcrane.com\/el\/wp-json\/wp\/v2\/tags?post=17375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}