From d101d817634629ccbadba3bab4ac9475aaf2946f Mon Sep 17 00:00:00 2001
From: schooltechx
Date: Sat, 8 Apr 2023 16:15:15 +0700
Subject: [PATCH] Optimize code, rebase api path, fix typo
---
cms/src/lib/data/CMSDataType.ts | 1 +
cms/src/lib/data/competitive-exam.json | 5 ++
cms/src/lib/data/qualify-exam.json | 19 ++++---
cms/src/routes/+layout.server.ts | 4 +-
cms/src/routes/+page.server.ts | 50 ++++++++--------
cms/src/routes/about/+page.server.ts | 10 +++-
cms/src/routes/competitive/+page.server.ts | 57 +++++++++++--------
cms/src/routes/competitive/+page.svelte | 3 +-
.../routes/competitive/[id]/+page.server.ts | 3 +-
cms/src/routes/qualifying/+page.server.ts | 42 ++++++--------
cms/src/routes/qualifying/+page.svelte | 11 ++--
.../routes/qualifying/[id]/+page.server.ts | 4 +-
cms/src/routes/qualifying/[id]/+page.svelte | 2 +-
13 files changed, 111 insertions(+), 100 deletions(-)
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 @@
- ประกาศเกี่ยวกับการคัดเลือกบุคลากรกทม.
+ ประกาศเกี่ยวกับการคัดเลือกบุคลากรของกทม.