新規投稿
フォローする

端末管理 フィールドの表示非表示につきまして

いつも大変お世話になっております。

 

今回、社内外含む端末の管理アプリを作成しまして

表示非表示について、javaを作成してテストしていたところ、

一部動作がうまくいかずご相談させていただきたく投稿させいていただきます。

 

下記画像の赤枠の選択肢毎に、下記のフィールドの選択項目を変えて、

なおかつレコード画面で編集可能なプログラムを作成しました。

 

結果、選択肢で項目変更とレコードの編集は可能でしたが、

契約条件変更等で、レコードの編集が発生する場合に

他の選択肢に切り替えた時の動作で、元々の選択肢で

中のテキストの削除がうまく動作せずに困っております。

(例:PCメンテなし→PCメンテありに契約変更した時の中身の削除)

 

やりたい動作としましては下記3つになります

①選択肢ごとに表示項目を変えたい 成功

②レコード一覧画面で編集したい 成功

③選択肢変更後自動的に値を空白にしたい 失敗

 

 

製品カテゴリ/メンテナンスの契約有無のフィールドコードはradio4です。

------------------------------------------------------------------------------

(function() {
"use strict";

//レコードの追加、編集、詳細画面で適用する
var events = ['app.record.detail.show',
'app.record.create.show',
'app.record.index.edit.show',
'app.record.index.edit.change.radio4',
'app.record.index.edit.change.drop',
'app.record.index.edit.change.serial',
'app.record.index.edit.change.os',
'app.record.index.edit.change.otheros',
'app.record.index.edit.change.cpu',
'app.record.index.edit.change.memory',
'app.record.index.edit.change.memoryoption',
'app.record.index.edit.change.office',
'app.record.index.edit.change.otheroption',
'app.record.index.edit.change.computer',
'app.record.index.edit.change.user',
'app.record.index.edit.change.mac',
'app.record.index.edit.change.virus',
'app.record.index.edit.change.setti',
'app.record.index.edit.change.ip',
'app.record.index.edit.change.mac',
'app.record.index.edit.change.login',
'app.record.index.edit.change.fstart',
'app.record.index.edit.change.fend',
'app.record.create.change.radio4',
'app.record.create.change.drop',
'app.record.create.change.serial',
'app.record.create.change.os',
'app.record.create.change.otheros',
'app.record.create.change.cpu',
'app.record.create.change.memory',
'app.record.create.change.memoryoption',
'app.record.create.change.office',
'app.record.create.change.otheroption',
'app.record.create.change.computer',
'app.record.create.change.user',
'app.record.create.change.mac',
'app.record.create.change.virus',
'app.record.create.change.setti',
'app.record.create.change.ip',
'app.record.create.change.mac',
'app.record.create.change.login',
'app.record.create.change.fstart',
'app.record.create.change.fend',
'app.record.edit.show',
'app.record.edit.change.radio4',
'app.record.edit.change.drop',
'app.record.edit.change.serial',
'app.record.edit.change.os',
'app.record.edit.change.otheros',
'app.record.edit.change.cpu',
'app.record.edit.change.memory',
'app.record.edit.change.memoryoption',
'app.record.edit.change.office',
'app.record.edit.change.otheroption',
'app.record.edit.change.computer',
'app.record.edit.change.user',
'app.record.edit.change.mac',
'app.record.edit.change.virus',
'app.record.edit.change.setti',
'app.record.edit.change.ip',
'app.record.edit.change.mac',
'app.record.edit.change.login',
'app.record.edit.change.fstart',
'app.record.edit.change.fend',
];

kintone.events.on(events, function(event) {
var record = event.record;
var past = record.radio4.value;
if (past === 'PC/メンテ無し') {
kintone.app.record.setFieldShown('serial', true);
kintone.app.record.setFieldShown('os', true);
kintone.app.record.setFieldShown('otheros', true);
kintone.app.record.setFieldShown('cpu', true);
kintone.app.record.setFieldShown('memory', true);
kintone.app.record.setFieldShown('memoryoption', true);
kintone.app.record.setFieldShown('office', true);
kintone.app.record.setFieldShown('otheroption', true);
record['serial']['disabled'] = false;
record['os']['disabled'] = false;
record['otheros']['disabled'] = false;
record['cpu']['disabled'] = false;
record['memory']['disabled'] = false;
record['memoryoption']['disabled'] = false;
record['office']['disabled'] = false;
record['otheroption']['disabled'] = false;
}else if(past === 'PC/メンテ有り') {
kintone.app.record.setFieldShown('serial', true);
kintone.app.record.setFieldShown('os', true);
kintone.app.record.setFieldShown('otheros', true);
kintone.app.record.setFieldShown('cpu', true);
kintone.app.record.setFieldShown('memory', true);
kintone.app.record.setFieldShown('memoryoption', true);
kintone.app.record.setFieldShown('office', true);
kintone.app.record.setFieldShown('otheroption', true);
record['serial']['disabled'] = false;
record['os']['disabled'] = false;
record['otheros']['disabled'] = false;
record['cpu']['disabled'] = false;
record['memory']['disabled'] = false;
record['memoryoption']['disabled'] = false;
record['office']['disabled'] = false;
record['otheroption']['disabled'] = false;
} else {
kintone.app.record.setFieldShown('serial', false);
kintone.app.record.setFieldShown('os', false);
kintone.app.record.setFieldShown('otheros', false);
kintone.app.record.setFieldShown('cpu', false);
kintone.app.record.setFieldShown('memory', false);
kintone.app.record.setFieldShown('memoryoption', false);
kintone.app.record.setFieldShown('office', false);
kintone.app.record.setFieldShown('otheroption', false);
record.serial.value = ""; //非表示の時にvalueを空にする
record.os.value = ""; //非表示の時にvalueを空にする
record.otheros.value = ""; //非表示の時にvalueを空にする
record.cpu.value = ""; //非表示の時にvalueを空にする
record.memory.value = ""; //非表示の時にvalueを空にする
record.memoryoption.value = ""; //非表示の時にvalueを空にする
record.office.value = ""; //非表示の時にvalueを空にする
record.otheroption.value = ""; //非表示の時にvalueを空にする
record['serial']['disabled'] = true;
record['os']['disabled'] = true;
record['otheros']['disabled'] = true;
record['cpu']['disabled'] = true;
record['memory']['disabled'] = true;
record['memoryoption']['disabled'] = true;
record['office']['disabled'] = true;
record['otheroption']['disabled'] = true;
}
if (past === 'PC/メンテ有り') {
kintone.app.record.setFieldShown('support', true);
kintone.app.record.setFieldShown('computer', true);
kintone.app.record.setFieldShown('user', true);
kintone.app.record.setFieldShown('mac', true);
kintone.app.record.setFieldShown('virus', true);
kintone.app.record.setFieldShown('fstart', true);
kintone.app.record.setFieldShown('fend', true);
kintone.app.record.setFieldShown('drop', true);
record['support']['disabled'] = false;
record['computer']['disabled'] = false;
record['user']['disabled'] = false;
record['mac']['disabled'] = false;
record['virus']['disabled'] = false;
record['fstart']['disabled'] = false;
record['fend']['disabled'] = false;
record['drop']['disabled'] = false;
}else if(past === 'ルーター・NAS・UTM/メンテ有り') {
kintone.app.record.setFieldShown('support', true);
kintone.app.record.setFieldShown('mac', true);
kintone.app.record.setFieldShown('fstart', true);
kintone.app.record.setFieldShown('fend', true);
kintone.app.record.setFieldShown('drop', true);
record['support']['disabled'] = false;
record['mac']['disabled'] = false;
record['fstart']['disabled'] = false;
record['fend']['disabled'] = false;
record['drop']['disabled'] = false;
} else {
kintone.app.record.setFieldShown('support', false);
kintone.app.record.setFieldShown('computer', false);
kintone.app.record.setFieldShown('user', false);
kintone.app.record.setFieldShown('mac', false);
kintone.app.record.setFieldShown('virus', false);
kintone.app.record.setFieldShown('fstart', false);
kintone.app.record.setFieldShown('fend', false);
kintone.app.record.setFieldShown('drop', false);
record.support.value = ""; //非表示の時にvalueを空にする
record.computer.value = ""; //非表示の時にvalueを空にする
record.user.value = ""; //非表示の時にvalueを空にする
record.mac.value = ""; //非表示の時にvalueを空にする
record.virus.value = ""; //非表示の時にvalueを空にする
record.fstart.value = ""; //非表示の時にvalueを空にする
record.fend.value = ""; //非表示の時にvalueを空にする
record.drop.value = ""; //非表示の時にvalueを空にする
record['support']['disabled'] = true;
record['computer']['disabled'] = true;
record['user']['disabled'] = true;
record['mac']['disabled'] = true;
record['virus']['disabled'] = true;
record['fstart']['disabled'] = true;
record['fend']['disabled'] = true;
record['drop']['disabled'] = true;
}
if (past === 'ルーター・NAS・UTM/メンテ無し') {
kintone.app.record.setFieldShown('ip', true);
kintone.app.record.setFieldShown('login', true);
record['ip']['disabled'] = false;
record['login']['disabled'] = false;
}else if(past === 'ルーター・NAS・UTM/メンテ有り') {
kintone.app.record.setFieldShown('ip', true);
kintone.app.record.setFieldShown('login', true);
record['ip']['disabled'] = false;
record['login']['disabled'] = false;
} else {
kintone.app.record.setFieldShown('ip', false);
kintone.app.record.setFieldShown('login', false);
record.ip.value = ""; //非表示の時にvalueを空にする
record.login.value = ""; //非表示の時にvalueを空にする
record['ip']['disabled'] = true;
record['login']['disabled'] = true;
}
if (past === 'ルーター・NAS・UTM/メンテ有り') {
kintone.app.record.setFieldShown('setti', true);
record['setti']['disabled'] = false;
} else {
kintone.app.record.setFieldShown('setti', false);
record.settit.value = ""; //非表示の時にvalueを空にする
record['setti']['disabled'] = true;
}
return event;
});
})();

 

長文で申し訳ありませんが、ご教示のほどよろしくお願い申し上げます。

 

 

 

0

5件のコメント

Avatar
Shotaro Matsuda

岩上さん

こんにちは。プロジェクト・アスノートの松田です。

https://developer.cybozu.io/hc/ja/articles/202166330

の一番下の表で説明されているように、フィールドに空の値を設定するときは、フィールドタイプに応じた書き方が必要になります。

各フィールドタイプ毎に見直しされたら良いかと思います。

0
Avatar
岩上

松田様

いつもお世話になっております。

いつもありがとうございます。

 

こちらの内容で対象のものを変更してみたのですが、変わらなかったです。。。

 

変更例

CPU(ドロップダウン)

変更前

record.cpu.value = "";

変更後

record.cpu.value = null;

 

そもそも書き方が間違っているでしょうか。

 

以上、宜しくお願い致します。

0
Avatar
Shotaro Matsuda

岩上さん

コンソールになにかエラーは発生していませんか?

こちらの記事等を参考に、デバッグを行い、エラーが起こっている箇所を見つけてみてください。

https://developer.cybozu.io/hc/ja/articles/207613916

0
Avatar
岩上

松田様

いつもお世話になっております。

 

デバッグの実施方法のご教示有難うございます。

 

早速試してみたところ、無事不具合発生のコード確認できました!

入力済みの値にミスがないと勝手に思い込んでいたのですが、

settiとフィールドの値がなるところを、settitとなっておりました。

 

大変勉強になりました!有難うございます。

 

以上、今後ともよろしくお願い申し上げます。

0
Avatar
Shotaro Matsuda

岩上さん

エラー箇所が見つかったようで、よかったです!

 

自分もまだまだ勉強中なので、基本的なところでよくハマっています。

デベロッパーツールでのエラーの確認や、場合によっては途中でプログラムを一時停止させ、ステップ実行しながら、
変数の中身をチェックする等、エベロッパーツールの使い方を覚えてから、自分でいろいろわかるようになってきました。

 

0
ログインしてコメントを残してください。