Files
lifeEngine/src/Stats/StatsPanel.js
MaxRobinsonTheGreat 0b5b29dff6 fixed species/cell stats
2022-04-16 18:47:27 -05:00

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;