diff --git a/cms/src/lib/data/CMSDataType.ts b/cms/src/lib/data/CMSDataType.ts index fe671b2..d1573da 100644 --- a/cms/src/lib/data/CMSDataType.ts +++ b/cms/src/lib/data/CMSDataType.ts @@ -30,3 +30,4 @@ export interface CMSInfo{ divisions:{title:string,url:string}[]; institutes:{title:string,url:string}[]; } +export const apibase="/api" diff --git a/cms/src/lib/data/competitive-exam.json b/cms/src/lib/data/competitive-exam.json index ec15d74..68a5fd1 100644 --- a/cms/src/lib/data/competitive-exam.json +++ b/cms/src/lib/data/competitive-exam.json @@ -4,6 +4,7 @@ "start":"2023-04-24", "detail":"

ประกาศรายชื่อผู้ผ่านภาค ข. และมีสิทธิสอบภาค ค. ในการคัดเลือกคนพิการ ครั้งที่ 1/2565

", "title":"ประกาศรายชื่อผู้ผ่านภาค ข. และมีสิทธิสอบภาค ค. ในการคัดเลือกคนพิการ ครั้งที่ 1/2565", + "category":"สำนักงาน ก.ก.","category_id":1, "images":[ { "title":"topic", @@ -50,6 +51,7 @@ "start":"2023-04-20T09:00:00", "detail":"ใครลืมส่งเอกสาร !! สำหรับการคัดเลือกคนพิการฯ ครั้งที่ 1/2565 ส่งเอกสารเพิ่มได้", "title":"ใครลืมส่งเอกสาร !! สำหรับการคัดเลือกคนพิการฯ ครั้งที่ 1/2565 ส่งเอกสารเพิ่มได้", + "category":"สำนักงาน ก.ก.","category_id":1, "images":[ { "title":"topic", @@ -62,6 +64,7 @@ "start":"2023-03-28T09:00:00", "detail":"แผนที่การเดินทางมาสนามสอบคนพิการฯ ครั้งที่ 1/2565", "title":"แผนที่การเดินทางมาสนามสอบคนพิการฯ ครั้งที่ 1/2565", + "category":"ประกาศทั่วไป","category_id":2, "images":[ { "title":"topic", @@ -74,6 +77,7 @@ "start":"2023-03-28T09:00:00", "detail":"การสอบแข่งขันเพื่อรรจุและแต่งตั้งบุคคลเข้ารับราชการเป็นข้าราชการกรุงเทพมหานครสามัญ ครั้งที่ 2/2566", "title":"การสอบแข่งขันเพื่อรรจุและแต่งตั้งบุคคลเข้ารับราชการเป็นข้าราชการกรุงเทพมหานครสามัญ ครั้งที่ 2/2566", + "category":"สำนักงาน ก.ก.","category_id":1, "images":[ { "title":"topic", @@ -86,6 +90,7 @@ "start":"2023-03-10T09:00:00", "detail":"การสอบแข่งขันเพื่อรรจุและแต่งตั้งบุคคลเข้ารับราชการเป็นข้าราชการกรุงเทพมหานครสามัญ ครั้งที่ 1/2565", "title":"การสอบแข่งขันเพื่อรรจุและแต่งตั้งบุคคลเข้ารับราชการเป็นข้าราชการกรุงเทพมหานครสามัญ ครั้งที่ 1/2565", + "category":"สำนักงาน ก.ก.","category_id":1, "images":[ { "title":"topic", diff --git a/cms/src/lib/data/qualify-exam.json b/cms/src/lib/data/qualify-exam.json index 416c495..5b696dd 100644 --- a/cms/src/lib/data/qualify-exam.json +++ b/cms/src/lib/data/qualify-exam.json @@ -1,7 +1,7 @@ [ { "id":"21", - "catetory":"สำนักงาน ก.ก.","catetory_id":1, + "category":"สำนักงาน ก.ก.","category_id":1, "start":"2023-04-24", "title":"ด่วน !! ประกาศวัน เวลา สถานที่ และระเบียบการคัดเลือกลูกจ้างกทม.", "detail":"


สำนักงานคณะกรรมการข้าราชการกรุงเทพมหานคร ประกาศกำหนดวัน เวลา สถานที่คัดเลือก และระเบียบ เกี่ยวกับการคัดเลือกบุคลากรกรุงเทพมหานครหรือผู้ปฏิบัติงานอื่นในกรุงเทพมหานครเพื่อบรรจุและแต่งตั้ง เป็นข้าราชการกรุงเทพมหานครสามัญ ครั้งที่ 1 / 2565

", @@ -42,7 +42,7 @@ }, { "id":"20", - "catetory":"สำนักงาน ก.ก.","catetory_id":1, + "category":"สำนักงาน ก.ก.","category_id":1, "start":"2023-04-03", "title":"วัน เวลา สถานที่ และระเบียบการคัดเลือกลูกจ้างกทม.", "detail":"ด่วน !! ประกาศวัน เวลา สถานที่ และระเบียบการคัดเลือกลูกจ้างกทม.", @@ -55,10 +55,13 @@ }, { "id":"19", - "catetory":"สำนักการแพทย์","catetory_id":3, - "start":"2003-12-20", - "title":"ประกาศรับสมัครคัดเลือกบุคลากรกทม. !!", - "detail":"ประกาศรับสมัครคัดเลือกบุคลากรกทม. !!", + "category":"สำนักการแพทย์","category_id":3, + "start":"2023-04-01", + "end":"2023-04-02", + "exam_date":"2023-04-12T09:00:00", + "announcement_date":"2023-04-08", + "title":"ประกาศรับสมัครคัดเลือกบุคลากรทางการแพทย์กทม. !!", + "detail":"ประกาศรับสมัครคัดเลือกบุคลากรทางการแพทย์กทม. !!", "images":[ { "title":"topic", @@ -69,7 +72,7 @@ }, { "id":"18", - "catetory":"สำนักอนามัย","catetory_id":2, + "category":"สำนักอนามัย","category_id":2, "start":"2023-11-05T09:00:00", "title":"สอบครั้งที่ 1/2565", "detail":"สอบเป็นลูกจ้างและผู้ปฎิบัติงานในกรุงเทพมหานคร เป็นข้าราชการกรุงเทพมหานคร", @@ -82,7 +85,7 @@ }, { "id":"17", - "catetory":"สำนักงาน ก.ก.","catetory_id":1, + "category":"สำนักงาน ก.ก.","category_id":1, "start":"2023-11-01", "title":"รับสมัครสอบตำแหน่งลูกจ้างและผู้ปฎิบัติงาน 1/2565", "detail":"รับสมัครสอบตำแหน่ง ลูกจ้างและผู้ปฎิบัติงานในกรุงเทพมหานคร เป็นข้าราชการกรุงเทพมหานคร", diff --git a/cms/src/routes/+layout.server.ts b/cms/src/routes/+layout.server.ts index a5d7e09..b8afb71 100644 --- a/cms/src/routes/+layout.server.ts +++ b/cms/src/routes/+layout.server.ts @@ -1,8 +1,8 @@ - +import {apibase} from '$lib/data/CMSDataType' import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types' export const load: PageServerLoad = async ({fetch}) => { - const res = await fetch("/api/info") + const res = await fetch(apibase+"/info") if(!res.ok) throw error(500, 'ไม่สามารถอ่านข้อมูลตั้งต้นของเวปได้'); diff --git a/cms/src/routes/+page.server.ts b/cms/src/routes/+page.server.ts index 6179740..94628c9 100644 --- a/cms/src/routes/+page.server.ts +++ b/cms/src/routes/+page.server.ts @@ -1,40 +1,36 @@ +import {apibase} from '$lib/data/CMSDataType' import { error } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import type {Exam} from '$lib/data/CMSDataType' import dayjs from 'dayjs' - - export const load: PageServerLoad = async ({fetch}) => { - let qualify_exams: Exam[] = [] - let competitive_exams: Exam[] = [] - let content = "" - let image = undefined - let res = await fetch("/api/info") + let res = await fetch(apibase+"/info") if(!res.ok) throw error(500, 'ไม่สามารถอ่านข้อมูลตั้งต้นของหน้าหลักได้'); const {title,subtitle} = await res.json() - res = await fetch("/api/content?page=home") - if(res.ok){ - const r = await res.json() - content = r.content - image = r.image - } - res = await fetch("/api/qualifying") - if(res.ok){ - qualify_exams = await res.json() - qualify_exams.forEach((e)=>{ + + res = await fetch(apibase+"/content?page=home") + if(!res.ok) + throw error(500, 'ไม่สามารถอ่านเนื้อหาหน้าหลักได้'); + const {content,image} = await res.json() + //Inner function reduce code and able to throw here + async function loadExam(api_path:string,err_msg:string){ + const res = await fetch(api_path) + if(!res.ok) + throw error(500, err_msg); + const exams:Exam[] = await res.json() + exams.forEach((e)=>{ e.date = e.start? dayjs(e.start).format("DD MMM BBBB"):"" }) - for(let i=qualify_exams.length;i<3;i++){ - qualify_exams.push({id:"0",title:"",date:"",image:""}) + //This page layout require 3 item, patch with empty + for(let i=exams.length;i<3;i++){ + exams.push({id:"0",title:"",date:"",image:""}) } + return exams + } - res = await fetch("/api/competitive") - if(res.ok){ - competitive_exams = await res.json() - competitive_exams.forEach((e)=>{ - e.date = e.start? dayjs(e.start).format("DD MMM BBBB"):"" - }) - } - return {title,subtitle,content,image, qualify_exams,competitive_exams }; + const qualify_exams = loadExam(apibase+"/qualifying",'ไม่สามารถอ่านรายการสอบคัดเลือกได้') + const competitive_exams = loadExam(apibase+"/competitive",'ไม่สามารถอ่านรายการสอบแข่งขันได้') + + return {title,subtitle,content,image, qualify_exams,competitive_exams }; }; diff --git a/cms/src/routes/about/+page.server.ts b/cms/src/routes/about/+page.server.ts index 59a9bfc..c05c91e 100644 --- a/cms/src/routes/about/+page.server.ts +++ b/cms/src/routes/about/+page.server.ts @@ -1,6 +1,10 @@ -import content from "$lib/data/content/about.html?raw" +import {apibase} from '$lib/data/CMSDataType' import type { PageServerLoad } from './$types'; -export const load = (async () => { - +import { error } from '@sveltejs/kit'; +export const load = (async ({fetch}) => { + const res = await fetch(apibase+"/content?page=about") + if(!res.ok) + throw error(500, 'ไม่สามารถอ่านเนื้อหาหน้าเกี่ยวกับได้'); + const {content} = await res.json() return {content}; }) satisfies PageServerLoad; diff --git a/cms/src/routes/competitive/+page.server.ts b/cms/src/routes/competitive/+page.server.ts index 14263de..dd4abbb 100644 --- a/cms/src/routes/competitive/+page.server.ts +++ b/cms/src/routes/competitive/+page.server.ts @@ -1,37 +1,44 @@ +import {apibase} from '$lib/data/CMSDataType' import { error } from '@sveltejs/kit'; import type {CalendarEvent,Exam} from '$lib/data/CMSDataType' import dayjs from 'dayjs' import type { PageServerLoad } from './$types' export const load: PageServerLoad = async ({fetch}) => { - let content = "" let exams:Exam[] = [] - let res = await fetch("/api/content?page=competitive") - if(res.ok){ - content = (await res.json()).content - } - - res = await fetch("/api/competitive") - if(!res.ok){ + const res = await fetch(apibase+"/competitive") + if(!res.ok) throw error(res.status, 'ไม่สามารถอ่านข้อมูลการสอบได้'); - } exams = await res.json() - + const events:CalendarEvent[]=[] - exams.forEach((e)=>{ - if(!e.start){ - e.date="" - return + exams.forEach((ex)=>{ + const {id,title,start,end,category_id} = ex + let backgroundColor ="#23ccef" + switch (String(category_id)) { + case "1": + backgroundColor="rgba(251,64,75,.2)" + break; + case "2": + backgroundColor="#23ccef" + break; + case "3": + backgroundColor="rgba(68,125,247,.2)" + break; + default: + break; } - e.date= dayjs(e.start).format("DD MMM BBBB") - - const {id,title,start,category_id} = e - - let backgroundColor ="rgb(153 153 255 / 34%)" - if(category_id) - backgroundColor ="#99FFEE" - const url = "/competitive/"+id - events.push({id,title,start,url,backgroundColor}) + if(start){ + ex.date = dayjs(start).format("DD MMM BBBB") + events.push({id,title,start,end,url,backgroundColor}) + } + if(ex.exam_date){ + events.push({id,"title":"วันสอบแข่งขัน","start":ex.exam_date,url,backgroundColor}) + } + if(ex.announcement_date){ + events.push({id,"title":"ผลสอบแข่งขัน","start":ex.announcement_date,url,backgroundColor}) + } }) - return {content,exams,events} -} \ No newline at end of file + return {exams,events} +} + diff --git a/cms/src/routes/competitive/+page.svelte b/cms/src/routes/competitive/+page.svelte index d5da0b9..db56934 100644 --- a/cms/src/routes/competitive/+page.svelte +++ b/cms/src/routes/competitive/+page.svelte @@ -2,8 +2,7 @@ import ActivityCalendar from '$lib/components/ActivityCalendar.svelte' import type { PageData } from './$types' export let data: PageData; - const exams = data.exams - const events = data.events + const {exams,events} = data
diff --git a/cms/src/routes/competitive/[id]/+page.server.ts b/cms/src/routes/competitive/[id]/+page.server.ts index 778712e..0e6601f 100644 --- a/cms/src/routes/competitive/[id]/+page.server.ts +++ b/cms/src/routes/competitive/[id]/+page.server.ts @@ -1,9 +1,10 @@ +import {apibase} from '$lib/data/CMSDataType' import { error } from '@sveltejs/kit' import dayjs from 'dayjs' import type { PageServerLoad } from './$types' export const load: PageServerLoad = async ({params,fetch}) => { const id = params.id+"" - const res = await fetch("/api/competitive/"+id) + const res = await fetch(apibase+"/competitive/"+id) if(res.status==404){ throw error(404,{message:`ค้นหาข้อมูลสอบคัดเลือก ${id}ไม่พบ`}) } diff --git a/cms/src/routes/qualifying/+page.server.ts b/cms/src/routes/qualifying/+page.server.ts index ed0f363..a985fe8 100644 --- a/cms/src/routes/qualifying/+page.server.ts +++ b/cms/src/routes/qualifying/+page.server.ts @@ -1,31 +1,20 @@ - +import {apibase} from '$lib/data/CMSDataType' import { error } from '@sveltejs/kit'; import type {CalendarEvent,Exam} from '$lib/data/CMSDataType' import dayjs from 'dayjs' import type { PageServerLoad } from './$types' export const load: PageServerLoad = async ({fetch}) => { - let content = "" let exams:Exam[] = [] - let res = await fetch("/api/content?page=qualifying") - if(res.ok){ - content = (await res.json()).content - } - res = await fetch("/api/qualifying") - if(!res.ok){ + const res = await fetch(apibase+"/qualifying") + if(!res.ok) throw error(res.status, 'ไม่สามารถอ่านข้อมูลการสอบได้'); - } exams = await res.json() - + const events:CalendarEvent[]=[] - exams.forEach((e)=>{ - if(!e.start){ - e.date="" - return - } - e.date = e.start? dayjs(e.start).format("DD MMM BBBB"):"" - const {id,title,start,end,category_id} = e - let backgroundColor ="" - switch (category_id) { + exams.forEach((ex)=>{ + const {id,title,start,end,category_id} = ex + let backgroundColor ="#23ccef" + switch (String(category_id)) { case "1": backgroundColor="rgba(251,64,75,.2)" break; @@ -39,15 +28,18 @@ export const load: PageServerLoad = async ({fetch}) => { break; } const url = "/qualifying/"+id - events.push({id,title,start,end,url,backgroundColor}) - if(e.exam_date){ - events.push({id,"title":"สอบ","start":e.exam_date,url,backgroundColor}) + if(start){ + ex.date = dayjs(start).format("DD MMM BBBB") + events.push({id,title,start,end,url,backgroundColor}) } - if(e.announcement_date){ - events.push({id,"title":"ผลสอบสอบ","start":e.announcement_date,url,backgroundColor}) + if(ex.exam_date){ + events.push({id,"title":"วันสอบคัดเลือก","start":ex.exam_date,url,backgroundColor}) + } + if(ex.announcement_date){ + events.push({id,"title":"ผลสอบคัดเลือก","start":ex.announcement_date,url,backgroundColor}) } }) - return {exams,events,content} + return {exams,events} } diff --git a/cms/src/routes/qualifying/+page.svelte b/cms/src/routes/qualifying/+page.svelte index 97eb40e..14a6029 100644 --- a/cms/src/routes/qualifying/+page.svelte +++ b/cms/src/routes/qualifying/+page.svelte @@ -2,8 +2,7 @@ import ActivityCalendar from '$lib/components/ActivityCalendar.svelte' import type { PageData } from './$types' export let data: PageData; - const exams = data.exams - const events = data.events + const {exams,events} = data
@@ -63,9 +62,13 @@ {#each exams as exam} - {exam.date} + + + {exam.date??""} + + {exam.title} - {exam.category} + {exam.category??""} {/each} diff --git a/cms/src/routes/qualifying/[id]/+page.server.ts b/cms/src/routes/qualifying/[id]/+page.server.ts index f25cfaf..fbd9445 100644 --- a/cms/src/routes/qualifying/[id]/+page.server.ts +++ b/cms/src/routes/qualifying/[id]/+page.server.ts @@ -1,10 +1,10 @@ -//import type {Exam} from '$lib/data/CMSDataType' +import {apibase} from '$lib/data/CMSDataType' import { error } from '@sveltejs/kit' import dayjs from 'dayjs' import type { PageServerLoad } from './$types' export const load: PageServerLoad = async ({params,fetch}) => { const id = params.id+"" - const res = await fetch("/api/qualifying/"+id) + const res = await fetch(apibase+"/qualifying/"+id) if(res.status==404){ throw error(404,{message:`ค้นหาข้อมูลสอบคัดเลือก ${id}ไม่พบ`}) } diff --git a/cms/src/routes/qualifying/[id]/+page.svelte b/cms/src/routes/qualifying/[id]/+page.svelte index 266b20f..699cc18 100644 --- a/cms/src/routes/qualifying/[id]/+page.svelte +++ b/cms/src/routes/qualifying/[id]/+page.svelte @@ -18,7 +18,7 @@
  • - ประกาศเกี่ยวกับการคัดเลือกบุคลากรกทม. + ประกาศเกี่ยวกับการคัดเลือกบุคลากรของกทม.