Advanced Table Widget¶
Parameter- Data (ซ่อนจากหน้าพาลามิเตอร์)
ใช้ตั้งค่าการแสดงผลของข้อมูล- Callback API
- ID = “Data”
- getParameter ได้รับข้อมูลข้อมูลที่แสดงบนตาราง ในรูปแบบ csv ( [ [],[],[] ] )
[["col1","col2"],["1","1"],["2","2"],["31","13"],["asf1","asf1"]]
- setParameter ตั้งค่าข้อมูลให้กับตาราง, เลือกแสดงคอลัมป์, เปลี่ยนชื่อคอลัมป์
- ตั้งค่าข้อมูลโดยตรง (in-memory)
// ตั้งค่าข้อมูลโดยตรง setParameter("table","Data",{headers:["col1","col2"],data: [["1","1","1","1"],["2","2","12","12"],["31","13","31","31"],["asf1","asf1","ff1","1ff"]]}) // ตั้งค่าข้อมูลโดยดึงข้อมูลมาจากฐานข้อมูล แล้วเลือกแสดงเฉพาะคอลัมป์ที่ชื่อ "ชื่อเรือ"และ "ประเภทเรือ" AmgCnt.SQLite.read.all({ sql: `SELECT * FROM "ข้อมูลตารางคนขอเข้าประเทศ2"`, params: [] }, (res) => { setParameter("table", "Data", { headers: ["ชื่อเรือ", "ประเภทเรือ"], data: res.rows }) }); // ตั้งค่าข้อมูลดึงข้อมูลมาจากฐานข้อมูล แสดงทุกคอลัมป์ แต่มีการเปลี่ยนชื่อคอลัมป์ จาก "ชื่อเรือ" เป็น "header label ชื่อเรือ" และ "จังหวัด" เป็น "จาาหวัดด" AmgCnt.SQLite.read.all({ sql: `SELECT * FROM "ข้อมูลตารางคนขอเข้าประเทศ2"`, params: [] }, (res) => { setParameter("table", "Data", { headerLabels: [{colName: "ชื่อเรือ",label: "header label ชื่อเรือ"}, {colName: "จังหวัด",label: "จาาหวัดด"}], data: res.rows }) });
- ตั้งค่าข้อมูลโดยการกำหนดฐานข้อมูล
// ตั้งค่าข้อมูลให้ตารางดึงข้อมูลจาก ฐานข้อมูล Sqlite ชื่อ "ข้อมูลตารางคนขอเข้าประเทศ2" // โดยทำการซ่อนคอลัมป์ชื่อ "ท่าเรือสุดท้ายก่อนเข้าไทย" setParameter("table", "Data", { tableName: "ข้อมูลตารางคนขอเข้าประเทศ2", hiddenHeaders: ["ท่าเรือสุดท้ายก่อนเข้าไทย"] }) // ตั้งค่าข้อมูลให้ตารางดึงข้อมูลจาก ฐานข้อมูล Sqlite ชื่อ "ข้อมูลตารางคนขอเข้าประเทศ2" // โดยทำการซ่อนคอลัมป์ชื่อ "ท่าเรือสุดท้ายก่อนเข้าไทย" และเปลี่ยนชื่อคอลัมป์ "ชื่อเรือ" เป็น "GGG" setParameter("table", "Data", { tableName: "ข้อมูลตารางคนขอเข้าประเทศ2", headerLabels: [{ colName: "ชื่อเรือ", label : "GGG" }], hiddenHeaders: ["ท่าเรือสุดท้ายก่อนเข้าไทย"] }) // ตั้งค่าข้อมูลให้ตารางดึงข้อมูลจาก ฐานข้อมูล Sqlite ชื่อ "ข้อมูลตารางคนขอเข้าประเทศ2" // โดยทำการซ่อนคอลัมป์ชื่อ "ท่าเรือสุดท้ายก่อนเข้าไทย" และแสดงเฉพาะคอลัมป์ "ชื่อเรือ" ซึ่งจะถูกเปลี่ยนชื่อที่แสดงเป็น "ชื่อเรือ (custom)" setParameter("table","Data",{tableName : "ข้อมูลตารางคนขอเข้าประเทศ2" ,headers:[{colName : "ชื่อเรือ",label:"ชื่อเรือ (custom)"}] ,hiddenHeaders:["ท่าเรือสุดท้ายก่อนเข้าไทย"]}) // ตั้งค่าข้อมูลให้ตารางดึงข้อมูลจาก ฐานข้อมูล Clickhouse ชื่อ "FARMER_ONE_AGRICULTUREAREA" setParameter("table","Data",{tableName : "FARMER_ONE_AGRICULTUREAREA",database:"clickhouse"}) // ตั้งค่าข้อมูลให้ตารางดึงข้อมูลจาก ฐานข้อมูล Clickhouse ชื่อ "FARMER_ONE_AGRICULTUREAREA" // โดยแสดงเฉพาะคอลัมป์ "AREA_CODE" และ "ZONE" setParameter("table","Data",{tableName : "FARMER_ONE_AGRICULTUREAREA",database:"clickhouse",headers:["AREA_CODE","ZONE"]}) // ตั้งค่าข้อมูลให้ตารางดึงข้อมูลจาก ฐานข้อมูล Clickhouse ชื่อ "FARMER_ONE_AGRICULTUREAREA" // โดยแสดงทุกคอลัมป์ แต่เปลี่ยนชื่อคอลัมป์ "AREA_CODE" เป็น "AAARRREEEEAAAA__CCOOODDEE" และเปลี่ยนชื่อคอลัมป์ "ZONE" เป็น "Zone header labels" setParameter("table", "Data", { tableName: "FARMER_ONE_AGRICULTUREAREA", database: "clickhouse", headerLabels: [{ colName: "AREA_CODE", label: "AAARRREEEEAAAA__CCOOODDEE" }, { colName: "ZONE", label: "Zone header labels" }] })
- ตั้งค่าข้อมูลด้วย Query statement (SQL)
// กำหนดข้อมูลจาก Sqlite setParameter("table", "Data", { sql: "SELECT * FROM ข้อมูลตารางคนขอเข้าประเทศ2 LEFT JOIN tool"}) // กำหนดข้อมูลจาก Clickhouse setParameter("table","Data",{sql : `SELECT * FROM "FARMER_ONE_AGRICULTUREAREA" LIMIT 100`,database:"clickhouse"}) // กำหนดข้อมูลจาก Sqlite โดนกำหนดให้แสดงเฉพาะคอลัมป์ "ชื่อเรือ", "IMO" และ "เครื่องมือ" setParameter("table", "Data", { sql: "SELECT * FROM ข้อมูลตารางคนขอเข้าประเทศ2 LEFT JOIN tool", headers: ["ชื่อเรือ", "IMO", "เครื่องมือ"] })
- ตั้งค่าข้อมูลโดยตรง (in-memory)
- Callback API
- Selected (ซ่อนจากหน้าพาลามิเตอร์)
ใช้ตั้งค่า checkbox ของตัวตาราง- Callback API
- ID = “Selected”
- getParameter รับข้อมูลของแถวที่ถูกติ๊ก
{"data":[{"col1":"31","col2":"13"}],"headers":["col1","col2"]}
- setParameter เลือกแถวที่จะติ๊ก Checkbox หรือทำงานรีเซ็ทการติ๊กทั้งหมด
// เลือกติ๊กแถวที่ 1,2,4 setParameter("table","Selected",[1,2,4]) // รีเซิทการติ๊กทั้งหมด setParameter("table","Selected",null)
- Callback API
- RowPerPage
ใช้ตั้งค่าจำนวนแถวที่แสดงในแต่ละหน้าของตาราง- Callback API
- ID = “RowPerPage”
- getParameter รับข้อมูลจำนวนแถวต่อหน้าทั่กำลังใช้
- setParameter เลือกจำนวนแถวที่จะแสดง โดยมีตัวเลือกได้แก้ 10, 50, 100, 200, 500, 1000
// กำหนดให้แสดงข้อมูล 100 แถวต่อหน้า setParameter("table","RowPerPage",100)
- Callback API
- CellStyle
ใช้ปรับแต่งหน้าตาของตาราง- Callback API
- ID = “CellStyle”
- setParameter การตั้งค่ามีสองแบบดังนี้
แบบแรก setStyle ของ cell ในแต่ละ row หรือก็คือตัวใน tag < td >< /td >setParameter("table", "CellStyle", [{ // ถ้าจะเลือก checkbox ก็ colName : "_checkbox$" // เลือกทั้งหมด ก็ colName : null หรือไม่ตั้งค่า colName colName: "", style: { "text-align": "center", "background-color": "wheat" }, class: ["text-center", "bg-light"], onCreateDOM: ({ preElement, element, data, colName, rowIndex, colIndex, allData, }) => { // preElement กับ element อันเดียวกัน แค่มีไว้ซัพพอร์ตตัวเก่าเฉยๆ } }])
แบบสอง custom เต็มที่จะแต่งส่วนไหนของตารางsetParameter("table", "CellStyle", { // <table></table> table: { style: { "text-align": "center", "background-color": "wheat" }, class: ["text-center", "bg-light"], onCreateDOM: ({ preElement, element, }) => {} }, header: { // <thead></thead> container: { style: {}, class: [], onCreateDOM: ({ preElement, element, }) => {} }, // <tr></tr> colContainer: { style: {}, class: [], onCreateDOM: ({ preElement, element, allData, }) => {} }, // <th></th> col: { style: {}, class: [], onCreateDOM: ({ preElement, element, colName, colIndex, allData, }) => {} }, }, body: { // <tbody></tbody> container: { style: {}, class: [], onCreateDOM: ({ preElement, element, }) => {} }, // <tr></tr> rowContainer: { style: {}, class: [], onCreateDOM: ({ preElement, element, allData, rowIndex, }) => {} }, // <td></td> row: { style: {}, class: [], onCreateDOM: ({ preElement, element, data, colName, rowIndex, colIndex, allData, }) => {} }, } })
// ตั้งค่า style และ class ให้กับcell ในทุกคอลัมป์ setParameter("table", "CellStyle", [{ style: { "text-align": "right", "background-color": "wheat" }, class: ["text-success"] }]) // ตั้งค่า style และ class ให้กับcell ที่อยู่ภายใต้คอลัมป์ "col1" setParameter("table", "CellStyle", [{ colName: "col1", style: { "text-align": "right", "background-color": "wheat" }, class: ["text-danger"], }]) // ผสมการตั้งเฉพาะเจาะจง และการตั้งทั้งหมด setParameter("table", "CellStyle", [ //ตั้งค่า style ให้ cell ภายใต้คอลัมป์ชื่อ "col1" { colName: "col1", style: {"text-align": "left","background-color": "red"}, }, //ตั้งค่า style ให้ cell ภายใต้คอลัมป์ชื่อ "col2" { colName: "col2", style: {"text-align": "center","background-color": "blue"}, }, // กำหนด class ให้ทุก cell ในทุกคอลัมป์ { class: ["text-light"] } ]) // ตั้งให้ทุกคอลัมป์มี class "text-success" // และทำการเพิ่ม logic ว่าหากข้อมูลมีค่ามากกว่า 5 ให้ทำการแสดงข้อมูลใน Cell ว่า "Greater Than 5" setParameter("table", "CellStyle", [{ class: ["text-success"], onCreateDOM: ({ preElement, element, data, colName, rowIndex, colIndex, allData, }) => { if(data > 5){ $(element).text("Greater Than 5") } } }])
- Callback API
// กำหนดหน้าตาของตารางทั้งหมด ในแต่ละส่วน ตามที่ต้องการ
setParameter("table", "CellStyle", {
// <table></table>
table: {
class: ["table-hover", "text-left"],
},
header: {
// <thead></thead>
container: {
onCreateDOM: ({
preElement,
element,
}) => {
return $('<thead ></thead>')[0]
}
},
col: {
style: {
"box-shadow": "none",
"border-top": "none",
"background-color": "white"
},
class: ["lead"],
},
}
})
- Update (ซ่อนจากหน้าพาลามิเตอร์)
ใช้เรียกให้ตารางทำการอัพเดตข้อมูลใหม่- Callback API
- ID = “Update”
- setParameter สั่งให้ตารางทำการอัพเดตข้อมูลใหม่
setParameter("table","Update")
- Callback API
- Show Search Box
ตั้งค่าเริ่มต้นการแสดงกล่องค้นหา
- Show Check Box
ตั้งค่าเริ่มต้นว่าให้ตารางที่คอลัมป์ Select (ช่องไว้ติ๊ก ) ไหม
- ParentID
ใช้งานกับ toolsContainer เพื่อเลือก ID ของ widget ที่จะรับข้อมูล