今日のプリザンターのメモは、状況によるボタンの制御の巻です。
前回書きました、参照権限・アクセス権限・アクセス制御などと絡んできますね。
その記事はこちら↓
自分が作る場合はですが、自分以外のユーザーには削除権限は付けたくないのですよね。
どうしても、一般の人は、本人が気が付かないうちに削除すると思います。
基本、データベースって削除しちゃダメだと思うのですよね。
デリートフラグ(Delete Flag)で処理するとかで良いと思うのですが、Pleasanterは削除が誰でもできてしまうので、困りものなんです。
サイトのアクセス制御で削除を選択しなければ、選択できないとも思うのですが、何かの拍子で表示されたりします。
おや?なんで?という時がたまにあったりします。
あと、更新ボタンも同様に、ある条件の時は、更新させたくない。とかありますよね。
なので、それらに対する対応です。
以下をスクリプトに貼り付けると「状況」が500の時と900の時には「更新ボタン」が表示されない。というスクリプトです。
$p.events.on_editor_load = function () {
const status = $('#Results_Status').attr('data-value');
if (status === '500' || status === '900') {
$('#UpdateCommand').hide();
} else {
$('#UpdateCommand').show();
}
}
「状況」を上手に使うといろいろ便利なので、積極的に使ってます。
↑ここでは判断している500と900が文字列ですね。
あと、「状況」が100より大きいとき、は以下になります。
$p.events.on_editor_load = function () {
const status = parseInt($('#Results_Status').attr('data-value'), 10);
if (status > 100) {
$('#UpdateCommand').hide();
} else {
$('#UpdateCommand').show();
}
}
↑ここでは、文字列を数値に変換してから100より大きいのを判断している。
あと、「画面に状況が表示していないとき」は、$p.apiGetを使わないと参照できないので、その例文を書いておきます。
const recordId = $('#Results_ResultId').attr('data-raw');
console.log("recordId", recordId);
$p.apiGet({
id: recordId, // レコードIDを直接指定
data: {}, // 条件なし
done: function(response) {
console.log("取得成功:", response);
const dataList = response.Response.Data;
if (!dataList || dataList.length === 0) {
console.warn("データが取得できませんでした");
return;
}
const status = dataList[0].Status;
console.log("StatusCode", status);
if (status === 900) {
$('#UpdateCommand').hide();
} else {
$('#UpdateCommand').show();
}
},
fail: function(error) {
console.error("取得失敗:", error);
},
always: function() {
console.log("取得完了");
}
});
こっちは、apiGetだと、900が文字列ではなく数値という。。。
しっかり確認してないですが、文字列だったり、数値だったり、、ん~。なんだろうか。
皆さんも注意してください。
例文は拙いですが、コンソールを満載してるので、追っかけやすいかと思います。
参考にでもしてください。
更新ボタン:UpdateCommnd
削除ボタン:DeleteCommnd
メールボタン:EditOutgoingMail
コピーボタン:OpenCopyDialogCommand
以上が編集時の主なボタン、以下は一覧時です。
インポート:EditImportSettings
エクスポート:OpenExportSelectorDialogCommand
このあたりを適宜、貼りなおせば使えるかな。と思います。
なお、スクリプトなどのコードとかは拙いですが、なんとか正常に動くとは思います。
実を言うと最近のコードはみんなAIで作ってもらってます。
構文を覚えなくていいのは楽ですよね。
いろんな言語のデバッグ方法だけわかっていれば、後はAIに書かせてデバッグして、AIにもちろんデバッグもしてもらいますけど。
なので、質問貰うよりもAIに聞いたほうが速い時代かもですね。