前記事で保存した予定表を読み込んで表示する。読み込むタイミングは、「予定表用のタグ」コンボボックスでタグを選択したときとする。
- コンボボックスのイベントハンドラを追加する:setCbxTagPlan()
コンボボックス(#cbxTagPlan)を初期化する際に、イベントハンドラを設定しておく。具体的には、タグを選択した際に、対応する予定データをデータストアから読み込む関数(loadPlan())を呼び出すようにする。
// JavaScript function setCbxTagPlan(tags){ $('#cbxTagPlan').combobox({ valueField: 'tag_key', textField: 'tag_name', multiple: false, data: tags, onSelect: function(){ loadPlan($('#cbxTagPlan').combobox('getValue'));//引数はタグ名 }, onUnselect: function(){ //現状不要 } }); }
データストアから予定データを読み込む。その際はGAEの機能を利用して、property名:spot_tagの内容が「対応するtag名」になっているentityのみを取り出す。
(RDBのSQLで言えば ‘SELECT FROM SpotPlan WHERE spot_tag = ‘tag’ のようなイメージ。)
// JavaScript function loadPlan(tag){ var sort = 'spot_time:ASCENDING'; // 時間順でソート var query = 'spot_tag:' + tag; // spot_tagでフィルタリング gDSspotPlan.dbRevAll2(sort, query, function(plans){ // 読込後の処理 } }
予定データが空の場合(=タグは作成したが、予定を保存しなかった場合)は、プロンプトを表示して、予定表テーブルを初期化指定してよいかを確認する。OKを選択した場合は、予定表テーブルをロード時の状態に戻す。キャンセルを選択した場合は、何もせず現在のテーブルの内容を残す。
予定データが空でない場合は、(1)予定表データをテーブルに表示し、(2)地図にマーカーを表示し、(3)spotデータを保持する。コードは以下のイメージ。
// JavaScript if (plans == null) { // 予定データがない場合 xumiscMessage('No plan data for tag [' + tag + ']'); $.messager.confirm('Confirm','...?',function(r){ if (r){ $('#tblPlanSpot1').empty();// テーブルをクリアする initDisp_tblPlan(); // 時刻のみ設定した空の行を作成 } }); } else { // 予定データがある場合 showTblPlan($('#tblPlanSpot1'), plans); // 予定表テーブルを表示(1) drawPlanMarkersOnload(plans); // 地図マーカーを表示(2) gSpotPlanBuf.length = 0; // 保持していたspotデータをいったんクリア for (var i=0; i < plans.length; i++){ gSpotPlanBuf.push(plans[i]); // 各spotデータを保持(plan/spotデータはほぼ同じ) } }