Upload All

This commit is contained in:
Alan
2018-02-26 14:09:18 +08:00
parent 42d3a3fc46
commit 46257f08b0
1024 changed files with 204324 additions and 0 deletions

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

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

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

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

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

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