ラジオボタンで別フィールドの文字色と背景色を変更する(複数対応)
やりたいこと
一覧表とレコード詳細画面で、ラジオボタンの値に応じて複数フィールドの文字色と背景色を変更したい。
今回は、事例としてタスク管理アプリのステータス(ラジオボタン)の値が「未着手」「作業中」「完了」の3種類で、ステータス(ラジオボタン)の値によって複数フィールドの文字色と背景色を変更してみます。
デモ画面
デモ画面では、ステータス(ラジオボタン)の値で、日付、数値、文字列の3つのフィールドの文字色と背景色が変更されています。
複数フィールドの文字色・背景色変更のJavascriptコード
/* ラジオボタンの値で複数フィールドの色変更 */
(() => {
'use strict';
// 初期設定
const STATUS_FIELD_CODE = 'RADIO_BUTTON';
const RELATED_FIELD_CODES = [STATUS_FIELD_CODE ,'FIELD_CODE_1', 'FIELD_CODE_2', 'FIELD_CODE_3'];
// ステータス値:文字色と背景色のマッピング
const STATUS_STYLES = {
'未着手': { color: 'red', backgroundColor: 'yellow' },
'作業中': { color: 'black', backgroundColor: 'orange' },
'完了': { color: 'black', backgroundColor: 'lightblue' }
};
// フィールドのスタイルを変更する共通関数
const changeFieldStyle = (fieldElement, statusValue) => {
const style = STATUS_STYLES[statusValue];
if (style) {
fieldElement.style.color = style.color;
fieldElement.style.backgroundColor = style.backgroundColor;
}
};
// レコード詳細画面での処理
const handleDetailPage = (event) => {
const statusValue = event.record[STATUS_FIELD_CODE].value;
RELATED_FIELD_CODES.forEach((fieldCode) => {
const fieldElement = kintone.app.record.getFieldElement(fieldCode);
if (fieldElement) {
changeFieldStyle(fieldElement, statusValue);
}
});
};
// レコード一覧画面での処理
const handleIndexPage = (event) => {
event.records.forEach((record, index) => {
const statusValue = record[STATUS_FIELD_CODE].value;
RELATED_FIELD_CODES.forEach((fieldCode) => {
const fieldElements = kintone.app.getFieldElements(fieldCode);
if (fieldElements && fieldElements[index]) {
changeFieldStyle(fieldElements[index], statusValue);
}
});
});
};
// イベントリスナーの宣言
kintone.events.on('app.record.detail.show', handleDetailPage);
kintone.events.on('app.record.index.show', handleIndexPage);
})();
初期設定の部分でラジオボタンのフィールドコード(STATUS_FIELD_CODE)設定と、ラジオボタンの値変更で色を変えたいフィールドコード(RELATED_FIELD_CODES)を複数指定できます。
ラジオボタンのステータス値と対応する文字色と背景色の指定を、ステータス値:文字色と背景色のマッピングの連想配列で指定します。
// 初期設定
const STATUS_FIELD_CODE = 'RADIO_BUTTON';
const RELATED_FIELD_CODES = [STATUS_FIELD_CODE ,'FIELD_CODE_1', 'FIELD_CODE_2', 'FIELD_CODE_3'];
// ステータス値:文字色と背景色のマッピング
const STATUS_STYLES = {
'未着手': { color: 'red', backgroundColor: 'yellow' },
'作業中': { color: 'black', backgroundColor: 'orange' },
'完了': { color: 'black', backgroundColor: 'lightblue' }
};
色指定は、16進数のカラーコードでも指定できます。
カラーコードは以下のリンクを参照して下さい。
kintoneのフィールドの要素情報の変更は、レコード一覧、レコード一詳細、レコード印刷画面だけで利用できます。
(新規登録、編集画面では、フィールド色の変更は反映されません)
ラジオボタン値でフィールド属性を操作する方法は、以下の記事も参考にしてください。ドロップダウンリストでも同じように動作します。
今回のカスタマイズは、以前公開した以下の記事のリメイク版です。
前回の記事との違いは、複数フィールドの文字色と背景色が操作できるようになったことです。
ラジオボタンで単体フィールドの文字色・背景色を変更するだけなら、以下の記事の内容の方が設定方法は簡単です。
よろしければサポートお願いします! いただいたサポートは、note記事制作の活動費に使わせていただきます!