いつも大変お世話になっております。 6月分1レコードとして、休日予定をテーブルでセットしたいと思ってます。 その際、希望動作として
1,最初の行に6/1の日付をセット。
2,ワンクリックでその月の1ヶ月分の行(日付自動挿入)を追加。
3,テーブルに設定してある「休日」のチェックボックスを任意でチェック。
4,「休日」にチェックが入った行数をカウントしてテーブル外のフィールドへ集計値挿入。 そんな高度なカスタマイズは可能でしょうか。
いつも大変お世話になっております。 6月分1レコードとして、休日予定をテーブルでセットしたいと思ってます。 その際、希望動作として
1,最初の行に6/1の日付をセット。
2,ワンクリックでその月の1ヶ月分の行(日付自動挿入)を追加。
3,テーブルに設定してある「休日」のチェックボックスを任意でチェック。
4,「休日」にチェックが入った行数をカウントしてテーブル外のフィールドへ集計値挿入。 そんな高度なカスタマイズは可能でしょうか。
ジェシーおいたん さん
こんにちは。ひよこです。これらのカスタマイズはできると思います!
複数のことを行うので、分解して説明しますね。
> 1,最初の行に6/1の日付をセット。
レコード追加画面の表示後イベントで、テーブルに対して初期値を設定します。
https://developer.cybozu.io/hc/ja/articles/202796890 が参考になりそうです。
> 2,ワンクリックでその月の1ヶ月分の行(日付自動挿入)を追加。
レコードに配置したスペースフィールドにボタンを追加します。
https://developer.cybozu.io/hc/ja/articles/201952870 の「ボタンの設置(2)」が参考になりそうです。
ボタンをクリックしたときの処理で、その月の1ヶ月分の行(その月の末日-1)を追加します。
JavaScript は日付処理が扱いづらいので、末日を取得するのは、Luxon や dayjs などのライブラリを利用すると良いと思います。
Luxon は、cybozu developer network に紹介記事があります。
// Luxon の場合
var endOfDay = luxon.DateTime.now().endOf('month').get('day'); // 6月なら、30 が返ってくる
// dayjs の場合
var endOfDay = dayjs().endOf('month').date(); // 6月なら、30 が返ってくる
行を追加する方法は、https://developer.cybozu.io/hc/ja/articles/360022502911 が参考になりそうです。
ただ、すでに日付が入った状態のときに「その月の1ヶ月分の行(日付自動挿入)を追加」するボタンをクリックした時にどうするか?など、考えるべきことは多そうです。
> 4,「休日」にチェックが入った行数をカウントしてテーブル外のフィールドへ集計値挿入。
計算式ではできなさそうなので、カスタマイズが必要そうですね。
ユーザーがレコードの内容を入力した後なので、レコード追加画面の保存実行前イベントやレコード編集画面の保存実行前イベントを利用すると良さそうです。
集計については以下の様にするとできると思います。
ありがとうございます。参考記事を元に色々試してみます。
> 1,最初の行に6/1の日付をセット。
> 2,ワンクリックでその月の1ヶ月分の行(日付自動挿入)を追加
サンプルコードは公開されていないのでしょうか
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。