お世話になっております。
カレンダー形式のアプリを作成し、
宅配カレンダーとして宅配の空き枠を表示させたいのですが、
カスタマイズ一覧を作らなくても作成できる方法はありますでしょうか。
下記の通りコーディングしてみたのですが、
一日最大3件までしか表示されないという考慮を忘れており、
最大3件を超えたレコードは「その他XX件」と表示されるため
その他の件数を空き枠の計算に含めることができません。
①日付のヘッダーを取得し、メッセージ表示用の要素を追加する
②登録しているレコードのタイトルに午前午後が表示されるため、
表示している午前午後を取得し、
宅配可能枠を最大3件として、登録されたレコードを引き算する
③結果を午前午後の可能枠とし、表示する
⇒表示されているレコードしか計算されない、
一日表示件数3件を超えた場合のレコードは計算されない。
(function () {
"use strict";
// カレンダービュー
kintone.events.on('app.record.index.show', function (event) {
// カレンダービューの表示時にフィールド値の条件に応じて、文字色、フィールドの背景色を変更する
var eles = document.getElementsByClassName("cellitem-value-gaia");
for (var i = 0, il = eles.length; i < il; i++) {
var ele = eles[i];
// eleに「〇〇」が含まれていたら、文字色を変更
if (ele.textContent.indexOf("XXX") >= 0) {
ele.style.backgroundColor = '#FFCC66';
ele.style.color = 'black';
} else if (ele.textContent.indexOf("YYY") >= 0) {
ele.style.backgroundColor = '#FF99FF';
ele.style.color = 'black';
} else if (ele.textContent.indexOf("ZZZ") >= 0) {
ele.style.backgroundColor = '#CC99FF';
ele.style.color = 'black';
//宅配NG 灰色 #808080
} else if (ele.textContent.indexOf("宅配NG") >= 0) {
var ngday = ele.parentElement.parentElement.parentElement.parentElement.parentElement;
ngday.style.backgroundColor = '#808080';
ele.style.color = 'red';
ele.style.fontWeight = 'bold';
}
}
//日付横に可能枠の表示
//ヘッダー
var headEles = document.getElementsByClassName("calendar-cell-header-gaia");
// 右上のプラスマーク
var plusEles = document.getElementsByClassName("calendar-cell-header-date-gaia");
var lists = document.getElementsByClassName("calendar-cell-body-list-gaia");
for (var j = 0, jl = headEles.length; j < jl; j++) {
var headEle = headEles[j];
var plusEle = plusEles[j];
var amNum = 0;
var pmNum = 0;
// 各日の登録数を取得
var list = lists[j];
for (var k = 0, kl = list.children.length; k < kl; k++) {
var listlen = list.children[k].innerText;
if (listlen.indexOf('午前') != -1) {
amNum++;
} else if (listlen.indexOf('午後') != -1) {
pmNum++;
}
}
// 各日の可能枠
var am = 3 - amNum;
var pm = 3 - pmNum;
// 各日の可能枠メッセージ
var textAM = " AM:" + am;
var textPM = " PM:" + pm;
var textTXT = " 可能枠";
//宅配NGは可能枠表示しない
if (list.textContent.indexOf("宅配NG") >= 0) {
textAM = "";
textPM = "";
textTXT = "";
}
// 追加する要素を作成します
//固定メッセージ
var newtxtElement = document.createElement("span");
var newtxtContent = document.createTextNode(textTXT);
newtxtElement.appendChild(newtxtContent);
newtxtElement.setAttribute("id", "textSpan");
//AM可能枠メッセージ
var newamElement = document.createElement("span");
var newamContent = document.createTextNode(textAM);
newamElement.appendChild(newamContent);
newamElement.setAttribute("id", "amSpan");
//PM可能枠メッセージ
var newpmElement = document.createElement("span");
var newpmContent = document.createTextNode(textPM);
newpmElement.appendChild(newpmContent);
newpmElement.setAttribute("id", "pmSpan");
// 右上プラスマークの前隣に午後を追加
headEle.insertBefore(newpmElement, plusEle.nextSibling);
// 右上プラスマークの前隣に午前を追加
headEle.insertBefore(newamElement, plusEle.nextSibling);
// 右上プラスマークの前隣に固定メッセージを追加
headEle.insertBefore(newtxtElement, plusEle.nextSibling);
}
});
})();
ご教授いただければ幸いです。
以上、よろしくお願いします。