webxoss-client/Detail.js

151 lines
4.3 KiB
JavaScript
Raw Permalink Normal View History

2016-10-23 07:28:51 +02:00
'use strict';
window.CardDetail = (function () {
function $ (id) {
return document.getElementById(id);
}
function newElement (tag) {
var el = document.createElement(tag);
for (var i = 1; i < arguments.length; i++) {
el.classList.add(arguments[i]);
}
return el;
}
function KeyValue (prop,keyHidden) {
this.prop = prop;
this.keyHidden = keyHidden;
this.value = '';
this.eKey = newElement('td','key',prop);
this.eKey.textContent = Localize.propToKey(prop);
this.eValue = newElement('td','value',prop);
}
function CardDetail (imageManager) {
this.imageManager = imageManager;
this.eDetail = $('detail');
this.eImage = $('detail-card-image');
this.eWxid = $('detail-card-wxid');
this.eName = $('detail-card-name');
this.eLimiting = $('detail-card-limiting');
this.eTable = $('detail-table');
this.eTableBody = $('detail-table-body');
this.kvCardType = new KeyValue('cardType');
this.kvColor = new KeyValue('color');
this.kvLevel = new KeyValue('level');
this.kvClasses = new KeyValue('classes');
this.kvLimit = new KeyValue('limit');
this.kvPower = new KeyValue('power');
this.kvLimting = new KeyValue('limting');
this.kvGuard = new KeyValue('guard');
this.kvCost = new KeyValue('cost');
this.kvTimmings = new KeyValue('timmings');
this.kvEffects = new KeyValue('effects',true);
this.kvBurst = new KeyValue('burst',true);
this._pid = 0;
}
CardDetail.prototype.show = function (pid) {
if (!pid || this._pid === pid) return;
this._pid = pid;
this.eTable.setAttribute('lang',Localize.getLanguage());
this.eTableBody.innerHTML = '';
var info = CardInfo[pid];
this.eWxid.textContent = info.wxid;
2016-10-23 07:28:51 +02:00
this.eName.innerHTML = '';
var link = newElement('a');
link.target = '_blank';
link.href = 'http://www.takaratomy.co.jp/products/wixoss/card/card_list.php?card=card_detail&card_no=' + info.wxid;
link.textContent = Localize.cardName(info);
this.eName.appendChild(link);
this.eLimiting.textContent = Localize.limiting(info);
this.eImage.src = this.imageManager.getUrlByPid(pid);
this.kvColor.value = info.color.split('/').map(Localize.color).join('/');
this.kvCardType.value = Localize.cardType(info);
this.kvEffects.value = Localize.effectTexts(info);
if (inArr(info.cardType,['LRIG','SIGNI','RESONA'])) {
this.kvClasses.value = Localize.classes(info);
this.kvLevel.value = info.level;
}
if (inArr(info.cardType,['LRIG','SPELL','ARTS'])) {
this.kvCost.value = Localize.cost(info);
}
if (inArr(info.cardType,['SIGNI','SPELL'])) {
this.kvBurst.value = Localize.burstEffectTexts(info);
}
if (info.cardType === 'LRIG') {
if (info.limit >= 1024) {
this.kvLimit.value = '∞';
} else {
this.kvLimit.value = info.limit;
}
this.addKeyValue(
[this.kvCardType,this.kvColor],
[this.kvLevel,this.kvClasses],
[this.kvLimit,this.kvCost],
[this.kvEffects]
);
} else if (info.cardType === 'SIGNI') {
this.kvPower.value = info.power;
this.kvGuard.value = Localize.guard(info);
this.addKeyValue(
[this.kvCardType,this.kvColor],
[this.kvLevel,this.kvClasses],
[this.kvPower,this.kvGuard],
[this.kvEffects],
[this.kvBurst]
);
} else if (info.cardType === 'RESONA') {
this.kvPower.value = info.power;
this.kvGuard.value = Localize.guard(info);
this.addKeyValue(
[this.kvCardType,this.kvColor],
[this.kvLevel,this.kvClasses],
[this.kvPower,this.kvGuard],
[this.kvEffects]
);
} else if (info.cardType === 'SPELL') {
this.addKeyValue(
[this.kvCardType,this.kvColor],
[this.kvCost],
[this.kvEffects],
[this.kvBurst]
);
} else if (info.cardType === 'ARTS') {
this.kvTimmings.value = Localize.timmings(info);
this.addKeyValue(
[this.kvCardType,this.kvColor],
[this.kvCost],
[this.kvTimmings],
[this.kvEffects]
);
}
};
CardDetail.prototype.addKeyValue = function () {
for (var i = 0; i < arguments.length; i++) {
var rowArray = arguments[i];
var eRow = newElement('tr');
rowArray.forEach(function (kv) {
kv.eValue.textContent = kv.value;
kv.eValue.removeAttribute('colspan');
if (!kv.keyHidden) eRow.appendChild(kv.eKey);
eRow.appendChild(kv.eValue);
},this);
if (rowArray.length === 1) {
var kv = rowArray[0];
var colspan = kv.keyHidden? 4 : 3;
kv.eValue.setAttribute('colspan',colspan);
}
this.eTableBody.appendChild(eRow);
}
};
return CardDetail;
})();