| Table of Contents |
CxB RankPoint Simulatorのデータベースに登録されているデータをJSONで取得できます
公開インタフェースはすべてJSONPに対応しています。Content-Typeは以下で返却します
| 項目 | 説明 |
|---|---|
| 楽曲番号(必須) | コレクションでの連番に準じる番号 |
| コールバック関数名(任意) | 指定がある場合、コールバック関数でデータをくくってJSONP形式で返却します |
フィールドの出現順序は不定です(保証しません)
| フィールド | キー名 | 型 | 説明 | |
| 楽曲番号 | number | numeric | コレクションでの連番に準じる番号 | |
|---|---|---|---|---|
| タイトル | title | string | 楽曲のタイトル(サブタイトルを除く) | |
| サブタイトル | subtitle | string | 楽曲のサブタイトル(ない場合はnull) | |
| フルタイトル | full_title | string | 楽曲の全体タイトル(タイトル+半角スペース+サブタイトル) | |
| 期間限定フラグ | limited | bool | 未配信のイベント先行出現曲の場合にtrue、それ以外はfalse | |
| 月間RP曲フラグ | monthly | bool | リクエスト時点の月間RP曲である場合にtrue、それ以外はfalse | |
| STANDARD譜面情報 | std | (ネスト) | ||
| ├ | レベル | level | numeric | 譜面の設定レベル(float値で返却します) |
| └ | ノート数 | notes | numeric | 譜面の総ノート数(ノート種類は区別しません) |
| HARD譜面情報 | hrd | (ネスト) | ||
| ├ | レベル | level | numeric | 同上 |
| └ | ノート数 | notes | numeric | |
| MASTER譜面情報 | mas | (ネスト) | ||
| ├ | レベル | level | numeric | 同上 |
| └ | ノート数 | notes | numeric | |
| EASY譜面情報 | esy | (ネスト) | ||
| ├ | レベル | level | numeric | null固定 |
| └ | ノート数 | notes | numeric | null固定 |
| UNLIMITED譜面情報 | unl | (ネスト) | ||
| ├ | レベル | level | numeric | null固定 |
| └ | ノート数 | notes | numeric | null固定 |
| 項目 | 説明 |
|---|---|
| コールバック関数名(任意) | 指定がある場合、コールバック関数でデータをくくってJSONP形式で返却します |
単曲取得と同じ構成のオブジェクトを配列にして、データベースにあるすべての楽曲データを返却します。配列の並びは楽曲番号の昇順です
プレイ成績データをJSON形式でPOST送信することで、Webでのログインを経ずに直接データの編集ができます
Content-Typeはapplication/jsonで送信(application/x-www-form-urlencodedにはしない)
1曲単位の更新のみ受け付けます(複数更新する場合はその件数だけリクエストする)
ここに含まれるキー以外はすべて無視します
| フィールド | キー名 | 型 | 説明 | ||
| ユーザID | user_id | string | ユーザのID(数字5ケタ) | ||
|---|---|---|---|---|---|
| パスワード | password | string | ユーザのパスワード | ||
| 楽曲番号 | number | numeric | コレクションでの連番に準じる番号 | ||
| プレイ成績データ | skill | (ネスト) | |||
| ├ | コメント | comment | string | プレイ成績データに関するコメント | |
| ├ │ │ │ │ │ │ │ | STANDARD譜面 | std | (ネスト) | (※省略可能にする予定: 未プレイ状態にする) | |
| ├ | プレイ状態 | stat | numeric | 0:未プレイ、1:クリア済み、2:クリア失敗 | |
| ├ | RP | point | numeric | 譜面のRP(小数点以下2ケタのfloat値) | |
| ├ | クリアレート | rate | numeric | 譜面のクリアレート(0~100のint値) | |
| ├ | クリアレート | rank | numeric | 0:指定なし、1:S++、2:S+、~、9:D、10:E | |
| ├ | フルコンボ | fcs | numeric | 0:指定なし、1:フルコンボ、2:All Flawless(エクセ) | |
| └ | ロック状態 | locked | numeric | 0:ロックなし、1:ロック状態(または未所持) | |
| ├ │ │ │ │ │ │ │ | HARD譜面 | hrd | (ネスト) | ||
| ├ | プレイ状態 | stat | numeric | 同上 | |
| ├ | RP | point | numeric | ||
| ├ | クリアレート | rate | numeric | ||
| ├ | クリアレート | rank | numeric | ||
| ├ | フルコンボ | fcs | numeric | ||
| └ | ロック状態 | locked | numeric | ||
| ├ │ │ │ │ │ │ │ | MASTER譜面 | mas | (ネスト) | ||
| ├ | プレイ状態 | stat | numeric | 同上 | |
| ├ | RP | point | numeric | ||
| ├ | クリアレート | rate | numeric | ||
| ├ | クリアレート | rank | numeric | ||
| ├ | フルコンボ | fcs | numeric | ||
| └ | ロック状態 | locked | numeric | ||
HTTPステータスコードで処理結果を返却します
| 成否 | ステータス | 説明 | |
|---|---|---|---|
| 成功 | 200 | OK | 更新(または新規作成)成功 |
| 失敗 | 400 | Bad Request | 送信データ不備(該当曲が存在しない、バリデーションを通らないなど) |
| 401 | Unauthorized | ユーザ認証失敗(パスワード間違いなど) | |
| 405 | Method Not Allowed | リクエストがPOSTメソッドでない | |
| 500 | Internal Server Error | その他の内部エラー(プログラム側のバグかも) | |
(function(jQuery) {
// プログレスダイアログ
jQuery.progress = function (title) {
if (jQuery('body').find('#progress-dialog').length == 0) {
jQuery('body').append('<div id="progress-dialog"><table id="progress-table"><tbody><tr><td id="progress-message1"></td></tr><tr><td id="progress-message2"></td></tr><tr><td><div id="progressbar"></div></td></tr></tbody></table></div>');
jQuery('#progress-dialog').dialog({
title: title, autoOpen: false, modal: true, width: 450, height: 260,
draggable: false, resizable: false, closeOnEscape: false,
buttons: {
'キャンセル': function () {
jQuery.progress.cancel();
if (jQuery.progress.cancelCallback) {
jQuery.progress.cancelCallback();
}
}
}
});
jQuery('#progress-table').css('width', '100%');
jQuery('#progress-table').css('font-size', '1.1em');
jQuery('#progress-table tr td').css('height', '1.4em');
}
return this.extend(jQuery.progress, {
open: function (cancelCallback) {
this.canceled = false;
this.cancelCallback = cancelCallback;
jQuery('#progress-type').text('');
jQuery('#progress-title').text('');
jQuery('#progressbar').progressbar({
max: 0, value: false
});
jQuery('#progress-dialog').dialog('open');
jQuery('.ui-dialog-titlebar-close').hide();
return this;
},
close: function () {
jQuery('#progress-dialog').dialog('close');
},
cancel: function () {
console.log('canceled!');
this.canceled = true;
},
isCanceled: function () {
return this.canceled;
},
setMessage1: function (message) {
jQuery('#progress-message1').text(message);
},
setMessage2: function (message) {
jQuery('#progress-message2').text(message);
},
setProgressbarMax: function (max) {
jQuery('#progressbar').progressbar({
max: max, value: 0
});
},
incProgressbarValue: function () {
jQuery('#progressbar').progressbar('value', jQuery('#progressbar').progressbar('value') + 1);
}
});
};
// メッセージ表示ダイアログ
jQuery.alert = function (message, title) {
var deferred = jQuery.Deferred();
if (jQuery('body').find('#alert-dialog').length == 0) {
jQuery('body').append('<div id="alert-dialog"><p id="alert-message"></p></div>');
jQuery('#alert-dialog').dialog({
title: title, autoOpen: false, modal: true, width: 450, height: 250,
draggable: false, resizable: false, closeOnEscape: false,
buttons: {
'OK': function () {
jQuery('#alert-dialog').dialog('close');
deferred.resolve();
}
}
});
}
jQuery('#alert-message').text(message);
jQuery('#alert-dialog').dialog('open');
jQuery('.ui-dialog-titlebar-close').hide();
return deferred.promise();
};
// 確認ダイアログ
jQuery.confirm = function (message, title, acceptCallback, cancelCallback) {
var deferred = jQuery.Deferred();
jQuery.confirm.self = this;
jQuery.confirm.self.acceptCallback = acceptCallback;
jQuery.confirm.self.cancelCallback = cancelCallback;
if (jQuery('body').find('#confirm-dialog').length == 0) {
jQuery('body').append('<div id="confirm-dialog"><p id="confirm-message"></p></div>');
jQuery('#confirm-dialog').dialog({
title: title, autoOpen: false, modal: true, width: 450, height: 250,
draggable: false, resizable: false, closeOnEscape: false,
buttons: {
'はい': function () {
jQuery('#confirm-dialog').dialog('close');
jQuery.confirm.self.acceptCallback();
deferred.resolve();
},
'いいえ': function () {
jQuery('#confirm-dialog').dialog('close');
jQuery.confirm.self.cancelCallback();
deferred.reject();
}
}
});
}
jQuery('#confirm-message').text(message);
jQuery('#confirm-dialog').dialog('open');
jQuery('.ui-dialog-titlebar-close').hide();
return deferred.promise();
};
})(jQuery);