Pleasanter 状況によるボタンの制御

今日のプリザンターのメモは、状況によるボタンの制御の巻です。

前回書きました、参照権限・アクセス権限・アクセス制御などと絡んできますね。

その記事はこちら↓

自分が作る場合はですが、自分以外のユーザーには削除権限は付けたくないのですよね。

どうしても、一般の人は、本人が気が付かないうちに削除すると思います。

基本、データベースって削除しちゃダメだと思うのですよね。

デリートフラグ(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に聞いたほうが速い時代かもですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください