Google
SSブログ

レスポンシブWebデザイン導入中の不具合対応(Parllet の場合 作成確認ダイアログ-2) [公開アプリ]

※ 注意! このエントリは ブログラミング(ブログを書きながらプログラミング)です。筆者がポストした時には気づいていない誤り等が後から発覚する恐れがあります。(過去の事例:2014年 1/4 の誤りに 1/9 に気づいて訂正、等 ^^; )

01_img.jpg

sakashushu です。

Parllet(個人で作成・公開しているアルファ版のWeb家計簿)レスポンシブWebデザイン導入中の不具合対応シリーズ前回 始めた作成確認ダイアログ編の続きです。

 

スポンサードリンク

 

 

■ ざっくり環境

OS:Windows 7 Home Premium
Play Flamework:1.2.4
ブラウザ:IE 11.0
Github公開リポジトリ のCommitバージョン(スタート時点):こちら

 

■ 体当たり開始

前回 は、作成確認ダイアログを閉じた時の動作を呼び出し元(include元)に記述した、

function whenDialogConfirmClosed(intRslt) {...}

を2箇所書いちゃっていますが、させたい動作がそれぞれの呼び出し元で異なるために単純に片方消すという訳にはいかないという旨を書いたところまででした。

それぞれの呼び出し元で処理を書いているので、function の名称を変えて区別します。

 

実はそのやり方は、Parllet/app/views/dialogFrmUpdMst.html でやっていますので、今回は手法を合わせる形で実施していきます。

 

Parllet/app/views/dialogFrmUpdRec.html での名称は whenDialogConfirmClosedDfur Parllet/app/views/DetailList/dl_header.html での名称は whenDialogConfirmClosedDl とします。

 

Parllet/app/views/dialogFrmUpdRec.html 内の編集。(太字の部分)

<script type="text/javascript">
<!--
/* dialogConfirmを閉じた時の動作は呼び出し元で行う */
function whenDialogConfirmClosedDfur(intRslt) {
(中略)
}

 

Parllet/app/views/DetailList/dl_header.html 内の編集。(太字の部分)

<script type="text/javascript">
<!--
/* dialogConfirmを閉じた時の動作は呼び出し元で行う */
function whenDialogConfirmClosedDl(intRslt) {
(中略)
}

 

どっちから呼び出されたか判別するために function openDialogConfirm に引数を追加して、ダイアログを閉じる際に分岐します。

Parllet/app/views/dialogConfirm.html 内の追記・編集。(太字の部分)

<script type="text/javascript">
<!--
function openDialogConfirm(strCase, strUnableItem, calledFrom) {
    jQuery(function() {
    (中略)
        jQuery("#dialog-confirm").dialog({
        (中略)
            close: function() {
                //ダイアログクローズ時の処理は呼び出し元で行う
                switch (calledFrom) {
                    case "dialogFrmUpdRec":
                        whenDialogConfirmClosedDfur(intRslt);
                        break;
                    case "dl_header":
                        whenDialogConfirmClosedDl(intRslt);
                        break;
                    default:
                        alert("Unanticipated calledFrom error");
                }
            }
        });
        jQuery("#dialog-confirm").dialog("open");
    });
}
// -->
</script>

 

※ 細かく言うと他にも whenDialogConfirmClosed を呼び出している箇所がありますが、全て適切に変更しました。

 

 

呼び出し元にも引数を追加します。

Parllet/app/views/dialogFrmUpdRec.html 内に追記。(太字の部分)

/**
 * イベント系
 */
jQuery(function() {
    /* 「収支種類」の選択変更イベント */
    jQuery('#dfurBTypeSel').change(function(e) {
        var jText = jQuery(this).children(':selected').text(),
            jVal = jQuery(this).val(),
            strCalledFrom = "dialogFrmUpdRec";
        
        //「収支種類」が収入・支出で、「項目」のリストがゼロの時
        if ((jText==="&{'BalanceType.in'}" ||
            jText==="&{'BalanceType.out'}") &&
                jQuery(subCatItem[jVal]).length===0) {
            e.preventDefault();
            if (jText==="&{'BalanceType.in'}")
                //項目(収入)作成用ダイアログ
                openDialogConfirm("&{'views.dialogConfirm.case.itemIn'}", jText, strCalledFrom);
            if (jText==="&{'BalanceType.out'}")
                //項目(支出)作成用ダイアログ
                openDialogConfirm("&{'views.dialogConfirm.case.itemOut'}", jText, strCalledFrom);
           
        //「収支種類」が口座預入・口座引出で、「取扱(実際)」のリストがゼロの時
        } else if ((jText==="&{'BalanceType.bank_in'}" ||
                    jText==="&{'BalanceType.bank_out'}") &&
                jQuery(subCatHdlgSmall[subCatHdlgLarge[jVal]]).length===0) {
            e.preventDefault();
            //口座・電子マネー作成用ダイアログ
            openDialogConfirm("&{'views.dialogConfirm.case.bkem'}", jText, strCalledFrom);
            
        //「収支種類」がParllet預入・Parllet引出で、「取扱(Parllet)」のリストがゼロの時
        } else if ((jText==="&{'BalanceType.parllet_in'}" ||
                    jText==="&{'BalanceType.parllet_out'}") &&
                jQuery(subCatPrlt).length===0) {
            e.preventDefault();
            //Parllet作成用ダイアログ
            openDialogConfirm("&{'views.dialogConfirm.case.prlt'}", jText, strCalledFrom);
            
    (中略)
});

 

Parllet/app/views/DetailList/dl_header.html 内の編集。(太字の部分)

<script type="text/javascript">
<!--
jQuery(function() {
    var intPadTop = jQuery('#header').height() - jQuery('#prltMain').css('padding-top').replace("px", "") - jQuery('#dlMain').css('margin-top').replace("px", ""),
        strCalledFrom = "dl_header";
    (中略)
    /* リンクのクリックイベント */
    %{hu = models.HaUser.find("byEmail", session.username).first()}%
    jQuery("#aDlRemainderBank, #aDlRemainderBank2").click(function(e) {
        (中略)
        if (${hdlgCnt}===0) {
            //口座・電子マネー作成用ダイアログ
            openDialogConfirm("&{'views.dialogConfirm.case.bkem'}", jText, strCalledFrom);
            
            e.preventDefault();
        }
    });
    jQuery("#aDlRemainderPrlt").click(function(e) {
        (中略)
        if (${idpCnt}===0) {
            //Parllet作成用ダイアログ
            openDialogConfirm("&{'views.dialogConfirm.case.prlt'}", jText, strCalledFrom);
            
            e.preventDefault();
        }
    });
    (中略)
});
(中略)
// -->
</script>

 

■ 動作確認

まずは dl_header.html の方から。

前回 改修して1回で開くようになった残高明細(口座系)をクリック。

02_edit2_dl_header_01.jpg

 

ここで開いているのが作成確認ダイアログ口座を作成をクリックし、

03_edit2_dl_header_02.jpg

 

作成確認ダイアログが閉じたときの処理として、正しく口座作成ダイアログが開きました。

04_edit2_dl_header_03.jpg

 

次は dialogFrmUpdRec.html を確認します。

せっかくなんで、口座系でないモノで確認を。

項目(収入)で確認するため、一度項目(収入)を全て削除します。

05_edit2_dialog_frm_upd_rec_01.jpg

06_edit2_dialog_frm_upd_rec_02.jpg

07_edit2_dialog_frm_upd_rec_03.jpg

08_edit2_dialog_frm_upd_rec_04.jpg

09_edit2_dialog_frm_upd_rec_05.jpg

10_edit2_dialog_frm_upd_rec_06.jpg

11_edit2_dialog_frm_upd_rec_07.jpg

はい、項目(収入)が全て削除され、直後に家計簿入力をクリックしました。

 

項目(収入)が1つも無いため、作成確認ダイアログが開きました。 項目(収入)を作成をクリックし、

12_edit2_dialog_frm_upd_rec_08.jpg

 

作成確認ダイアログが閉じたときの処理として、正しく項目(収入)作成ダイアログが開きました。  

13_edit2_dialog_frm_upd_rec_09.jpg

 

今回は以上です。

お疲れ様でした!

 


 

いつも最後まで読んでいただいてありがとうございますm(_ _)m

何度も見に来ていただけることが、間違いなく私の原動力となっています(^_^)

またお越しくださいませませ!

 

 


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。