66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
const PopulationChart = require("./Charts/PopulationChart");
|
|
const SpeciesChart = require("./Charts/SpeciesChart");
|
|
const MutationChart = require("./Charts/MutationChart");
|
|
const CellsChart = require("./Charts/CellsChart");
|
|
const FossilRecord = require("./FossilRecord");
|
|
|
|
|
|
const ChartSelections = [PopulationChart, SpeciesChart, CellsChart, MutationChart];
|
|
|
|
class StatsPanel {
|
|
constructor(env) {
|
|
this.defineControls();
|
|
this.chart_selection = 0;
|
|
this.setChart();
|
|
this.env = env;
|
|
this.last_reset_count=env.reset_count;
|
|
}
|
|
|
|
setChart(selection=this.chart_selection) {
|
|
this.chart_controller = new ChartSelections[selection]();
|
|
this.chart_controller.setData();
|
|
this.chart_controller.render();
|
|
}
|
|
|
|
startAutoRender() {
|
|
this.setChart();
|
|
this.render_loop = setInterval(function(){this.updateChart();}.bind(this), 1000);
|
|
}
|
|
|
|
stopAutoRender() {
|
|
clearInterval(this.render_loop);
|
|
}
|
|
|
|
defineControls() {
|
|
$('#chart-option').change ( function() {
|
|
this.chart_selection = $("#chart-option")[0].selectedIndex;
|
|
this.setChart();
|
|
}.bind(this));
|
|
}
|
|
|
|
updateChart() {
|
|
if (this.last_reset_count < this.env.reset_count){
|
|
this.reset()
|
|
}
|
|
this.last_reset_count = this.env.reset_count;
|
|
this.chart_controller.updateData();
|
|
this.chart_controller.render();
|
|
}
|
|
|
|
updateDetails() {
|
|
var org_count = this.env.organisms.length;
|
|
$('#org-count').text("Total Population: " + org_count);
|
|
$('#species-count').text("Number of Species: " + FossilRecord.numExtantSpecies());
|
|
$('#largest-org').text("Largest Organism Ever: " + this.env.largest_cell_count + " cells");
|
|
$('#avg-mut').text("Average Mutation Rate: " + Math.round(this.env.averageMutability() * 100) / 100);
|
|
|
|
|
|
}
|
|
|
|
reset() {
|
|
this.setChart();
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = StatsPanel; |