kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

TOOL更新_66.エラー項目に薄ピンク色をつける。を作成した。(これはボツにした。7月21日に作り変えた)

ToDoリストhttp://d.hatena.ne.jp/kazpgm/2009040366.エラー項目に薄ピンク色をつける。を作成した。
金曜日のお台場屋形船の帰りに会社の人からアイディアをもらった。”エラーになった項目を薄いピンクにするとユーザビリティがあがる”のだ。早速PHP自動作成◎自動生成TOOLに取り入れた。
こんな感じになった。http://kazpgm.ddo.jp/kaz01u/admin/でログイン後「企業情報登録」クリック。そのまま「登録」押下でエラー。


★★<= ここから先はPGM修正内容 =>★★
!!!これはPGMメンテナンスしづらいという理由でボツにした。7月21日に作り変えた!!!

■「header.lbi」に以下を入れた。
エラーメッセージを出す項目名から色付けするエレメントIDを「errItemAry」に設定。それらの項目をBODYのオンロードでピンクにしている。
!!!これはPGMメンテナンスしづらいという理由でボツにした。7月21日に作り変えた!!!

<script type="text/JavaScript"><!-- 
// エラー項目に色をつける。
function loadErrItmcolor()
{
var obj
var errItemAry = [ // エラーになった項目ID
<?php
    if (function_exists('getErrItemAry')) { // getErrItemAry関数がないときに対応する。
        echo getErrItemAry($err);// エラーになった項目ID
    }
?>
];
    for ( var i=0; i < errItemAry.length; i++ ) {
        obj = document.getElementById(errItemAry[i]);
        obj.style.backgroundColor = "#FFC0CB";
    }
}
 --></script>

■全htmlのbodyにonLoadを追加した。(注意:「header.lbi」を使用しているものを対象とした。)
!!!これはPGMメンテナンスしづらいという理由でボツにした。7月21日に作り変えた!!!

<body onLoad="loadErrItmcolor()">

■全PHPに以下を追加した。記述してある内容は例)です。ここの部分を自動作成◎自動生成している。
「header.lbi」でエレメントIDを取得するのに使っている。
!!!これはPGMメンテナンスしづらいという理由でボツにした。7月21日に作り変えた!!!

// エラー項目に対応するHTML上の項目IDを戻す。
function getErrItemAry($err) {
    global $ELEMENTS;
    if (empty($err) || !is_array($err)) { // 配列でない場合
        return '';
    }
    $errItemAryBase = array(
    // ■--PGM<<011>> start--------------------------------------------
    // 項目名と項目IDが同じものは省略する。よって以下を記述する。
    // 例)
    // 1.[yyyy]年[mm▼]月[dd▼]日でFromTo検索 項目ID
    //    "srch_item11" => '"srch_item11_year_from","srch_item11_month_from","srch_item11_day_from",' . 
    //                     '"srch_item11_year_to","srch_item11_month_to","srch_item11_day_to",' . "\n",
    "srch_item11" => getErrItemArySubYYYYMMDDFrTo("srch_item11") . "\n",
    // 2.その他のFromTo検索
    //    "srch_item11" => '"srch_item11_from","srch_item11_to",' . "\n",
    "srch_item11" => getErrItemArySubETCFrTo("srch_item11") . "\n",
    // 3.チェックボックス検索 コード一覧のコード値の数分
    //    "check_srch_item13" => '"check_srch_item13[]1","check_srch_item13[]2",' . "\n",
    "srch_item13" => getErrItemArySubCheckBox($ELEMENTS['LOGIN_TYPE'], "srch_item13") . "\n",
    // 4.[yyyy]年[mm▼]月[dd▼]日 検索、新規、更新
    //    "item11" => '"item11_year","item11_month","item11_day",' . 
    "item11" => getErrItemArySubYYYYMMDD("item11") . "\n",
    // 5.ラジオボタン 検索、新規、更新 コード一覧のコード値の数分 + 未選択分
    //    "item14" => '"radio_item141","radio_item142","radio_item14",' . "\n",
    "item14" => getErrItemArySubRadio($ELEMENTS['LOGIN_TYPE'], "item14", "未選択") . "\n",
    // 6.分割 郵便 検索、新規、更新
    "item17_1" => getErrItemArySubPOST("item17_1","item17_2") . "\n",
    "item17_2" => getErrItemArySubPOST("item17_1","item17_2") . "\n",
    // 7.分割 電話、携帯 検索、新規、更新
    //    "item19_1" => '"item19_1","item19_2","item19_3",' . "\n",
    //    "item19_2" => '"item19_1","item19_2","item19_3",' . "\n",
    //    "item19_3" => '"item19_1","item19_2","item19_3",' . "\n",
    "item19_1" => getErrItemArySubTEL("item19_1","item19_2","item19_3") . "\n",
    "item19_2" => getErrItemArySubTEL("item19_1","item19_2","item19_3") . "\n",
    "item19_3" => getErrItemArySubTEL("item19_1","item19_2","item19_3") . "\n",
    // ■--PGM<<011>> end--------------------------------------------
    );
    $str = '';
    foreach($err as $key => $val) {
        if ($val != '') { // エラーメッセージがある場合
            if ($errItemAryBase[$key] !='') { // $errItemAryBaseがある場合
                $str .= $errItemAryBase[$key];
            } else {                           // 項目名と項目IDが同じもの
                $str .= '"' . $key . '",' . "\n";
            }
        }
    }
    if ($str != '') { // エラーがある場合
        $str = substr($str, 0 , strlen($str)-2); // 最後のカンマと改行を削除する。
    }
    return $str;
}

■「functions.php」に以下を追加した。
以下のような項目は項目ひとつに複数の入力項目(エレメントID)を持っている。それを取得する関数。
!!!これはPGMメンテナンスしづらいという理由でボツにした。7月21日に作り変えた!!!

    // -------------------------------------------------
    // function getErrItemAry($err) で使用する関数 start
    // -------------------------------------------------
    /**
     * 1.[yyyy]年[mm▼]月[dd▼]日でFromTo検索 項目ID 用
     * <p>
     * @param  name  name
     * @return etErrItemAry用データ
     */    
    function getErrItemArySubYYYYMMDDFrTo($name) {
        $str = '';
        $str .= '"' . $name . '_year_from","' . $name . '_month_from","' . $name . '_day_from",' . 
                '"' . $name . '_year_to","' . $name . '_month_to","' . $name . '_day_to",';
        return $str;
    }

    /**
     * 2.その他のFromTo検索 用
     * <p>
     * @param  name  name
     * @return etErrItemAry用データ
     */    
    function getErrItemArySubETCFrTo($name) {
        $str = '"' . $name . '_from",' . '"' . $name . '_to",';
        return $str;
    }

    /**
     * 3.チェックボックス検索 コード一覧のコード値の数分 用
     * <p>
     * @param  emts    コード配列
     * @param  name  name
     * @return etErrItemAry用データ
     */    
    function getErrItemArySubCheckBox($emts, $name) {
        $str = '';
        $i = 0;
        foreach ($emts  as $key => $val) {
            $i++;
            $str .= '"' . "check_" . $name . '[]' . $i . '",';
        }
        return $str;
    }

    /**
     * 4.[yyyy]年[mm▼]月[dd▼]日 検索、新規、更新 用
     * <p>
     * @param  name  name
     * @return etErrItemAry用データ
     */    
    function getErrItemArySubYYYYMMDD($name) {
        $str = '"' . $name . '_year",' . '"' . $name . '_month",' . '"' . $name . '_day",';
        return $str;
    }

    /**
     * 5.ラジオボタン 検索、新規、更新 コード一覧のコード値の数分 + 未選択分 用
     * <p>
     * @param  emts    コード配列
     * @param  name  name
     * @param  dflt  "▼選択してください"を設定する。設定しない場合""を指定する。
     * @return etErrItemAry用データ
     */    
    function getErrItemArySubRadio($emts, $name, $dflt) {
        $str = '';
        $i = 0;
        foreach ($emts  as $key => $val) {
            $i++;
            $str .= '"' . "radio_" . $name . $i . '",';
        }
        if ($dflt != '') {
            $str .= '"' . "radio_" . $name . '",';
        }
        return $str;
    }

    /**
     * 6.分割 郵便 検索、新規、更新 用
     * <p>
     * @param  name1  name1
     * @param  name2  name2
     * @return etErrItemAry用データ
     */    
    function getErrItemArySubPOST($name1, $name2) {
        $str = '"' . $name1 . '",' . '"' . $name2 . '",';
        return $str;
    }

    /**
     * 7.分割 電話、携帯 検索、新規、更新 用
     * <p>
     * @param  name1  name1
     * @param  name2  name2
     * @param  name3  name3
     * @return etErrItemAry用データ
     */    
    function getErrItemArySubTEL($name1, $name2, $name3) {
        $str = '"' . $name1 . '",' . '"' . $name2 . '",' . '"' . $name3 . '",';
        return $str;
    }
    // -------------------------------------------------
    // function getErrItemAry($err) で使用する関数 end
    // -------------------------------------------------

補足)エラー項目に色がついただけで見栄えがする。各項目にID付けといたのは正解だった。項目名をクリックすると項目にカーソルが飛ぶようにlabel張ってある。そのためのIDだったのだがこんなところで再度活躍。

追加)日記なので写真たち
船着場前の金魚。暑い夜。涼しさを誘う。

屋形船からお台場。とりあえず。記録として。


■サイト:http://kazpgm.ddo.jp/

07/18 13:00-23:00 07/19 11:00-23:20