Google
SSブログ

レスポンシブWebデザイン導入(Parllet の場合 旧家計簿入力ページ(特別編)) [公開アプリ]

※ 注意! このエントリは ブログラミング(ブログを書きながらプログラミング)です。筆者がポストした時には気づいていない誤り等が後から発覚する恐れがあります。(過去の事例: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バージョン(スタート時点):こちら

 

■ 現状

3/26 にも書いたように、Parllet(パレット) の家計簿入力は ダイアログです。

そうです、他のページ(残高表日計表明細表設定)と違って、家計簿入力だけはページでなくダイアログなんです。

それについてはご意見も頂いているのですが、今のところ他に良い案が思いつかず、ダイアログの状態で継続しております。

via: レスポンシブWebデザイン導入案(Parllet の場合(家計簿入力))

 

しかし、以前は家計簿入力も他と同じようにページで作っていました。

その家計簿入力ページの機能自体は今でも残しています。(普通のページ遷移では行けなくしてありますが。)

 

ここのところ相談役の妻に iphone での動きを見てもらっていたんですが、 どうも家計簿入力ダイアログの動きでおかしいところが多いのです。

それを見ていて、「スマホの場合だけダイアログでなくページにするのもありかな?」と考え始めました。(あくまで可能性ですが。)

 

で、久しぶりに軽く動かしてみたところ、4/3 と同じ問題が。

 

まず家計簿入力ページを表示させたのがこちら。

02_current_record_edit_01.jpg

※ スライドメニューのトリガーが表示されてたり、テキストボックスとコンボボックス等の幅が違うこととかは今回は無視でお願いしますw

 

4/4 と同じく、項目(収入)が全て削除された状態で行っています。

収支種類から収入を選択して、

03_current_record_edit_02.jpg

 

本来なら作成確認ダイアログが出るはずが出ません。

04_current_record_edit_03.jpg

 

一旦支出を選択して、

05_current_record_edit_04.jpg

 

再度収入を選択し直すと今度は作成確認ダイアログが出ます。

06_current_record_edit_05.jpg

 

そしてキャンセルボタンを押すと、

07_current_record_edit_06.jpg

 

エラーが出ます。

08_current_record_edit_07.jpg

 

今回は 4/34/4 と同じ対応をすれば良いはずです。

いつものように体当たりブログラミング(ブログを書きながらプログラミング)していきます。

 

■ 体当たり開始

まずは #{include 'dialogConfirm.html' /} の削除です。

Parllet/app/views/RecordEdit/recordEdit.html 内から削除します。

 

削除前

#{set 'headerTools'}
    #{include 'headerTools.html' /}
#{/set}

#{include 'dialogConfirm.html' /}
<script type="text/javascript">

 

削除後

#{set 'headerTools'}
    #{include 'headerTools.html' /}
#{/set}

<script type="text/javascript">

 

 

次に、whenDialogConfirmClosed の分岐の対応。

recordEdit.html での名称は whenDialogConfirmClosedRe とします。

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

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

 

そして、ダイアログを閉じる際の分岐に追加します。

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;
                    case "recordEdit":
                        whenDialogConfirmClosedRe(intRslt);
                        break;
                    default:
                        alert("Unanticipated calledFrom error");
                }
            }
        });
        jQuery("#dialog-confirm").dialog("open");
    });
}
// -->
</script>

 

 

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

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

/* 「収支種類」の選択変更イベント */
jQuery('#balance_type_mst').change(function(e){
    var jText = jQuery(this).children(':selected').text(),
        jVal = jQuery(this).val(),
        strCalledFrom = "recordEdit";
    
    //「収支種類」が収入・支出で、「項目」のリストがゼロの時
    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[jQuery('#balance_type_mst').val()]]).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('#parllet_mst').children().length===1) {
        e.preventDefault();
        //Parllet作成用ダイアログ
        openDialogConfirm("&{'views.dialogConfirm.case.prlt'}", jText, strCalledFrom);
        
    } else {
        (中略)
    }
});

 

 

■ 動作確認

家計簿入力ページをリロード。

09_edit1_record_edit_01.jpg

 

収入を選択すると、

10_edit1_record_edit_02.jpg

 

初回から作成確認ダイアログが出ます。  

11_edit1_record_edit_03.jpg

 

キャンセルボタンを押しても、

12_edit1_record_edit_04.jpg

 

エラーは出なくなりました。

13_edit1_record_edit_05.jpg

 

※ 毎度の念のための断りですが、今回編集した内容は現時点(2014/4/7)では公開しているParllet(パレット) の方には反映しておりません。 

はい、今回は以上です。

お疲れ様でした!  

 


 

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

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

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

 


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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

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

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