カレンダーPlus複製処理

カレンダーPlusを利用させて頂いています。

カレンダー上での複製操作(右クリックメニュー)時に、ポップアップ(Sweet Arert)で入力した値を複製元・複製先のレコードに登録したいと思っています。

 

まずは、複製先レコードの処理からと思って、処理を書いてみたのですが、複製操作イベントをreturnできていないのか、複製先レコードに値を登録できていません。

初歩的な質問で大変恐縮なのですが、確認するポイント等あれば教えて頂けるとありがたいです。

よろしくお願いします。

jQuery.noConflict();
(function ($) {
    “use strict”;

    kintone.events.on([‘app.record.index.show’, ‘mobile.app.record.index.show’], function (e) {
        if (e.viewType !== ‘custom’) return e;

        // カレンダープラス・レコード複製前イベント
        calendarplus.events.on(‘cp.event.duplicate.submit’, function (duplicateEvent) {

            let labelColor = ‘’;
            Swal.fire({
                title: ‘複製処理’,
                icon: ‘info’,
                showCancelButton: true,
                input: ‘text’,
                inputLabel: ‘ラベルの色を選択してください’,
                inputValue: ‘#f00’,
                inputPlaceholder: ‘’,
                customClass: {
                    input: ‘custom-color’,
                }
            }).then((result) => {
                //キャンセル時
                if (!result.value) {
                    console.log(‘キャンセルのため何もしない’);
                    return;
                }
                labelColor = result.value;
                duplicateEvent.record[‘labelColor’][‘value’] = labelColor;
                return duplicateEvent;
            });  // end Swal.fire

            // カラーパレット
            $(“.custom-color”).spectrum({
                color: “#f00”, // 初期値
                showPalette: true,  // パレット表示
                palette: [          // パレットで使う色を指定
                    [“#f00”, “#fff”, “#123”],
                    [“#a1f”, “#999”, “#f92”]
                ],
                selectionPalette: [“#f00”], // 選択色のパレットの初期値
                preferredFormat: “hex”,  // カラーコード形式の指定
            });

            return duplicateEvent;
        });
        return e;
    });

})(jQuery);

十文字さん
カレンダーPlus提供元であるラジカルブリッジの斎藤です。

平素はカレンダーPlusをご活用いただきましてありがとうございます。

SweetAlert2は非同期処理となっていますので、ポップアップが表示・処理される前に、カラーパレットの後の return duplicateEvent;が即時に実行されてしまっているのが原因かと思います。
SwalはPromiseオブジェクトを返却しますので、以下のように記述すると、ポップアップの処理を待ってから適切に複製処理が行われるかと思います。

■修正点1
Swal.fire({

return Swal.fire({

■修正点2(複製前イベントは、falseをreturnすると複製処理をキャンセルします)
console.log(‘キャンセルのため何もしない’);
return;

console.log(‘キャンセルのため何もしない’);
return false ;

■修正点3
カラーパレットの後の return duplicateEvent; は削除

すごい!!サービスを提供されている会社さんから直にコメントして頂けるなんで!!

ありがとうございます。

非同期処理…、いつもハマってしまいます( ;  ; )

内容の方、試して確認してみます。

 

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。