โต๊ะ
การใช้ตารางและรับข้อมูลในเว็บแอปพลิเคชัน
บันทึกแรกปรากฏในฐานข้อมูล! แต่เราไม่เห็น และจำเป็นต้องแก้ไข ในการทำเช่นนี้ คุณต้องมีส่วนประกอบ Table (ตารางที่จะแสดงข้อมูลที่จำเป็น) ทันทีที่เพิ่ม ระบบจะขอให้คุณตัดสินใจว่าข้อมูลใดจะอยู่ในนั้น และเลือกรุ่นและจุดสิ้นสุด
การตั้งค่าตาราง
ควรออกตารางที่สร้างขึ้นทันทีตามความต้องการของคุณ ตัวอย่างเช่น จำกัดจำนวนระเบียนในหนึ่งหน้า (ตารางสามารถยาวมากและมีหลายหน้า) รวมทั้งลบฟิลด์ที่ไม่น่าสนใจหรือตั้งค่าฟิลด์ที่ต้องการสำหรับเอาต์พุตจากตารางที่เกี่ยวข้อง
ในเวลาเดียวกัน เราจำได้ว่าการเพิ่มส่วนประกอบใด ๆ เพียงอย่างเดียวไม่ได้หมายถึงความพร้อมในการทำงานอย่างสมบูรณ์ คุณต้องสร้างกระบวนการทางธุรกิจที่เหมาะสม สำหรับตาราง ล็อตจะถูกสร้างขึ้นโดยอัตโนมัติ แต่เป็นส่วนหนึ่งของการฝึกอบรม เราจะสร้างทุกอย่างตั้งแต่เริ่มต้นเพื่อให้เข้าใจเนื้อหาได้ดียิ่งขึ้น
ทริกเกอร์ตาราง
มีสามทริกเกอร์ที่น่าสนใจที่สุดในตาราง - onDataUpdate , onShow และ onFilter เริ่มจาก onShow และกำหนดสิ่งที่จะเกิดขึ้นเมื่อตารางแสดงบนหน้าจอ สิ่งนี้จะต้องมีสามช่วงตึก:
1) Table Update Properties ตั้งค่าคุณสมบัติของตารางที่ต้องการ ตัวอย่างเช่น คุณสามารถจำกัดจำนวนระเบียนในหน้าเดียว (ตั้งค่าพารามิเตอร์เป็น Records per page = 10 ) และแสดงว่าหน้านั้นอยู่ในโหมดโหลดข้อมูล ( Loading = true )
2) Server request GET /country/ เพื่อให้ข้อมูลปรากฏขึ้นจำเป็นต้องดำเนินการที่ไหนสักแห่ง และในการทำเช่นนี้ ให้ส่งคำขอไปยังฐานข้อมูลสำหรับจุดสิ้นสุดที่เกี่ยวข้อง ในเวลาเดียวกัน ให้ความสนใจกับจำนวนของพารามิเตอร์อินพุตของจุดสิ้นสุดนี้ พวกเขาให้ความยืดหยุ่นมากขึ้นในการสืบค้นและรับเฉพาะข้อมูลที่จำเป็นจริงๆ
ในกรณีของเรา เราจะตั้งค่า _limit = 10 เนื่องจากจำนวนรายการต่อหน้าคือ 10 และไม่มีประโยชน์ที่จะโหลดเพิ่ม นอกจากนี้ เราจะจัดลำดับเอาต์พุตให้ถูกต้อง จัดเรียงทุกอย่างตามชื่อ ( _sort_by = name ) และตั้งค่าลำดับการจัดเรียงด้วย พารามิเตอร์ _sort_order สามารถรับค่า ASC (จากคำว่า Ascending สำหรับการเรียงลำดับโดยตรง จากค่าที่น้อยที่สุดไปยังค่าที่มากที่สุด) หรือ DESC ( จากมาก Descending เรียงลำดับย้อนกลับ) การเรียงลำดับตามตัวอักษรโดยตรงนั้นดีสำหรับเรา ดังนั้น _sort_order = ASC
พารามิเตอร์ _with สมควรได้รับความสนใจเป็นพิเศษ การดำเนินการค้นหาโดยไม่มีข้อมูลดังกล่าว เราจะได้รับเฉพาะข้อมูลเกี่ยวกับประเทศเท่านั้น แต่แบบจำลองประเทศเกี่ยวข้องกับเมือง และแม้ว่าข้อมูลนี้ไม่ได้อยู่ในตารางที่ร้องขอ แต่เรายังคงต้องการดูข้อมูลเหล่านั้น ในการทำเช่นนี้ให้ตั้งค่า _with = citys และรับข้อมูลเกี่ยวกับเมืองที่อยู่ในประเทศนี้ทันที
3) Table Update Data ได้รับข้อมูลแล้ว แต่จำเป็นต้องถ่ายโอนไปยังตารางเพื่อแสดงบนหน้าจอ ในการทำเช่นนี้ เราจะส่งข้อมูลทั้งหมด ( data ) ที่ได้รับในบล็อกก่อนหน้า ตลอดจนจำนวนบันทึกทั้งหมด ( count - Total Records ) เพื่อให้เข้าใจว่าควรมีกี่หน้าในตาราง
ทริกเกอร์ถัดไปคือ onDataUpdate ข้อมูลในตารางสามารถอัปเดตได้เนื่องจากกระบวนการทางธุรกิจต่างๆ และเมื่อสิ่งนี้เกิดขึ้น จะเป็นการดีที่สุดที่จะระบุทันทีว่าอะไรควรเกิดขึ้น และไม่วางบล็อกเดียวกันในแต่ละกระบวนการทางธุรกิจ ในกรณีของเรา การใช้บล็อก Table Update Properties อีกครั้งจะถูกต้อง แต่คราวนี้เพื่อลบโหมดการโหลด ( Loading = false ) ซึ่งตั้งค่าไว้ก่อนหน้านี้ และแสดงว่าตารางพร้อมใช้งานแล้ว
ทริกเกอร์สุดท้ายที่เราต้องการคือ onFilter กำหนดสิ่งที่ควรเกิดขึ้นในขณะที่เปลี่ยนไปยังหน้าอื่นของตาราง ในการดำเนินการนี้ จะมีพารามิเตอร์ _offset ซึ่งตามหมายเลขหน้า จะระบุออฟเซ็ตที่จำเป็นเมื่อโหลดข้อมูล
ตัวอย่างเช่น ถ้าในกรณีของเรา มี 10 รายการในแต่ละหน้า ดังนั้น หน้าที่ 3 จะต้องมีรายการตั้งแต่ 21 ถึง 30 ข้อมูลนี้จะได้รับจาก _offset และสามารถส่งผ่านไปยัง Server request GET /country/ block มิฉะนั้น กระบวนการทางธุรกิจจะตรงกับกระบวนการบนทริกเกอร์ TableOnShow โดยสิ้นเชิง ในสถานการณ์เช่นนี้ การมีทริกเกอร์ที่แตกต่างกันสองตัวเปิดใช้กระบวนการทางธุรกิจเดียวกันย่อมสมเหตุสมผล
แต่ในกรณีของเรา ความแตกต่างที่สำคัญคือพารามิเตอร์ _offset หากคุณปล่อยให้ทุกอย่างเป็นไปตามภาพหน้าจอด้านล่าง กระบวนการจะเริ่มตามทริกเกอร์ onShow แต่จะหยุดที่ Server request GET /country/ บล็อก เนื่องจากไม่สามารถรับค่า _offset ได้ (ส่งผ่านจากทริกเกอร์อื่น)
สถานการณ์นี้แก้ไขได้ดีที่สุดโดยใช้ตัวแปร ลองดูตัวอย่างที่เฉพาะเจาะจง เราต้องการตัวแปรประเภท Integer เพื่อบันทึกค่า _offset ดังนั้นเราจึงใช้บล็อก Integer หนึ่งบล็อกเพื่อประกาศตัวแปรนี้ แต่บล็อก Set Variable สองบล็อกที่แตกต่างกันเพื่อเขียนค่า โดยแต่ละบล็อกเชื่อมโยงกับทริกเกอร์ที่แตกต่างกัน
ตามทริกเกอร์ Table onShow เราไม่ต้องการออฟเซ็ตใด ๆ ข้อมูลในตารางจะแสดงตั้งแต่ต้นและ _offset = 0 ดังนั้นเราจึงตั้ง Value = 0 ในบล็อก Set Variable
เมื่อเรียกใช้ทริกเกอร์ Table onFilter เราได้รับค่า _offset แล้ว และต้องการใช้ ดังนั้น เราจะส่งค่า _offset ของทริกเกอร์เป็น Value ไปยังบล็อก Set Variable
ในขั้นตอนต่อไป กระบวนการทางธุรกิจของทริกเกอร์จะไม่แตกต่างกัน ดังนั้นกระบวนการทางธุรกิจสองกระบวนการจึงรวมกันเป็นหนึ่งเดียว โดยแต่ละกระบวนการมีค่าของตัวแปรจำนวนเต็มสำหรับพารามิเตอร์ _offset เป็นของตัวเอง