Optimize code, rebase api path, fix typo

This commit is contained in:
schooltechx 2023-04-08 16:15:15 +07:00
parent 16917a088f
commit d101d81763
13 changed files with 111 additions and 100 deletions

View file

@ -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, 'ไม่สามารถอ่านข้อมูลตั้งต้นของเวปได้');

View file

@ -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 };
};

View file

@ -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;

View file

@ -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}
}
return {exams,events}
}

View file

@ -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
</script>
<section>
<div class="p-one parallax-inner">

View file

@ -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}ไม่พบ`})
}

View file

@ -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}
}

View file

@ -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
</script>
<section>
@ -63,9 +62,13 @@
<tbody>
{#each exams as exam}
<tr>
<th class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-nowrap p-4 text-left"><a href={"/qualifying/"+exam.id}>{exam.date}</a></th>
<th class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-nowrap p-4 text-left">
<a href={"/qualifying/"+exam.id}>
{exam.date??""}
</a>
</th>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-nowrap p-4 text-left"><a href={"/qualifying/"+exam.id}>{exam.title}</a></td>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-nowrap p-4 text-left">{exam.category}</td>
<td class="border-t-0 px-6 align-middle border-l-0 border-r-0 text-xs whitespace-nowrap p-4 text-left">{exam.category??""}</td>
{/each}
</tbody>
</table>

View file

@ -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}ไม่พบ`})
}

View file

@ -18,7 +18,7 @@
</a>
</li>
<li>
<span class="breadTaxt">ประกาศเกี่ยวกับการคัดเลือกบุคลากรกทม.</span>
<span class="breadTaxt">ประกาศเกี่ยวกับการคัดเลือกบุคลากรของกทม.</span>
</li>
</ul>
</div>