独自に時刻の差を算出するサンプルをご紹介します。
サンプルについて
本サンプルのソースコードについてや、カスタマイズ方法等の技術的なお問合せは承っておりません。
動作イメージ
利用するイベント
サンプルフォーム
サンプルで利用するフォームには、以下のパーツを配置しています。
パーツID | パーツタイプ | 補足 |
---|---|---|
fidTime1 | 時刻パーツ | 時刻1 |
fidTime2 | 時刻パーツ | 時刻2 |
fidTimeDiff | 時刻パーツ | 時刻の差。経路で編集不可に設定 |
カスタマイズコード
(function () {
'use strict';
collaboflow.events.on(['request.input.fidTime1.change', 'request.input.fidTime2.change'], function (e) {
const parts = e.parts;
const resultParts = parts['fidTimeDiff'];
// 時刻1、時刻2それぞれの値を取得します。
const time1text = parts['fidTime1'].value;
const time2text = parts['fidTime2'].value;
// 入力値が不足している状態では差となる時間数をクリアします。
if(time1text.length < 3 || time2text.length < 3){
resultParts.value = '00:00';
return;
}
// 時刻パーツの値は "12:34" 形式の文字列です。":"で分割して時間と分を取得します。
const time1 = time1text.split(':');
const time2 = time2text.split(':');
// Dateオブジェクトを生成して、差となる時間を計算します。
const time1Date = new Date(0, 0, 0, time1[0], time1[1], 0);
const time2Date = new Date(0, 0, 0, time2[0], time2[1], 0);
// 時刻の差を秒数で求めます。
let diffSeconds = (time1Date - time2Date) / 1000;
// 秒数がマイナスだった場合は符号を反転します。
if(diffSeconds < 0){
diffSeconds = -diffSeconds;
}
// 時間数と分数をそれぞれ求めます。
const hour = Math.floor(diffSeconds / 3600);
const minute = Math.floor(diffSeconds % 3600 / 60);
// 結果を代入します。
resultParts.value = hour + ":" + minute;
});
})();
動作の確認手順
- サンプルのカスタマイズコードをjsファイルに保存します。
- アプリ設定>フォーム設定から新規に通常フォームを作成します。
- サンプルフォームに、先で記載されている必要な項目を配置します。
- サンプルフォームを再度表示し、カスタマイズタブを表示します。
- 保存したファイルをアップロードします。
- アプリ設定>経路設定から新規に経路を作成します。
- 申請時の設定で、時刻の差の編集を不可にします。
- 新規文書から、作成した経路名をクリックします。
- 時刻1と時刻2に任意に時刻を入力します。
- 時刻の差が算出されます。
コメント
0件のコメント
記事コメントは受け付けていません。