UnitStatus
by Sure Sure
HTML
Edit in JSFiddle
JavaScript
HTML
CSS
Result
<div class='container'>
<div class='filters'>
<div class='filter-container'>
<input autocomplete='off' class='filter' name='名称' placeholder='名称' />
</div>
<div class='filter-container'>
<input autocomplete='off' class='filter' name='★' placeholder='★' />
</div>
<div class='filter-container'>
<input autocomplete='off' class='filter' name='武器' placeholder='武器' />
</div>
<div class='filter-container'>
<input autocomplete='off' class='filter' name='主属性' placeholder='主属性' />
</div>
<div class='filter-container'>
<input autocomplete='off' class='filter' name='副属性' placeholder='副属性' />
</div>
<div class='clearfix'></div>
</div>
</div>
<div class='container'>
<table id="unitStatusTable">
<thead>
<th>No</th>
<th>名称</th>
<th>★</th>
<th>武器</th>
<th>主属性</th>
<th>副属性</th>
<th>HP</th>
<th>攻撃</th>
<th>回復</th>
</thead>
<tbody>
</tbody>
</table>
<br>
<div>
<a href="http://wedata.net/databases/rtd_unit_status/items">データ管理場所@WeData</a>
<P id="lastUpdate"></P>
<button id="resetData">
データ再取得 (強制更新用。通常は自動で更新されます。)
</button>
<P id="mess"></P>
</div>
CSS
Edit in JSFiddle
JavaScript
HTML
CSS
Result
.actions a {
display: block;
margin: 25px auto 0;
width: 200px;
text-align: center;
background: #b31d14;
color: #c8c8c8;
padding: 6px;
border-radius: 3px;
text-decoration: none;
}
.filters {
margin-bottom: 20px;
}
.filter-container {
float: left;
width: 15%;
padding-right: 10px;
}
.filter-container:last-of-type {
padding-right: 0;
}
.filter-container input {
-webkit-appearance: none;
border: 1px solid #999;
background: #FFF;
border-radius: 2px;
font-size: x-small;
width: 100%;
}
.filter-container input:focus {
outline: none;
}
table {
width: 100%;
border-collapse: collapse;
}
table th {
text-align: left;
border-bottom: 1px solid #043a47;
}
table th,
table td {
padding: 6px 4px;
font-size: x-small;
}
table td {
border-bottom: 1px solid #087891;
font-size: x-small;
}
table tr:last-of-type td {
border-bottom: none;
}
table tr td:last-of-type {
border-right: none;
}
.clearfix {
clear: both;
width: 100%;
}
a,
button,
p,
div {
font-size: xx-small;
text-align: right;
}
.left {
text-align: left;
}
JavaScript
Edit in JSFiddle
JavaScript
HTML
CSS
Result
//データ強制更新ボタン
$("#resetData").click(function() {
$("#mess").text("データ再取得実行中...");
localStorage.removeItem("rtd_unit_status_info");
localStorage.removeItem("rtd_unit_status_items");
getUnitData();
});
//画面描画後処理
$(document).ready(function() {
//データ取得&テーブル生成
getUnitData();
});
/*****************************************************/
//データ取得 getUnitData
//WeDataからJSONPで取得し、localstorageに格納する処理。
//処理完了後に後処理として「getUnitData_after()」を実行する。
// [LocalStorage Key]
// rtd_unit_status_info : WeData基本情報。更新日等を保持。
// rtd_unit_status_items : ユニットステータスデータ本体。
/*****************************************************/
function getUnitData() {
var flgNeedGetJsonData = false;
var chkInfo;
var chkItems;
// ローカルストレージ対応判定
if (!localStorage) {
alert('ローカルストレージに対応したブラウザを使用してください。');
flgNeedGetJsonData = true;
retrun(false);
} else {
//LS存在チェック
chkInfo = localStorage.getItem('rtd_unit_status_info');
chkItems = localStorage.getItem('rtd_unit_status_items');
if (!chkInfo || !chkItems) {
flgNeedGetJsonData = true;
}
}
//LSデータ更新確認(JSONP)rtd_unit_status_info
var url = 'http://wedata.net/databases/rtd_unit_status.json?callback=?';
var chkInfo = JSON.parse(chkInfo);
$.getJSON(url, function(jsonUnitStatusInfo) {
$("#mess").text("データ更新確認中...");
if (flgNeedGetJsonData || (chkInfo['updated_at'] != jsonUnitStatusInfo['updated_at'])) {
localStorage.setItem('rtd_unit_status_info', JSON.stringify(jsonUnitStatusInfo));
flgNeedGetJsonData = true;
}
$("#lastUpdate").text("データ最終更新: " + jsonUnitStatusInfo['updated_at']);
//データ取得が必要な場合
if (flgNeedGetJsonData) {
//データ取得(JSONP)
//取得元:http://wedata.net/databases/rtd_unit_status/items
var url = 'http://wedata.net/databases/rtd_unit_status/items.json?callback=?';
$.getJSON(url, function(jsonUnitData) {
$("#mess").text("データ取得実行中...");
localStorage.setItem('rtd_unit_status_items',...