diff --git a/cms/.dockerignore b/cms/.dockerignore
index 7614cf2..671850c 100644
--- a/cms/.dockerignore
+++ b/cms/.dockerignore
@@ -8,6 +8,7 @@ node_modules
.eslintrc.cjs
.prettierrc
.pretieriignore
+.env
README.md
Dockerfile
docker-compose.yaml
diff --git a/cms/docker-compose.yaml b/cms/docker-compose.yaml
index a6e53cd..30ba713 100644
--- a/cms/docker-compose.yaml
+++ b/cms/docker-compose.yaml
@@ -7,6 +7,9 @@ services:
# - "4025:80"
environment:
TZ: Asia/Bangkok
+ API_CMS_URL: "https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
+ API_QUALIFYING_URL: "https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
+ API_COMPETITIVE_URL: "/api"
labels:
- traefik.enable=true
- traefik.http.routers.bma-ehr-qualifying-exam-cms.rule=Host(`bma-qualifying.frappet.synology.me`)
diff --git a/cms/src/lib/data/CMSDataType.ts b/cms/src/lib/data/CMSDataType.ts
index 41155f4..b53e375 100644
--- a/cms/src/lib/data/CMSDataType.ts
+++ b/cms/src/lib/data/CMSDataType.ts
@@ -29,7 +29,4 @@ export interface CMSInfo{
address:string;
divisions:{title:string,url:string}[];
institutes:{title:string,url:string}[];
-}
-export const cmsBase="https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
-export const competitiveBase="/api"
-export const qualifyingBase="https://bma-ehr-exam.frappet.synology.me/api/v1/cms"
+}
\ No newline at end of file
diff --git a/cms/src/routes/+error.svelte b/cms/src/routes/+error.svelte
index 383c4af..a3c65c1 100644
--- a/cms/src/routes/+error.svelte
+++ b/cms/src/routes/+error.svelte
@@ -3,5 +3,5 @@
-
{$page.error?.message}
+ {$page.status} {$page.error?.message}
diff --git a/cms/src/routes/+layout.server.ts b/cms/src/routes/+layout.server.ts
index 0c24f42..8d56a78 100644
--- a/cms/src/routes/+layout.server.ts
+++ b/cms/src/routes/+layout.server.ts
@@ -1,7 +1,7 @@
-import {cmsBase} from '$lib/data/CMSDataType'
+import { env } from '$env/dynamic/private'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({fetch}) => {
- const res = await fetch(cmsBase+"/home")
+ const res = await fetch(env.API_CMS_URL+"/home")
if(!res.ok)
{
console.log("load offline data instead")
diff --git a/cms/src/routes/+page.server.ts b/cms/src/routes/+page.server.ts
index 5dc75b9..de25030 100644
--- a/cms/src/routes/+page.server.ts
+++ b/cms/src/routes/+page.server.ts
@@ -1,23 +1,23 @@
-import {cmsBase,qualifyingBase,competitiveBase} from '$lib/data/CMSDataType'
+import { env } from '$env/dynamic/private'
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 res = await fetch(cmsBase+"/home")
+ let res = await fetch(env.API_CMS_URL+"/home")
let info
if(!res.ok)
{
- console.log("load offline CMS data instead")
+ console.log(res.status,"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")
+ res = await fetch(env.API_CMS_URL+"/content/home")
if(!res.ok){
- console.log("load offline home content instead")
+ console.log(res.status,"load offline home content instead")
const content = (await import('$lib/data/content/home.html?raw')).default
info = {content,image:"/images/pattern.png"}
}else{
@@ -29,7 +29,8 @@ export const load: PageServerLoad = async ({fetch}) => {
async function loadExam(api_path:string,err_msg:string){
const res = await fetch(api_path)
if(!res.ok){
- throw error(500, err_msg);
+ console.log(res.status,err_msg,res.statusText)
+ throw error(res.status, err_msg);
}
const exams:Exam[] = await res.json()
exams.forEach((e)=>{
@@ -42,8 +43,8 @@ export const load: PageServerLoad = async ({fetch}) => {
}
return exams
}
- const qualify_exams = loadExam(qualifyingBase+"/qualifying?limit=3",'ไม่สามารถอ่านรายการสอบคัดเลือกได้')
- const competitive_exams = loadExam(competitiveBase+"/competitive?limit=3",'ไม่สามารถอ่านรายการสอบแข่งขันได้')
+ const qualify_exams = loadExam(env.API_QUALIFYING_URL +"/qualifying?limit=3",'ไม่สามารถอ่านรายการสอบคัดเลือกได้')
+ const competitive_exams = loadExam(env.API_COMPETITIVE_URL+"/competitive?limit=3",'ไม่สามารถอ่านรายการสอบแข่งขันได้')
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 d63be43..2850757 100644
--- a/cms/src/routes/about/+page.server.ts
+++ b/cms/src/routes/about/+page.server.ts
@@ -1,8 +1,8 @@
-import {cmsBase} from '$lib/data/CMSDataType'
+import { env } from '$env/dynamic/private'
import type { PageServerLoad } from './$types';
import { error } from '@sveltejs/kit';
export const load = (async ({fetch}) => {
- const res = await fetch(cmsBase+"/content/about")
+ const res = await fetch(env.API_CMS_URL+"/content/about")
if(!res.ok)
throw error(500, 'ไม่สามารถอ่านเนื้อหาหน้าเกี่ยวกับได้');
const {content} = await res.json()
diff --git a/cms/src/routes/api/content/[page]/+server.ts b/cms/src/routes/api/content/[page]/+server.ts
new file mode 100644
index 0000000..b7f6864
--- /dev/null
+++ b/cms/src/routes/api/content/[page]/+server.ts
@@ -0,0 +1,23 @@
+import type { RequestEvent, RequestHandler } from './$types'
+import {json} from '@sveltejs/kit'
+export const GET: RequestHandler = async ({params}: RequestEvent) => {
+ let content = ""
+ let image
+ const page:string = params.page
+ switch (page) {
+ case "home":
+ content = (await import('$lib/data/content/home.html?raw')).default
+ image = "/images/pattern.png"
+ break;
+ case "qualifying":
+ content = (await import('$lib/data/content/qualifying.html?raw')).default
+ break;
+ case "competitive":
+ content = (await import('$lib/data/content/competitive.html?raw')).default
+ break;
+ case "about":
+ content = (await import('$lib/data/content/about.html?raw')).default
+ break;
+ }
+ return json({content,image})
+}
diff --git a/cms/src/routes/api/info/+server.ts b/cms/src/routes/api/home/+server.ts
similarity index 100%
rename from cms/src/routes/api/info/+server.ts
rename to cms/src/routes/api/home/+server.ts
diff --git a/cms/src/routes/competitive/+page.server.ts b/cms/src/routes/competitive/+page.server.ts
index 057c8fe..407c1bb 100644
--- a/cms/src/routes/competitive/+page.server.ts
+++ b/cms/src/routes/competitive/+page.server.ts
@@ -1,11 +1,11 @@
-import {competitiveBase} from '$lib/data/CMSDataType'
+import { env } from '$env/dynamic/private'
import { error } from '@sveltejs/kit';
import type {CalendarEvent,Exam} from '$lib/data/CMSDataType'
import {getBgColorDict} from '$lib/utils'
import dayjs from 'dayjs'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({fetch}) => {
- const res = await fetch(competitiveBase+"/competitive")
+ const res = await fetch(env.API_COMPETITIVE_URL+"/competitive")
if(!res.ok)
throw error(res.status, 'ไม่สามารถอ่านข้อมูลการสอบได้');
diff --git a/cms/src/routes/competitive/[id]/+page.server.ts b/cms/src/routes/competitive/[id]/+page.server.ts
index 8d4d313..2c7d0e7 100644
--- a/cms/src/routes/competitive/[id]/+page.server.ts
+++ b/cms/src/routes/competitive/[id]/+page.server.ts
@@ -1,11 +1,11 @@
-import {competitiveBase} from '$lib/data/CMSDataType'
+import { env } from '$env/dynamic/private'
import type {Exam} 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(competitiveBase+"/competitive/"+id)
+ const res = await fetch(env.API_COMPETITIVE_URL+"/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 b4db73c..3f6ebf9 100644
--- a/cms/src/routes/qualifying/+page.server.ts
+++ b/cms/src/routes/qualifying/+page.server.ts
@@ -1,11 +1,11 @@
-import {qualifyingBase} from '$lib/data/CMSDataType'
+import { env } from '$env/dynamic/private'
import { error } from '@sveltejs/kit';
import type {CalendarEvent,Exam} from '$lib/data/CMSDataType'
import {getBgColorDict} from '$lib/utils'
import dayjs from 'dayjs'
import type { PageServerLoad } from './$types'
export const load: PageServerLoad = async ({fetch}) => {
- const res = await fetch(qualifyingBase+"/qualifying")
+ const res = await fetch(env.API_QUALIFYING_URL+"/qualifying")
if(!res.ok)
throw error(res.status, 'ไม่สามารถอ่านข้อมูลการสอบได้');
const exams:Exam[] = await res.json()
@@ -21,8 +21,7 @@ export const load: PageServerLoad = async ({fetch}) => {
const url = "/qualifying/"+id
if(start){
ex.date = dayjs(start).format("DD MMM BBBB")
- console.log({id,title,start,end,url,backgroundColor})
- events.push({id,title,start,url,backgroundColor})
+ events.push({id,title,start,end,url,backgroundColor})
}
if(ex.exam_date){
events.push({id,"title":"วันสอบคัดเลือก","start":ex.exam_date,url,backgroundColor})
diff --git a/cms/src/routes/qualifying/[id]/+page.server.ts b/cms/src/routes/qualifying/[id]/+page.server.ts
index 785672e..b336e64 100644
--- a/cms/src/routes/qualifying/[id]/+page.server.ts
+++ b/cms/src/routes/qualifying/[id]/+page.server.ts
@@ -1,11 +1,11 @@
-import {qualifyingBase} from '$lib/data/CMSDataType'
+import { env } from '$env/dynamic/private'
import type {Exam} 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(qualifyingBase+"/qualifying/"+id)
+ const res = await fetch(env.API_QUALIFYING_URL+"/qualifying/"+id)
if(res.status==404){
throw error(404,{message:`ค้นหาข้อมูลสอบคัดเลือก ${id}ไม่พบ`})
}