40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
|
const { Isotope, ChatMessage } = require('../models');
|
||
|
|
||
|
// 日時フォーマット関数
|
||
|
function formatTimestamp(dateString) {
|
||
|
const date = new Date(dateString);
|
||
|
const now = new Date();
|
||
|
|
||
|
// 当日の場合は時刻のみ表示
|
||
|
if (date.toDateString() === now.toDateString()) {
|
||
|
return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
||
|
} else {
|
||
|
return date.toLocaleDateString() + ' ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ダッシュボードを表示
|
||
|
exports.showDashboard = async (req, res) => {
|
||
|
try {
|
||
|
const isotope = await Isotope.findOne({ where: { user_id: req.user.userId } });
|
||
|
const token = req.token;
|
||
|
|
||
|
// 同位体が存在しない場合は同位体作成ページにリダイレクト
|
||
|
if (!isotope) {
|
||
|
return res.redirect('/isotope');
|
||
|
}
|
||
|
|
||
|
// 同位体が存在する場合はチャットメッセージを取得
|
||
|
const messages = await ChatMessage.findAll({
|
||
|
where: { user_id: req.user.userId, isotope_id: isotope.id },
|
||
|
order: [['created_at', 'ASC']]
|
||
|
});
|
||
|
|
||
|
// ダッシュボードにチャットを表示
|
||
|
res.render('dashboard', { isotope, messages, token, formatTimestamp, hideSidebar: false });
|
||
|
} catch (error) {
|
||
|
console.error('ダッシュボードの表示中にエラーが発生しました:', error);
|
||
|
res.status(500).json({ error: 'ダッシュボードの表示に失敗しました' });
|
||
|
}
|
||
|
};
|