<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sarawut Burapapat - เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</title>
	<atom:link href="https://www.aprtraining.com/author/sarawut-burapapat/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.aprtraining.com</link>
	<description>เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</description>
	<lastBuildDate>Mon, 13 Jul 2026 11:57:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.aprtraining.com/wp-content/uploads/2022/08/cropped-apr-logo-2-32x32.png</url>
	<title>Sarawut Burapapat - เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</title>
	<link>https://www.aprtraining.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Risk Management Workshop</title>
		<link>https://www.aprtraining.com/risk-management/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Sun, 12 Jul 2026 09:02:17 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2842</guid>

					<description><![CDATA[<p>Risk Management Workshop &#124; Risk Matrix &#124; Risk Response Risk Management Workshop ระบุความเสี่ยง ประเมินระดับโอกาสและผลกระทบ แล้วนำผลไปวางบน Risk Matrix เพื่อพิจารณาแนวทางตอบสนองต่อความเสี่ยงอย่างเหมาะสม 1. ระบุความเสี่ยง 2. ให้คะแนนโอกาส 1–5 3. ให้คะแนนผลกระทบ 1–5 4. วิเคราะห์ Risk Response บันทึกความเสี่ยง ชื่อความเสี่ยง รายละเอียดหรือสาเหตุที่คาดการณ์ ระดับโอกาส 1 — น้อยมาก2 — น้อย3 — ปานกลาง4 — มาก5 — มากที่สุด ระดับผลกระทบ 1 — น้อยมาก2 — น้อย3 — ปานกลาง4 — มาก5 [&#8230;]</p>
<p>The post <a href="https://www.aprtraining.com/risk-management/">Risk Management Workshop</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<!DOCTYPE html>
<html lang="th">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Risk Management Workshop | Risk Matrix | Risk Response</title>
  <style>
    :root{
      --navy:#0f2742;
      --blue:#245b89;
      --sky:#eaf4fb;
      --green:#2e7d5b;
      --green-soft:#dff3e7;
      --yellow:#d79a16;
      --yellow-soft:#fff1c7;
      --orange:#d86b2d;
      --orange-soft:#ffe0cf;
      --red:#b83a3a;
      --red-soft:#f8d9d9;
      --ink:#17202a;
      --muted:#66788a;
      --line:#d9e2ea;
      --white:#ffffff;
      --shadow:0 14px 40px rgba(15,39,66,.12);
      --radius:18px;
    }

    *{box-sizing:border-box}
    body{
      margin:0;
      font-family:"Noto Sans Thai","Tahoma","Arial",sans-serif;
      color:var(--ink);
      background:linear-gradient(180deg,#f6fbff 0%,#eef4f8 100%);
      min-height:100vh;
    }

    .page{
      width:min(1400px,96%);
      margin:0 auto;
      padding:24px 0 44px;
    }

    .hero{
      background:linear-gradient(135deg,var(--navy),#173f66 62%,#1c6b70);
      color:#fff;
      border-radius:24px;
      padding:28px 30px;
      box-shadow:var(--shadow);
      margin-bottom:20px;
      position:relative;
      overflow:hidden;
    }

    .hero:after{
      content:"";
      position:absolute;
      width:260px;height:260px;
      border-radius:50%;
      background:rgba(255,255,255,.07);
      right:-80px;top:-110px;
    }

    .hero h1{
      margin:0 0 8px;
      font-size:clamp(26px,3vw,42px);
      line-height:1.2;
    }

    .hero p{
      margin:0;
      max-width:860px;
      font-size:16px;
      line-height:1.7;
      color:rgba(255,255,255,.86);
    }

    .instruction{
      margin-top:16px;
      display:flex;
      flex-wrap:wrap;
      gap:10px;
    }

    .instruction span{
      background:rgba(255,255,255,.12);
      border:1px solid rgba(255,255,255,.18);
      padding:8px 12px;
      border-radius:999px;
      font-size:13px;
    }

    .layout{
      display:grid;
      grid-template-columns:minmax(330px,430px) 1fr;
      gap:20px;
      align-items:start;
    }

    .card{
      background:var(--white);
      border:1px solid rgba(217,226,234,.8);
      border-radius:var(--radius);
      box-shadow:var(--shadow);
    }

    .form-card{
      padding:22px;
      position:sticky;
      top:16px;
    }

    .card-title{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
      margin-bottom:16px;
    }

    .card-title h2{
      margin:0;
      color:var(--navy);
      font-size:21px;
    }

    .badge{
      font-size:12px;
      color:var(--blue);
      background:var(--sky);
      padding:6px 10px;
      border-radius:999px;
      font-weight:700;
    }

    label{
      display:block;
      font-size:14px;
      font-weight:700;
      color:var(--navy);
      margin:14px 0 7px;
    }

    input[type="text"], textarea, select{
      width:100%;
      border:1px solid var(--line);
      border-radius:12px;
      padding:12px 13px;
      font:inherit;
      color:var(--ink);
      background:#fff;
      outline:none;
      transition:.2s;
    }

    textarea{
      min-height:92px;
      resize:vertical;
    }

    input:focus,textarea:focus,select:focus{
      border-color:#5c93bc;
      box-shadow:0 0 0 4px rgba(36,91,137,.10);
    }

    .score-grid{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:12px;
    }

    .scale-note{
      margin-top:7px;
      font-size:12px;
      color:var(--muted);
      line-height:1.5;
    }

    .preview{
      margin-top:16px;
      border:1px dashed var(--line);
      border-radius:14px;
      padding:13px;
      background:#fbfdff;
    }

    .preview-row{
      display:flex;
      justify-content:space-between;
      gap:10px;
      align-items:center;
      font-size:13px;
    }

    .preview-row strong{color:var(--navy)}
    .response-chip{
      display:inline-flex;
      align-items:center;
      padding:6px 9px;
      border-radius:999px;
      font-weight:700;
      font-size:12px;
    }

    .buttons{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:10px;
      margin-top:16px;
    }

    button{
      border:none;
      border-radius:12px;
      padding:12px 14px;
      font:inherit;
      font-weight:700;
      cursor:pointer;
      transition:.18s ease;
    }

    button:hover{transform:translateY(-1px)}
    .primary{background:var(--navy);color:#fff}
    .secondary{background:#eaf1f6;color:var(--navy)}
    .danger{background:#fff0f0;color:#a52f2f}
    .ghost{background:#fff;border:1px solid var(--line);color:var(--navy)}
    .small{padding:8px 10px;font-size:12px;border-radius:9px}

    .right-stack{
      display:grid;
      gap:20px;
    }

    .matrix-card{padding:22px}

    .matrix-toolbar{
      display:flex;
      flex-wrap:wrap;
      justify-content:space-between;
      gap:12px;
      align-items:center;
      margin-bottom:16px;
    }

    .matrix-toolbar h2{
      margin:0;
      color:var(--navy);
      font-size:21px;
    }

    .toolbar-actions{
      display:flex;
      flex-wrap:wrap;
      gap:8px;
    }

    .matrix-shell{
      display:grid;
      grid-template-columns:52px 1fr;
      grid-template-rows:1fr 45px;
      gap:8px;
      min-height:590px;
    }

    .y-title{
      display:flex;
      align-items:center;
      justify-content:center;
      writing-mode:vertical-rl;
      transform:rotate(180deg);
      font-weight:800;
      color:var(--navy);
      letter-spacing:.2px;
    }

    .x-title{
      display:flex;
      align-items:center;
      justify-content:center;
      font-weight:800;
      color:var(--navy);
    }

    .matrix{
      position:relative;
      display:grid;
      grid-template-columns:repeat(5,1fr);
      grid-template-rows:repeat(5,1fr);
      border:2px solid var(--navy);
      border-radius:14px;
      overflow:hidden;
      min-height:520px;
      background:#fff;
    }

    .cell{
      border-right:1px solid rgba(15,39,66,.18);
      border-bottom:1px solid rgba(15,39,66,.18);
      position:relative;
      display:flex;
      align-items:flex-end;
      justify-content:flex-start;
      padding:7px;
      font-size:11px;
      color:rgba(15,39,66,.58);
    }

    .cell:nth-child(5n){border-right:none}
    .cell:nth-last-child(-n+5){border-bottom:none}

    .zone-accept{background:var(--green-soft)}
    .zone-reduce{background:var(--yellow-soft)}
    .zone-transfer{background:var(--orange-soft)}
    .zone-avoid{background:var(--red-soft)}

    .zone-label{
      position:absolute;
      z-index:1;
      pointer-events:none;
      font-weight:900;
      color:rgba(15,39,66,.34);
      font-size:clamp(17px,2.2vw,32px);
      letter-spacing:.4px;
      text-align:center;
      line-height:1.15;
    }

    .label-transfer{left:8%;top:17%}
    .label-avoid{right:8%;top:17%}
    .label-accept{left:10%;bottom:17%}
    .label-reduce{right:8%;bottom:17%}

    .point{
      position:absolute;
      z-index:5;
      width:34px;height:34px;
      border-radius:50%;
      display:flex;
      align-items:center;
      justify-content:center;
      color:#fff;
      background:var(--navy);
      border:3px solid #fff;
      box-shadow:0 5px 12px rgba(0,0,0,.28);
      font-size:12px;
      font-weight:900;
      cursor:pointer;
      transform:translate(-50%,50%);
      transition:.18s ease;
    }

    .point:hover{
      transform:translate(-50%,50%) scale(1.12);
      z-index:8;
    }

    .axis-number{
      position:absolute;
      z-index:3;
      font-size:12px;
      font-weight:800;
      color:var(--navy);
      background:rgba(255,255,255,.76);
      border-radius:5px;
      padding:2px 5px;
    }

    .x-num{bottom:4px;transform:translateX(-50%)}
    .y-num{left:5px;transform:translateY(50%)}

    .legend{
      display:grid;
      grid-template-columns:repeat(4,1fr);
      gap:10px;
      margin-top:18px;
    }

    .legend-item{
      border-radius:12px;
      padding:11px;
      min-height:92px;
    }

    .legend-item strong{
      display:block;
      margin-bottom:4px;
      color:var(--navy);
    }

    .legend-item span{
      font-size:12px;
      line-height:1.45;
      color:#46596c;
    }

    .table-card{padding:22px}
    .table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}
    table{width:100%;border-collapse:collapse;min-width:830px}
    th,td{padding:12px 11px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
    th{background:#f2f7fa;color:var(--navy);font-size:13px}
    td{font-size:13px}
    tr:last-child td{border-bottom:none}
    .risk-name{font-weight:800;color:var(--navy)}
    .empty{
      text-align:center;
      padding:32px 18px;
      color:var(--muted);
    }
    .action-row{display:flex;gap:6px}

    .summary-grid{
      display:grid;
      grid-template-columns:repeat(4,1fr);
      gap:10px;
      margin-bottom:16px;
    }

    .summary-box{
      border:1px solid var(--line);
      border-radius:12px;
      padding:12px;
      background:#fff;
    }

    .summary-box .num{
      display:block;
      font-size:24px;
      font-weight:900;
      color:var(--navy);
    }
    .summary-box .text{font-size:12px;color:var(--muted)}

    .tooltip{
      position:fixed;
      z-index:999;
      max-width:280px;
      background:#102a43;
      color:#fff;
      padding:10px 12px;
      border-radius:10px;
      font-size:12px;
      line-height:1.5;
      pointer-events:none;
      box-shadow:0 8px 24px rgba(0,0,0,.22);
      display:none;
    }

    .note{
      margin-top:14px;
      font-size:12px;
      line-height:1.6;
      color:var(--muted);
      background:#f8fbfd;
      border-left:4px solid var(--blue);
      padding:10px 12px;
      border-radius:8px;
    }

    @media(max-width:980px){
      .layout{grid-template-columns:1fr}
      .form-card{position:static}
      .matrix-shell{min-height:520px}
      .matrix{min-height:450px}
    }

    @media(max-width:680px){
      .page{width:94%;padding-top:12px}
      .hero{padding:22px 20px}
      .form-card,.matrix-card,.table-card{padding:16px}
      .score-grid,.buttons{grid-template-columns:1fr}
      .legend{grid-template-columns:1fr 1fr}
      .summary-grid{grid-template-columns:1fr 1fr}
      .matrix-shell{grid-template-columns:36px 1fr;min-height:440px}
      .matrix{min-height:380px}
      .zone-label{font-size:14px}
      .point{width:29px;height:29px;font-size:11px}
    }



    .is-saving-image {
      opacity: .72;
      cursor: wait !important;
      pointer-events: none;
    }

    .capture-mode .toolbar-actions,
    .capture-mode .mobile-scroll-hint {
      display: none !important;
    }

    .capture-mode .matrix-scroll {
      overflow: visible !important;
    }

    .capture-mode .matrix-shell {
      min-width: 0 !important;
    }

    .capture-mode,
    .capture-mode * {
      box-sizing: border-box;
    }

    .capture-mode .table-wrap,
    .capture-mode .matrix-scroll {
      overflow: visible !important;
      max-width: none !important;
      width: auto !important;
    }

    .capture-mode table {
      min-width: 760px !important;
      width: 100% !important;
    }

    .capture-mode .table-card,
    .capture-mode .matrix-card,
    .capture-mode .right-stack {
      overflow: visible !important;
      max-width: none !important;
    }

    /* ===== Mobile usability improvements ===== */
    html, body {
      width: 100%;
      max-width: 100%;
      overflow-x: hidden;
    }

    .page,
    .layout,
    .right-stack,
    .card,
    .form-card,
    .matrix-card,
    .table-card {
      min-width: 0;
      max-width: 100%;
    }

    h1, h2, p, span, label, th, td, strong {
      overflow-wrap: anywhere;
      word-break: break-word;
    }

    .matrix-scroll {
      width: 100%;
      max-width: 100%;
      overflow-x: auto;
      overflow-y: hidden;
      -webkit-overflow-scrolling: touch;
      overscroll-behavior-x: contain;
      padding-bottom: 8px;
    }

    .mobile-scroll-hint {
      display: none;
      margin: 0 0 8px;
      text-align: center;
      color: var(--muted);
      font-size: 12px;
    }

    .table-wrap {
      width: 100%;
      max-width: 100%;
      overflow-x: auto;
      overflow-y: visible;
      -webkit-overflow-scrolling: touch;
      overscroll-behavior-x: contain;
    }

    @media (max-width: 680px) {
      .page {
        width: 100%;
        padding: 10px 10px 28px;
      }

      .hero {
        padding: 20px 16px;
        border-radius: 16px;
        margin-bottom: 14px;
      }

      .hero h1 {
        font-size: 25px;
        line-height: 1.25;
      }

      .hero p {
        font-size: 14px;
        line-height: 1.65;
      }

      .instruction {
        display: grid;
        grid-template-columns: 1fr;
      }

      .instruction span {
        width: 100%;
        white-space: normal;
        border-radius: 10px;
      }

      .form-card,
      .matrix-card,
      .table-card {
        padding: 14px;
      }

      .card-title,
      .matrix-toolbar {
        flex-direction: column;
        align-items: flex-start;
      }

      .toolbar-actions {
        width: 100%;
        display: grid;
        grid-template-columns: 1fr;
      }

      .toolbar-actions button {
        width: 100%;
        white-space: normal;
      }

      .score-grid,
      .buttons {
        grid-template-columns: 1fr;
      }

      input[type="text"],
      textarea,
      select,
      button {
        font-size: 16px;
      }

      .preview-row {
        flex-direction: column;
        align-items: flex-start;
      }

      .summary-grid {
        grid-template-columns: 1fr 1fr;
        gap: 8px;
      }

      .mobile-scroll-hint {
        display: block;
      }

      .matrix-shell {
        min-width: 520px;
        min-height: 500px;
        grid-template-columns: 42px 470px;
        grid-template-rows: 440px 42px;
      }

      .matrix {
        width: 470px;
        min-height: 440px;
      }

      .zone-label {
        font-size: 17px;
      }

      .point {
        width: 30px;
        height: 30px;
        font-size: 11px;
      }

      .legend {
        grid-template-columns: 1fr;
      }

      table {
        min-width: 760px;
      }

      .action-row {
        flex-direction: column;
      }

      .action-row button {
        width: 100%;
      }

      .tooltip {
        max-width: calc(100vw - 24px);
      }
    }

    @media (max-width: 390px) {
      .page {
        padding-left: 8px;
        padding-right: 8px;
      }

      .summary-grid {
        grid-template-columns: 1fr;
      }

      .hero h1 {
        font-size: 22px;
      }

      .matrix-shell {
        min-width: 480px;
        grid-template-columns: 38px 430px;
      }

      .matrix {
        width: 430px;
      }
    }

    @media print{
      body{background:#fff}
      .form-card,.toolbar-actions,.action-row,.hero .instruction{display:none!important}
      .layout{display:block}
      .hero,.card{box-shadow:none}
      .right-stack{display:block}
      .table-card{margin-top:18px}
      .page{width:100%;padding:0}
    }
  </style>
</head>
<body>
  <div class="page">
    <section class="hero">
      <h1>Risk Management Workshop</h1>
      <p>ระบุความเสี่ยง ประเมินระดับโอกาสและผลกระทบ แล้วนำผลไปวางบน Risk Matrix เพื่อพิจารณาแนวทางตอบสนองต่อความเสี่ยงอย่างเหมาะสม</p>
      <div class="instruction">
        <span>1. ระบุความเสี่ยง</span>
        <span>2. ให้คะแนนโอกาส 1–5</span>
        <span>3. ให้คะแนนผลกระทบ 1–5</span>
        <span>4. วิเคราะห์ Risk Response</span>
      </div>
    </section>

    <main class="layout">
      <section class="card form-card">
        <div class="card-title">
          <h2>บันทึกความเสี่ยง</h2>
        </div>

        <form id="riskForm">
          <input type="hidden" id="editId" />

          <label for="riskTitle">ชื่อความเสี่ยง</label>
          <input id="riskTitle" type="text" maxlength="100" placeholder="เช่น รถบรรทุกหรือฝุ่นกระทบชุมชน" required />

          <label for="riskDetail">รายละเอียดหรือสาเหตุที่คาดการณ์</label>
          <textarea id="riskDetail" maxlength="500" placeholder="อธิบายเหตุการณ์ สาเหตุ หรือผลที่อาจเกิดขึ้น เช่น มีรถบรรทุกเข้าออกใกล้บ้านของชุมชน มีฝุ่นหรือสิ่งกีดขวางทางสัญจร และมีชาวบ้านยืนมองด้วยความไม่พอใจ"></textarea>

          <div class="score-grid">
            <div>
              <label for="likelihood">ระดับโอกาส</label>
              <select id="likelihood" required>
                <option value="1">1 — น้อยมาก</option>
                <option value="2">2 — น้อย</option>
                <option value="3" selected>3 — ปานกลาง</option>
                <option value="4">4 — มาก</option>
                <option value="5">5 — มากที่สุด</option>
              </select>
            </div>
            <div>
              <label for="impact">ระดับผลกระทบ</label>
              <select id="impact" required>
                <option value="1">1 — น้อยมาก</option>
                <option value="2">2 — น้อย</option>
                <option value="3" selected>3 — ปานกลาง</option>
                <option value="4">4 — มาก</option>
                <option value="5">5 — มากที่สุด</option>
              </select>
            </div>
          </div>

          <div class="scale-note">คะแนน 1 หมายถึงระดับน้อยที่สุด และคะแนน 5 หมายถึงระดับมากที่สุด</div>

          <div class="preview">
            <div class="preview-row">
              <span>คะแนนความเสี่ยง</span>
              <strong id="scorePreview">9</strong>
            </div>
            <div class="preview-row" style="margin-top:8px">
              <span>แนวทางตอบสนองเบื้องต้น</span>
              <span id="responsePreview" class="response-chip">Accept</span>
            </div>
          </div>

          <div class="buttons">
            <button class="primary" type="submit" id="saveBtn">เพิ่มลง Risk Matrix</button>
            <button class="secondary" type="button" id="clearBtn">ล้างแบบฟอร์ม</button>
          </div>
        </form>

        <div class="note">
          เกณฑ์แบ่งพื้นที่ใช้คะแนน 1–3 เป็นระดับต่ำถึงปานกลาง และ 4–5 เป็นระดับสูง เพื่อแบ่ง Risk Matrix ออกเป็น 4 แนวทางตอบสนอง
        </div>
      </section>

      <div class="right-stack" id="riskReportCapture">
        <section class="card matrix-card" id="riskMatrixCapture">
          <div class="matrix-toolbar">
            <h2>Risk Matrix</h2>
            <div class="toolbar-actions">
              <button class="ghost small" type="button" id="printBtn">พิมพ์ / บันทึก PDF</button>
              <button class="ghost small" type="button" id="saveImageBtn">บันทึกเป็นภาพ</button>
              <button class="ghost small" type="button" id="exportBtn">ส่งออก CSV</button>
              <button class="danger small" type="button" id="resetBtn">ล้างข้อมูลทั้งหมด</button>
            </div>
          </div>

          <div class="summary-grid">
            <div class="summary-box"><span class="num" id="totalCount">0</span><span class="text">ความเสี่ยงทั้งหมด</span></div>
            <div class="summary-box"><span class="num" id="highCount">0</span><span class="text">Avoid</span></div>
            <div class="summary-box"><span class="num" id="mediumCount">0</span><span class="text">Reduce / Transfer</span></div>
            <div class="summary-box"><span class="num" id="lowCount">0</span><span class="text">Accept</span></div>
          </div>

          <div class="mobile-scroll-hint">เลื่อนซ้าย–ขวาเพื่อดู Risk Matrix ให้ครบ</div>
          <div class="matrix-scroll" aria-label="พื้นที่เลื่อนดู Risk Matrix">
            <div class="matrix-shell">
              <div class="y-title">ระดับผลกระทบ (Impact)</div>
              <div class="matrix" id="matrix">
                <div class="zone-label label-transfer">TRANSFER</div>
                <div class="zone-label label-avoid">AVOID</div>
                <div class="zone-label label-accept">ACCEPT</div>
                <div class="zone-label label-reduce">REDUCE</div>
              </div>
              <div></div>
              <div class="x-title">ระดับโอกาส (Likelihood)</div>
            </div>
          </div>

          <div class="legend">
            <div class="legend-item zone-accept">
              <strong>Accept — ยอมรับ</strong>
              <span>โอกาสและผลกระทบไม่สูง สามารถติดตามและยอมรับความเสี่ยงภายใต้ระดับที่องค์กรกำหนด</span>
            </div>
            <div class="legend-item zone-reduce">
              <strong>Reduce — ลด/ควบคุม</strong>
              <span>โอกาสเกิดสูง แต่ผลกระทบยังไม่สูง ควรลดความถี่ ปรับกระบวนการ หรือเพิ่มมาตรการควบคุม</span>
            </div>
            <div class="legend-item zone-transfer">
              <strong>Transfer — โอน/แบ่งปัน</strong>
              <span>โอกาสเกิดไม่สูง แต่ผลกระทบรุนแรง อาจใช้ประกันภัย คู่สัญญา หรือผู้เชี่ยวชาญช่วยรับภาระบางส่วน</span>
            </div>
            <div class="legend-item zone-avoid">
              <strong>Avoid — หลีกเลี่ยง</strong>
              <span>ทั้งโอกาสและผลกระทบสูง ควรหยุด เปลี่ยน หรือออกแบบกิจกรรมใหม่เพื่อตัดความเสี่ยง</span>
            </div>
          </div>
        </section>

        <section class="card table-card">
          <div class="card-title">
            <h2>รายการความเสี่ยง</h2>
            <span class="badge">คลิกจุดบนกราฟเพื่อดูรายละเอียด</span>
          </div>
          <div class="table-wrap">
            <table>
              <thead>
                <tr>
                  <th style="width:54px">ลำดับ</th>
                  <th>ความเสี่ยง</th>
                  <th style="width:90px">โอกาส</th>
                  <th style="width:90px">ผลกระทบ</th>
                  <th style="width:90px">คะแนน</th>
                  <th style="width:120px">Response</th>
                  <th style="width:125px">จัดการ</th>
                </tr>
              </thead>
              <tbody id="riskTableBody">
                <tr><td colspan="7" class="empty">ยังไม่มีข้อมูล กรุณาเพิ่มความเสี่ยงจากแบบฟอร์มด้านซ้าย</td></tr>
              </tbody>
            </table>
          </div>
        </section>
      </div>
    </main>
  </div>

  <div class="tooltip" id="tooltip"></div>

  <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"></script>
  <script>
    const STORAGE_KEY = "riskWorkshopDataV1";
    let risks = loadRisks();

    const form = document.getElementById("riskForm");
    const editId = document.getElementById("editId");
    const riskTitle = document.getElementById("riskTitle");
    const riskDetail = document.getElementById("riskDetail");
    const likelihood = document.getElementById("likelihood");
    const impact = document.getElementById("impact");
    const scorePreview = document.getElementById("scorePreview");
    const responsePreview = document.getElementById("responsePreview");
    const saveBtn = document.getElementById("saveBtn");
    const formMode = document.getElementById("formMode");
    const matrix = document.getElementById("matrix");
    const tableBody = document.getElementById("riskTableBody");
    const tooltip = document.getElementById("tooltip");

    function loadRisks(){
      try{
        const saved = JSON.parse(localStorage.getItem(STORAGE_KEY));
        return Array.isArray(saved) ? saved : [];
      }catch(e){ return []; }
    }

    function persist(){
      localStorage.setItem(STORAGE_KEY, JSON.stringify(risks));
    }

    function getResponse(l, i){
      if(l <= 3 && i <= 3) return "Accept";
      if(l >= 4 && i <= 3) return "Reduce";
      if(l <= 3 && i >= 4) return "Transfer";
      return "Avoid";
    }

    function responseThai(response){
      return {
        Accept:"ยอมรับ",
        Reduce:"ลด/ควบคุม",
        Transfer:"โอน/แบ่งปัน",
        Avoid:"หลีกเลี่ยง"
      }[response];
    }

    function responseStyle(response){
      return {
        Accept:["#dff3e7","#226746"],
        Reduce:["#fff1c7","#8a6500"],
        Transfer:["#ffe0cf","#9a491e"],
        Avoid:["#f8d9d9","#982f2f"]
      }[response];
    }

    function updatePreview(){
      const l = Number(likelihood.value);
      const i = Number(impact.value);
      const r = getResponse(l,i);
      const colors = responseStyle(r);
      scorePreview.textContent = l*i;
      responsePreview.textContent = `${r} — ${responseThai(r)}`;
      responsePreview.style.background = colors[0];
      responsePreview.style.color = colors[1];
    }

    function buildMatrix(){
      matrix.querySelectorAll(".cell,.point,.axis-number").forEach(el=>el.remove());

      for(let impactScore=5; impactScore>=1; impactScore--){
        for(let likelihoodScore=1; likelihoodScore<=5; likelihoodScore++){
          const cell = document.createElement("div");
          const response = getResponse(likelihoodScore,impactScore);
          cell.className = `cell zone-${response.toLowerCase()}`;
          cell.dataset.likelihood = likelihoodScore;
          cell.dataset.impact = impactScore;
          cell.title = `โอกาส ${likelihoodScore} | ผลกระทบ ${impactScore} | ${response}`;
          matrix.appendChild(cell);
        }
      }

      for(let n=1;n<=5;n++){
        const x = document.createElement("div");
        x.className="axis-number x-num";
        x.textContent=n;
        x.style.left=`${(n-.5)*20}%`;
        matrix.appendChild(x);

        const y = document.createElement("div");
        y.className="axis-number y-num";
        y.textContent=n;
        y.style.bottom=`${(n-.5)*20}%`;
        matrix.appendChild(y);
      }

      const groups = {};
      risks.forEach((risk,index)=>{
        const key = `${risk.likelihood}-${risk.impact}`;
        groups[key] = groups[key] || [];
        groups[key].push({risk,index});
      });

      Object.entries(groups).forEach(([key,items])=>{
        items.forEach((obj,offset)=>{
          const {risk,index} = obj;
          const point = document.createElement("button");
          point.type="button";
          point.className="point";
          point.textContent=index+1;
          point.setAttribute("aria-label",risk.title);

          const baseLeft=(risk.likelihood-.5)*20;
          const baseBottom=(risk.impact-.5)*20;
          const spread = items.length > 1 ? Math.min(4.5, 12/items.length) : 0;
          const angle=(offset/items.length)*Math.PI*2;
          const dx=Math.cos(angle)*spread;
          const dy=Math.sin(angle)*spread;

          point.style.left=`${baseLeft+dx}%`;
          point.style.bottom=`${baseBottom+dy}%`;

          point.addEventListener("mouseenter",(e)=>showTooltip(e,risk,index));
          point.addEventListener("mousemove",moveTooltip);
          point.addEventListener("mouseleave",hideTooltip);
          point.addEventListener("click",()=>scrollToRisk(risk.id));
          matrix.appendChild(point);
        });
      });
    }

    function showTooltip(e,risk,index){
      const response=getResponse(risk.likelihood,risk.impact);
      tooltip.innerHTML=`<strong>${index+1}. ${escapeHtml(risk.title)}</strong><br>
        โอกาส ${risk.likelihood} | ผลกระทบ ${risk.impact} | คะแนน ${risk.likelihood*risk.impact}<br>
        แนวทาง: ${response} — ${responseThai(response)}`;
      tooltip.style.display="block";
      moveTooltip(e);
    }

    function moveTooltip(e){
      tooltip.style.left=Math.min(e.clientX+14,window.innerWidth-300)+"px";
      tooltip.style.top=Math.min(e.clientY+14,window.innerHeight-120)+"px";
    }

    function hideTooltip(){tooltip.style.display="none"}

    function scrollToRisk(id){
      const row=document.querySelector(`[data-row-id="${id}"]`);
      if(row){
        row.scrollIntoView({behavior:"smooth",block:"center"});
        row.animate([{background:"#fff7d6"},{background:"transparent"}],{duration:1500});
      }
    }

    function renderTable(){
      if(!risks.length){
        tableBody.innerHTML='<tr><td colspan="7" class="empty">ยังไม่มีข้อมูล กรุณาเพิ่มความเสี่ยงจากแบบฟอร์มด้านซ้าย</td></tr>';
        return;
      }

      tableBody.innerHTML=risks.map((risk,index)=>{
        const response=getResponse(risk.likelihood,risk.impact);
        const colors=responseStyle(response);
        return `<tr data-row-id="${risk.id}">
          <td>${index+1}</td>
          <td><div class="risk-name">${escapeHtml(risk.title)}</div>
          <div style="margin-top:4px;color:#66788a;line-height:1.45">${escapeHtml(risk.detail || "ไม่ได้ระบุรายละเอียด")}</div></td>
          <td>${risk.likelihood}</td>
          <td>${risk.impact}</td>
          <td><strong>${risk.likelihood*risk.impact}</strong></td>
          <td><span class="response-chip" style="background:${colors[0]};color:${colors[1]}">${response}</span></td>
          <td><div class="action-row">
            <button class="secondary small" onclick="editRisk('${risk.id}')">แก้ไข</button>
            <button class="danger small" onclick="deleteRisk('${risk.id}')">ลบ</button>
          </div></td>
        </tr>`;
      }).join("");
    }

    function updateSummary(){
      document.getElementById("totalCount").textContent=risks.length;
      document.getElementById("highCount").textContent=risks.filter(r=>getResponse(r.likelihood,r.impact)==="Avoid").length;
      document.getElementById("mediumCount").textContent=risks.filter(r=>["Reduce","Transfer"].includes(getResponse(r.likelihood,r.impact))).length;
      document.getElementById("lowCount").textContent=risks.filter(r=>getResponse(r.likelihood,r.impact)==="Accept").length;
    }

    function render(){
      persist();
      buildMatrix();
      renderTable();
      updateSummary();
    }

    function resetForm(){
      form.reset();
      likelihood.value="3";
      impact.value="3";
      editId.value="";
      formMode.textContent="เพิ่มรายการใหม่";
      saveBtn.textContent="เพิ่มลง Risk Matrix";
      updatePreview();
      riskTitle.focus();
    }

    form.addEventListener("submit",e=>{
      e.preventDefault();
      const title=riskTitle.value.trim();
      if(!title) return;

      const data={
        id:editId.value || (Date.now().toString(36)+Math.random().toString(36).slice(2,7)),
        title,
        detail:riskDetail.value.trim(),
        likelihood:Number(likelihood.value),
        impact:Number(impact.value)
      };

      if(editId.value){
        const idx=risks.findIndex(r=>r.id===editId.value);
        if(idx>=0) risks[idx]=data;
      }else{
        risks.push(data);
      }
      render();
      resetForm();
    });

    window.editRisk=function(id){
      const risk=risks.find(r=>r.id===id);
      if(!risk) return;
      editId.value=risk.id;
      riskTitle.value=risk.title;
      riskDetail.value=risk.detail;
      likelihood.value=risk.likelihood;
      impact.value=risk.impact;
      formMode.textContent="กำลังแก้ไข";
      saveBtn.textContent="บันทึกการแก้ไข";
      updatePreview();
      window.scrollTo({top:0,behavior:"smooth"});
    };

    window.deleteRisk=function(id){
      if(!confirm("ต้องการลบความเสี่ยงรายการนี้หรือไม่?")) return;
      risks=risks.filter(r=>r.id!==id);
      render();
      if(editId.value===id) resetForm();
    };

    document.getElementById("clearBtn").addEventListener("click",resetForm);
    likelihood.addEventListener("change",updatePreview);
    impact.addEventListener("change",updatePreview);

    document.getElementById("resetBtn").addEventListener("click",()=>{
      if(!risks.length) return;
      if(confirm("ต้องการล้างข้อมูลความเสี่ยงทั้งหมดหรือไม่? การดำเนินการนี้ไม่สามารถย้อนกลับได้")){
        risks=[];
        render();
        resetForm();
      }
    });

    document.getElementById("printBtn").addEventListener("click",()=>window.print());

    document.getElementById("saveImageBtn").addEventListener("click", async ()=>{
      const button = document.getElementById("saveImageBtn");
      const captureArea = document.getElementById("riskReportCapture");

      if(typeof html2canvas === "undefined"){
        alert("ไม่สามารถโหลดระบบบันทึกภาพได้ กรุณาตรวจสอบการเชื่อมต่ออินเทอร์เน็ตแล้วลองใหม่");
        return;
      }

      try{
        button.classList.add("is-saving-image");
        button.textContent = "กำลังสร้างภาพ...";
        captureArea.classList.add("capture-mode");

        const matrixScroll = captureArea.querySelector(".matrix-scroll");
        const previousScrollLeft = matrixScroll ? matrixScroll.scrollLeft : 0;
        if(matrixScroll) matrixScroll.scrollLeft = 0;

        await new Promise(resolve => setTimeout(resolve, 180));

        const canvas = await html2canvas(captureArea, {
          scale: Math.min(window.devicePixelRatio || 1, 2),
          backgroundColor: "#ffffff",
          useCORS: true,
          allowTaint: false,
          logging: false,
          scrollX: 0,
          scrollY: -window.scrollY,
          windowWidth: Math.max(
            document.documentElement.clientWidth,
            captureArea.scrollWidth,
            (captureArea.querySelector(".matrix-scroll") || {}).scrollWidth || 0,
            (captureArea.querySelector(".table-wrap") || {}).scrollWidth || 0,
            900
          ),
          onclone: clonedDocument => {
            const clonedArea = clonedDocument.getElementById("riskReportCapture");
            if(clonedArea){
              clonedArea.classList.add("capture-mode");

              const liveMatrixScroll = captureArea.querySelector(".matrix-scroll");
              const liveTableWrap = captureArea.querySelector(".table-wrap");

              const neededWidth = Math.max(
                captureArea.scrollWidth || 0,
                liveMatrixScroll ? liveMatrixScroll.scrollWidth : 0,
                liveTableWrap ? liveTableWrap.scrollWidth : 0,
                900
              );

              clonedArea.style.width = neededWidth + "px";
              clonedArea.style.maxWidth = "none";
              clonedArea.style.overflow = "visible";
            }

            const clonedMatrixScroll = clonedDocument.querySelector("#riskReportCapture .matrix-scroll");
            if(clonedMatrixScroll){
              clonedMatrixScroll.style.overflow = "visible";
              clonedMatrixScroll.style.width = "auto";
              clonedMatrixScroll.style.maxWidth = "none";
            }

            const clonedShell = clonedDocument.querySelector("#riskReportCapture .matrix-shell");
            if(clonedShell){
              clonedShell.style.minWidth = "0";
              clonedShell.style.width = "100%";
            }

            const clonedTableWrap = clonedDocument.querySelector("#riskReportCapture .table-wrap");
            if(clonedTableWrap){
              clonedTableWrap.style.overflow = "visible";
              clonedTableWrap.style.width = "auto";
              clonedTableWrap.style.maxWidth = "none";
            }

            const clonedTable = clonedDocument.querySelector("#riskReportCapture table");
            if(clonedTable){
              clonedTable.style.width = "100%";
              clonedTable.style.minWidth = "760px";
            }
          }
        });

        if(matrixScroll) matrixScroll.scrollLeft = previousScrollLeft;

        const link = document.createElement("a");
        const date = new Date().toISOString().slice(0,10);
        link.download = `risk-matrix-${date}.png`;
        link.href = canvas.toDataURL("image/png", 1.0);
        document.body.appendChild(link);
        link.click();
        link.remove();
      }catch(error){
        console.error(error);
        alert("เกิดข้อผิดพลาดระหว่างสร้างภาพ กรุณาลองใหม่อีกครั้ง");
      }finally{
        captureArea.classList.remove("capture-mode");
        button.classList.remove("is-saving-image");
        button.textContent = "บันทึกเป็นภาพ";
      }
    });

    document.getElementById("exportBtn").addEventListener("click",()=>{
      if(!risks.length){
        alert("ยังไม่มีข้อมูลสำหรับส่งออก");
        return;
      }
      const rows=[
        ["ลำดับ","ชื่อความเสี่ยง","รายละเอียด","โอกาส","ผลกระทบ","คะแนน","Risk Response"],
        ...risks.map((r,i)=>[
          i+1,r.title,r.detail,r.likelihood,r.impact,r.likelihood*r.impact,
          `${getResponse(r.likelihood,r.impact)} - ${responseThai(getResponse(r.likelihood,r.impact))}`
        ])
      ];
      const csv="\uFEFF"+rows.map(row=>row.map(csvEscape).join(",")).join("\n");
      const blob=new Blob([csv],{type:"text/csv;charset=utf-8;"});
      const url=URL.createObjectURL(blob);
      const a=document.createElement("a");
      a.href=url;
      a.download=`risk-matrix-${new Date().toISOString().slice(0,10)}.csv`;
      document.body.appendChild(a);
      a.click();
      a.remove();
      URL.revokeObjectURL(url);
    });

    function csvEscape(value){
      const str=String(value ?? "");
      return `"${str.replace(/"/g,'""')}"`;
    }

    function escapeHtml(str){
      return String(str ?? "").replace(/[&<>"']/g,m=>({
        "&":"&","<":"<",">":">",'"':"&quot;","'":"&#039;"
      }[m]));
    }

    buildMatrix();
    renderTable();
    updateSummary();
    updatePreview();
  </script>
</body>
</html><p>The post <a href="https://www.aprtraining.com/risk-management/">Risk Management Workshop</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Stakeholder Matrix Workshop</title>
		<link>https://www.aprtraining.com/stakeholder-matrix/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Sat, 13 Jun 2026 07:27:30 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2803</guid>

					<description><![CDATA[<p>Stakeholder Matrix Workshop Stakeholder Matrix Workshop ระบุผู้มีส่วนได้ส่วนเสีย ประเมินระดับผลกระทบและอิทธิพล พร้อมบันทึกความกังวล เพื่อช่วยกำหนดแนวทางการสื่อสารที่เหมาะสม Impact × Influence &#124; คะแนน 1–5 เพิ่ม Stakeholder กรอกข้อมูลทีละราย แล้วกด “เพิ่มลง Matrix” Stakeholder * Impact 3 1 ต่ำ5 สูง Influence 3 1 ต่ำ5 สูง ความกังวล / ประเด็นที่ให้ความสำคัญ ＋ เพิ่มลง Matrix ยกเลิกการแก้ไข แนวทางให้คะแนน: Impact คือระดับผลกระทบที่ Stakeholder จะได้รับ และ Influence คือระดับอิทธิพลต่อความสำเร็จของเรื่องนั้น มี Stakeholder ทั้งหมด 0 ราย บันทึกเป็นภาพ [&#8230;]</p>
<p>The post <a href="https://www.aprtraining.com/stakeholder-matrix/">Stakeholder Matrix Workshop</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<!DOCTYPE html>
<html lang="th">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
  <title>Stakeholder Matrix Workshop</title>

  <!-- Export libraries -->
  <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/jspdf@2.5.1/dist/jspdf.umd.min.js"></script>

  <style>
    :root{
      --navy:#0b1f33;
      --navy-2:#12324f;
      --emerald:#0f8f73;
      --emerald-2:#19b394;
      --sky:#eaf5f8;
      --green-soft:#eaf8f3;
      --amber-soft:#fff4dc;
      --red-soft:#fdecec;
      --blue-soft:#eaf2ff;
      --text:#1d2a36;
      --muted:#64748b;
      --line:#dbe4ea;
      --card:#ffffff;
      --bg:#f4f7f9;
      --danger:#c0392b;
      --shadow:0 10px 28px rgba(11,31,51,.08);
      --radius:18px;
    }

    *{box-sizing:border-box}
    html{scroll-behavior:smooth}
    body{
      margin:0;
      font-family:Tahoma, "Noto Sans Thai", Arial, sans-serif;
      color:var(--text);
      background:linear-gradient(180deg,#edf6f5 0,#f7f9fb 240px,#f4f7f9 100%);
      line-height:1.5;
    }

    button,input,textarea,select{font:inherit}
    button{touch-action:manipulation}
    .app{max-width:1380px;margin:auto;padding:20px}

    .hero{
      background:linear-gradient(135deg,var(--navy),var(--navy-2) 58%,var(--emerald));
      color:#fff;
      padding:28px;
      border-radius:24px;
      box-shadow:var(--shadow);
      margin-bottom:18px;
      position:relative;
      overflow:hidden;
    }
    .hero:after{
      content:"";
      position:absolute;
      width:280px;height:280px;border-radius:50%;
      right:-100px;top:-150px;
      background:rgba(255,255,255,.08);
    }
    .hero h1{margin:0 0 6px;font-size:clamp(1.6rem,3vw,2.45rem);line-height:1.25}
    .hero p{margin:0;max-width:900px;color:#dcebf2}
    .hero .tag{
      display:inline-block;margin-top:14px;padding:7px 12px;border-radius:999px;
      background:rgba(255,255,255,.14);font-size:.9rem
    }

    .layout{
      display:grid;
      grid-template-columns:minmax(310px,420px) minmax(0,1fr);
      gap:18px;
      align-items:start;
    }

    .card{
      background:var(--card);
      border:1px solid rgba(219,228,234,.9);
      border-radius:var(--radius);
      box-shadow:var(--shadow);
    }
    .card-head{
      padding:18px 20px 8px;
    }
    .card-head h2{margin:0;font-size:1.15rem;color:var(--navy)}
    .card-head p{margin:5px 0 0;color:var(--muted);font-size:.9rem}
    .card-body{padding:16px 20px 20px}

    .form-grid{display:grid;gap:14px}
    label{display:block;font-weight:700;font-size:.92rem;margin-bottom:6px}
    .required{color:var(--danger)}
    input[type="text"], textarea, select{
      width:100%;
      border:1px solid #cfdbe3;
      border-radius:12px;
      padding:12px 13px;
      color:var(--text);
      background:#fff;
      outline:none;
      transition:.2s;
    }
    input[type="text"]:focus,textarea:focus,select:focus{
      border-color:var(--emerald);
      box-shadow:0 0 0 3px rgba(15,143,115,.12);
    }
    textarea{min-height:92px;resize:vertical}

    .score-row{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:12px;
    }
    .score-box{
      border:1px solid var(--line);
      background:#f9fbfc;
      border-radius:14px;
      padding:12px;
    }
    .score-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
    .score-value{
      min-width:34px;height:34px;border-radius:10px;
      display:grid;place-items:center;
      background:var(--navy);color:#fff;font-weight:800;
    }
    input[type="range"]{width:100%;accent-color:var(--emerald);margin:12px 0 2px}
    .range-labels{display:flex;justify-content:space-between;font-size:.76rem;color:var(--muted)}

    .btn-row{display:flex;flex-wrap:wrap;gap:10px}
    .btn{
      border:0;border-radius:12px;padding:11px 15px;font-weight:700;
      cursor:pointer;transition:.18s;display:inline-flex;align-items:center;justify-content:center;gap:8px;
    }
    .btn:hover{transform:translateY(-1px)}
    .btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
    .btn-primary{background:var(--emerald);color:#fff}
    .btn-secondary{background:var(--navy);color:#fff}
    .btn-light{background:#eef3f6;color:var(--navy)}
    .btn-danger{background:#fff0ef;color:var(--danger)}
    .btn-outline{background:#fff;border:1px solid #cbd8e0;color:var(--navy)}
    .btn-wide{width:100%}

    .hint{
      background:#f0f8f6;border-left:4px solid var(--emerald);
      padding:10px 12px;border-radius:10px;color:#315f54;font-size:.85rem;
    }

    .workspace{display:grid;gap:18px;min-width:0}
    .toolbar{
      display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;
      padding:14px 16px;
    }
    .toolbar .summary{font-size:.92rem;color:var(--muted)}
    .toolbar strong{color:var(--navy)}

    #exportArea{
      background:#fff;
      border-radius:var(--radius);
      overflow:hidden;
    }
    .export-header{
      display:flex;justify-content:space-between;align-items:flex-start;gap:16px;
      padding:18px 20px 8px;
    }
    .export-header h2{margin:0;color:var(--navy);font-size:1.35rem}
    .export-header p{margin:3px 0 0;color:var(--muted);font-size:.9rem}
    .legend{
      display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;font-size:.78rem;color:var(--muted)
    }
    .legend span{display:inline-flex;align-items:center;gap:5px}
    .dot{width:10px;height:10px;border-radius:50%;background:var(--emerald);display:inline-block}

    .matrix-wrap{padding:12px 20px 20px}
    .matrix-shell{
      display:grid;
      grid-template-columns:46px minmax(0,1fr);
      grid-template-rows:minmax(430px,60vh) 46px;
      gap:0;
    }
    .y-title,.x-title{
      font-weight:800;color:var(--navy);display:flex;align-items:center;justify-content:center;
      font-size:.88rem;text-align:center
    }
    .y-title{writing-mode:vertical-rl;transform:rotate(180deg)}
    .matrix{
      position:relative;
      border:2px solid var(--navy);
      border-radius:12px;
      overflow:hidden;
      background:
        linear-gradient(to right, transparent calc(50% - 1px), rgba(11,31,51,.55) calc(50% - 1px), rgba(11,31,51,.55) calc(50% + 1px), transparent calc(50% + 1px)),
        linear-gradient(to bottom, transparent calc(50% - 1px), rgba(11,31,51,.55) calc(50% - 1px), rgba(11,31,51,.55) calc(50% + 1px), transparent calc(50% + 1px)),
        linear-gradient(to right, rgba(255,244,220,.94) 0 50%, rgba(234,248,243,.94) 50%),
        linear-gradient(to bottom, rgba(253,236,236,.94) 0 50%, rgba(234,242,255,.94) 50%);
      isolation:isolate;
    }
    .quadrant{
      position:absolute;width:50%;height:50%;padding:12px;pointer-events:none;z-index:1;
    }
    .quadrant b{
      display:block;color:var(--navy);font-size:clamp(.72rem,1.3vw,.95rem);line-height:1.2
    }
    .quadrant small{color:#536575;font-size:clamp(.62rem,1vw,.78rem)}
    .q-tl{left:0;top:0;background:rgba(255,244,220,.72)}
    .q-tr{right:0;top:0;background:rgba(234,248,243,.72);text-align:right}
    .q-bl{left:0;bottom:0;background:rgba(253,236,236,.72);display:flex;flex-direction:column;justify-content:flex-end}
    .q-br{right:0;bottom:0;background:rgba(234,242,255,.72);display:flex;flex-direction:column;justify-content:flex-end;text-align:right}

    .axis-num{
      position:absolute;font-size:.66rem;color:#607080;z-index:2;pointer-events:none;
    }
    .x-num{bottom:3px;transform:translateX(-50%)}
    .y-num{left:5px;transform:translateY(50%)}

    .point{
      position:absolute;
      transform:translate(-50%,-50%);
      min-width:34px;max-width:150px;
      padding:6px 9px;border-radius:999px;
      background:var(--emerald);color:white;border:2px solid white;
      box-shadow:0 5px 14px rgba(11,31,51,.25);
      z-index:5;font-size:.76rem;font-weight:800;
      white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
      cursor:pointer;
    }
    .point:hover,.point:focus{z-index:10;max-width:230px;outline:3px solid rgba(15,143,115,.2)}
    .point::before{content:attr(data-index) ". ";opacity:.8}

    .matrix-note{
      padding:0 20px 15px;color:var(--muted);font-size:.78rem;text-align:center
    }

    .table-section{border-top:1px solid var(--line);padding:18px 20px 22px}
    .table-top{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px}
    .table-top h3{margin:0;color:var(--navy)}
    .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:12px}
    table{width:100%;border-collapse:collapse;min-width:760px}
    th,td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
    th{background:#edf4f6;color:var(--navy);font-size:.82rem;position:sticky;top:0}
    td{font-size:.86rem}
    tr:last-child td{border-bottom:0}
    .score-chip{
      display:inline-flex;min-width:30px;height:30px;align-items:center;justify-content:center;
      border-radius:9px;background:#edf5f3;color:var(--emerald);font-weight:800
    }
    .action-cell{white-space:nowrap}
    .icon-btn{
      border:0;background:#eef3f6;color:var(--navy);border-radius:9px;padding:7px 9px;cursor:pointer;margin-right:4px
    }
    .icon-btn.delete{background:#fff0ef;color:var(--danger)}
    .empty{
      text-align:center;padding:26px;color:var(--muted);background:#fbfcfd
    }

    .toast{
      position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);
      background:var(--navy);color:#fff;padding:11px 16px;border-radius:12px;
      box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.25s;z-index:9999;
      max-width:calc(100vw - 32px);text-align:center
    }
    .toast.show{opacity:1;transform:translate(-50%,0)}

    @media (max-width: 980px){
      .layout{grid-template-columns:1fr}
      .matrix-shell{grid-template-rows:minmax(390px,55vh) 42px}
      .form-card{order:1}
      .workspace{order:2}
    }

    @media (max-width: 640px){
      .app{padding:10px}
      .hero{padding:20px 17px;border-radius:18px}
      .hero p{font-size:.9rem}
      .card-head,.card-body,.matrix-wrap,.table-section{padding-left:14px;padding-right:14px}
      .score-row{grid-template-columns:1fr}
      .toolbar{align-items:stretch}
      .toolbar .btn-row{width:100%}
      .toolbar .btn{flex:1;min-width:120px}
      .export-header{flex-direction:column;padding:15px 14px 4px}
      .legend{justify-content:flex-start}
      .matrix-shell{
        grid-template-columns:34px minmax(0,1fr);
        grid-template-rows:390px 42px;
      }
      .matrix{border-radius:9px}
      .quadrant{padding:8px}
      .quadrant small{display:none}
      .point{max-width:88px;padding:5px 7px;font-size:.68rem}
      .matrix-note{padding:0 14px 12px}
      .table-top{align-items:flex-start;flex-direction:column}
    }

    @media print{
      body{background:white}
      .hero,.form-card,.toolbar,.action-cell,.no-print{display:none!important}
      .app{max-width:none;padding:0}
      .layout{display:block}
      .workspace{display:block}
      #exportArea{box-shadow:none;border:0}
      .matrix-shell{grid-template-rows:520px 46px}
      .table-wrap{overflow:visible}
      table{min-width:0}
    }
  </style>
</head>
<body>
  <main class="app">
    <section class="hero">
      <h1>Stakeholder Matrix Workshop</h1>
      <p>ระบุผู้มีส่วนได้ส่วนเสีย ประเมินระดับผลกระทบและอิทธิพล พร้อมบันทึกความกังวล เพื่อช่วยกำหนดแนวทางการสื่อสารที่เหมาะสม</p>
      <span class="tag">Impact × Influence | คะแนน 1–5</span>
    </section>

    <div class="layout">
      <section class="card form-card">
        <div class="card-head">
          <h2>เพิ่ม Stakeholder</h2>
          <p>กรอกข้อมูลทีละราย แล้วกด “เพิ่มลง Matrix”</p>
        </div>
        <div class="card-body">
          <form id="stakeholderForm" class="form-grid">
            <div>
              <label for="name">Stakeholder <span class="required">*</span></label>
              <input id="name" type="text" maxlength="80" placeholder="เช่น พนักงาน ผู้บริหาร ลูกค้า ชุมชน" required />
            </div>

            <div class="score-row">
              <div class="score-box">
                <div class="score-top">
                  <label for="impact" style="margin:0">Impact</label>
                  <span id="impactValue" class="score-value">3</span>
                </div>
                <input id="impact" type="range" min="1" max="5" step="1" value="3" />
                <div class="range-labels"><span>1 ต่ำ</span><span>5 สูง</span></div>
              </div>

              <div class="score-box">
                <div class="score-top">
                  <label for="influence" style="margin:0">Influence</label>
                  <span id="influenceValue" class="score-value">3</span>
                </div>
                <input id="influence" type="range" min="1" max="5" step="1" value="3" />
                <div class="range-labels"><span>1 ต่ำ</span><span>5 สูง</span></div>
              </div>
            </div>

            <div>
              <label for="concern">ความกังวล / ประเด็นที่ให้ความสำคัญ</label>
              <textarea id="concern" maxlength="300" placeholder="เช่น รายได้ลดลง ภาระงานเพิ่ม ความปลอดภัย คุณภาพบริการ"></textarea>
            </div>

            <input type="hidden" id="editId" value="" />

            <div class="btn-row">
              <button id="submitBtn" class="btn btn-primary btn-wide" type="submit">＋ เพิ่มลง Matrix</button>
              <button id="cancelEditBtn" class="btn btn-light btn-wide" type="button" style="display:none">ยกเลิกการแก้ไข</button>
            </div>

            <div class="hint">
              แนวทางให้คะแนน: <b>Impact</b> คือระดับผลกระทบที่ Stakeholder จะได้รับ และ <b>Influence</b> คือระดับอิทธิพลต่อความสำเร็จของเรื่องนั้น
            </div>
          </form>
        </div>
      </section>

      <section class="workspace">
        <section class="card toolbar">
          <div class="summary">มี Stakeholder ทั้งหมด <strong id="totalCount">0</strong> ราย</div>
          <div class="btn-row">
            <button id="saveImageBtn" class="btn btn-secondary" type="button">บันทึกเป็นภาพ</button>
            <button id="savePdfBtn" class="btn btn-primary" type="button">บันทึกเป็น PDF</button>
            <button id="clearBtn" class="btn btn-danger" type="button">ล้างข้อมูล</button>
          </div>
        </section>

        <section id="exportArea" class="card">
          <div class="export-header">
            <div>
              <h2>Stakeholder Matrix</h2>
              <p>แกนนอน: Impact | แกนตั้ง: Influence</p>
            </div>
            <div class="legend">
              <span><i class="dot"></i> จุดแทน Stakeholder</span>
              <span>คะแนน 1 = ต่ำสุด, 5 = สูงสุด</span>
            </div>
          </div>

          <div class="matrix-wrap">
            <div class="matrix-shell">
              <div class="y-title">Influence</div>
              <div id="matrix" class="matrix" aria-label="Stakeholder Matrix">
                <div class="quadrant q-tl"><b>Keep Satisfied</b><small>Influence สูง / Impact ต่ำ</small></div>
                <div class="quadrant q-tr"><b>Manage Closely</b><small>Influence สูง / Impact สูง</small></div>
                <div class="quadrant q-bl"><b>Monitor</b><small>Influence ต่ำ / Impact ต่ำ</small></div>
                <div class="quadrant q-br"><b>Keep Informed</b><small>Influence ต่ำ / Impact สูง</small></div>

                <span class="axis-num x-num" style="left:7%">1</span>
                <span class="axis-num x-num" style="left:29%">2</span>
                <span class="axis-num x-num" style="left:50%">3</span>
                <span class="axis-num x-num" style="left:71%">4</span>
                <span class="axis-num x-num" style="left:93%">5</span>

                <span class="axis-num y-num" style="bottom:7%">1</span>
                <span class="axis-num y-num" style="bottom:29%">2</span>
                <span class="axis-num y-num" style="bottom:50%">3</span>
                <span class="axis-num y-num" style="bottom:71%">4</span>
                <span class="axis-num y-num" style="bottom:93%">5</span>

                <div id="pointsLayer"></div>
              </div>
              <div></div>
              <div class="x-title">Impact</div>
            </div>
          </div>

          <div class="matrix-note">แตะหรือเลื่อนเมาส์เหนือจุด เพื่อดูชื่อเต็มและรายละเอียดคะแนน</div>

          <section class="table-section">
            <div class="table-top">
              <h3>รายการ Stakeholder</h3>
              <span id="quadrantSummary" style="color:var(--muted);font-size:.82rem"></span>
            </div>
            <div class="table-wrap">
              <table>
                <thead>
                  <tr>
                    <th style="width:44px">#</th>
                    <th>Stakeholder</th>
                    <th style="width:82px">Impact</th>
                    <th style="width:92px">Influence</th>
                    <th>ความกังวล</th>
                    <th style="width:150px">กลุ่ม</th>
                    <th class="action-cell no-print" style="width:110px">จัดการ</th>
                  </tr>
                </thead>
                <tbody id="stakeholderTableBody"></tbody>
              </table>
              <div id="emptyState" class="empty">ยังไม่มีข้อมูล กรุณาเพิ่ม Stakeholder จากแบบฟอร์ม</div>
            </div>
          </section>
        </section>
      </section>
    </div>
  </main>

  <div id="toast" class="toast"></div>

  <script>
    (() => {
      const STORAGE_KEY = "stakeholderMatrixWorkshopV1";
      let stakeholders = loadData();

      const form = document.getElementById("stakeholderForm");
      const nameInput = document.getElementById("name");
      const impactInput = document.getElementById("impact");
      const influenceInput = document.getElementById("influence");
      const concernInput = document.getElementById("concern");
      const editIdInput = document.getElementById("editId");
      const impactValue = document.getElementById("impactValue");
      const influenceValue = document.getElementById("influenceValue");
      const submitBtn = document.getElementById("submitBtn");
      const cancelEditBtn = document.getElementById("cancelEditBtn");
      const pointsLayer = document.getElementById("pointsLayer");
      const tbody = document.getElementById("stakeholderTableBody");
      const emptyState = document.getElementById("emptyState");
      const totalCount = document.getElementById("totalCount");
      const quadrantSummary = document.getElementById("quadrantSummary");
      const toast = document.getElementById("toast");

      function loadData() {
        try {
          return JSON.parse(localStorage.getItem(STORAGE_KEY)) || [];
        } catch {
          return [];
        }
      }

      function saveData() {
        localStorage.setItem(STORAGE_KEY, JSON.stringify(stakeholders));
      }

      function escapeHtml(value = "") {
        return String(value)
          .replaceAll("&", "&")
          .replaceAll("<", "<")
          .replaceAll(">", ">")
          .replaceAll('"', "&quot;")
          .replaceAll("'", "&#039;");
      }

      function getQuadrant(impact, influence) {
        const highImpact = Number(impact) >= 3;
        const highInfluence = Number(influence) >= 3;
        if (highImpact && highInfluence) return "Manage Closely";
        if (highImpact && !highInfluence) return "Keep Satisfied";
        if (!highImpact && highInfluence) return "Keep Informed";
        return "Monitor";
      }

      function scoreToPercent(score) {
        return 7 + ((Number(score) - 1) / 4) * 86;
      }

      function offsetForDuplicate(item, index) {
        const duplicatesBefore = stakeholders
          .slice(0, index)
          .filter(s => s.impact == item.impact && s.influence == item.influence).length;
        const ring = duplicatesBefore % 8;
        const radius = Math.min(duplicatesBefore, 2) * 8 + (duplicatesBefore ? 7 : 0);
        const angle = (Math.PI * 2 * ring) / 8;
        return {
          x: Math.cos(angle) * radius,
          y: Math.sin(angle) * radius
        };
      }

      function render() {
        totalCount.textContent = stakeholders.length;
        pointsLayer.innerHTML = "";
        tbody.innerHTML = "";

        stakeholders.forEach((item, index) => {
          const point = document.createElement("button");
          const offset = offsetForDuplicate(item, index);
          point.type = "button";
          point.className = "point";
          point.dataset.index = index + 1;
          point.style.left = `calc(${scoreToPercent(item.impact)}% + ${offset.x}px)`;
          point.style.bottom = `calc(${scoreToPercent(item.influence)}% + ${offset.y}px)`;
          point.title = `${item.name} | Impact ${item.impact} | Influence ${item.influence}${item.concern ? " | " + item.concern : ""}`;
          point.textContent = item.name;
          point.setAttribute("aria-label", point.title);
          point.addEventListener("click", () => editStakeholder(item.id));
          pointsLayer.appendChild(point);

          const row = document.createElement("tr");
          row.innerHTML = `
            <td>${index + 1}</td>
            <td><strong>${escapeHtml(item.name)}</strong></td>
            <td><span class="score-chip">${item.impact}</span></td>
            <td><span class="score-chip">${item.influence}</span></td>
            <td>${escapeHtml(item.concern || "-")}</td>
            <td>${getQuadrant(item.impact, item.influence)}</td>
            <td class="action-cell no-print">
              <button class="icon-btn edit-btn" type="button" aria-label="แก้ไข">แก้ไข</button>
              <button class="icon-btn delete delete-btn" type="button" aria-label="ลบ">ลบ</button>
            </td>
          `;
          row.querySelector(".edit-btn").addEventListener("click", () => editStakeholder(item.id));
          row.querySelector(".delete-btn").addEventListener("click", () => deleteStakeholder(item.id));
          tbody.appendChild(row);
        });

        emptyState.style.display = stakeholders.length ? "none" : "block";

        const counts = {
          "Manage Closely": 0,
          "Keep Satisfied": 0,
          "Keep Informed": 0,
          "Monitor": 0
        };
        stakeholders.forEach(s => counts[getQuadrant(s.impact, s.influence)]++);
        quadrantSummary.textContent = stakeholders.length
          ? `Manage Closely ${counts["Manage Closely"]} | Keep Satisfied ${counts["Keep Satisfied"]} | Keep Informed ${counts["Keep Informed"]} | Monitor ${counts["Monitor"]}`
          : "";

        saveData();
      }

      function resetForm() {
        form.reset();
        impactInput.value = 3;
        influenceInput.value = 3;
        impactValue.textContent = 3;
        influenceValue.textContent = 3;
        editIdInput.value = "";
        submitBtn.textContent = "＋ เพิ่มลง Matrix";
        cancelEditBtn.style.display = "none";
        nameInput.focus();
      }

      function editStakeholder(id) {
        const item = stakeholders.find(s => s.id === id);
        if (!item) return;
        nameInput.value = item.name;
        impactInput.value = item.impact;
        influenceInput.value = item.influence;
        concernInput.value = item.concern || "";
        impactValue.textContent = item.impact;
        influenceValue.textContent = item.influence;
        editIdInput.value = item.id;
        submitBtn.textContent = "บันทึกการแก้ไข";
        cancelEditBtn.style.display = "inline-flex";
        window.scrollTo({ top: document.querySelector(".form-card").offsetTop - 10, behavior: "smooth" });
      }

      function deleteStakeholder(id) {
        const item = stakeholders.find(s => s.id === id);
        if (!item) return;
        if (!confirm(`ลบ "${item.name}" ออกจาก Matrix หรือไม่?`)) return;
        stakeholders = stakeholders.filter(s => s.id !== id);
        render();
        showToast("ลบข้อมูลแล้ว");
      }

      function showToast(message) {
        toast.textContent = message;
        toast.classList.add("show");
        clearTimeout(showToast.timer);
        showToast.timer = setTimeout(() => toast.classList.remove("show"), 2200);
      }

      impactInput.addEventListener("input", () => impactValue.textContent = impactInput.value);
      influenceInput.addEventListener("input", () => influenceValue.textContent = influenceInput.value);
      cancelEditBtn.addEventListener("click", resetForm);

      form.addEventListener("submit", (e) => {
        e.preventDefault();
        const name = nameInput.value.trim();
        if (!name) {
          showToast("กรุณาระบุชื่อ Stakeholder");
          nameInput.focus();
          return;
        }

        const data = {
          id: editIdInput.value || (Date.now().toString(36) + Math.random().toString(36).slice(2,7)),
          name,
          impact: Number(impactInput.value),
          influence: Number(influenceInput.value),
          concern: concernInput.value.trim()
        };

        const editIndex = stakeholders.findIndex(s => s.id === data.id);
        if (editIndex >= 0) {
          stakeholders[editIndex] = data;
          showToast("บันทึกการแก้ไขแล้ว");
        } else {
          stakeholders.push(data);
          showToast("เพิ่ม Stakeholder แล้ว");
        }
        render();
        resetForm();
      });

      document.getElementById("clearBtn").addEventListener("click", () => {
        if (!stakeholders.length) return showToast("ยังไม่มีข้อมูลให้ล้าง");
        if (!confirm("ต้องการล้างข้อมูล Stakeholder ทั้งหมดหรือไม่?")) return;
        stakeholders = [];
        render();
        resetForm();
        showToast("ล้างข้อมูลทั้งหมดแล้ว");
      });

      async function captureExportArea() {
        if (!stakeholders.length) {
          showToast("กรุณาเพิ่ม Stakeholder อย่างน้อย 1 ราย");
          return null;
        }

        const exportArea = document.getElementById("exportArea");
        const actionCells = exportArea.querySelectorAll(".action-cell");
        actionCells.forEach(el => el.style.display = "none");

        try {
          const canvas = await html2canvas(exportArea, {
            scale: Math.min(2, window.devicePixelRatio || 1.5),
            useCORS: true,
            backgroundColor: "#ffffff",
            logging: false,
            scrollX: 0,
            scrollY: -window.scrollY,
            windowWidth: Math.max(exportArea.scrollWidth, 1100)
          });
          return canvas;
        } finally {
          actionCells.forEach(el => el.style.display = "");
        }
      }

      document.getElementById("saveImageBtn").addEventListener("click", async () => {
        const btn = document.getElementById("saveImageBtn");
        btn.disabled = true;
        btn.textContent = "กำลังสร้างภาพ...";
        try {
          const canvas = await captureExportArea();
          if (!canvas) return;
          const link = document.createElement("a");
          link.download = `stakeholder-matrix-${new Date().toISOString().slice(0,10)}.png`;
          link.href = canvas.toDataURL("image/png", 1);
          link.click();
          showToast("บันทึกภาพเรียบร้อย");
        } catch (err) {
          console.error(err);
          showToast("ไม่สามารถบันทึกภาพได้ กรุณาลองใหม่");
        } finally {
          btn.disabled = false;
          btn.textContent = "บันทึกเป็นภาพ";
        }
      });

      document.getElementById("savePdfBtn").addEventListener("click", async () => {
        const btn = document.getElementById("savePdfBtn");
        btn.disabled = true;
        btn.textContent = "กำลังสร้าง PDF...";
        try {
          const canvas = await captureExportArea();
          if (!canvas) return;

          const { jsPDF } = window.jspdf;
          const pdf = new jsPDF({
            orientation: "landscape",
            unit: "mm",
            format: "a4"
          });

          const pageW = pdf.internal.pageSize.getWidth();
          const pageH = pdf.internal.pageSize.getHeight();
          const margin = 8;
          const usableW = pageW - margin * 2;
          const usableH = pageH - margin * 2;
          const imgData = canvas.toDataURL("image/jpeg", 0.95);

          const imgRatio = canvas.width / canvas.height;
          const pageRatio = usableW / usableH;
          let renderW, renderH;

          if (imgRatio >= pageRatio) {
            renderW = usableW;
            renderH = renderW / imgRatio;
          } else {
            renderH = usableH;
            renderW = renderH * imgRatio;
          }

          pdf.addImage(imgData, "JPEG",
            margin + (usableW - renderW) / 2,
            margin + (usableH - renderH) / 2,
            renderW,
            renderH
          );

          pdf.save(`stakeholder-matrix-${new Date().toISOString().slice(0,10)}.pdf`);
          showToast("บันทึก PDF เรียบร้อย");
        } catch (err) {
          console.error(err);
          showToast("ไม่สามารถบันทึก PDF ได้ กรุณาลองใหม่");
        } finally {
          btn.disabled = false;
          btn.textContent = "บันทึกเป็น PDF";
        }
      });

      render();
    })();
  </script>
</body>
</html><p>The post <a href="https://www.aprtraining.com/stakeholder-matrix/">Stakeholder Matrix Workshop</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>การประเมินสไตล์การสื่อสาร</title>
		<link>https://www.aprtraining.com/communicationstyle/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Tue, 12 May 2026 05:42:16 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2697</guid>

					<description><![CDATA[<p>แบบประเมินลักษณะพฤติกรรมการสื่อสารแต่ละบุคคล เลือกข้อความที่สะท้อนความเป็นตัวคุณมากที่สุด โดยเน้นเฉพาะข้อที่ตรงกับคุณในระดับ 90-100% วิธีทำแบบประเมิน: อ่านทุกข้อความแล้วเลือกได้อย่างอิสระ ไม่จำเป็นต้องเลือกทุกข้อ แต่ขอให้ตรงกับตัวคุณมากที่สุด (90-100%) หลังจากเลือกเรียบร้อยแล้ว ท่านสามารถคลิกดูผลลัพธ์ได้ทันที หลังจากนั้น Capture หน้าจอไว้เพื่อรับฟังการบรรยายจากวิทยากร สราวุธ บูรพาพัธ ต่อไป จำนวนข้อที่เลือก 0 ข้อ ดูผลลัพธ์ เริ่มใหม่ กรุณาเลือกอย่างน้อย 1 ข้อก่อนดูผลลัพธ์ คะแนนรวมตามกลุ่มลักษณะ หมายเหตุ: แบบประเมินนี้ประยุกต์โดยวิทยากร สราวุธ บูรพาพัธ เพื่อใช้เป็นเครื่องมือสะท้อนแนวโน้มพฤติกรรมการสื่อสารเบื้องต้น อ้างอิงจากแบบจำลองประเมินพฤติกรรมมนุษย์ของ ดร. วิลเลียม มาร์สตัน (William Marston)ในการสร้างความเข้าใจในสไตล์การทำงาน การสื่อสาร และแรงจูงใจ ไม่ใช่การวินิจฉัยทางจิตวิทยาอย่างเป็นทางการ</p>
<p>The post <a href="https://www.aprtraining.com/communicationstyle/">การประเมินสไตล์การสื่อสาร</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="578" src="https://www.aprtraining.com/wp-content/uploads/2026/05/disc-1024x578.png" alt="communication style" class="wp-image-2698" srcset="https://www.aprtraining.com/wp-content/uploads/2026/05/disc-1024x578.png 1024w, https://www.aprtraining.com/wp-content/uploads/2026/05/disc-300x169.png 300w, https://www.aprtraining.com/wp-content/uploads/2026/05/disc-768x434.png 768w, https://www.aprtraining.com/wp-content/uploads/2026/05/disc-1536x867.png 1536w, https://www.aprtraining.com/wp-content/uploads/2026/05/disc-2048x1156.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div id="disc-assessment-widget">
  <style>
    #disc-assessment-widget {
      --primary: #163b66;
      --secondary: #0f766e;
      --soft: #f4f7fb;
      --border: #d9e2ef;
      --text: #1f2937;
      --muted: #6b7280;
      --danger: #b91c1c;
      --success: #047857;
      font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      color: var(--text);
      max-width: 980px;
      margin: 0 auto;
      line-height: 1.6;
    }

    #disc-assessment-widget * {
      box-sizing: border-box;
    }

    #disc-assessment-widget .disc-card {
      background: #ffffff;
      border: 1px solid var(--border);
      border-radius: 22px;
      box-shadow: 0 18px 45px rgba(15, 23, 42, 0.08);
      overflow: hidden;
    }

    #disc-assessment-widget .disc-header {
      padding: 28px;
      background: linear-gradient(135deg, var(--primary), #2563eb);
      color: #ffffff;
    }

    #disc-assessment-widget .disc-header h2 {
      margin: 0 0 10px;
      font-size: clamp(24px, 3vw, 36px);
      line-height: 1.25;
    }

    #disc-assessment-widget .disc-header p {
      margin: 0;
      opacity: 0.92;
      font-size: 16px;
    }

    #disc-assessment-widget .disc-body {
      padding: 24px;
    }

    #disc-assessment-widget .disc-instruction {
      background: var(--soft);
      border-left: 5px solid var(--secondary);
      padding: 16px 18px;
      border-radius: 14px;
      margin-bottom: 22px;
    }

    #disc-assessment-widget .disc-instruction strong {
      color: var(--primary);
    }

    #disc-assessment-widget .disc-progress-wrap {
      margin-bottom: 22px;
    }

    #disc-assessment-widget .disc-progress-label {
      display: flex;
      justify-content: space-between;
      gap: 12px;
      color: var(--muted);
      font-size: 14px;
      margin-bottom: 8px;
    }

    #disc-assessment-widget .disc-progress-bar {
      height: 12px;
      background: #e5e7eb;
      border-radius: 999px;
      overflow: hidden;
    }

    #disc-assessment-widget .disc-progress-fill {
      width: 0%;
      height: 100%;
      background: linear-gradient(90deg, var(--secondary), #22c55e);
      transition: width 0.25s ease;
    }

    #disc-assessment-widget .disc-options {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 12px;
    }

    #disc-assessment-widget .disc-option {
      display: flex;
      align-items: flex-start;
      gap: 10px;
      padding: 13px 14px;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: #ffffff;
      cursor: pointer;
      transition: all 0.18s ease;
      min-height: 58px;
    }

    #disc-assessment-widget .disc-option:hover {
      border-color: #93c5fd;
      background: #f8fbff;
      transform: translateY(-1px);
    }

    #disc-assessment-widget .disc-option input {
      margin-top: 4px;
      width: 18px;
      height: 18px;
      accent-color: var(--secondary);
      flex-shrink: 0;
    }

    #disc-assessment-widget .disc-option span {
      font-size: 15px;
    }

    #disc-assessment-widget .disc-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      margin-top: 24px;
    }

    #disc-assessment-widget button {
      border: 0;
      border-radius: 999px;
      padding: 12px 20px;
      font-size: 15px;
      font-weight: 700;
      cursor: pointer;
      transition: all 0.18s ease;
    }

    #disc-assessment-widget .disc-primary-btn {
      background: var(--primary);
      color: #ffffff;
    }

    #disc-assessment-widget .disc-primary-btn:hover {
      background: #0f2d50;
      transform: translateY(-1px);
    }

    #disc-assessment-widget .disc-secondary-btn {
      background: #e5e7eb;
      color: #111827;
    }

    #disc-assessment-widget .disc-secondary-btn:hover {
      background: #d1d5db;
    }

    #disc-assessment-widget .disc-alert {
      display: none;
      margin-top: 16px;
      padding: 12px 14px;
      border-radius: 12px;
      background: #fff1f2;
      color: var(--danger);
      border: 1px solid #fecdd3;
      font-size: 14px;
    }

    #disc-assessment-widget .disc-result {
      display: none;
      margin-top: 24px;
      border: 1px solid var(--border);
      border-radius: 18px;
      overflow: hidden;
      background: #ffffff;
    }

    #disc-assessment-widget .disc-result-top {
      padding: 20px;
      background: linear-gradient(135deg, #ecfeff, #eff6ff);
      border-bottom: 1px solid var(--border);
    }

    #disc-assessment-widget .disc-result-top h3 {
      margin: 0 0 8px;
      color: var(--primary);
      font-size: 24px;
    }

    #disc-assessment-widget .disc-result-top p {
      margin: 0;
      color: var(--muted);
    }

    #disc-assessment-widget .disc-badges {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 14px;
    }

    #disc-assessment-widget .disc-badge {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 52px;
      padding: 8px 12px;
      border-radius: 999px;
      background: var(--primary);
      color: #ffffff;
      font-weight: 800;
      letter-spacing: 0.04em;
    }

    #disc-assessment-widget .disc-result-detail {
      padding: 20px;
    }

    #disc-assessment-widget .disc-score-list {
      display: grid;
      gap: 10px;
      margin-top: 14px;
    }

    #disc-assessment-widget .disc-score-row {
      display: grid;
      grid-template-columns: 70px 1fr 54px;
      align-items: center;
      gap: 10px;
    }

    #disc-assessment-widget .disc-score-name {
      font-weight: 800;
      color: var(--primary);
    }

    #disc-assessment-widget .disc-score-track {
      height: 10px;
      background: #e5e7eb;
      border-radius: 999px;
      overflow: hidden;
    }

    #disc-assessment-widget .disc-score-fill {
      height: 100%;
      width: 0%;
      background: var(--secondary);
      border-radius: 999px;
    }

    #disc-assessment-widget .disc-score-number {
      text-align: right;
      color: var(--muted);
      font-weight: 700;
    }

    #disc-assessment-widget .disc-note {
      margin-top: 16px;
      color: var(--muted);
      font-size: 14px;
    }

    @media (max-width: 720px) {
      #disc-assessment-widget .disc-body,
      #disc-assessment-widget .disc-header {
        padding: 20px;
      }

      #disc-assessment-widget .disc-options {
        grid-template-columns: 1fr;
      }

      #disc-assessment-widget .disc-score-row {
        grid-template-columns: 56px 1fr 44px;
      }
    }
  </style>

  <div class="disc-card">
    <div class="disc-header">
      <h2>แบบประเมินลักษณะพฤติกรรมการสื่อสารแต่ละบุคคล</h2>
      <p>เลือกข้อความที่สะท้อนความเป็นตัวคุณมากที่สุด โดยเน้นเฉพาะข้อที่ตรงกับคุณในระดับ 90-100%</p>
    </div>

    <div class="disc-body">
      <div class="disc-instruction">
        <strong>วิธีทำแบบประเมิน:</strong> อ่านทุกข้อความแล้วเลือกได้อย่างอิสระ ไม่จำเป็นต้องเลือกทุกข้อ แต่ขอให้ตรงกับตัวคุณมากที่สุด (90-100%) หลังจากเลือกเรียบร้อยแล้ว ท่านสามารถคลิกดูผลลัพธ์ได้ทันที หลังจากนั้น Capture หน้าจอไว้เพื่อรับฟังการบรรยายจากวิทยากร สราวุธ บูรพาพัธ ต่อไป
      </div>

      <div class="disc-progress-wrap">
        <div class="disc-progress-label">
          <span>จำนวนข้อที่เลือก</span>
          <span id="discSelectedCount">0 ข้อ</span>
        </div>
        <div class="disc-progress-bar" aria-hidden="true">
          <div class="disc-progress-fill" id="discProgressFill"></div>
        </div>
      </div>

      <form id="discForm">
        <div class="disc-options" id="discOptions"></div>

        <div class="disc-actions">
          <button type="button" class="disc-primary-btn" id="discCalculateBtn">ดูผลลัพธ์</button>
          <button type="button" class="disc-secondary-btn" id="discResetBtn">เริ่มใหม่</button>
        </div>

        <div class="disc-alert" id="discAlert">กรุณาเลือกอย่างน้อย 1 ข้อก่อนดูผลลัพธ์</div>
      </form>

      <div class="disc-result" id="discResult" aria-live="polite">
        <div class="disc-result-top">
          <h3 id="discResultTitle"></h3>
          <p id="discResultSummary"></p>
          <div class="disc-badges" id="discBadges"></div>
        </div>
        <div class="disc-result-detail">
          <strong>คะแนนรวมตามกลุ่มลักษณะ</strong>
          <div class="disc-score-list" id="discScoreList"></div>
          <p class="disc-note">หมายเหตุ: แบบประเมินนี้ประยุกต์โดยวิทยากร สราวุธ บูรพาพัธ เพื่อใช้เป็นเครื่องมือสะท้อนแนวโน้มพฤติกรรมการสื่อสารเบื้องต้น อ้างอิงจากแบบจำลองประเมินพฤติกรรมมนุษย์ของ ดร. วิลเลียม มาร์สตัน (William Marston)ในการสร้างความเข้าใจในสไตล์การทำงาน การสื่อสาร และแรงจูงใจ ไม่ใช่การวินิจฉัยทางจิตวิทยาอย่างเป็นทางการ</p>
        </div>
      </div>
    </div>
  </div>

  <script>
    (function () {
      const discItems = [
        { text: "มั่นใจ เด็ดขาด", group: "D" },
        { text: "ชอบอิสระ", group: "D" },
        { text: "ชอบที่จะโดดเด่น", group: "D" },
        { text: "ตั้งใจแรงกล้า", group: "D" },
        { text: "ต้องการผลลัพธ์ในทันที", group: "D" },
        { text: "ชอบจุดชนวนความคิด", group: "D" },
        { text: "ชอบความอิสระที่ปราศจากจากการควบคุม", group: "D" },
        { text: "ไม่ชอบให้ใครมาออกคำสั่ง", group: "D" },
        { text: "ชอบมีพลังและอำนาจ", group: "D" },
        { text: "พูดจาตรงไปตรงมา", group: "D" },
        { text: "ชอบการผจญภัย", group: "D" },
        { text: "ต้องการคำตอบตรงที่ตรงประเด็น", group: "D" },
        { text: "ไม่อยู่นิ่ง", group: "D" },
        { text: "ชอบการแข่งขัน", group: "D" },
        { text: "กระตือรือร้น", group: "D" },

        { text: "มีระเบียบ", group: "I" },
        { text: "ชอบเห็นพ้องต้องกัน", group: "I" },
        { text: "ทำงานได้อย่างชัดเจนแน่นอน", group: "I" },
        { text: "ชอบอยู่ในสถานการณ์ที่ควบคุมได้", group: "I" },
        { text: "ใช้ความคิดเชิงวิเคราะห์", group: "I" },
        { text: "ชอบหลักประกันความมั่นใจ", group: "I" },
        { text: "ปฏิบัติตามกฎระเบียบ", group: "I" },
        { text: "อ่านและทำตามข้อกำหนด", group: "I" },
        { text: "ชอบการมีตำแหน่ง", group: "I" },
        { text: "ไม่ชอบการเปลี่ยนแปลงทันทีทันใด", group: "I" },
        { text: "ค่อนข้างจริงจังและไม่ลดละ", group: "I" },
        { text: "ชอบการยอมรับนับถือ", group: "I" },
        { text: "ระมัดระวัง", group: "I" },
        { text: "ไม่ชอบเสี่ยง", group: "I" },
        { text: "ชอบเช็คความถูกต้อง", group: "I" },

        { text: "มองโลกในแง่ดี", group: "S" },
        { text: "ชอบความตื่นเต้น", group: "S" },
        { text: "สามารถกระตุ้นให้เกิดความกระตือรือร้น", group: "S" },
        { text: "สร้างสีสันได้บ่อยๆ", group: "S" },
        { text: "ชอบโน้มน้าว", group: "S" },
        { text: "พูดคุยเก่ง", group: "S" },
        { text: "เปิดเผยและเป็นมิตร", group: "S" },
        { text: "ชอบทำงานกับผู้คน", group: "S" },
        { text: "ชอบการมีส่วนร่วมในกลุ่ม", group: "S" },
        { text: "ปรารถนาที่จะช่วยเหลือผู้อื่น", group: "S" },
        { text: "ต้องการอิสระในการแสดงออก", group: "S" },
        { text: "ไม่ชอบรายละเอียดจุกจิก", group: "S" },
        { text: "ชอบการเปลี่ยนแปลง", group: "S" },
        { text: "ดูเสมือนมีความมั่นใจ", group: "S" },
        { text: "ชอบการยกย่องชื่นชม", group: "S" },

        { text: "อดทน", group: "C" },
        { text: "เอื้อเฟื้อเผื่อแผ่", group: "C" },
        { text: "เป็นผู้ฟังที่ดี", group: "C" },
        { text: "มีความจงรักภักดี", group: "C" },
        { text: "มุ่งมั่นต่อความถูกต้องของงาน", group: "C" },
        { text: "ชอบความปลอดภัยและมั่นคง", group: "C" },
        { text: "ต้องการเหตุผลที่ดีสำหรับการเปลี่ยนแปลง", group: "C" },
        { text: "ชอบอยู่บ้าน", group: "C" },
        { text: "คาดหวังที่จะได้เครดิตจากความสำเร็จของงาน", group: "C" },
        { text: "ชอบทำอะไรตามธรรมเนียมปฏิบัติ", group: "C" },
        { text: "ไม่ชอบความขัดแย้ง", group: "C" },
        { text: "เป็นมิตร", group: "C" },
        { text: "เกรงใจผู้อื่น", group: "C" },
        { text: "ให้ความสำคัญกับการทำความดี", group: "C" },
        { text: "ชอบการให้และแบ่งปัน", group: "C" }
      ];

      const groupDescriptions = {
        D: "มีแนวโน้มเป็นคนที่สื่อสารเร็ว ตรง ชัด และเน้นผลลัพธ์ ต้องการและให้คำตอบที่ชัดเจนและการแก้ปัญหาที่รวดเร็ว ในธุรกิจประกันภัย คนกลุ่มนี้เหมาะกับการจัดการสถานการณ์กดดันหรือข้อร้องเรียนเร่งด่วน แต่ต้องระวังการพูดที่ตรงเกินไปจนลูกค้ารู้สึกแข็งหรือขาดความเข้าใจอารมณ์ จึงควรเพิ่มการแสดง empathy ก่อนเข้าสู่การแก้ปัญหา",
        I: "มีแนวโน้มเป็นคนที่สื่อสารด้วยความเป็นมิตร สร้างบรรยากาศที่ดี และเก่งในการสร้างความสัมพันธ์ ทำให้ลูกค้ารู้สึกอบอุ่นและเข้าถึงง่าย เหมาะกับงานบริการลูกค้าและสร้างประสบการณ์ที่ดีในธุรกิจประกันภัย แต่ต้องระวังการรับปากเร็วเกินไปหรือพูดเพื่อให้ลูกค้าสบายใจโดยยังไม่มีข้อมูลยืนยัน จึงควรบาลานซ์ระหว่าง “ความรู้สึก” กับ “ความถูกต้อง”",
        S: "มีแนวโน้มเป็นคนที่สื่อสารอย่างใจเย็น สุภาพ และให้ความสำคัญกับความมั่นคงและความต่อเนื่อง เป็นผู้ฟังที่ดีและช่วยลดความตึงเครียดได้มาก เหมาะกับงานดูแลลูกค้าระยะยาวในธุรกิจประกันภัย เพราะสร้างความไว้วางใจได้ดี แต่ต้องระวังการหลีกเลี่ยงความขัดแย้งหรือการตัดสินใจช้าในสถานการณ์กดดัน จึงควรฝึกการสื่อสารเชิงรุกและกล้าตัดสินใจมากขึ้น",
        C: "มีแนวโน้มเป็นคนที่สื่อสารด้วยเหตุผล รายละเอียด และความถูกต้อง ชอบตรวจสอบข้อมูลและอธิบายอย่างเป็นระบบ เหมาะกับงานสินไหม งานพิจารณากรมธรรม์ และงานที่ต้องใช้ความแม่นยำในธุรกิจประกันภัย แต่ต้องระวังการใช้ศัพท์เทคนิคหรือข้อมูลมากเกินไปจนลูกค้ารู้สึกห่างเหิน จึงควรปรับภาษาทางเทคนิคให้เข้าใจง่ายและเพิ่มมิติด้านความรู้สึกในการสื่อสารด้วย"
      };

      const optionsEl = document.getElementById("discOptions");
      const selectedCountEl = document.getElementById("discSelectedCount");
      const progressFillEl = document.getElementById("discProgressFill");
      const calculateBtn = document.getElementById("discCalculateBtn");
      const resetBtn = document.getElementById("discResetBtn");
      const alertEl = document.getElementById("discAlert");
      const resultEl = document.getElementById("discResult");
      const resultTitleEl = document.getElementById("discResultTitle");
      const resultSummaryEl = document.getElementById("discResultSummary");
      const badgesEl = document.getElementById("discBadges");
      const scoreListEl = document.getElementById("discScoreList");

      function shuffle(array) {
        const cloned = array.slice();
        for (let i = cloned.length - 1; i > 0; i--) {
          const j = Math.floor(Math.random() * (i + 1));
          [cloned[i], cloned[j]] = [cloned[j], cloned[i]];
        }
        return cloned;
      }

      const displayItems = shuffle(discItems);

      displayItems.forEach((item, index) => {
        const id = "discItem" + index;
        const label = document.createElement("label");
        label.className = "disc-option";
        label.setAttribute("for", id);
        label.innerHTML = `
          <input type="checkbox" id="${id}" name="discItem" value="${item.group}">
          <span>${item.text}</span>
        `;
        optionsEl.appendChild(label);
      });

      function getCheckedInputs() {
        return Array.from(document.querySelectorAll("#disc-assessment-widget input[name='discItem']:checked"));
      }

      function updateProgress() {
        const count = getCheckedInputs().length;
        const percent = Math.min((count / discItems.length) * 100, 100);
        selectedCountEl.textContent = count + " ข้อ";
        progressFillEl.style.width = percent + "%";
      }

      function calculateScores() {
        const scores = { D: 0, I: 0, S: 0, C: 0 };
        getCheckedInputs().forEach(input => {
          scores[input.value] += 1;
        });
        return scores;
      }

      function renderScoreRows(scores) {
        scoreListEl.innerHTML = "";
        const maxPossible = 15;
        ["D", "I", "S", "C"].forEach(group => {
          const row = document.createElement("div");
          row.className = "disc-score-row";
          const percent = (scores[group] / maxPossible) * 100;
          row.innerHTML = `
            <div class="disc-score-name">${group}</div>
            <div class="disc-score-track"><div class="disc-score-fill" style="width:${percent}%"></div></div>
            <div class="disc-score-number">${scores[group]}</div>
          `;
          scoreListEl.appendChild(row);
        });
      }

      function showResult() {
        const checked = getCheckedInputs();
        if (checked.length === 0) {
          alertEl.style.display = "block";
          resultEl.style.display = "none";
          return;
        }

        alertEl.style.display = "none";
        const scores = calculateScores();
        const highestScore = Math.max(scores.D, scores.I, scores.S, scores.C);
        const topGroups = Object.keys(scores).filter(group => scores[group] === highestScore);

        badgesEl.innerHTML = "";
        topGroups.forEach(group => {
          const badge = document.createElement("span");
          badge.className = "disc-badge";
          badge.textContent = group;
          badgesEl.appendChild(badge);
        });

        if (topGroups.length === 1) {
          const group = topGroups[0];
          resultTitleEl.textContent = "ผลลัพธ์ของคุณ: มนุษย์ " + group;
          resultSummaryEl.textContent = groupDescriptions[group];
        } else {
          resultTitleEl.textContent = "ผลลัพธ์ของคุณ: มนุษย์ " + topGroups.join(" + ");
          resultSummaryEl.textContent = "คุณมีลักษณะเด่นร่วมกันมากกว่า 1 กลุ่ม เนื่องจากคะแนนสูงสุดเท่ากัน ได้แก่ " + topGroups.join(", ") + " ซึ่งสะท้อนว่าสไตล์พฤติกรรมการสื่อสารของคุณอาจปรับเปลี่ยนได้ตามบริบท";
        }

        renderScoreRows(scores);
        resultEl.style.display = "block";
        resultEl.scrollIntoView({ behavior: "smooth", block: "start" });
      }

      function resetForm() {
        document.getElementById("discForm").reset();
        alertEl.style.display = "none";
        resultEl.style.display = "none";
        updateProgress();
        window.scrollTo({ top: document.getElementById("disc-assessment-widget").offsetTop, behavior: "smooth" });
      }

      optionsEl.addEventListener("change", updateProgress);
      calculateBtn.addEventListener("click", showResult);
      resetBtn.addEventListener("click", resetForm);
      updateProgress();
    })();
  </script>
</div><p>The post <a href="https://www.aprtraining.com/communicationstyle/">การประเมินสไตล์การสื่อสาร</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>การพัฒนาทักษะการสื่อสารสำหรับวิศวกรโครงการ</title>
		<link>https://www.aprtraining.com/commskill/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 12:07:11 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2692</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<div style='position: relative; padding-bottom: 56.25%; padding-top: 35px; height: 0; overflow: hidden;'><iframe sandbox='allow-popups allow-scripts allow-same-origin allow-presentation' allowfullscreen='true' allowtransparency='true' frameborder='0' height='315' src='https://www.mentimeter.com/app/presentation/al4a43fzk34nfk1smc2ng5sh2rbhophj/embed' style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;' width='420'></iframe></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style='position: relative; padding-bottom: 56.25%; padding-top: 35px; height: 0; overflow: hidden;'><iframe sandbox='allow-popups allow-scripts allow-same-origin allow-presentation' allowfullscreen='true' allowtransparency='true' frameborder='0' height='315' src='https://www.mentimeter.com/app/presentation/al6wsv8mz7w9c7atrojwi8gdey7pi8rd/embed' style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;' width='420'></iframe></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<div style='position: relative; padding-bottom: 56.25%; padding-top: 35px; height: 0; overflow: hidden;'><iframe sandbox='allow-popups allow-scripts allow-same-origin allow-presentation' allowfullscreen='true' allowtransparency='true' frameborder='0' height='315' src='https://www.mentimeter.com/app/presentation/al3wzqd4i5h4kya6bgn1n7on8y3amutp/embed' style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;' width='420'></iframe></div><p>The post <a href="https://www.aprtraining.com/commskill/">การพัฒนาทักษะการสื่อสารสำหรับวิศวกรโครงการ</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>คุณคือ ขนมชนิดใด</title>
		<link>https://www.aprtraining.com/buusweet/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Thu, 29 Jan 2026 18:33:15 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2659</guid>

					<description><![CDATA[<p>Word Cloud ซ่อนฟอร์ม เต็มจอ รีเซ็ต สรุป Top 3 คุณคือ ขนมชนิดใด พิมพ์คำตอบสั้น ๆ จากอุปกรณ์ของคุณ คำตอบจะขึ้นบนจอพร้อมกันแบบเรียลไทม์ ส่งคำตอบ มีคำตอบแล้ว 0 รายการ</p>
<p>The post <a href="https://www.aprtraining.com/buusweet/">คุณคือ ขนมชนิดใด</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<!--
SINGLE ROOM – REALTIME WORD CLOUD (STUDENTS USE THEIR OWN DEVICES)
Use case: ห้องเดียว นักศึกษาทุกคนเข้าจากมือถือ / iPad / คอมพิวเตอร์
Realtime sync ด้วย Firebase Realtime Database
Font: Noto Sans Thai
Suitable for projector + personal devices
-->

<!-- Google Font (Thai) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;600;700&display=swap" rel="stylesheet">

<div id="uwc-root" style="max-width:960px;margin:0 auto;">
  <section class="uwc-card" id="uwc-card">
    <div class="uwc-topbar">
      <strong>Word Cloud</strong>
      <div class="uwc-controls">
        <button id="uwc-toggle-form" class="uwc-btn" type="button">ซ่อนฟอร์ม</button>
        <button id="uwc-fullscreen" class="uwc-btn" type="button">เต็มจอ</button>
        <button id="uwc-reset" class="uwc-btn uwc-danger" type="button" title="ล้างคำตอบทั้งหมดเพื่อเริ่มใหม่">รีเซ็ต</button>
       <button id="uwc-top3" class="uwc-btn" type="button" title="สรุป 3 อันดับที่ถูกตอบซ้ำมากที่สุด">สรุป Top 3</button>

      </div>
    </div>

    <h2 class="uwc-title">คุณคือ ขนมชนิดใด</h2>
    <p class="uwc-subtitle">พิมพ์คำตอบสั้น ๆ จากอุปกรณ์ของคุณ คำตอบจะขึ้นบนจอพร้อมกันแบบเรียลไทม์</p>

    <form id="uwc-form" class="uwc-form">
      <input id="uwc-input" class="uwc-input" type="text" maxlength="80" placeholder="เช่น หมึกกรุบ, เจลลี่, หม้อแกง" required />
      <button class="uwc-submit" type="submit">ส่งคำตอบ</button>
    </form>

    <div class="uwc-meta">มีคำตอบแล้ว <strong id="uwc-total">0</strong> รายการ</div>

    <div id="uwc-cloud" class="uwc-cloud"></div>
  </section>
</div>

<style>
:root{
  --bg:#061733;
  --border:rgba(255,255,255,.15);
  --text:#ffffff;
  --yellow:#ffd54a;
  --danger:#ff5a6b;
}

#uwc-root{
  font-family:"Noto Sans Thai", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color:var(--text);
}

.uwc-card{
  background:var(--bg);
  border:1px solid var(--border);
  border-radius:18px;
  padding:20px;
}

.uwc-topbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:14px;
  opacity:.9;
  margin-bottom:10px;
}

.uwc-controls{display:flex;gap:8px}

.uwc-btn{
  border:1px solid var(--border);
  background:rgba(255,255,255,.12);
  color:#fff;
  border-radius:10px;
  padding:6px 10px;
  cursor:pointer;
  font-size:13px;
}

.uwc-danger{
  border-color: rgba(255,90,107,.55);
  background: rgba(255,90,107,.18);
}
.uwc-danger:hover{ background: rgba(255,90,107,.26); }

.uwc-title{margin:0 0 6px;font-size:22px;font-weight:700;}
.uwc-subtitle{margin:0 0 14px;font-size:14px;opacity:.85;}

.uwc-form{display:grid;grid-template-columns:1fr 120px;gap:10px;margin-bottom:12px;}
.uwc-input{
  padding:12px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.08);
  color:var(--text);
}

.uwc-submit{
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.18);
  color:#fff;
  font-weight:600;
  cursor:pointer;
}

.uwc-meta{font-size:13px;opacity:.85;margin-bottom:8px;}

.uwc-cloud{
  position:relative;
  height:460px;
  border:1px solid var(--border);
  border-radius:14px;
  overflow:hidden;
}

.uwc-word{
  position:absolute;
  transform:translate(-50%,-50%);
  white-space:nowrap;
}

.uwc-word{
  max-width: 80%;
  overflow: hidden;
  text-overflow: ellipsis;
}

.uwc-hot{color:var(--yellow);}
.uwc-hidden{display:none}
.uwc-fullscreen{position:fixed!important;top:0;left:0;width:100vw;height:100vh;max-width:none;z-index:9999;border-radius:0}

@media(max-width:640px){
  .uwc-form{grid-template-columns:1fr}
}
</style>

<!-- Firebase SDK -->
<script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-database-compat.js"></script>

<script>
const firebaseConfig = {
  apiKey: "AIzaSyAucYM7acfgm19UArQXtU7kUz51H-v_qRc",
  authDomain: "university-wordcloud-87fd7.firebaseapp.com",
  databaseURL: "https://university-wordcloud-87fd7-default-rtdb.asia-southeast1.firebasedatabase.app",
  projectId: "university-wordcloud-87fd7",
  storageBucket: "university-wordcloud-87fd7.firebasestorage.app",
  messagingSenderId: "34096983885",
  appId: "1:34096983885:web:e3df2a248b8ef233cf1104"
};


// ====== OPTIONAL: RESET PIN ======
const TEACHER_PIN = "1234";

firebase.initializeApp(firebaseConfig);
const db = firebase.database();

// ====== SINGLE ROOM PATH ======
const ref = db.ref("universityWordCloud/single-room");

const form = document.getElementById("uwc-form");
const input = document.getElementById("uwc-input");
const cloud = document.getElementById("uwc-cloud");
const totalEl = document.getElementById("uwc-total");

// ===== UI CONTROLS =====
const toggleBtn = document.getElementById("uwc-toggle-form");
const fsBtn = document.getElementById("uwc-fullscreen");
const resetBtn = document.getElementById("uwc-reset");
const card = document.getElementById("uwc-card");
const top3Btn = document.getElementById("uwc-top3");
let lastWords = [];
let formVisible = true;

// toggle form
toggleBtn.onclick = () => {
  formVisible = !formVisible;
  form.classList.toggle("uwc-hidden", !formVisible);
  toggleBtn.textContent = formVisible ? "ซ่อนฟอร์ม" : "แสดงฟอร์ม";
};

// fullscreen
fsBtn.onclick = () => {
  if(!document.fullscreenElement){
    card.classList.add("uwc-fullscreen");
    card.requestFullscreen();
    fsBtn.textContent = "ออกจากเต็มจอ";
  }else{
    document.exitFullscreen();
    card.classList.remove("uwc-fullscreen");
    fsBtn.textContent = "เต็มจอ";
  }
};

// ===== RESET (CLEAR ALL DATA) =====
resetBtn.onclick = async () => {
  const ok = confirm("ต้องการล้างคำตอบทั้งหมดเพื่อเริ่มใหม่ใช่ไหม?\n(การล้างจะมีผลกับทุกคนทันที)");
  if(!ok) return;

  if(TEACHER_PIN){
    const pin = prompt("กรอกรหัสรีเซ็ต (เฉพาะผู้สอน)");
    if(pin !== TEACHER_PIN){
      alert("รหัสไม่ถูกต้อง");
      return;
    }
  }

  try{
    await ref.remove();
    alert("รีเซ็ตเรียบร้อย");
  }catch(err){
    console.log(err);
    alert("รีเซ็ตไม่สำเร็จ: ตรวจ Rules ของ Firebase");
  }
};

// ===== SUBMIT =====
form.addEventListener("submit", e => {
  e.preventDefault();
  const text = input.value.trim();
  if(!text) return;
  ref.push({ text, ts: Date.now() });
  input.value = "";
});

// ===== REALTIME LISTENER =====
ref.limitToLast(1200).on("value", snap => {
  const data = snap.val() || {};
  const words = Object.values(data).map(d => (d && d.text) ? String(d.text) : "").filter(Boolean);
  lastWords = words;
  totalEl.textContent = words.length;
  render(words);
});

function render(words){
  cloud.innerHTML = "";
  const freq = {};
  words.forEach(w => {
    const k = (w || "").trim();
    if(!k) return;
    freq[k] = (freq[k] || 0) + 1;
  });
  const entries = Object.entries(freq);
  const max = Math.max(...entries.map(e=>e[1]),1);

  entries.forEach(([word,count]) => {
    const span = document.createElement("span");
    span.className = "uwc-word" + (count >= 3 ? " uwc-hot" : "");
    span.textContent = word;
    span.style.fontSize = (14 + (count/max)*40) + "px";
    span.style.left = Math.random()*90 + "%";
    span.style.top = Math.random()*90 + "%";
    cloud.appendChild(span);
  });
}
top3Btn.onclick = () => {
  if (!lastWords.length) {
    alert("ยังไม่มีคำตอบในห้องนี้");
    return;
  }

  const freq = {};
  for (const w of lastWords) {
    const k = (w || "").trim();
    if (!k) continue;
    freq[k] = (freq[k] || 0) + 1;
  }

  const top = Object.entries(freq)
    .sort((a, b) => b[1] - a[1])
    .slice(0, 3);

  const total = lastWords.length;

  const lines = top.map(([word, count], i) => {
    const pct = total ? Math.round((count / total) * 100) : 0;
    return `${i + 1}) ${word} — ${count} ครั้ง (${pct}%)`;
  });

  alert(`สรุป Top 3 (จาก ${total} คำตอบ)\n\n` + lines.join("\n"));
};
</script><p>The post <a href="https://www.aprtraining.com/buusweet/">คุณคือ ขนมชนิดใด</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ทักษะใดสำคัญที่สุดสำหรับการใช้ชีวิตในมหาวิทยาลัย</title>
		<link>https://www.aprtraining.com/buu2026/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Thu, 29 Jan 2026 18:01:25 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2651</guid>

					<description><![CDATA[<p>Word Cloud ซ่อนฟอร์ม เต็มจอ รีเซ็ต สรุป Top 3 ทักษะใดสำคัญที่สุดสำหรับการใช้ชีวิตในมหาวิทยาลัย พิมพ์คำตอบสั้น ๆ จากอุปกรณ์ของคุณ คำตอบจะขึ้นบนจอพร้อมกันแบบเรียลไทม์ ส่งคำตอบ มีคำตอบแล้ว 0 รายการ</p>
<p>The post <a href="https://www.aprtraining.com/buu2026/">ทักษะใดสำคัญที่สุดสำหรับการใช้ชีวิตในมหาวิทยาลัย</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<!--
SINGLE ROOM – REALTIME WORD CLOUD (STUDENTS USE THEIR OWN DEVICES)
Use case: ห้องเดียว นักศึกษาทุกคนเข้าจากมือถือ / iPad / คอมพิวเตอร์
Realtime sync ด้วย Firebase Realtime Database
Font: Noto Sans Thai
Suitable for projector + personal devices
-->

<!-- Google Font (Thai) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;600;700&display=swap" rel="stylesheet">

<div id="uwc-root" style="max-width:960px;margin:0 auto;">
  <section class="uwc-card" id="uwc-card">
    <div class="uwc-topbar">
      <strong>Word Cloud</strong>
      <div class="uwc-controls">
        <button id="uwc-toggle-form" class="uwc-btn" type="button">ซ่อนฟอร์ม</button>
        <button id="uwc-fullscreen" class="uwc-btn" type="button">เต็มจอ</button>
        <button id="uwc-reset" class="uwc-btn uwc-danger" type="button" title="ล้างคำตอบทั้งหมดเพื่อเริ่มใหม่">รีเซ็ต</button>
       <button id="uwc-top3" class="uwc-btn" type="button" title="สรุป 3 อันดับที่ถูกตอบซ้ำมากที่สุด">สรุป Top 3</button>

      </div>
    </div>

    <h2 class="uwc-title">ทักษะใดสำคัญที่สุดสำหรับการใช้ชีวิตในมหาวิทยาลัย</h2>
    <p class="uwc-subtitle">พิมพ์คำตอบสั้น ๆ จากอุปกรณ์ของคุณ คำตอบจะขึ้นบนจอพร้อมกันแบบเรียลไทม์</p>

    <form id="uwc-form" class="uwc-form">
      <input id="uwc-input" class="uwc-input" type="text" maxlength="80" placeholder="เช่น การสื่อสาร, การปรับตัว, การจัดการอารมณ์, การทำงานกับคนอื่น" required />
      <button class="uwc-submit" type="submit">ส่งคำตอบ</button>
    </form>

    <div class="uwc-meta">มีคำตอบแล้ว <strong id="uwc-total">0</strong> รายการ</div>

    <div id="uwc-cloud" class="uwc-cloud"></div>
  </section>
</div>

<style>
:root{
  --bg:#061733;
  --border:rgba(255,255,255,.15);
  --text:#ffffff;
  --yellow:#ffd54a;
  --danger:#ff5a6b;
}

#uwc-root{
  font-family:"Noto Sans Thai", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color:var(--text);
}

.uwc-card{
  background:var(--bg);
  border:1px solid var(--border);
  border-radius:18px;
  padding:20px;
}

.uwc-topbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:14px;
  opacity:.9;
  margin-bottom:10px;
}

.uwc-controls{display:flex;gap:8px}

.uwc-btn{
  border:1px solid var(--border);
  background:rgba(255,255,255,.12);
  color:#fff;
  border-radius:10px;
  padding:6px 10px;
  cursor:pointer;
  font-size:13px;
}

.uwc-danger{
  border-color: rgba(255,90,107,.55);
  background: rgba(255,90,107,.18);
}
.uwc-danger:hover{ background: rgba(255,90,107,.26); }

.uwc-title{margin:0 0 6px;font-size:22px;font-weight:700;}
.uwc-subtitle{margin:0 0 14px;font-size:14px;opacity:.85;}

.uwc-form{display:grid;grid-template-columns:1fr 120px;gap:10px;margin-bottom:12px;}
.uwc-input{
  padding:12px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.08);
  color:var(--text);
}

.uwc-submit{
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.18);
  color:#fff;
  font-weight:600;
  cursor:pointer;
}

.uwc-meta{font-size:13px;opacity:.85;margin-bottom:8px;}

.uwc-cloud{
  position:relative;
  height:460px;
  border:1px solid var(--border);
  border-radius:14px;
  overflow:hidden;
}

.uwc-word{
  position:absolute;
  transform:translate(-50%,-50%);
  white-space:nowrap;
}

.uwc-word{
  max-width: 80%;
  overflow: hidden;
  text-overflow: ellipsis;
}

.uwc-hot{color:var(--yellow);}
.uwc-hidden{display:none}
.uwc-fullscreen{position:fixed!important;top:0;left:0;width:100vw;height:100vh;max-width:none;z-index:9999;border-radius:0}

@media(max-width:640px){
  .uwc-form{grid-template-columns:1fr}
}
</style>

<!-- Firebase SDK -->
<script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.23.0/firebase-database-compat.js"></script>

<script>
const firebaseConfig = {
  apiKey: "AIzaSyAucYM7acfgm19UArQXtU7kUz51H-v_qRc",
  authDomain: "university-wordcloud-87fd7.firebaseapp.com",
  databaseURL: "https://university-wordcloud-87fd7-default-rtdb.asia-southeast1.firebasedatabase.app",
  projectId: "university-wordcloud-87fd7",
  storageBucket: "university-wordcloud-87fd7.firebasestorage.app",
  messagingSenderId: "34096983885",
  appId: "1:34096983885:web:e3df2a248b8ef233cf1104"
};


// ====== OPTIONAL: RESET PIN ======
const TEACHER_PIN = "1234";

firebase.initializeApp(firebaseConfig);
const db = firebase.database();

// ====== SINGLE ROOM PATH ======
const ref = db.ref("universityWordCloud/single-room");

const form = document.getElementById("uwc-form");
const input = document.getElementById("uwc-input");
const cloud = document.getElementById("uwc-cloud");
const totalEl = document.getElementById("uwc-total");

// ===== UI CONTROLS =====
const toggleBtn = document.getElementById("uwc-toggle-form");
const fsBtn = document.getElementById("uwc-fullscreen");
const resetBtn = document.getElementById("uwc-reset");
const card = document.getElementById("uwc-card");
const top3Btn = document.getElementById("uwc-top3");
let lastWords = [];
let formVisible = true;

// toggle form
toggleBtn.onclick = () => {
  formVisible = !formVisible;
  form.classList.toggle("uwc-hidden", !formVisible);
  toggleBtn.textContent = formVisible ? "ซ่อนฟอร์ม" : "แสดงฟอร์ม";
};

// fullscreen
fsBtn.onclick = () => {
  if(!document.fullscreenElement){
    card.classList.add("uwc-fullscreen");
    card.requestFullscreen();
    fsBtn.textContent = "ออกจากเต็มจอ";
  }else{
    document.exitFullscreen();
    card.classList.remove("uwc-fullscreen");
    fsBtn.textContent = "เต็มจอ";
  }
};

// ===== RESET (CLEAR ALL DATA) =====
resetBtn.onclick = async () => {
  const ok = confirm("ต้องการล้างคำตอบทั้งหมดเพื่อเริ่มใหม่ใช่ไหม?\n(การล้างจะมีผลกับทุกคนทันที)");
  if(!ok) return;

  if(TEACHER_PIN){
    const pin = prompt("กรอกรหัสรีเซ็ต (เฉพาะผู้สอน)");
    if(pin !== TEACHER_PIN){
      alert("รหัสไม่ถูกต้อง");
      return;
    }
  }

  try{
    await ref.remove();
    alert("รีเซ็ตเรียบร้อย");
  }catch(err){
    console.log(err);
    alert("รีเซ็ตไม่สำเร็จ: ตรวจ Rules ของ Firebase");
  }
};

// ===== SUBMIT =====
form.addEventListener("submit", e => {
  e.preventDefault();
  const text = input.value.trim();
  if(!text) return;
  ref.push({ text, ts: Date.now() });
  input.value = "";
});

// ===== REALTIME LISTENER =====
ref.limitToLast(1200).on("value", snap => {
  const data = snap.val() || {};
  const words = Object.values(data).map(d => (d && d.text) ? String(d.text) : "").filter(Boolean);
  lastWords = words;
  totalEl.textContent = words.length;
  render(words);
});

function render(words){
  cloud.innerHTML = "";
  const freq = {};
  words.forEach(w => {
    const k = (w || "").trim();
    if(!k) return;
    freq[k] = (freq[k] || 0) + 1;
  });
  const entries = Object.entries(freq);
  const max = Math.max(...entries.map(e=>e[1]),1);

  entries.forEach(([word,count]) => {
    const span = document.createElement("span");
    span.className = "uwc-word" + (count >= 3 ? " uwc-hot" : "");
    span.textContent = word;
    span.style.fontSize = (14 + (count/max)*40) + "px";
    span.style.left = Math.random()*90 + "%";
    span.style.top = Math.random()*90 + "%";
    cloud.appendChild(span);
  });
}
top3Btn.onclick = () => {
  if (!lastWords.length) {
    alert("ยังไม่มีคำตอบในห้องนี้");
    return;
  }

  const freq = {};
  for (const w of lastWords) {
    const k = (w || "").trim();
    if (!k) continue;
    freq[k] = (freq[k] || 0) + 1;
  }

  const top = Object.entries(freq)
    .sort((a, b) => b[1] - a[1])
    .slice(0, 3);

  const total = lastWords.length;

  const lines = top.map(([word, count], i) => {
    const pct = total ? Math.round((count / total) * 100) : 0;
    return `${i + 1}) ${word} — ${count} ครั้ง (${pct}%)`;
  });

  alert(`สรุป Top 3 (จาก ${total} คำตอบ)\n\n` + lines.join("\n"));
};
</script><p>The post <a href="https://www.aprtraining.com/buu2026/">ทักษะใดสำคัญที่สุดสำหรับการใช้ชีวิตในมหาวิทยาลัย</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>พนักงานให้ข้อมูลผิด ทำให้เสียสิทธิ์ และเตรียมดำเนินคดี</title>
		<link>https://www.aprtraining.com/%e0%b8%9e%e0%b8%99%e0%b8%b1%e0%b8%81%e0%b8%87%e0%b8%b2%e0%b8%99%e0%b9%83%e0%b8%ab%e0%b9%89%e0%b8%82%e0%b9%89%e0%b8%ad%e0%b8%a1%e0%b8%b9%e0%b8%a5%e0%b8%9c%e0%b8%b4%e0%b8%94-%e0%b8%97%e0%b8%b3%e0%b9%83/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 03:18:16 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2621</guid>

					<description><![CDATA[<p>สถานการณ์ สถานการณ์ ลูกค้าโทรมาขอข้อมูลเกี่ยวกับเอกสารเคลมผู้ป่วยนอก (OPD) เมื่อ 5 วันก่อน พนักงานแจ้งว่า “ถ้ามีใบเสร็จรับเงินอย่างเดียวก็สามารถยื่นเคลมได้ค่ะ” แต่ความเป็นจริงคือ บริษัทต้องการ  ลูกค้าจึงกลับไปยื่นใบเสร็จเพียงใบเดียว และโรงพยาบาลไม่สามารถออกเอกสารย้อนหลังได้แล้ว เพราะเกินกำหนด 72 ชั่วโมง ส่งผลให้เคส ไม่สามารถยื่นเคลมได้ ลูกค้าจึงโกรธมาก และกล่าวหาว่า  ข้อมูลพื้นฐาน ทีม Social Media ทีม Call Center ทีม Face to Face</p>
<p>The post <a href="https://www.aprtraining.com/%e0%b8%9e%e0%b8%99%e0%b8%b1%e0%b8%81%e0%b8%87%e0%b8%b2%e0%b8%99%e0%b9%83%e0%b8%ab%e0%b9%89%e0%b8%82%e0%b9%89%e0%b8%ad%e0%b8%a1%e0%b8%b9%e0%b8%a5%e0%b8%9c%e0%b8%b4%e0%b8%94-%e0%b8%97%e0%b8%b3%e0%b9%83/">พนักงานให้ข้อมูลผิด ทำให้เสียสิทธิ์ และเตรียมดำเนินคดี</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">สถานการณ์</h2>



<p class="wp-block-paragraph"><strong>สถานการณ์</strong></p>



<p class="wp-block-paragraph">ลูกค้าโทรมาขอข้อมูลเกี่ยวกับเอกสารเคลมผู้ป่วยนอก (OPD) เมื่อ 5 วันก่อน พนักงานแจ้งว่า “ถ้ามีใบเสร็จรับเงินอย่างเดียวก็สามารถยื่นเคลมได้ค่ะ” แต่ความเป็นจริงคือ บริษัทต้องการ </p>



<ul class="wp-block-list">
<li>ใบรับรองแพทย์ (Medical Certificate) </li>



<li>รายการรักษา (Treatment Detail) </li>
</ul>



<p class="wp-block-paragraph">ลูกค้าจึงกลับไปยื่นใบเสร็จเพียงใบเดียว และโรงพยาบาลไม่สามารถออกเอกสารย้อนหลังได้แล้ว เพราะเกินกำหนด 72 ชั่วโมง ส่งผลให้เคส ไม่สามารถยื่นเคลมได้ ลูกค้าจึงโกรธมาก และกล่าวหาว่า </p>



<ul class="wp-block-list">
<li>“พนักงานให้ข้อมูลผิด!” </li>



<li>“ผมเสียสิทธิ์เพราะคำพูดของคุณ!” </li>



<li>“ผมอัดเสียงคุยไว้หมด เดี๋ยวส่งให้ สคบ.” </li>



<li>“จะดำเนินคดีเอาผิดบริษัท”</li>
</ul>


<div class="gb-container gb-container-a2274017">

<h2 class="wp-block-heading"><strong>ข้อมูลพื้นฐาน</strong></h2>



<ul class="wp-block-list">
<li>ค่ารักษา 2,100 บาท </li>



<li>ความคุ้มครอง OPD ครั้งละ 1,500 บาท </li>



<li>ลูกค้าต้องการเคลมเต็ม 1,500 บาท </li>



<li>เอกสารที่จำเป็นขาดรายการสำคัญ 2 รายการ </li>



<li>โรงพยาบาลปฏิเสธออกย้อนหลัง </li>



<li>พนักงานที่ให้ข้อมูล เป็นพนักงานใหม่ </li>



<li>ระบบมีบันทึกการสนทนาไม่ครบ (เกิดจากการบันทึกภายในระบบ CRM ช้า)</li>
</ul>

</div>


<h2 class="wp-block-heading">ทีม Social Media</h2>



<div style='position: relative; padding-bottom: 56.25%; padding-top: 35px; height: 0; overflow: hidden;'><iframe sandbox='allow-scripts allow-same-origin allow-presentation' allowfullscreen='true' allowtransparency='true' frameborder='0' height='315' src='https://www.mentimeter.com/app/presentation/al1bsitzuq6rnehidy1odj9epuvfv9nc/embed' style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;' width='420'></iframe></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">ทีม Call Center</h2>



<div style='position: relative; padding-bottom: 56.25%; padding-top: 35px; height: 0; overflow: hidden;'><iframe sandbox='allow-scripts allow-same-origin allow-presentation' allowfullscreen='true' allowtransparency='true' frameborder='0' height='315' src='https://www.mentimeter.com/app/presentation/aly73ieo213w66cygbvxtcyndgddnpcj/embed' style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;' width='420'></iframe></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">ทีม Face to Face</h2>



<div style='position: relative; padding-bottom: 56.25%; padding-top: 35px; height: 0; overflow: hidden;'><iframe sandbox='allow-scripts allow-same-origin allow-presentation' allowfullscreen='true' allowtransparency='true' frameborder='0' height='315' src='https://www.mentimeter.com/app/presentation/alh1r6ytawwug1jux5ui9f472biw7e1j/embed' style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;' width='420'></iframe></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"></p><p>The post <a href="https://www.aprtraining.com/%e0%b8%9e%e0%b8%99%e0%b8%b1%e0%b8%81%e0%b8%87%e0%b8%b2%e0%b8%99%e0%b9%83%e0%b8%ab%e0%b9%89%e0%b8%82%e0%b9%89%e0%b8%ad%e0%b8%a1%e0%b8%b9%e0%b8%a5%e0%b8%9c%e0%b8%b4%e0%b8%94-%e0%b8%97%e0%b8%b3%e0%b9%83/">พนักงานให้ข้อมูลผิด ทำให้เสียสิทธิ์ และเตรียมดำเนินคดี</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>การสอดแทรกฝ่ายที่สาม</title>
		<link>https://www.aprtraining.com/mediator/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Mon, 17 Nov 2025 10:47:31 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2610</guid>

					<description><![CDATA[<p>โจทย์ หน่วยงานจากส่วนกลาง สั่งให้ หน่วยงานของท่าน ส่งข้อมูลสำคัญภายใน 24 ชั่วโมง แต่ตอนนี้ส่วนงานท่านมี “ภาระงานจำนวนมาก” และข้อมูลที่ต้องการ “ยังไม่ครบ” เกิดความขัดแย้งเกิดขึ้น ถ้าท่านต้องเลือก ‘คนกลาง’ 1 คน เขาต้องมีคุณสมบัติแบบไหน? กิจกรรมฝึกปฏิบัติหลักสูตร การบริหารงานภายใต้ความขัดแย้ง โดย วิทยากร สราวุธ บูรพาพัธ สราวุ​ธ บูรพาพัธ เป็นที่ปรึกษาด้านการสื่อสารให้หน่วยงานภาครัฐและเอกชนหลายแห่ง มีประสบการณ์ด้านการสื่อสารในธุรกิจพลังงาน สินค้าอุปโภคบริโภค ธุรกิจความงาม ธุรกิจบริการ และศูนย์การเรียนรู้ ทั้งในระดับประเทศและนานาชาติกว่า 20 ปี มีความเชี่ยวชาญในการวางแผนการสื่อสารแบบองค์รวม เพื่อสนับสนุนแผนการตลาดหรือสร้างภาพลักษณ์ให้แก่องค์กร รวมทั้ง บริหารจัดการสื่อสารภาวะวิกฤต และกำลังศึกษาระดับปริญญาเอก สาขาการจัดการบริหารธุรกิจ จบการศึกษาระดับปริญญาโท และปริญญาตรี คณะนิเทศศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย</p>
<p>The post <a href="https://www.aprtraining.com/mediator/">การสอดแทรกฝ่ายที่สาม</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">โจทย์</h2>



<p class="wp-block-paragraph">หน่วยงานจากส่วนกลาง สั่งให้ หน่วยงานของท่าน ส่งข้อมูลสำคัญภายใน 24 ชั่วโมง แต่ตอนนี้ส่วนงานท่านมี “ภาระงานจำนวนมาก” และข้อมูลที่ต้องการ “ยังไม่ครบ” เกิดความขัดแย้งเกิดขึ้น </p>



<h2 class="wp-block-heading">ถ้าท่านต้องเลือก ‘คนกลาง’ 1 คน เขาต้องมีคุณสมบัติแบบไหน?</h2>



<div style='position: relative; padding-bottom: 56.25%; padding-top: 35px; height: 0; overflow: hidden;'><iframe sandbox='allow-scripts allow-same-origin allow-presentation' allowfullscreen='true' allowtransparency='true' frameborder='0' height='315' src='https://www.mentimeter.com/app/presentation/alx8va4jdtvp711fbv6ia1e7xoqjhgug/embed' style='position: absolute; top: 0; left: 0; width: 100%; height: 100%;' width='420'></iframe></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph" id="block-1137dfe0-8295-4cf2-83c7-9a07d0f83fb5">กิจกรรมฝึกปฏิบัติหลักสูตร การบริหารงานภายใต้ความขัดแย้ง โดย วิทยากร สราวุธ บูรพาพัธ</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" width="1024" height="768" src="https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-1024x768.webp" alt="สราวุธ บูรพาพัธ" class="wp-image-1355 size-full" srcset="https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-1024x768.webp 1024w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-300x225.webp 300w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-768x576.webp 768w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-1536x1151.webp 1536w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-2048x1535.webp 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://promptlibrary.aprtraining.com/สราวุธ-บูรพาพัธ/" target="_blank" rel="noreferrer noopener">สราวุ​ธ บูรพาพัธ</a> เป็นที่ปรึกษาด้านการสื่อสารให้หน่วยงานภาครัฐและเอกชนหลายแห่ง มีประสบการณ์ด้านการสื่อสารในธุรกิจพลังงาน สินค้าอุปโภคบริโภค ธุรกิจความงาม ธุรกิจบริการ และศูนย์การเรียนรู้ ทั้งในระดับประเทศและนานาชาติกว่า 20 ปี มีความเชี่ยวชาญในการวางแผนการสื่อสารแบบองค์รวม เพื่อสนับสนุนแผนการตลาดหรือสร้างภาพลักษณ์ให้แก่องค์กร รวมทั้ง บริหารจัดการสื่อสารภาวะวิกฤต</p>



<p class="wp-block-paragraph">และกำลังศึกษาระดับปริญญาเอก สาขาการจัดการบริหารธุรกิจ</p>



<p class="wp-block-paragraph">จบการศึกษาระดับปริญญาโท และปริญญาตรี คณะนิเทศศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย</p>
</div></div>



<p class="wp-block-paragraph" id="block-06e4e101-cc50-40bb-94a6-11b27de3f829"></p><p>The post <a href="https://www.aprtraining.com/mediator/">การสอดแทรกฝ่ายที่สาม</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>การประเมินสัญชาตญานการเจรจาต่อรอง</title>
		<link>https://www.aprtraining.com/negotiator/</link>
		
		<dc:creator><![CDATA[Sarawut Burapapat]]></dc:creator>
		<pubDate>Mon, 17 Nov 2025 10:42:32 +0000</pubDate>
				<guid isPermaLink="false">https://www.aprtraining.com/?page_id=2607</guid>

					<description><![CDATA[<p>ภาพรวมสัญชาตญานการเจรจาต่อรอง รียบเรียงและประยุกต์จากเครื่องมือวัดแบบพฤติกรรม (Conflict Model Instrument) โดย Thomas และ Kilmannโดย วิทยากร สราวุธ บูรพาพัธ สราวุ​ธ บูรพาพัธ เป็นที่ปรึกษาด้านการสื่อสารให้หน่วยงานภาครัฐและเอกชนหลายแห่ง มีประสบการณ์ด้านการสื่อสารในธุรกิจพลังงาน สินค้าอุปโภคบริโภค ธุรกิจความงาม ธุรกิจบริการ และศูนย์การเรียนรู้ ทั้งในระดับประเทศและนานาชาติกว่า 20 ปี มีความเชี่ยวชาญในการวางแผนการสื่อสารแบบองค์รวม เพื่อสนับสนุนแผนการตลาดหรือสร้างภาพลักษณ์ให้แก่องค์กร รวมทั้ง บริหารจัดการสื่อสารภาวะวิกฤต จบการศึกษาระดับปริญญาโท และปริญญาตรี คณะนิเทศศาสตร์ จุฬาลงกรณ์มหาวิทยาลัยและกำลังศึกษาระดับปริญญาเอก สาขาการจัดการบริหารธุรกิจ</p>
<p>The post <a href="https://www.aprtraining.com/negotiator/">การประเมินสัญชาตญานการเจรจาต่อรอง</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">ภาพรวมสัญชาตญานการเจรจาต่อรอง</h2>



<iframe src="https://docs.google.com/spreadsheets/d/e/2PACX-1vShmKhjJ2tu4J0FEaDrm3u7JJMiysTse--0sEdk6WoiuwbUwLNy7nyyZrV-ipqdZR2XNVpeWXltI4k1/pubhtml?widget=true&headers=false"></iframe>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">รียบเรียงและประยุกต์จาก<strong>เครื่องมือวัดแบบพฤติกรรม (Conflict Model Instrument) โดย Thomas และ Kilmann</strong><br>โดย วิทยากร สราวุธ บูรพาพัธ</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img decoding="async" width="1024" height="768" src="https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-1024x768.webp" alt="สราวุธ บูรพาพัธ" class="wp-image-1355 size-full" srcset="https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-1024x768.webp 1024w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-300x225.webp 300w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-768x576.webp 768w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-1536x1151.webp 1536w, https://www.aprtraining.com/wp-content/uploads/2023/09/sarawut1-2048x1535.webp 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph"><a href="https://promptlibrary.aprtraining.com/สราวุธ-บูรพาพัธ/" target="_blank" rel="noopener" title="">สราวุ​ธ บูรพาพัธ</a> เป็นที่ปรึกษาด้านการสื่อสารให้หน่วยงานภาครัฐและเอกชนหลายแห่ง มีประสบการณ์ด้านการสื่อสารในธุรกิจพลังงาน สินค้าอุปโภคบริโภค ธุรกิจความงาม ธุรกิจบริการ และศูนย์การเรียนรู้ ทั้งในระดับประเทศและนานาชาติกว่า 20 ปี มีความเชี่ยวชาญในการวางแผนการสื่อสารแบบองค์รวม เพื่อสนับสนุนแผนการตลาดหรือสร้างภาพลักษณ์ให้แก่องค์กร รวมทั้ง บริหารจัดการสื่อสารภาวะวิกฤต</p>



<p class="wp-block-paragraph">จบการศึกษาระดับปริญญาโท และปริญญาตรี คณะนิเทศศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย<br>และกำลังศึกษาระดับปริญญาเอก สาขาการจัดการบริหารธุรกิจ</p>
</div></div>



<p class="wp-block-paragraph"></p><p>The post <a href="https://www.aprtraining.com/negotiator/">การประเมินสัญชาตญานการเจรจาต่อรอง</a> first appeared on <a href="https://www.aprtraining.com">เอพีอาร์ อบรมสัมมนา สถาบันฝึกอบรมด้านการสื่อสารและประชาสัมพันธ์แห่งประเทศไทย</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
