このウィジェットは、"設定の追加" のチュートリアルのリファレンス実装を表します。 このチュートリアルは以前のチュートリアルに基づいています。Weather underground service のためにハードコードされた値の API キーを使用しました。 これはウィジェットの基本バージョンには十分かもしれませんが、実際は、 これは設定として実装されているほうがよいでしょう。
このチュートリアルでは、"[リクエストとワイヤリング][prev_tutorial]" のチュートリアルから提案された解決策を基本として使います。 このリンクを使ってウィジェットのコードをダウンロードすることが できます。
[prev_tutorial]: 3.1.3_Making\ requests\ and\ wiring
config.xml
に設定を追加config.xml
に設定を追加設定を追加するための最初のステップは、config.xml
ファイル内でそれを宣言する
ことです。これは、preferences
要素に preference
要素を追加することによって
実現できます。最終結果は次のようになります :
...
<preferences>
<preference
name="api_key"
type="text"
description="Weather Underground API key"
label="API key"
/>
</preferences>
...
config.xml
に設定を追加属性の説明 :
name
属性は、JavaScript API を使用するときにこの設定を参照するために
使用されますtype属性
は、この設定を保存しようとしているデータの種類を示します。
有効な値は、ブール値、リスト、番号、パスワード、およびテキストですlabel
属性は、たとえばユーザ・インターフェイスでこの設定の値をユーザに
要求するために使用されます。また、この属性は翻訳できますが、name
属性は翻訳できませんdescription
属性は設定についての詳細な説明を提供するために使用されますconfig.xml
に設定を追加これは同じ宣言ですが、RDF (turtle) を使用します :
...
wire:hasPlatformPreference [ a wire:PlatformPreference ;
rdfs:label "API key" ;
dcterms:description "Weather Underground API key" ;
dcterms:title "api_key" ;
wire:index "0" ;
wire:type "text" ] ;
...
config.xml
に設定を追加list
タイプの設定は、ユーザ・インターフェースで提供されるオプションのリストを
提供する必要があります。これは option
要素を使用することによって達成されます。
この要素には2つの属性が必要です。
value
属性は、ユーザがこのオプションを選択した場合に返される値ですlabel
属性は、このオプション/値を参照する場合、ユーザ・インターフェイスで
使用されます。この属性は翻訳可能ですconfig.xml
に設定を追加これは、リスト設定を宣言する方法の例です :
...
<preferences>
<preference name="list" type="list" label="list" description="list preference" default="default">
<option value="default" label="Default value"/>
<option value="1" label="value1"/>
<option value="2" label="value2"/>
</preference>
</preferences>
...
ウィジェットまたはオペレータの記述子でユーザ設定を宣言したら、
MashupPlatform.prefs.get
メソッドを使用して設定の現在の値を
読み取ることができます。このメソッドは、設定の型に関連付けられた型を使用して
値を返します :
text
, password
, list
タイプの設定には string
number
タイプの設定には number
boolean
設定には boolean
たとえば、前のチュートリアルで使用したコードを考慮してください :
var getForecastByCoord = function getForecastByCoord(coord, onSuccess, onError) {
...
url = 'http://api.wunderground.com/api/' + API_KEY + '/conditions/forecast/q/';
url += coord.lat + ',' + coord.lon;
url += '.json';
MashupPlatform.http.makeRequest(url, {
...
};
次のようにに変換する必要があります :
var getForecastByCoord = function getForecastByCoord(coord, onSuccess, onError) {
...
url = 'http://api.wunderground.com/api/' + MashupPlatform.prefs.get('api_key') + '/conditions/forecast/q/';
url += coord.lat + ',' + coord.lon;
url += '.json';
MashupPlatform.http.makeRequest(url, {
...
};
この変更の後、API_KEY
定数はもう使用されないので、ソースコードから安全に削除できます。
ウィジェットは設定の変更に対応することが必要な場合があります。これは
MashupPlatform.prefs.registerCallback
メソッドを
用いて実現することができます。たとえば、api-key 設定の新しい値が有効でない場合に
備えて、アラート・メッセージをユーザに表示するためにこのサポートを利用できます :
var updateMissingAPIKeyAlert = function updateMissingAPIKeyAlert() {
if (MashupPlatform.prefs.get('api_key').trim().length !== 16) {
document.getElementById('api-key-alert').classList.remove('hide');
} else {
document.getElementById('api-key-alert').classList.add('hide');
}
};
MashupPlatform.prefs.registerCallback(function (new_values) {
if ('api_key' in new_values) {
updateMissingAPIKeyAlert();
}
});
これは、明らかに、設定が変更されたときに設定の値をチェックするだけなので、
ウィジェットがロードされたときに手動で updateMissingAPIKeyAlert
関数を呼び出す
必要があります。これは、次のコードを使用して実現できます :
window.addEventListener('load', function () {
updateMissingAPIKeyAlert();
}, true);
新しいウィジェットを実装したら、期待どおりに機能するかどうかをテストする必要が あります。このウィジェットは、"[リクエストと配線][prev_tutorial]" の手順に 従って作成されたウィジェットが提供する機能と同じです。
設定を追加 | 1 |
---|---|
イントロダクション | 2 |
イントロダクション | 3 |
config.xml に設定を追加 |
4 |
config.xml に設定を追加 |
5 |
config.xml に設定を追加 |
6 |
config.xml に設定を追加 |
7 |
config.xml に設定を追加 |
8 |
config.xml に設定を追加 |
9 |
基本的な使い方 | 10 |
基本的な使い方 | 11 |
基本的な使い方 | 12 |
基本的な使い方 | 13 |
設定の変化に対応 | 14 |
設定の変化に対応 | 15 |
設定の変化に対応 | 16 |
設定をテスト | 17 |
設定をテスト | 18 |
- | 19 |
目次 | t |
---|---|
スライド一覧 | ESC |
フルスクリーン | e |
発表者ビュー | p |
ソースファイル | s |
スライド番号 | n |
画面ブランキングの切り替え | b |
スライド・コンテキストの表示/非表示 | c |
ノート | 2 |
ヘルプ | h |