2013/11/14

jQueryでデータベースから動的にボタンを生成してかつイベントを付与する。

やり方簡単に探せないのでメモ やっと動いた

Monacaのサンプルから派生
あらかじめデータベース内に
質問 答え
が入っている。
答えは
"はい、いいえ、わからない"
とか
"ある、ない"
などいろいろあるので、事前にボタンの数も決まってはいない。

    // 問い合わせ成功時のコールバック
    //
    function querySuccess(tx, results) {
        var len = results.rows.length;
        window.alert("データベースには " + len + " 行あります。");
  //ボタンにシリアルナンバーつける。ccとする。
        var cc = 0;
        for (var i=0; i  //もとのHTMLには用意しておく。そこに足していく感じ。
  //質問をまず記入
            $("#add").append(results.rows.item(i).QUESTION + "
");
  //データが0文字の場合にエラーが起きるので回避 二つ以上答えがあるデータを選ぶ
            var s = results.rows.item(i).ANSWER
            var pos = results.rows.item(i).ANSWER.search("、")
            if(pos>0){
                var ss = s.split("、");
                for (j in ss) {
                    var bt = "button" + cc
                    var bt2 = "#button" + cc
                    $('#add').append($(''));
                    //イベントをバインド。変数が$()の中に入ってるのがミソ
         //あとでどのボタンが押されたか、valueをセットしておかないとわからない。重要
         //このevent.data.valueもここで使う分にはエラーが起きないようだ
                    $(bt2).on("click", { value : bt }, function(event) {
                        alert(event.data.value);
                        $('#add').append( event.data.value );
                    });
                    cc++
                }
                $("#add").append("
")
            }
       
        }    
    }

これでデータベースから質問、答えを動的に生成できて、かつどのボタンが押されたかがわかった。
ここにいろいろコードを付加していけば、自由に拡張が出来る問診票が作成できる。
データベースの例はこんな感じ。
    function executeQuery(tx) {
        //質問が入ったテーブル構造です。
        tx.executeSql('DROP TABLE IF EXISTS QuestionnaireTable');
        tx.executeSql('CREATE TABLE IF NOT EXISTS QuestionnaireTable (QUESTION_CODE unique, QUESTION, ANSWER, DESCRIPTION)');
        //定義完了
        tx.executeSql('INSERT INTO QuestionnaireTable (QUESTION_CODE, QUESTION, ANSWER, DESCRIPTION) VALUES ("9N716","既往歴1(脳血管疾患)","1:はい、2:いいえ","")');
        tx.executeSql('INSERT INTO QuestionnaireTable (QUESTION_CODE, QUESTION, ANSWER, DESCRIPTION) VALUES ("9N721","既往歴2(心血管疾患)","1:はい、2:いいえ","")');
        tx.executeSql('INSERT INTO QuestionnaireTable (QUESTION_CODE, QUESTION, ANSWER, DESCRIPTION) VALUES ("9N726","既往歴3(腎不全・人工透析)","1:はい、2:いいえ","")');
        tx.executeSql('INSERT INTO QuestionnaireTable (QUESTION_CODE, QUESTION, ANSWER, DESCRIPTION) VALUES ("9N731","貧血といわれたことがある","1:はい、2:いいえ","")');
        tx.executeSql('INSERT INTO QuestionnaireTable (QUESTION_CODE, QUESTION, ANSWER, DESCRIPTION) VALUES ("9N736","現在、たばこを習慣的に吸っている","1:はい、2:いいえ","")');
   }


2013/11/10

香川県のチキンマックナゲットは(やや)ヘルシー

ミシシッピ大の教授ら、という人がアメリカファストフードチェーンのチキンナゲットが脂肪が多いじゃないか、という事を手順がかかる理屈をこねて発表したというニュースがありました。
そもそも正直に半分以上が脂肪ですよ、とちゃんとファストフードチェーンのホームページには書いてある事で、彼らの批判は素直に心に響かない。でも少なくともミシシッピ大の教授らって「チキンってヘルシー、素敵!」って思ってるんだという事は良くわかりました。いやいや衣がついてるわけだからその考えは単純すぎないか。

ただし、調べていると面白いことがありました。


  1. 日本のマクドナルドではチキンマックナゲット、うどん県だけ違うらしい。
    2013/10/6時点で、15ピース300g(うどん県以外)で840Kcal、脂質は56.7gとあります。うどん県だけは264gで705Kcal、脂質が41.4gでした。(脂質の割合が少なくてちょっぴりヘルシーです)
  2. アメリカのマクドナルドではPDFになっていて、しかも縦横が逆で見にくくて。法律でもあるんでしょうか。2013/10/6時点で20ピース323gが940Kcal、脂質が59gで脂肪からのカロリー(Calories from Fat)が530g(有効数字2桁で表示されている雰囲気ですが他のものは四捨五入されているのにこれだけは切り捨てになっていました。面白いです)
  3. バーガーキング(合衆国)のもPDFですが、これは見やすかったです。
    2013/10/6時点で20ピース350gが950Kcal、脂質が57gで脂肪からのカロリー(Calories from Fat)が510gとなっています。
  4. ウェンディーズはPDFは合衆国居住者のみ公開のようです。2013/10/6時点で10ピースの重量は書いていません。(!)450Kcalで脂質30g、270Kcalとの情報が得られました。そしてある種の印象操作が行われています。すなわち、食物繊維と蛋白質がきわめて強調されていることです。

背景が野菜であることにも注目しています。
注)それぞれソースは含みません。

これらからわかったことは、

  1. 日本の法律では"Calories from Fat"(脂質によるカロリー)という表示は義務となっていないようだ。これでは消費者は何もわかるまい。
  2. アメリカではどうもそういう表示をすべし、となっているようだ。ただし、これでもまだ不足に思う。

「全体のカロリーのうち、脂質のカロリーが占める割合がどのくらいか」
を表示すると、もっと感覚的に、
「うわ、オイリー」というのがわかるのではないか。

ということで、うどん県以外のチキンマックナゲットは61%、うどん県では53%が脂質でした。

ちなみにミシシッピ大の教授という人に教えてあげたいこと。たぶんアメリカの方が大好きな「テンプーラ」もシーフードだからヘルシーと思ってらっしゃるかもしれませんが、エビのてんぷらをこのサイトで覗いてみるとサラダ油の占めるカロリー43%で、いい勝負です。

2013/11/03

日柄もの

おそらく2005年ころから使い始めた言葉があります。40前になってはじめて覚えた日本語です。

診察の最後のあたりで患者さんが、「日柄ものですかねえ」と仰る。
私は最初その言葉がわからず、しかし「日」「日柄」という時間を意味する言葉が含まれているので「そのうち治る」という意味だろうと思い、
「そう思いますよ」と申し上げる。
すると患者さんはがっかりするのではなく、むしろニコニコとしてお帰りになる。
こういう会話を何度も何度も繰り返しました。

ある日、高齢の方に「これは日柄ものです」と言ってみた。
すると患者さんはほっとしたような顔になり、「そうですか、良かったです」と言う。
「そのうち良くなる」という言葉とは表情が違う。

おそらくポジティブな意味なのだろうと思い、以後は自然に軽快するだろう、という意味で安心させたいときに使うようにしています。乱用は避けています。高齢の方が良くお使いになりますが、伊勢原だけの言葉ではないらしい。(参照記事

65歳より若い方にはほとんど通じず、「そのうち良くなりますよ」などと言いますがどうもよろしくない。「この医者め、いい加減なことを」という表情になります。「時間が最高の良薬ですね」というとなんだかキザっぽい。それにそう言うとただ寝ている人がいて、それではどんどん悪くなる。心をポジティブにして、できる限り身体を動かし、普通の生活をしなさい、という意味が「日柄もの」には含まれている。「必ず良くなるから頑張ろう」というようなおまじない、言葉の魔法がかかっている気がするのです。65歳以下には何でも理詰めで説明する必要があって、全く面白くない。もちろんそれ以上の年齢でも「日柄もの」という言葉がわからない方の場合には説明は難渋します。そういう言葉が世代間で失われているのはちょっと悲しくも思います。

柿が赤くなると医者は青くなる。
柿は糖度が20度もあるので血糖が上がった人もいます。
また、柿の渋でイレウスになった人がいました。
伊勢原の柿は美味しいんです。
でも食べ過ぎてはいけません。
桃栗三年柿八年、
この柿の木は樹齢100年を越えているらしい。
胃腸の病気でもリハビリテーションという概念はあると思っています。
病気になれば機能を失う、ある機能はリハビリテーションにより回復しますから適切な時期にリハビリテーションをはじめる必要があるのです。「日柄もの」はポジティブの加減が良い塩梅で、理解できるかできないかでずいぶん患者さんの人生も違ってくるのかもしれません。