image/w/js/webui.js

Mon, 17 May 2021 20:44:35 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 17 May 2021 20:44:35 +0200
changeset 91
255a75322212
parent 79
cb5c73a8ae90
child 116
bafc2d6a0790
permissions
-rw-r--r--

Added 7 sgemnt fonts for the web client. Log messages in the components more compact. Added fonts mime-types to the webserver. Switched to stable esp-idf 4.2.1. Upgraded the SD-mmc card API.

/* js/webui.js */

$('#wsstatus').html('WebSocket is not connected');
var websocket = new ReconnectingWebSocket('ws://'+location.hostname+'/ws');

var Beep= new Audio( "data:audio/wav;base64,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 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=" );

var BBScreen={

    Screen: -1,
    Subscreen: 0,
    setTimer: function(v){
	$("#timer").text('');
	if (v == 0) {
            $("#timer").css("font-size", "16px");
	    $("#timer").css("font-weight", "normal");
	    $("#timer").css("font-family", "Verdana, Arial, sans-serif");
            $("#timer").css("color", "#ffa400");
	} else {
	    $("#timer").css("font-size", "32px");
	    $("#timer").css("font-weight", "bold");
	    $("#timer").css("font-family", "DSEG7-Classic, Courier New, Lucida Console");
	    $("#timer").css("color", "#00ff00");
	}
    },
    clearScreen: function(){
	$("#mltline").hide();
	$("#mlt_table").hide();
	$("#mlt00").hide();
        $("#mlt20").hide();
        $("#mlt01").hide();
        $("#mlt21").hide();
        $("#midline").hide();
	this.setTimer(0);
        $("#mid00").hide();
        $("#mid20").hide();
	$("#mid00").css("background-color", "#e7e7e7");
        $("#mid00").css("color", "black");
        $("#hltline").hide();
	$("#hlt_table").hide();
	$("#hlt00").hide();
        $("#hlt20").hide();
        $("#hlt01").hide();
        $("#hlt21").hide();
	$("#hlt01").css("background-color", "#e7e7e7");
        $("#hlt01").css("color", "black");
	$("#row_info").hide();
        $("#prompt").hide();
	$("#button_nee").css("background-color", "#e7e7e7");
        $("#button_nee").css("color", "black");
        $("#note").hide();
	$("#brew").hide();
    },
    setScreen: function(s){
	Screen = parseInt(s,10);
	switch (Screen) {
            case 0:	this.clearScreen();
			$("#mltline").show();
			$("#mlt_table").show();
			$("#but00").text('Hand');
			$("#but20").text('Auto');
			$("#mlt00").show();
                	$("#mlt20").show();
			$("#midline").show();
			this.setTimer(0);
			$("#hltline").show();
			$("#hlt_table").show();
			$("#hlt01").show();
			$("#but04").text('Info');
			// No tools button on the web.
			break;
	    case 2:     this.clearScreen();
                        $("#row_info").show();
                        break;
	    case 96:	break;	// Automaat show recipe and Stop / Start
	    case 98:	break;	// Delay start
	    case 99:	this.clearScreen(); // heatup
			$("#mltline").show();
			$("#mlt_table").show();
			$("#midline").show();
			$("#hltline").show();
                        $("#hlt_table").show();
			break;
	    case 100:	break;	// All handled at Subscreen
	    case 120:	this.clearScreen();
			$("#mltline").show();	// to boil
			$("#mlt_table").show();
			$("#mlt00").show();
                        $("#mlt20").show();
                        $("#but00").text('+sp');
                        $("#but20").text('-sp');
			break;
            case 121:	this.clearScreen();
			$("#mltline").show();	// boil
			$("#mlt_table").show();
			$("#mlt00").show();
                        $("#mlt20").show();
                        $("#but00").text('+sp');
                        $("#but20").text('-sp');
			$("#midline").show();
			$("#mid00").show();
                        $("#mid20").show();
                        $("#but02").text('+%');
                        $("#but22").text('-%');
			this.setTimer(1);
			$("#hltline").show();
			$("#hlt01").show();
                        $("#hlt21").show();
                        $("#but04").text('+1m');
                        $("#but24").text('-1m');
			break;
	    case 122:	// whirlpool 9
	    case 123:	// cooling H
	    case 124:	// whirlpool 7
	    case 125:	// cooling M
	    case 126:	// whirlpool 6
	    case 127:	// cooling C
	    case 128:	// whirlpool 2
			break;
	    case 129:	this.clearScreen();
                        $("#note").show();
			$("#note_msg").text('Brouwen is gereed.');
			break;
	    case 130:	this.clearScreen();
                        $("#note").show();
                        $("#note_msg").text('Brouwen is afgebroken.');
			break;
	    case 97:
	    case 200:	this.clearScreen();
			$("#prompt").show();
			break;
	    case 201:	this.clearScreen();
			$("#mltline").show();
			$("#but00").text('+sp');
			$("#but20").text('-sp');
			$("#but01").text('Pomp');
			$("#but21").text('Aan');
			$("#midline").show();
			$("#hltline").show();
			$("#but03").text('+sp');
                        $("#but23").text('-sp');
                        $("#but04").text('Stop');
                        $("#but24").text('Aan');
			$("#hlt01").show();
			$("#hlt01").css("background-color", "#575757");
			$("#hlt01").css("color", "white");
			break;
            default:    this.clearScreen();
                        console.log("this is default screen "+Screen);
                        break;
	}
    },
    setSubscreen: function(s){
        Subscreen = parseInt(s,10);
        console.log("Screen:"+Screen+" Sub:"+Subscreen);
	if (Screen == 96) {
	    this.clearScreen();
	    if (Subscreen == 0) {
		$("#prompt").show();
                $("#button_ja").text('Ja');
                $("#button_nee").text('Nee');
	    } else if (Subscreen == 1) {
		$("#brew").show();
	    }
	} else if ((Screen >= 100) && (Screen < 120)) {
	    this.clearScreen();
            $("#mltline").show();
            $("#mlt_table").show();
	    $("#midline").show();
            $("#hltline").show();
	    $("#hlt_table").show();
            switch (Subscreen) {
		case 0:	// MASH_NONE
		case 1:	// MASH_WAITTEMP
                        $("#mlt00").show();
                        $("#mlt20").show();
			$("#but00").text('+sp');
                        $("#but20").text('-sp');
                        break;
		case 2:	// MASH_REST
			this.setTimer(1);
			$("#mid00").show();
                        $("#mid20").show();
                        $("#but02").text('+1m');
                        $("#but22").text('-1m');
			break;
		case 3:	// MASH_ADD
		case 4:	// MASH_IODINE
		case 5:	// MASH_REMOVE
		case 6:	// MASH_INFUSE
		case 7: // MASH_DECOCT
			this.setTimer(0);
			$("#mid00").show();
			$("#mid00").css("background-color", "#575757");
                        $("#mid00").css("color", "white");
                        $("#mid20").show();
			$("#but02").text('Halt');
                        $("#but22").text('Ok');
			break;
	    };
	} else if ((Screen == 123) || (Screen == 125) || (Screen == 127)) { // cooling H,M,C
	    this.clearScreen();
	    if (Subscreen == 0) {
		$("#prompt").show();
		$("#button_ja").text('Start');
                $("#button_nee").text('Stop');
		$("#button_nee").css("background-color", "#575757");
                $("#button_nee").css("color", "white");
	    } else if (Subscreen >= 1) {
		$("#mltline").show();
                $("#mlt_table").show();
                $("#mlt00").show();
                $("#mlt20").show();
                $("#but00").text('+1');
                $("#but20").text('-1');
                $("#hltline").show();
		$("#hlt01").show();
                $("#but04").text('Stop');
		$("#hlt01").css("background-color", "#575757");
                $("#hlt01").css("color", "white");
		if (Subscreen == 1) {
		    $("#hlt21").hide();
                    $("#but24").text('');
		}
		if (Subscreen == 2) {
		    $("#hlt21").show();
                    $("#but24").text('Pomp');
		}
	    }
	} else if ((Screen == 122) || (Screen == 124) || (Screen == 126) || (Screen == 128)) { // whirlpools
	    this.clearScreen();
            if (Subscreen == 0) {
        	$("#prompt").show();
                $("#button_ja").text('Start');
                $("#button_nee").text('Stop');
		$("#button_nee").css("background-color", "#575757");
                $("#button_nee").css("color", "white");
	    } else if (Subscreen == 1) {
		$("#mltline").show();
                $("#mlt_table").show();
		$("#midline").show();
		this.setTimer(1);
                $("#mid00").show();
                $("#mid20").show();
                $("#but02").text('-1m');
                $("#but22").text('+1m');
		$("#hltline").show();
                $("#hlt21").show();
                $("#but24").text('Pomp');
            }
	};
    },
    MLT_pv: function(s) {
	$("#mlt_pv").text(s);
    },
    MLT_sp: function(s) {
	$("#mlt_sp").text(s);
	if (Screen == 201) {
	    if (s != "") {
		$("#mlt00").show();
                $("#mlt20").show();
		$("#mlt01").show();
                $("#mlt21").show();
		$("#mlt_table").show();
	    }
	}
    },
    MLT_power: function(s) {
	$("#mlt_power").text(s);
	if (Screen == 201) {
	    if (s != "") {
		$("#but21").text('Uit');
	    } else {
		$("#but21").text('Aan');
	    }
	}
    },
    MLT_led: function(s) {
	if (s == 0)
	    $("#mlt_led").css("background-color", "#270");
	else
	    $("#mlt_led").css("background-color", "#5E0");
    },
    Pump_led: function(s) {
	if (s == 0)
	    $("#pump_led").css("background-color", "#820");
	else
	    $("#pump_led").css("background-color", "#F40");
    },
    HLT_pv: function(s) {
	$("#hlt_pv").text(s);
    },
    HLT_sp: function(s) {
	$("#hlt_sp").text(s);
	if (Screen == 201) {
            if (s != "") {
                $("#hlt00").show();
                $("#hlt20").show();
                $("#hlt21").show();
		$("#hlt_table").show();
            }
	}
    },
    HLT_power: function(s) {
	$("#hlt_power").text(s);
	if (Screen == 201) {
            if (s != "") {
                $("#but24").text('Uit');
            } else {
                $("#but24").text('Aan');
            }
        }
    },
    HLT_led: function(s) {
	if (s == 0)
	    $("#hlt_led").css("background-color", "#270");
	else
	    $("#hlt_led").css("background-color", "#5E0");
    },
    Topmessage: function(s) {
	$("#top_msg").text(s);
    },
    Timer: function(s) {
	$("#timer").text(s);
    },
    Brew1: function(s) {
	$("#brew_msg1").text(s);
    },
    Brew2: function(s) {
        $("#brew_msg2").text(s);
    },
    Beep: function(s) {
	var loop = parseInt(s,10);
	Beep.pause();
	Beep.loop = false;
	for (i = 0; i < loop; i++) {
	    Beep.play();
	}
    },
};

var BrewBoard = {

    p_msg:function(e){
	var b=this;
	var a=JSON.parse(e);
	var c={
	    main: function(v){
		BBScreen.setScreen(v)
	    },
	    sub: function(v){
                BBScreen.setSubscreen(v)
            },
	    mlt_pv:function(v){
		BBScreen.MLT_pv(v)
	    },
	    mlt_sp:function(v){
		BBScreen.MLT_sp(v)
	    },
	    mlt_power:function(v){
		BBScreen.MLT_power(v)
	    },
	    mlt_led:function(v){
		BBScreen.MLT_led(v)
	    },
	    pump_led:function(v){
		BBScreen.Pump_led(v)
	    },
	    hlt_pv:function(v){
		BBScreen.HLT_pv(v)
	    },
	    hlt_sp:function(v){
		BBScreen.HLT_sp(v)
	    },
	    hlt_power:function(v){
		BBScreen.HLT_power(v)
	    },
	    hlt_led:function(v){
		BBScreen.HLT_led(v)
	    },
	    top_msg:function(v){
		BBScreen.Topmessage(v)
	    },
	    timer:function(v){
		BBScreen.Timer(v)
	    },
	    beep:function(v){
                BBScreen.Beep(v)
            },
	    brew1:function(v){
		BBScreen.Brew1(v)
	    },
	    brew2:function(v){
                BBScreen.Brew2(v)
            },
	};
	$.each(a,function(k,v){
	    if (typeof(c[k])!="undefined"){
		c[k](v)
	    }
	});
    }
};


function sendTouch(x, y) {
    websocket.send('{"touch":{"x":'+x+',"y":'+y+'}}');
}


/* Define keys in the screens and their actions. */
$("#ok_info").click( function() { sendTouch(160,220); });
$("#ok_note").click( function() { sendTouch(160,220); });
$("#mlt00").click( function()   { sendTouch( 35, 46); });
$("#mlt20").click( function()   { sendTouch(285, 46); });
$("#mlt01").click( function()   { sendTouch( 35, 96); });
$("#mlt21").click( function()   { sendTouch(285, 96); });
$("#mid00").click( function()   { sendTouch( 35,140); });
$("#mid20").click( function()   { sendTouch(285,140); });
$("#hlt00").click( function()   { sendTouch( 35,170); });
$("#hlt20").click( function()   { sendTouch(285,170); });
$("#hlt01").click( function()   { sendTouch( 35,220); });
$("#hlt21").click( function()   { sendTouch(285,220); });
$("#button_ja").click( function()  { sendTouch( 80,120); });
$("#button_nee").click( function() { sendTouch(240,120); });
$("#button_stop").click( function()  { sendTouch( 35,220); });
$("#button_start").click( function() { sendTouch(285,220); });

websocket.onopen = function(evt) {
  console.log('WebSocket connection opened');
  $('#wsstatus').html('');
}

/*
 * Process received websocket messages.
 */
websocket.onmessage = function(evt) {
    var msg = evt.data;
    var value;
    switch (msg.charAt(0)) {
	case '{':
		BrewBoard.p_msg(evt.data);
		break;
	default:
		document.getElementById("output").innerHTML = evt.data;
		break;
    }
}

websocket.onclose = function(evt) {
    console.log('Websocket connection closed');
    $('#wsstatus').html('WebSocket closed');
}

websocket.onerror = function(evt) {
    console.log('Websocket error: ' + evt);
    $('#wsstatus').html('WebSocket error ' + evt.data);
}

mercurial