Files
external-tools-frontend/_assets/js/app.js
2019-11-30 21:55:29 +02:00

94 lines
2.5 KiB
JavaScript

$('#dataform').on('submit', function (e) {
e.preventDefault();
var inputContent = $.trim( $('#data').val() );
if ( document.getElementById("fileUpload").files.length > 0 ) {
getFileContents( document.getElementById("fileUpload").files[0] );
}
else if (inputContent.length > 0) {
var warData = JSON.parse( inputContent );
initApp(warData, 'withSave', warData);
}
});
function initApp (data, callback, callbackData) {
if( !data.results ||
!data.results[0] ||
!data.results[0].ident == "body" ||
!data.results[1] ||
!data.results[1].ident == "clanWarGetInfo" ||
!data.results[1].result ||
!data.results[1].result.response ) {
return false;
}
console.log(data)
var mapData = data.results[1].result.response;
console.log('data', JSON.parse( JSON.stringify(data)) );
enhanceMap(mapData.enemySlots);
enhanceMap(mapData.ourSlots);
app.map = mapData;
console.log('app.map', JSON.parse( JSON.stringify(mapData)) );
Vue.nextTick(function () {
// Determine which player team has more power: titans or heroes
determineBestTeam('ally');
determineBestTeam('enemy');
// Syncs checkboxes between hero/titan teams
syncCheckboxes();
// Highlights the other player team when the other one is hovered
highlightHovered();
if(callback == 'withSave') {
saveToStorage(callbackData);
}
});
}
var app = new Vue({
el : '#app',
data : {
// the data obtained from the game
map: {}, //mapData,
// maps building names and types of data obtained from the game
mapSlots: mapSlots,
storage: JSON.parse( localStorage.getItem('HeroWarsHistory') ) || []
},
computed: {
// Helps render enemy teams in order by power level
orderedEnemies: function () {
return orderByPower(this.map.enemySlots);
},
// Helps render allied teams in order by power level
orderedAllies: function () {
return orderByPower(this.map.ourSlots);
},
// Renders total team powers: hero, titan, total
getAllyPower: function () {
return getTotalPower(this.map.ourSlots);
},
// Renders total enemy team powers: hero, titan, total
getEnemyPower: function () {
return getTotalPower(this.map.enemySlots);
}
},
filters: {
formatNumber: function (value) {
return value.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
},
unixToLocale: function (value) {
return new Date(value * 1000).toDateString();
}
}
});