Add fallback to offline data in case API not ready

This commit is contained in:
schooltechx 2023-04-10 16:06:38 +07:00
parent ea07766fd8
commit 1624d9eb7f
5 changed files with 28 additions and 14 deletions

View file

@ -26,3 +26,4 @@
งานด้านสารบรรณ ธุรการทั่วไป การจัดประชุม ควบคุมดูแลสถานที่และยานพาหนะ การเงิน บัญชี งบประมาณบัญชี งบประมาณบัญชีและพัสดุ
จัดทำรายงาน และประเมินผลแผนปฎิบัติราชการประจำปี
</p>
<p>Offline mode</p>

View file

@ -1 +1 @@
การสรรหาและเลือกสรรบุคคลเข้ารับราชการเป็นข้าราชการกรุงเทพมหานครสามัญ และข้าราชการครูกรุงเทพมหานครเฉพาะสังกัดสำนักพัฒนาชุมชน..
การสรรหาและเลือกสรรบุคคลเข้ารับราชการเป็นข้าราชการกรุงเทพมหานครสามัญ และข้าราชการครูกรุงเทพมหานครเฉพาะสังกัดสำนักพัฒนาชุมชน.. (offline data)

View file

@ -3,7 +3,7 @@
"title": "กองสรรหาบุคคล",
"subtitle": "Recruitment Division",
"supervised":"สำนักงาน ก.ก.",
"address": "173 ถนนดินสอ แขวงเสาชิงช้า เขตพระนคร กรุงเทพมหานคร 10200",
"address": "173 ถนนดินสอ แขวงเสาชิงช้า เขตพระนคร กรุงเทพมหานคร 10200 (offline mode)",
"divisions": [
{
"title":"กองสรรหาบุคคล",

View file

@ -1,11 +1,11 @@
import {cmsBase} from '$lib/data/CMSDataType'
import { error } from '@sveltejs/kit';
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({fetch}) => {
const res = await fetch(cmsBase+"/home")
if(!res.ok)
throw error(500, 'ไม่สามารถอ่านข้อมูลตั้งต้นของเวปได้');
const info = await res.json()
return info
{
console.log("load offline data instead")
return (await import('$lib/data/info.json')).default
}
return await res.json()
}

View file

@ -4,20 +4,33 @@ import type { PageServerLoad } from './$types';
import type {Exam} from '$lib/data/CMSDataType'
import dayjs from 'dayjs'
export const load: PageServerLoad = async ({fetch}) => {
let res = await fetch("/api/info")
let res = await fetch(cmsBase+"/home")
let info
if(!res.ok)
throw error(500, 'ไม่สามารถอ่านข้อมูลตั้งต้นของหน้าหลักได้');
const {title,subtitle} = await res.json()
{
console.log("load offline CMS data instead")
info = (await import('$lib/data/info.json')).default
}else{
info = await res.json()
}
const {title,subtitle} = info
res = await fetch(cmsBase+"/content/home")
if(!res.ok)
throw error(500, 'ไม่สามารถอ่านเนื้อหาหน้าหลักได้');
const {content,image} = await res.json()
if(!res.ok){
console.log("load offline home content instead")
const content = (await import('$lib/data/content/home.html?raw')).default
info = {content,image:"/images/pattern.png"}
}else{
info = await res.json()
}
//throw error(500, 'ไม่สามารถอ่านเนื้อหาหน้าหลักได้');
const {content,image} = info
//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)
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"):""