77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
class Alert{
|
|
constructor(alert_type, source, state) {
|
|
// The type of alert.
|
|
this.type = alert_type;
|
|
// The source of the alert.
|
|
this.source = source;
|
|
// Other info in the alert.
|
|
this.state = state;
|
|
// The alert messages.
|
|
if (alert_type=='signal'){
|
|
this.msg = 'Signal state change: ' + this.source + ' = ' + this.state;
|
|
}
|
|
if (alert_type=='strategy'){
|
|
this.msg = 'Strategy alert: ' + this.source + ' = ' + this.state;
|
|
}
|
|
}
|
|
alert_source(){
|
|
return this.source;
|
|
}
|
|
alert_type(){
|
|
return this.type;
|
|
}
|
|
alert_state(){
|
|
return this.state;
|
|
}
|
|
alert_msg(){
|
|
return this.msg;
|
|
}
|
|
}
|
|
|
|
class Alerts {
|
|
constructor(target_id) {
|
|
// The list of alert messages.
|
|
this.alerts = [];
|
|
// The html element id that displays the alert messages.
|
|
this.target_id = target_id;
|
|
// The html element that displays the alert messages.
|
|
this.target = null;
|
|
}
|
|
publish_alerts(alert_type, data){
|
|
if (alert_type == 'signal_changes'){
|
|
// If the alert_type is signal changes then data will
|
|
// contain a list of objects with format: { name: str, state: bool }
|
|
console.log('publishing alerts')
|
|
for(let sig in data){
|
|
console.log('publishing single alert');
|
|
this.alerts.push( new Alert('signal', sig, data[sig]) );
|
|
}
|
|
this.update_html();
|
|
|
|
}
|
|
if (alert_type == 'strategy'){
|
|
// If the alert_type is strategy then data will
|
|
// contain a list of objects with format: { name: str, state: bool }
|
|
console.log('publishing strategy alerts')
|
|
this.alerts.push( new Alert('strategy', 'source', data) );
|
|
this.update_html();
|
|
|
|
}
|
|
}
|
|
|
|
update_html(){
|
|
let alerts ='';
|
|
for (let index in this.alerts){
|
|
let alert = this.alerts[index].alert_msg();
|
|
alerts += '<span>' + alert + '</span><br>';
|
|
}
|
|
this.target.innerHTML = alerts;
|
|
}
|
|
|
|
set_target(){
|
|
// This is called after the html document has been parsed.
|
|
this.target = document.getElementById(this.target_id);
|
|
}
|
|
}
|
|
|