一覧表示時、ログインユーザーが既読ユーザーに無い場合、未読(何かのフィールド)表示したい

やりたいこと:

一覧表示したときに、ログインユーザーが既読ユーザーにセットされていない場合、未読フィールドに値をセットしたい(まだ作成していないので、文字列でもチェックボックスでも可)

掲示板アプリを作っています。

既読プラグインを使って、詳細画面を開いた時に既読ユーザー(ユーザー選択フィールド)に、ログインユーザーがセットされるようになっています。

色々参考にさせてもらいながら、「未読なら色を変える」カスタマイズは出来ました。

が、モバイルでは色が変更されない為、「そもそもフィールドで未読って付けば分かるな」と思い、同じif文の条件内でフィールドに未読(値)をセットしたいと思っておりますが、中々うまくいきません。

 

上記内容はフィールドに値をセットすることでモバイルでも見れるようにと考えた内容なので、他の方法でモバイルでも未読/既読チェックをしやすい方法があれば、そちらも知りたいなと思います。

/*
* 条件書式の文字装飾のサンプルプログラム
* Copyright (c) 2013 Cybozu
*
* Licensed under the MIT License
*/
(function() {
"use strict";
//レコード一覧の表示時にフィールド値の条件に応じて、文字色、フィールドの背景色を変更する
kintone.events.on('app.record.index.show', function(event) {
var bgColor = '#fff8dc';
var elStatus = kintone.app.getFieldElements('ステータス');

for (var i = 0; i < elStatus.length; i++) {
var record = event.records[i];

if (record['ステータス']['value']==="下書き(未処理)") {
elStatus[i].style.color = '#ff0000';
elStatus[i].style.backgroundColor = bgColor;
}

// ログインユーザ情報
var user = kintone.getLoginUser().code;
var readUser = record.readUser.value;
var LOGIN_COLOR = '#e5f0ff'; // ログインユーザのフィールド色
//見た人にユーザーが登録されていなければ背景色変更=未読
if(readUser.length !== 0){
if(readUser[0].code === user){
record.noreadCheck.value = ["未読"];
elStatus[i].style.backgroundColor = LOGIN_COLOR;
elStatus[i].style.fontWeight = 'bold';
}else{
 record.noreadCheck.value = [];
}
}
}
return event;
});

})();

現在のコードです。やってることは、①未処理なら色を付ける②未読なら色をつけるの2つです。

if(readUser[0].code === user){
record.noreadCheck.value = ["未読"];

このあたりの書き方が悪いのかな・・・と思っております・・・よろしくお願いいたします。

下部分の「見た人にログインユーザーが含まれていなければ、背景色変更」の部分、ちゃんと動いてなかったので自己解決しました。

本質問の「見た人にログインユーザーが含まれていなければ、フィールドに値をセット」は未解決です。引き続きよろしくお願いします・・・

/*
* 条件書式の文字装飾のサンプルプログラム
* Copyright (c) 2013 Cybozu
*
* Licensed under the MIT License
*/
(function() {
"use strict";
//レコード一覧の表示時にフィールド値の条件に応じて、文字色、フィールドの背景色を変更する
kintone.events.on('app.record.index.show', function(event) {
var bgColor = '#fff8dc';
var elStatus = kintone.app.getFieldElements('ステータス');

for (var i = 0; i < elStatus.length; i++) {
var record = event.records[i];
if (record['ステータス']['value']==="下書き(未処理)") {
elStatus[i].style.color = '#ff0000';
elStatus[i].style.backgroundColor = bgColor;
}

// ログインユーザ情報
var user = kintone.getLoginUser().code;//ログインユーザーのコード
var readUser = record.readUser.value
var LOGIN_COLOR = '#e5f0ff'; // ログインユーザのフィールド色

//見た人にユーザーが登録されていなければ背景色変更=未読
if(record.readUser.value.length == 0){//既読者が0人なら
elStatus[i].style.backgroundColor = LOGIN_COLOR;
elStatus[i].style.fontWeight = 'bold';
}

if(record.readUser.value.length != 0){//既読者が0人ではないなら

if( readUser.some(readUser => readUser.code === user) !== true){
 record.noreadUser.value = "未読";
elStatus[i].style.backgroundColor = LOGIN_COLOR;
elStatus[i].style.fontWeight = 'bold';
}
}
}
});
})();