CCCPaste

02. Bus schedule

function solve() {
    let info=document.getElementById("info");
    let nextStopId="depot";
    let departBtn=document.getElementById("depart");
    let arrivebtn=document.getElementById("arrive");
    let curentStopName="Depot";


    function fetchNext(nextStopId){
        var requestOptions = {
            method: 'GET',
            redirect: 'follow'
          };
          
          fetch(`http://localhost:3030/jsonstore/bus/schedule/${nextStopId}`, requestOptions)
            .then(response => response.text())
            .then(r =>JSON.parse(r))
            .then(r=>update(r))
            .catch(error => kill());
   
    }

    function depart() {
        fetchNext(nextStopId);
        departBtn.disabled=true;
        arrivebtn.disabled=false;
    }

    function arrive() {    
        info.textContent=`Arriving at ${curentStopName}`
        departBtn.disabled=false;
        arrivebtn.disabled=true;
    }

    function update(obj){
      info.textContent=`Next stop ${obj.name}`;
        curentStopName=obj.name;  
        nextStopId=obj.next;     
    }

    function kill(){
        departBtn.disabled=true;
        arrivebtn.disabled=true;
        info.textContent="Error"

    }

    return {
        depart,
        arrive
    };
}

let result = solve();