Upload All
This commit is contained in:
42
models/renderModels/typescripts/feedback.ts
Normal file
42
models/renderModels/typescripts/feedback.ts
Normal file
@ -0,0 +1,42 @@
|
||||
|
||||
const User : any = require("../mongooseSchemas/User");
|
||||
|
||||
/**
|
||||
* 由DataRender所定義的基本差值物件。這裡僅列出必要的datas屬性與會用到的屬性。
|
||||
*/
|
||||
interface BasicLayout {datas: any, hasLogin: boolean, username: string}
|
||||
|
||||
/**
|
||||
* A Callback function.
|
||||
* @callback CallbackFunction
|
||||
* @param {Object} err 錯誤資訊物件。
|
||||
* @param {Object} obj 成功時所回傳的物件。
|
||||
*/
|
||||
interface CallbackFunction { (err: Object, obj: Object) : void }
|
||||
|
||||
/**
|
||||
* 頁面「意見回饋」的插值函式。
|
||||
* @param {BasicLayout} renderData 基本插值物件。
|
||||
* @param {CallbackFunction} callback 回呼函式。
|
||||
*/
|
||||
function FeedBackRender(renderData: BasicLayout, callback: CallbackFunction) : void
|
||||
{
|
||||
renderData.datas.currentDate = (new Date()).toLocaleDateString();
|
||||
// 如果使用者沒有登入,則設定hasPostFeedback為false,並呼叫回呼函式。
|
||||
if (!renderData.hasLogin) {
|
||||
renderData.datas.hasPostFeedback = false;
|
||||
callback(null, true);
|
||||
return;
|
||||
}
|
||||
// 如果使用者有登入,則尋找資料庫中指定的使用者資料的「hasPostFeedback」欄位。
|
||||
User.findOne({"username" : renderData.username}).select("hasPostFeedback").exec((err, property) => {
|
||||
if (err) {
|
||||
callback(err, null);
|
||||
return;
|
||||
}
|
||||
renderData.datas.hasPostFeedback = property;
|
||||
callback(null, true);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.Render = FeedBackRender;
|
94
models/renderModels/typescripts/gallery.ts
Normal file
94
models/renderModels/typescripts/gallery.ts
Normal file
@ -0,0 +1,94 @@
|
||||
|
||||
const PaintingSpotlight = require("../mongooseSchemas/PaintingSpotlight");
|
||||
const Season = require("../mongooseSchemas/Season");
|
||||
|
||||
/**
|
||||
* 由DataRender所定義的基本差值物件。這裡僅列出必要的datas屬性
|
||||
*/
|
||||
interface BasicLayout {datas: any}
|
||||
|
||||
/**
|
||||
* A Callback function.
|
||||
* @callback CallbackFunction
|
||||
* @param {Object} err 錯誤資訊物件。
|
||||
* @param {Object} obj 成功時所回傳的物件。
|
||||
*/
|
||||
interface CallbackFunction { (err: Object, obj: Object) : void }
|
||||
|
||||
/**
|
||||
* 繪圖展示上的簡短訊息。
|
||||
* @prop {string} links 此畫作的圖片連結。
|
||||
* @prop {string} name 此畫作的名稱。
|
||||
* @prop {string} description 此畫作的敘述。
|
||||
* @prop {string} artist 畫作的作者。
|
||||
*/
|
||||
interface PaintingInfo {
|
||||
links : string
|
||||
name : string,
|
||||
description : string,
|
||||
artist : string
|
||||
}
|
||||
|
||||
/**
|
||||
* 表示畫作的參賽相關訊息。
|
||||
* @prop {number} rank 此畫作的名次。
|
||||
* @prop {string} artist 畫作的作者。
|
||||
* @prop {string} paintingName 畫作的名稱。
|
||||
* @prop {Date} postTime 此畫作的參賽時間。
|
||||
*/
|
||||
interface ParticipantInfo {
|
||||
rank : number,
|
||||
artist : string,
|
||||
paintingName : string,
|
||||
postTime : Date
|
||||
}
|
||||
|
||||
/**
|
||||
* 有關主題的相關訊息。
|
||||
* @prop {number} order 主題與主題之間的識別號碼(用於版面先後排序用)。
|
||||
* @prop {string} title 主題的標題。
|
||||
* @prop {ParticipantInfo[]} participants 此主題的所有參賽畫作資訊。
|
||||
*/
|
||||
interface ThemeInfo {
|
||||
order : number,
|
||||
title : string,
|
||||
participants : ParticipantInfo[]
|
||||
}
|
||||
|
||||
/**
|
||||
* 有關一季活動之中的相關訊息。
|
||||
* @prop {number} nth 表示目前是第nth季
|
||||
* @prop {ThemeInfo[]} 儲存這一季之中所有的活動。
|
||||
*/
|
||||
interface SeasonInfo {
|
||||
nth : number,
|
||||
themes : ThemeInfo[]
|
||||
}
|
||||
|
||||
/**
|
||||
* 頁面「傑作藝廊」的插值函式。
|
||||
* @param {BasicLayout} renderData 基本插值物件。
|
||||
* @param {CallbackFunction} callback 回呼函式。傳回錯誤訊息或資料插值設定是否成功。
|
||||
*/
|
||||
function GalleryRender(renderData : BasicLayout, callback : CallbackFunction) : void {
|
||||
// 先取得傑作藝廊中的精選輯
|
||||
PaintingSpotlight.GetCarouselInfo("gallery", (err, carouselInfo) => {
|
||||
if (err || !carouselInfo) {
|
||||
callback(err, null);
|
||||
return;
|
||||
}
|
||||
renderData.datas.paintings = carouselInfo.paintings;
|
||||
// 再取得活動相關的訊息
|
||||
Season.GetGalleryNeedInfo((err, seasonsInfo) => {
|
||||
if (err){
|
||||
callback(err, null);
|
||||
}
|
||||
else {
|
||||
renderData.datas.seasons = seasonsInfo;
|
||||
callback(err, true);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.Render = GalleryRender;
|
50
models/renderModels/typescripts/index.ts
Normal file
50
models/renderModels/typescripts/index.ts
Normal file
@ -0,0 +1,50 @@
|
||||
let PaintingSpotlight = require("../mongooseSchemas/PaintingSpotlight");
|
||||
|
||||
/**
|
||||
* 由DataRender所定義的基本差值物件。這裡僅列出必要的datas屬性。
|
||||
*/
|
||||
interface BasicLayout {datas: any}
|
||||
|
||||
/**
|
||||
* A Callback function.
|
||||
* @callback CallbackFunction
|
||||
* @param {Object} err 錯誤資訊物件。
|
||||
* @param {Object} obj 成功時所回傳的物件。
|
||||
*/
|
||||
interface CallbackFunction { (err: Object, obj: Object) : void }
|
||||
|
||||
/**
|
||||
* Painting Information Interface
|
||||
*/
|
||||
interface PaintingInfo {
|
||||
links : string
|
||||
name : string,
|
||||
description : string,
|
||||
artist : string
|
||||
}
|
||||
|
||||
/**
|
||||
* Data layout of index.
|
||||
*/
|
||||
interface IndexLayout {
|
||||
paintings : PaintingInfo[]
|
||||
}
|
||||
|
||||
/**
|
||||
* 取得首頁的插值資料。
|
||||
* @param {BasicLayout} renderData 插值物件。
|
||||
* @param {CallbackFunction} callback 回呼函式。
|
||||
*/
|
||||
function IndexRender(renderData : BasicLayout, callback : CallbackFunction) : void {
|
||||
PaintingSpotlight.GetCarouselInfo("index", (err, infos) => {
|
||||
if (err) {
|
||||
callback(err, null);
|
||||
}
|
||||
else {
|
||||
renderData.datas = infos;
|
||||
callback(null, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.Render = IndexRender;
|
26
models/renderModels/typescripts/login.ts
Normal file
26
models/renderModels/typescripts/login.ts
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
/**
|
||||
* 由DataRender所定義的基本差值物件。這裡僅列出必要的datas屬性。
|
||||
*/
|
||||
interface BasicLayout {datas: any}
|
||||
|
||||
/**
|
||||
* A Callback function.
|
||||
* @callback CallbackFunction
|
||||
* @param {Object} err 錯誤資訊物件。
|
||||
* @param {Object} obj 成功時所回傳的物件。
|
||||
*/
|
||||
interface CallbackFunction { (err: Object, obj: Object) : void }
|
||||
|
||||
/**
|
||||
* 頁面「登入」的插值函式。
|
||||
* @param {BasicLayout} renderData 基本插值物件。
|
||||
* @param {CallbackFunction} callback 回呼函式。
|
||||
*/
|
||||
function LoginRender(renderData: BasicLayout, callback: CallbackFunction) : void
|
||||
{
|
||||
// 登入頁面目前不需要做任何插值
|
||||
callback(null, true);
|
||||
}
|
||||
|
||||
module.exports.Render = LoginRender;
|
26
models/renderModels/typescripts/signup.ts
Normal file
26
models/renderModels/typescripts/signup.ts
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
/**
|
||||
* 由DataRender所定義的基本差值物件。這裡僅列出必要的datas屬性。
|
||||
*/
|
||||
interface BasicLayout {datas: any}
|
||||
|
||||
/**
|
||||
* A Callback function.
|
||||
* @callback CallbackFunction
|
||||
* @param {Object} err 錯誤資訊物件。
|
||||
* @param {Object} obj 成功時所回傳的物件。
|
||||
*/
|
||||
interface CallbackFunction { (err: Object, obj: Object) : void }
|
||||
|
||||
/**
|
||||
* 頁面「註冊」的插值函式。
|
||||
* @param {BasicLayout} renderData 基本插值物件。
|
||||
* @param {CallbackFunction} callback 回呼函式。
|
||||
*/
|
||||
function SignUpRender(renderData: BasicLayout, callback: CallbackFunction) : void
|
||||
{
|
||||
// 登入頁面目前不需要做任何插值
|
||||
callback(null, true);
|
||||
}
|
||||
|
||||
module.exports.Render = SignUpRender;
|
70
models/renderModels/typescripts/theme.ts
Normal file
70
models/renderModels/typescripts/theme.ts
Normal file
@ -0,0 +1,70 @@
|
||||
|
||||
const Season : any = require("../mongooseSchemas/Season");
|
||||
|
||||
/**
|
||||
* 由DataRender所定義的基本差值物件。這裡僅列出必要的datas屬性
|
||||
*/
|
||||
interface BasicLayout {datas: any}
|
||||
|
||||
/**
|
||||
* A Callback function.
|
||||
* @callback CallbackFunction
|
||||
* @param {Object} err 錯誤資訊物件。
|
||||
* @param {Object} obj 成功時所回傳的物件。
|
||||
*/
|
||||
interface CallbackFunction { (err: Object, obj: Object) : void }
|
||||
|
||||
/**
|
||||
* 有關主題的相關訊息。
|
||||
* @prop {number} order 主題與主題之間的識別號碼(用於版面先後排序用)。
|
||||
* @prop {string} title 主題的標題。
|
||||
* @prop {string} narrative 主題的敘述。
|
||||
* @prop {string} imageURL 主題縮圖連結。
|
||||
* @prop {string} originator 主題發起人。
|
||||
* @prop {number} participantCount 投稿人數。
|
||||
* @prop {number} views 瀏覽此主題的人次數。
|
||||
* @prop {number} commentCount 主題中相關留言人數。
|
||||
*/
|
||||
interface ThemeInfo {
|
||||
order : number,
|
||||
title : string,
|
||||
narrative : string,
|
||||
imageURL : string,
|
||||
originator : string,
|
||||
participantCount : number,
|
||||
views : number,
|
||||
commentCount : number
|
||||
}
|
||||
|
||||
/**
|
||||
* 有關一季活動之中的相關訊息。
|
||||
* @prop {number} nth 表示目前是第nth季
|
||||
* @prop {Date} endTime 表示該季的結束時間。在資料取得中只有上一季有這個欄位
|
||||
* @prop {ThemeInfo[]} 儲存這一季之中所有的活動。
|
||||
*/
|
||||
interface SeasonInfo {
|
||||
nth : number,
|
||||
endTime : Date,
|
||||
themes : ThemeInfo[]
|
||||
}
|
||||
|
||||
/**
|
||||
* 頁面「畫作主題」的插值函式。
|
||||
* @param renderData 基本插值物件。
|
||||
* @param callback 回呼函式。
|
||||
*/
|
||||
function ThemeRender(renderData: BasicLayout, callback: CallbackFunction) : void
|
||||
{
|
||||
// 先取得「畫作主題」頁面所需要的季資訊
|
||||
// 若出現錯誤,則回呼錯誤訊息;若取得成功,則回呼true已表示成功。
|
||||
Season.GetThemePageNeedInfo((err, seasonDatas) => {
|
||||
if (err) {
|
||||
callback(err, null);
|
||||
return;
|
||||
}
|
||||
renderData.datas = seasonDatas;
|
||||
callback(null, true);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.Render = ThemeRender;
|
Reference in New Issue
Block a user