ป้ายกำกับ: Tabulator

Tabulator: common configurationTabulator: common configuration

เพราะว่าช่วงนี้เขียนเกี่ยวกับ Tabulator อยู่หลายหน้าพอทำไประยะหนึ่งคิดขึ้นมาได้ว่าลืม configuration ไปตัวหนึ่งคือ paginationCounter: "rows" เพราะว่าถ้าไม่ใส่ไว้จะไม่เห็นส่วน Total rows in table ทำให้ต้องกลับไปไล่แก้ทุก ๆ ตัวอย่าง จนคิดถึงคำสอน DRY: don’t repeat yourself ที่แปลว่าอย่าทำอะไรซ้ำซาก copy code ซ้ำไปมา เพราะว่าถ้าแก้ซักอย่างแล้ว ต้องไปตามหา code วนเวียน เวียนวน กันหลาย ๆ ที่ แล้วก็ต้องมาเทสใหม่ ถ้าเกิดว่าสามารถแก้ได้เลย จากที่เดียว จะลดงานแก้ งานเทสออกไปได้เยอะ
assets/Tabulator.common.js

/**
 * Create a Tabulator table with common configuration
 * @param {string} selector - DOM selector for the table container
 * @param {Object} options - Tabulator options (columns, data, etc.)
 * @returns {Tabulator} - Tabulator instance
 */
function TabulatorCreate(selector, options = {}) {
 const defaultConfig = {
  layout: "fitColumns",
  movableColumns: true,
  pagination: true,
  paginationCounter: "rows",
  paginationMode: "local",
  paginationSize: 20,
  paginationSizeSelector: [10, 20, 25, 50, 100],
  responsiveLayout: true,
  // Add more default options as needed
 };
 return new Tabulator(selector, Object.assign({}, defaultConfig, options));
}

// Expose to global scope for inline HTML usage
window.TabulatorCreate = TabulatorCreate;

เรียกใช้โดย include ด้วย
<script src="assets/Tabulator.common.js"></script>
หลัง tabulator
จากนั้นแทนที่จะประกาศด้วย

var table = new Tabulator("#tabulator-table", {
 //table setup options
 ...
  layout: "fitColumns",
  movableColumns: true,
  pagination: true,
  paginationCounter: "rows",
  paginationMode: "local",
  paginationSize: 10,
  paginationSizeSelector: [5, 10, 20, 50],
  responsiveLayout: true,
 ...
});

ก็แทนที่ด้วย

var table = TabulatorCreate("#tabulator-table", {
   ajaxURL: "../assets/ISO-4217.json",
   ajaxConfig: "GET",
   selectable: true,
   columns: [
    { field: "code", title: "Code", width: 80 },
    { field: "numeric", title: "Numeric", width: 80 },
    { field: "digits", title: "Digits", width: 80 },
    { field: "currency", title: "Currency" },
    { field: "locations", title: "Locations listed for this currency" }
   ]
  });

ค่า config ที่ใช้บ่อย ๆ ใช้เหมือนกันทั้ง project ที่ตรงกับใน function TabulatorCreate จะไม่ต้องใส่ไว้หลายที่และแปลว่าถ้าแก้ค่าพวกนี้อย่างแสดงครั้งละ 10 items เป็นหน้าละ 20 items ก็แก้แค่ที่เดียว ทุกหน้าที่ใช้ function นี้ จะเปลี่ยนมาแสดง 20 รายการต่อหน้าโดยพร้อมเพรียงกัน แต่ถ้าอยากจะให้บางหน้าแสดงไม่เท่าหน้าอื่น ๆ ก็สามารถconfig เฉพาะหน้านั้น ๆ ได้อยู่

อ่านเพิ่มเติม