ClementRomac's picture
ClementRomac HF staff
Added interactive demo with some policies
09a6f7f
raw
history blame
No virus
2.69 kB
import Component from '../lib/component.js';
import store from '../store/index.js';
/**
* @classdesc UI component for the main buttons.
*/
export default class MainButtons extends Component {
/**
* @constructor
*/
constructor() {
super({
store,
element: document.querySelector('#mainButtons'),
eventName: 'mainButtonsChange'
});
}
/**
* Renders the run, reset and save buttons.
*/
render() {
const status = store.state.simulationState.status;
let runButton = this.element.querySelector("#runButton");
let resetButton = this.element.querySelector("#resetButton");
let saveEnvButton = this.element.querySelector('#saveEnvButton');
let dict = window.lang_dict[store.state.language]['mainButtons'];
// Disables buttons while drawing
if(store.state.drawingModeState.drawing){
runButton.className = "btn btn-success disabled";
runButton.title = dict['runBtnTooltip'];
resetButton.className = "btn btn-danger disabled";
saveEnvButton.className = "btn btn-primary mx-3 disabled";
}
// Enables buttons when not drawing
else{
// Turns run button into pause button while running
if (status == 'running') {
runButton.className = "btn btn-warning";
runButton.childNodes[0].classList.add("fa-pause");
runButton.childNodes[0].classList.remove("fa-play");
runButton.title = dict['pauseBtnTooltip'];
}
// Turns pause button into run button when not running
else {
runButton.className = "btn btn-success";
runButton.childNodes[0].classList.remove("fa-pause");
runButton.childNodes[0].classList.add("fa-play");
runButton.title = dict['runBtnTooltip'];
}
// Disables save button during intro tour
if(store.state.simulationState.intro_tour){
saveEnvButton.className = "btn btn-primary mx-3 disabled";
}
else{
saveEnvButton.className = "btn btn-primary mx-3";
saveEnvButton.title = dict['saveBtnTooltip'];
}
resetButton.className = "btn btn-danger";
resetButton.title = dict['resetBtnTooltip'];
}
/* Initializes tooltips */
this.element.querySelectorAll('[data-bs-toggle="tooltip"]').forEach((el, index) => {
return new bootstrap.Tooltip(el, {
trigger: 'hover'
});
});
}
};