勤怠システムの構築 その2

RaspberryPi
Makoto
Makoto

むーーー

しろまる
しろまる

どうしたにゃ?

Makoto
Makoto

前回自動勤怠システム教えてもらったんだけど

毎回ファイルを見に行って開けるのがめんどくさいのーーー

しろまる
しろまる

ものぐさだにゃー

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
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
Makoto

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

ジェームズ
ジェームズ

続いてCSSも書いていきます

Makoto
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
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

できたぁーーー!

しろまる
しろまる

お疲れにゃー

ジェームズ
ジェームズ

お疲れ様です

Makoto
Makoto

わーい!

これでいつでも勤怠が見れるーー!

Gitのアドレスも乗っけとくね!

https://github.com/Makoto603/AttendanceManagement/

 

コメント

Ads Blocker Image Powered by Code Help Pro

広告ブロックを検知しました!

広告ブロック解除をお願い致します!

このサイトは広告収入だけで成り立っているため

ご協力をお願い致します!

タイトルとURLをコピーしました