
Makoto
むーーー

しろまる
どうしたにゃ?

Makoto
前回自動勤怠システム教えてもらったんだけど
毎回ファイルを見に行って開けるのがめんどくさいのーーー

しろまる
ものぐさだにゃー

Makoto
仕方ないじゃん面倒なんだもん!

ジェームズ
それではブラウザで見れるようにしましょうか

Makoto
そんなことできるんだ!

ジェームズ
まずは前提条件とファイル構成を。。。。
■前提条件
・Apacche2
※Linuxでしたら下記を実行してください
apt-get install apache2
■最終的なファイル構成
/var
└ /www
└ /html
├ index.html
├ Kyukei.html
├ /js
│└ Script.js
└ /csv
├ /Kintai
│ ├ Kintai202205.csv
│ ├ Kintai202206.csv
│ └ …
└ /Kyukei
├ Kyukei202205.csv
├ Kyukei202206.csv
└ …

Makoto
ふむふむ

ジェームズ
html中身はこのように書いていきます
Kyukei.htmlの中身はほぼ同じですので
詳しくはGitHubを見てください。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>勤怠管理</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
</head>
<body>
<h1><center>勤怠一覧</center></h1>
<a href="Kyukei.html"><center>休憩</center></a>
<div class="dtable">
<div class="dtable_c">
<table id="A">
<tr>
<td class = "topmenu">
内容
</td>
<td class = "topmenu">
日時
</td>
</tr>
</table>
</div>
<div class="dtable_c">
<table id="B">
<tr>
<td class = "topmenu">
内容
</td>
<td class = "topmenu">
日時
</td>
</tr>
</table>
</div>
<div class="dtable_c">
<table id="C">
<tr>
<td class = "topmenu">
内容
</td>
<td class = "topmenu">
日時
</td>
</tr>
</table>
</div>
</div>
<script src="./js/Script.js"></script>
<script>
import_csv('./csv/Kintai/Kintai' + date2 + '.csv', 'A')
import_csv('./csv/Kintai/Kintai' + date3 + '.csv', 'B')
import_csv('./csv/Kintai/Kintai' + date4 + '.csv', 'C')
</script>
</body>
</html>

Makoto
あとでリンク貼っとくね!

ジェームズ
続いてCSSも書いていきます

Makoto
見やすいのでお願い!

ジェームズ
努力します。。。
td {
padding: 3px 10px;
border: 1px solid #333;
font-weight:bold;
color: #3f3f3f;
}
table td {
background: #ffffe0;
}
table tr:nth-child(odd) td {
background: #ffffff;
}
.dtable{
display: table;
table-layout:fixed; /* ブロックレベル要素を均等に配置 */
margin:0 auto;
}
.dtable_c{
display: table-cell;
border: 0px solid #666;
}
.topmenu{
text-align:center;
background-color:#9370db !important;
font-weight:bold;
color: #EfEfEf;
}

ジェームズ
では今回のキモのJava Scriptを書いていきましょうか

Makoto
わーい

ジェームズ
html内でファイルを指定して呼び出せるような関数にしましょう
//日付の取得
const date1 = new Date();
const date2 = date1.getFullYear() + ("00" + (date1.getMonth() - 1)).slice(-2);
const date3 = date1.getFullYear() + ("00" + date1.getMonth()).slice(-2);
const date4 = date1.getFullYear() + ("00" + (date1.getMonth() + 1)).slice(-2);
// CSVの読み込み
function import_csv(csv_path,element_name)
{
var output_csv_el = document.getElementById(element_name);
fetch(csv_path)
.then((res) => {
if(!res.ok) {
console.log('正常にリクエストを処理できませんでした。');
}
return res.text();
})
.then((csv_data) => {
convert_array(csv_data,output_csv_el);
})
.catch((error) => {
console.log('エラーが発生しました。');
})
}
// テキストデータを配列に変換
function convert_array(csv_data,output_csv_el)
{
let data_array = [];
const data_string = csv_data.split('\n');
for (let i = 0; i < data_string.length; i++) {
data_array[i] = data_string[i].split(',');
}
draw_table(data_array,output_csv_el);
}
// テーブル描画
function draw_table(data_array,output_csv_el)
{
data_array.forEach(elements => {
const tr = document.createElement('tr');
output_csv_el.appendChild(tr);
elements.forEach(element => {
let td = document.createElement('td');
td.innerText = element
tr.appendChild(td);
});
});
}

Makoto
できたぁーーー!

しろまる
お疲れにゃー

ジェームズ
お疲れ様です

Makoto
コメント