{"id":27844,"date":"2025-12-11T10:49:07","date_gmt":"2025-12-11T09:49:07","guid":{"rendered":"https:\/\/oferty.k4.pl\/?page_id=27844"},"modified":"2026-02-18T14:08:27","modified_gmt":"2026-02-18T13:08:27","slug":"dane-do-analizy","status":"publish","type":"page","link":"https:\/\/oferty.k4.pl\/index.php\/dane-do-analizy\/","title":{"rendered":"Dane do analizy"},"content":{"rendered":"\n<div class=\"wp-block-group alignwide has-global-padding is-layout-constrained wp-container-core-group-is-layout-12243e0f wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-container-core-group-is-layout-12243e0f wp-block-group-is-layout-constrained\">\n<script>\n(function(){\n  const LOGIN_URL = \"https:\/\/oferty.k4.pl\/index.php\/login\/\";\n\n  const logged =\n    document.getElementById(\"wpadminbar\") ||\n    document.cookie.includes(\"wordpress_logged_in_\");\n\n  if (logged) return;\n\n  const url = new URL(LOGIN_URL);\n  url.searchParams.set(\"redirect_to\", window.location.href);\n  window.location.replace(url.toString());\n})();\n<\/script>\n\n\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&display=swap');\n\n* {\n  box-sizing: border-box;\n  font-family: \"Inter\", sans-serif !important;\n}\n\n\/* T\u0141O + WY\u015aRODKOWANIE KARTY *\/\n.analysis-form-wrapper {\n  padding: 0px 20px;\n  display: flex;\n  justify-content: center;\n}\n\n\/* BIA\u0141A KARTA *\/\n.analysis-card {\n  width: 100%;\n  max-width: 1150px;\n  background: #ffffff;\n  border-radius: 28px;\n  padding: 28px 30px;\n  box-shadow:\n    0px 32px 70px rgba(0, 0, 0, 0.22),\n    0px 8px 20px rgba(0, 0, 0, 0.20);\n}\n\n\/* NAG\u0141\u00d3WEK *\/\n.analysis-card-title {\n  font-size: 24px;\n  font-weight: 700;\n  color: #111827;\n  margin: 0 0 8px;\n}\n\n.analysis-card-subtitle {\n  font-size: 14px;\n  color: #6b7280;\n  margin: 0 0 20px;\n}\n\n\/* GRID FORMULARZA *\/\n.analysis-form {\n  margin-top: 8px;\n}\n\n.analysis-grid {\n  display: grid;\n  grid-template-columns: repeat(3, minmax(0, 1fr));\n  column-gap: 32px;\n  row-gap: 18px;\n}\n\n\/* Pole formularza *\/\n.analysis-field {\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n}\n\n.analysis-label {\n  font-size: 12px;\n  font-weight: 600;\n  color: #111827;\n}\n\n\/* Inputy *\/\n.analysis-input {\n  width: 100%;\n  padding: 10px 16px;\n  border-radius: 999px;\n  border: 1px solid #e5e7eb;\n  background: #f5f5f5;\n  font-size: 13px;\n  color: #111827;\n  outline: none;\n  transition: border-color 0.15s ease-out, box-shadow 0.15s ease-out, background-color 0.15s ease-out;\n}\n\n.analysis-input::placeholder {\n  color: #9ca3af;\n}\n\n.analysis-input:focus {\n  background: #ffffff;\n  border-color: #2563eb;\n}\n\n\/* Pe\u0142na szeroko\u015b\u0107 (URL + dolne tekstowe) *\/\n.analysis-field--full {\n  grid-column: 1 \/ -1;\n}\n\n\/* Textarea *\/\n.analysis-textarea {\n  width: 100%;\n  padding: 12px 16px;\n  border-radius: 18px;\n  border: 1px solid #e5e7eb;\n  background: #f5f5f5;\n  font-size: 13px;\n  color: #111827;\n  outline: none;\n  resize: vertical;\n  min-height: 120px;\n  transition: border-color 0.15s ease-out, box-shadow 0.15s ease-out, background-color 0.15s ease-out;\n}\n\n.analysis-textarea::placeholder {\n  color: #9ca3af;\n}\n\n.analysis-textarea:focus {\n  background: #ffffff;\n  border-color: #2563eb;\n}\n\n\/* PRZYCISK NA DOLE *\/\n.analysis-actions {\n  margin-top: 24px;\n  display: flex;\n  justify-content: flex-end;\n}\n\n.analysis-submit-btn {\n  padding: 11px 28px;\n  border-radius: 999px;\n  border: none;\n  background: #2563eb;\n  color: #ffffff;\noutline: none;\n  font-size: 14px;\n  font-weight: 600;\n  cursor: pointer;\n  box-shadow: 0 14px 30px rgba(37, 99, 235, 0.45);\n  transition: background-color 0.15s ease-out,\n              transform 0.15s ease-out,\n              box-shadow 0.15s ease-out;\n}\n\n.analysis-submit-btn:hover {\n  background: #1d4ed8;\n  transform: translateY(-1px);\n}\n\n.analysis-submit-btn:active {\n  transform: translateY(0);\n  box-shadow: 0 8px 18px rgba(37, 99, 235, 0.35);\n}\n\n\/* RESPONSYWNO\u015a\u0106 *\/\n@media (max-width: 1024px) {\n  .analysis-card {\n    padding: 28px 24px;\n  }\n}\n\n@media (max-width: 900px) {\n  .analysis-grid {\n    grid-template-columns: 1fr;\n  }\n}\n<\/style>\n\n<div class=\"analysis-form-wrapper\">\n  <div class=\"analysis-card\">\n    <h1 class=\"analysis-card-title\">Dane do analizy<\/h1>\n    <p class=\"analysis-card-subtitle\">\n      Uzupe\u0142nij profil firmy, aby lepiej pasowa\u0107 wyniki i rekomendacje w analizie przetarg\u00f3w.\n    <\/p>\n\n    <form class=\"analysis-form\">\n      <div class=\"analysis-grid\">\n        <!-- Rz\u0105d 1 -->\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"user-name\">Nazwa U\u017cytkownika<\/label>\n          <input id=\"user-name\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"user-role\">Rola U\u017cytkownika<\/label>\n          <input id=\"user-role\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-name\">Nazwa Firmy<\/label>\n          <input id=\"company-name\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <!-- Rz\u0105d 2 -->\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-address\">Adres Firmy<\/label>\n          <input id=\"company-address\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-form\">Formularz Firmy<\/label>\n          <input id=\"company-form\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-city\">Miasto<\/label>\n          <input id=\"company-city\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <!-- Rz\u0105d 3 -->\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-nip\">NIP Firmy<\/label>\n          <input id=\"company-nip\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-region\">Region<\/label>\n          <input id=\"company-region\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-reg-date\">Data Rejestracji Firmy<\/label>\n          <input id=\"company-reg-date\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <!-- Rz\u0105d 4 -->\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"team-size\">Ilo\u015b\u0107 Os\u00f3b w Zespole<\/label>\n          <input id=\"team-size\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"contact-email\">Adres E-mail<\/label>\n          <input id=\"contact-email\" type=\"email\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"contact-phone\">Telefon Kontaktowy<\/label>\n          <input id=\"contact-phone\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <!-- Website URL \u2013 pe\u0142na szeroko\u015b\u0107 -->\n        <div class=\"analysis-field analysis-field--full\">\n          <label class=\"analysis-label\" for=\"website-url\">Adres URL<\/label>\n          <input id=\"website-url\" type=\"text\" class=\"analysis-input\" placeholder=\"...\" \/>\n        <\/div>\n\n        <!-- Dolne 3 text area -->\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-overview\">Przegl\u0105d Firmy<\/label>\n          <textarea id=\"company-overview\" class=\"analysis-textarea\" placeholder=\"...\"><\/textarea>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-capabilities\">Mo\u017cliwo\u015bci i Oferty<\/label>\n          <textarea id=\"company-capabilities\" class=\"analysis-textarea\" placeholder=\"...\"><\/textarea>\n        <\/div>\n\n        <div class=\"analysis-field\">\n          <label class=\"analysis-label\" for=\"company-methods\">Metody i Standardy<\/label>\n          <textarea id=\"company-methods\" class=\"analysis-textarea\" placeholder=\"...\"><\/textarea>\n        <\/div>\n      <\/div>\n\n      <div class=\"analysis-actions\">\n        <button type=\"submit\" class=\"analysis-submit-btn\">Zapisz dane<\/button>\n      <\/div>\n    <\/form>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/code.jquery.com\/jquery-3.7.1.min.js\"><\/script>\n<script>\njQuery(function ($) {\n  const AJAX_URL = \"\/wp-admin\/admin-ajax.php\";\n\n  const $form = $(\".analysis-form\");\n  const $btn  = $form.find(\".analysis-submit-btn\");\n  if (!$form.length || !$btn.length) return;\n\n  \/\/ ================\n  \/\/ UI helpers\n  \/\/ ================\n  function setLoading(isLoading, text) {\n    $btn.prop(\"disabled\", isLoading);\n    $btn.text(text || (isLoading ? \"Zapisywanie...\" : \"Zapisz dane\"));\n  }\n\n  function normalizeResponse(raw) {\n    if (!raw) return { ok:false, message:\"Pusta odpowied\u017a serwera.\", data:null };\n\n    if (typeof raw === \"string\") {\n      try { raw = JSON.parse(raw); } catch {}\n    }\n\n    \/\/ WP standard\n    if (typeof raw?.success !== \"undefined\") {\n      return {\n        ok: !!raw.success,\n        message: raw?.data?.message || raw?.message || (raw.success ? \"Zapisano.\" : \"Nie uda\u0142o si\u0119 zapisa\u0107.\"),\n        data: raw.data ?? null\n      };\n    }\n\n    \/\/ fallback\n    if (typeof raw?.ok !== \"undefined\") {\n      return { ok: !!raw.ok, message: raw.message || (raw.ok ? \"Zapisano.\" : \"B\u0142\u0105d zapisu.\"), data: raw.data ?? null };\n    }\n\n    \/\/ fallback\n    return { ok:true, message: raw?.message || \"Zapisano.\", data: raw ?? null };\n  }\n\n  \/\/ ==========================================================\n  \/\/ FIND FIELDS\n  \/\/ ==========================================================\n  function findFieldByLabel(forValue) {\n    const $label = $(`label[for='${forValue}']`);\n    if (!$label.length) return $();\n\n    const $wrap = $label.closest(\".analysis-field\");\n    if (!$wrap.length) return $();\n\n    return $wrap.find(\"input, textarea, select\").first();\n  }\n\n  function getFieldValue(forValue) {\n    \/\/ je\u015bli jednak istnieje ID (czasem bywa)\n    const $byId = $(\"#\" + forValue);\n    if ($byId.length) return $byId.val() || \"\";\n\n    const $byLabel = findFieldByLabel(forValue);\n    if ($byLabel.length) return $byLabel.val() || \"\";\n\n    \/\/ awaryjnie: po name\n    const $byName = $(`[name='${forValue}'], [name='${forValue.replaceAll(\"-\",\"_\")}']`).first();\n    if ($byName.length) return $byName.val() || \"\";\n\n    return \"\";\n  }\n\n  function setFieldValue(forValue, value) {\n    const v = (value == null) ? \"\" : String(value);\n\n    const $byId = $(\"#\" + forValue);\n    if ($byId.length) { $byId.val(v); return true; }\n\n    const $byLabel = findFieldByLabel(forValue);\n    if ($byLabel.length) { $byLabel.val(v); return true; }\n\n    const $byName = $(`[name='${forValue}'], [name='${forValue.replaceAll(\"-\",\"_\")}']`).first();\n    if ($byName.length) { $byName.val(v); return true; }\n\n    return false;\n  }\n\n  \/\/ ================\n  \/\/ autofill\n  \/\/ ================\n  function fillForm(data) {\n    \/\/ inputId (for=...) -> lista mo\u017cliwych kluczy z backendu\n    const map = {\n      \"user-name\": [\"user_name\", \"username\", \"name\"],\n      \"user-role\": [\"user_role\", \"role\"],\n\n      \"company-name\": [\"company_name\", \"name_company\"],\n      \"company-address\": [\"company_address\", \"company_adress\", \"address\"],\n      \"company-form\": [\"company_form\", \"form\"],\n      \"company-city\": [\"company_city\", \"city\"],\n      \"company-nip\": [\"company_nip\", \"nip\"],\n      \"company-region\": [\"company_region\", \"region\", \"voivodeship\"],\n      \"company-reg-date\": [\"company_registration_date\", \"company_reg_date\", \"registration_date\"],\n\n      \"team-size\": [\"team_size\", \"employees\", \"employees_count\"],\n      \"contact-email\": [\"contact_email\", \"email\"],\n      \"contact-phone\": [\"contact_phone\", \"phone\"],\n\n      \"website-url\": [\"website_url\", \"website\", \"url\"],\n\n      \"company-overview\": [\"company_overview\", \"overview\", \"about\"],\n\n      \/\/ problematyczne textarea \u2013 backend bywa r\u00f3\u017cny\n      \"company-capabilities\": [\"capabilities_and_offerings\", \"company_capabilities\", \"capabilities\"],\n      \"company-methods\": [\"methods_and_standards\", \"company_methods\", \"methods\"]\n    };\n\n    Object.entries(map).forEach(([inputId, keys]) => {\n      let value;\n      for (const k of keys) {\n        if (typeof data?.[k] !== \"undefined\") { value = data[k]; break; }\n      }\n      if (typeof value === \"undefined\") return;\n\n      \/\/ Elementor-safe\n      setFieldValue(inputId, value);\n    });\n  }\n\n  function fetchAnalysisData() {\n    return $.ajax({\n      url: AJAX_URL,\n      method: \"POST\",\n      timeout: 15000,\n      headers: { \"X-Requested-With\": \"XMLHttpRequest\" },\n      data: { action: \"get_analysis_data\" }\n    })\n    .done(function (raw) {\n      const norm = normalizeResponse(raw);\n      if (!norm.ok) return;\n\n      const d = norm.data?.profile || norm.data?.data || norm.data;\n      if (d) fillForm(d);\n    })\n    .fail(function (xhr) {\n      console.warn(\"get_analysis_data error:\", xhr.status, (xhr.responseText || \"\").toString().slice(0, 200));\n    });\n  }\n\n  \/\/ ================\n  \/\/ Zapis profilu\n  \/\/ ================\n  function collectPayload() {\n    const payload = {\n      action: \"save_analysis_data\",\n\n      \/\/ podstawowe\n      user_name: getFieldValue(\"user-name\"),\n      user_role: getFieldValue(\"user-role\"),\n\n      company_name: getFieldValue(\"company-name\"),\n      company_adress: getFieldValue(\"company-address\"), \n      company_address: getFieldValue(\"company-address\"),  \/\/ <- fallback\n      company_city: getFieldValue(\"company-city\"),\n      company_form: getFieldValue(\"company-form\"),\n      company_nip: getFieldValue(\"company-nip\"),\n      company_region: getFieldValue(\"company-region\"),\n      company_registration_date: getFieldValue(\"company-reg-date\"),\n\n      team_size: getFieldValue(\"team-size\"),\n      contact_email: getFieldValue(\"contact-email\"),\n      contact_phone: getFieldValue(\"contact-phone\"),\n\n      website_url: getFieldValue(\"website-url\"),\n\n      \/\/ tekstowe\n      company_overview: getFieldValue(\"company-overview\"),\n\n      \/\/ spec\n      capabilities_and_offerings: getFieldValue(\"company-capabilities\"),\n      methods_and_standards: getFieldValue(\"company-methods\"),\n\n      \/\/ duplikaty (na wypadek gdy backend oczekuje innej nazwy)\n      company_capabilities: getFieldValue(\"company-capabilities\"),\n      company_methods: getFieldValue(\"company-methods\")\n    };\n\n    return payload;\n  }\n\n  function saveAnalysisData() {\n    const payload = collectPayload();\n\n    return $.ajax({\n      url: AJAX_URL,\n      method: \"POST\",\n      timeout: 20000,\n      headers: { \"X-Requested-With\": \"XMLHttpRequest\" },\n      data: payload\n    });\n  }\n\n  \/\/ ================\n  \/\/ Submit handler\n  \/\/ ================\n  $form.on(\"submit\", function (e) {\n    e.preventDefault();\n\n    setLoading(true, \"Zapisywanie...\");\n\n    saveAnalysisData()\n      .done(function (raw) {\n        const norm = normalizeResponse(raw);\n\n        if (!norm.ok) {\n          setLoading(false, \"Zapisz dane\");\n          alert(norm.message || \"Nie uda\u0142o si\u0119 zapisa\u0107 danych.\");\n          return;\n        }\n\n        setLoading(true, \"Zapisano \u2713\");\n        setTimeout(() => setLoading(false, \"Zapisz dane\"), 1200);\n      })\n      .fail(function (xhr) {\n        setLoading(false, \"Zapisz dane\");\n        const msg = (xhr.responseText || \"\").toString().slice(0, 300);\n        alert(\"B\u0142\u0105d zapisu. \" + (msg || \"\"));\n      });\n  });\n\n  \/\/ START\n  (function waitForFields() {\n    const ok =\n      findFieldByLabel(\"company-capabilities\").length &&\n      findFieldByLabel(\"company-methods\").length;\n\n    if (ok) {\n      fetchAnalysisData();\n      return;\n    }\n    setTimeout(waitForFields, 150);\n  })();\n});\n<\/script>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Dane do analizy Uzupe\u0142nij profil firmy, aby lepiej pasowa\u0107 wyniki i rekomendacje w analizie przetarg\u00f3w. Nazwa U\u017cytkownika Rola U\u017cytkownika Nazwa Firmy Adres Firmy Formularz Firmy Miasto NIP Firmy Region Data Rejestracji Firmy Ilo\u015b\u0107 Os\u00f3b w Zespole Adres E-mail Telefon Kontaktowy Adres URL Przegl\u0105d Firmy Mo\u017cliwo\u015bci i Oferty Metody i Standardy Zapisz dane<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-27844","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/pages\/27844","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/comments?post=27844"}],"version-history":[{"count":31,"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/pages\/27844\/revisions"}],"predecessor-version":[{"id":35365,"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/pages\/27844\/revisions\/35365"}],"wp:attachment":[{"href":"https:\/\/oferty.k4.pl\/index.php\/wp-json\/wp\/v2\/media?parent=27844"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}