/** @module */
import Grid1D from './Grid1D.js'
import Grid2D from './Grid2D.js'
/**
* Show votes
* @param {VoterRendererList} voterRendererList
* @param {CandidateList} candidateList
* @param {Screen} screen
* @constructor
*/
export default function VizOneGrid(voterRendererList, candidateList, screenMain, screenMini, simOptions) {
const self = this
// renderer factory //
const { dimensions } = simOptions
const Grid = (dimensions === 1) ? Grid1D : Grid2D
const rendererMaker = () => new Grid(candidateList, screenMain, screenMini)
voterRendererList.setRenderer(rendererMaker)
self.enter = function () {
if (dimensions === 2) {
screenMini.show()
}
}
self.exit = function () {
screenMini.hide()
}
self.update = function (phaseResults) {
const { error } = phaseResults
if (error !== undefined) return
const { votesByGeom } = phaseResults.votes
voterRendererList.updateGraphic(votesByGeom)
}
self.render = function () {
if (dimensions === 1) {
voterRendererList.renderBackground()
}
voterRendererList.render()
}
}