ข้ามไปยังเนื้อหา

enumerate

import { listProvinces, listAmphures, listTambons } from 'thaizip'

ฟังก์ชันทั้งสามตัวนี้ไม่ต้องมี query ข้อความ ใช้สำหรับสร้าง dropdown แบบลดหลั่น (จังหวัด → อำเภอ → ตำบล) โดยอ้างอิงจาก grouping (byProvince/byAmphure) ที่ถูกสร้างไว้ล่วงหน้าตอนสร้าง index แล้ว จึงไม่ต้องสแกน records ทั้งหมดทุกครั้งที่เรียก

function listProvinces(index: TrigramIndex): ProvinceSummary[]
ชื่อชนิดค่าเริ่มต้นคำอธิบาย
indexTrigramIndex— (จำเป็น)ดัชนีที่ใช้ดึงรายชื่อจังหวัด

ProvinceSummary[] — จังหวัดทั้ง 77 จังหวัด (ตามชุดข้อมูล default) แบบไม่ซ้ำ เรียงตามชื่อภาษาไทยด้วย Intl.Collator('th')

type ProvinceSummary = {
id: number
nameTh: string
nameEn: string
}
import { listProvinces } from 'thaizip'
const provinces = listProvinces(index) // 77 จังหวัด เรียงตามชื่อไทย
function listAmphures(index: TrigramIndex, provinceId: number): AmphureSummary[]
ชื่อชนิดค่าเริ่มต้นคำอธิบาย
indexTrigramIndex— (จำเป็น)ดัชนีที่ใช้ดึงรายชื่ออำเภอ
provinceIdnumber— (จำเป็น)id ของจังหวัด (จาก ProvinceSummary.id)

AmphureSummary[] — อำเภอ/เขตทั้งหมดในจังหวัดนั้นแบบไม่ซ้ำ เรียงตามชื่อภาษาไทย คืนค่าอาเรย์ว่าง [] ถ้า provinceId ไม่มีอยู่จริง (เช่นค่า 0 ตอนยังไม่ได้เลือก)

type AmphureSummary = {
id: number
nameTh: string
nameEn: string
provinceId: number
}
import { listAmphures } from 'thaizip'
listAmphures(index, 1) // อำเภอ/เขตทั้งหมดในกรุงเทพมหานคร
function listTambons(index: TrigramIndex, amphureId: number): TambonSummary[]
ชื่อชนิดค่าเริ่มต้นคำอธิบาย
indexTrigramIndex— (จำเป็น)ดัชนีที่ใช้ดึงรายชื่อตำบล
amphureIdnumber— (จำเป็น)id ของอำเภอ (จาก AmphureSummary.id)

TambonSummary[] — ตำบล/แขวงทั้งหมดในอำเภอนั้น เรียงตามชื่อภาษาไทย พร้อม zipCode ติดมากับแต่ละรายการ คืนค่าอาเรย์ว่าง [] ถ้า amphureId ไม่มีอยู่จริง

type TambonSummary = {
id: number
nameTh: string
nameEn: string
amphureId: number
zipCode: string
}
import { listTambons } from 'thaizip'
listTambons(index, 1001) // ตำบล/แขวงทั้งหมดในอำเภอนั้น พร้อม zipCode
  • ทั้งสามฟังก์ชันคืนค่าอาเรย์ว่าง [] เสมอสำหรับ id ที่ไม่รู้จัก — ไม่โยน exception จึงเขียน UI ที่ต้อง reset ตัวเลือกลูกเมื่อเปลี่ยนตัวเลือกแม่ได้ง่าย
  • แต่ละ byAmphure entry แม็พกับตำบลเพียงรายการเดียว ดังนั้น listTambons ไม่ต้อง deduplicate เหมือน listProvinces/listAmphures
  • ถ้า index ที่ส่งเข้ามาไม่มี byProvince/byAmphure (เช่น index รูปแบบเก่าที่สร้างขึ้นเอง) ทั้งสามฟังก์ชันจะ fallback ไปสแกน index.records ทั้งหมดแทน