Fixed option to override 'state' property of a saved machine

This commit is contained in:
Jeff Parsons 2016-02-17 17:50:23 -08:00
commit 4bb7c65208
7 changed files with 132 additions and 10 deletions

View file

@ -1206,7 +1206,7 @@ ef.prototype={constructor:ef,value:function(){return this[this.id]},data:functio
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function kr(a,b){a[a.id]={};b&&ff(a,"parms",b);a.A=!1}function lr(a){var b=!0;if(Ga()){var c=JSON.stringify(a[a.id]);Ia(a.key,c)||(Ca("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function mr(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){Ca(c.message||c),b=!1}return b}function nr(a,b){return a[a.id][b]||null}function ff(a,b,c){try{a[a.id][b]=c}catch(d){}}
function or(a,b,c){Ya.call(this,"Computer",a,or,67108864);this.ra.hc=!1;pr(this,b);this.da=Qo(this,"autoPower",a);this.R=0;this.wa=a.busWidth||a.buswidth;this.A=qr;this.W=null;this.P=this.ta=!1;this.za=Qo(this,"url")||"";this.Ba=(Math.random()+.1).toString(36).substr(2,12);this.C=rr(this);if(this.M=mb("CPU",this.id)){this.ma=mb("Debugger",this.id);this.ja=new Rb({id:this.re+".bus",buswidth:this.wa},this.M,this.ma);var d,e=kb(this.id);if((this.Wd=mb("Panel",this.id))&&this.Wd.Af)for(b=0;b<e.length;b++)d=
e[b],d.Ua=this.Wd.Ua,d.U=this.Wd.U,d.Af=this.Wd.Af;for(b=0;b<e.length;b++)d=e[b],d.Jc&&d.Jc(this,this.ja,this.M,this.ma);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.Y=d:this.A=parseInt(d,10));var f;if(a=bb&&bb.state||Qo(this,"state")||(f=!0,a.state))b=this.ka=a,f||(this.P=!0,this.A=qr),this.A&&(this.X=new ef(this,sr),this.X.load()?b=null:delete this.X);!b&&this.A&&(f=null,this.C&&(f=Aa()+"/api/v1/user?req=load&user="+this.C+"&state="+jr(this,sr)),b=f)&&(this.P=!0);b?za(b,!0,null,this,this.vk):
yb(this);this.xa.power||(this.da=!0);!c&&this.da&&tr(this,this.Xf)}else Ca("Unable to find CPU component")}hb(or);var sr="1.20.9",qr=0;h=or.prototype;h.df=function(){return this.Ba};function pr(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){Ca(d.message+" ("+c+")")}}a.ia=b}function Qo(a,b,c){var d=null;a.ia&&(d=a.ia[b]);null==d&&c&&(d=c[b]);null==d&&"object"==typeof resources&&resources[b]&&(d=b);return d}h.he=function(){return this.C||""};
yb(this);this.xa.power||(this.da=!0);!c&&this.da&&tr(this,this.Xf)}else Ca("Unable to find CPU component")}hb(or);var sr="1.20.9",qr=0;h=or.prototype;h.df=function(){return this.Ba};function pr(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){Ca(d.message+" ("+c+")")}}a.ia=b}function Qo(a,b,c){var d;a.ia&&(d=a.ia[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}h.he=function(){return this.C||""};
h.vk=function(a,b,c){c?(this.Y=null,this.P=!1,this.Ua("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(this.W=b,this.ta=!0);yb(this)};function tr(a,b,c){for(var d=kb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!zb(f)){zb(f,function(){tr(a,b,c)});return}}b.call(a,c)}
function ur(a,b){var c=new ef(a,sr,"validate");if(c.load()&&mr(c)){var d=nr(c,"timestamp"),e=b?nr(b,"timestamp"):"unknown";d!=e&&(a.Ua("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
h.Xf=function(a){void 0===a&&(a=this.A||(this.W?1:qr));if(!this.R){this.R++;var b=!1,c=!1;this.qa=!1;var d=this.X||new ef(this,sr);if(-1==a)b=!0;else if(a>qr){if(d.load(this.W)){this.O=new ef(this,sr,"failsafe");this.O.load()&&(vr(this,d),a=2,kr(this.O));ff(this.O,"timestamp",ta());lr(this.O);var e=this.A&&!this.P;if(1==a||Ea("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=mr(d)){var f=nr(d,"code"),g=nr(d,"data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=

View file

@ -1025,7 +1025,7 @@ Td.prototype={constructor:Td,value:function(){return this[this.id]},data:functio
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function Qm(a,b){a[a.id]={};b&&D(a,"parms",b);a.A=!1}function Rm(a){var b=!0;if(ta()){var c=JSON.stringify(a[a.id]);va(a.key,c)||(g("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Sm(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){g(c.message||c),b=!1}return b}function Tm(a,b){return a[a.id][b]||null}function D(a,b,c){try{a[a.id][b]=c}catch(d){}}
function Um(a,b,c){Ha.call(this,"Computer",a,Um);this.ja.Qb=!1;Vm(this,b);this.S=Zl(this,"autoPower",a);this.F=0;this.ta=a.busWidth||a.buswidth;this.B=Wm;this.T=null;this.J=this.ha=!1;this.ka=Zl(this,"url")||"";this.na=(Math.random()+.1).toString(36).substr(2,12);this.D=Xm(this);if(this.A=Ua("CPU",this.id)){this.Ta=Ua("Debugger",this.id);this.oa=new qb({id:this.mf+".bus",buswidth:this.ta},this.A,this.Ta);var d,e=Sa(this.id);if((this.md=Ua("Panel",this.id))&&this.md.hg)for(b=0;b<e.length;b++)d=e[b],
d.Ha=this.md.Ha,d.pc=this.md.pc,d.hg=this.md.hg;for(b=0;b<e.length;b++)d=e[b],d.nc&&d.nc(this,this.oa,this.A,this.Ta);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.N=d:this.B=parseInt(d,10));var k;if(a=Ka&&Ka.state||Zl(this,"state")||(k=!0,a.state))b=this.W=a,k||(this.J=!0,this.B=Wm),this.B&&(this.O=new Td(this,Ym),this.O.load()?b=null:delete this.O);!b&&this.B&&(k=null,this.D&&(k=qa()+"/api/v1/user?req=load&user="+this.D+"&state="+Pm(this,Ym)),b=k)&&(this.J=!0);b?pa(b,!0,null,this,this.qj):$a(this);
this.pa.power||(this.S=!0);!c&&this.S&&Zm(this,this.bf)}else g("Unable to find CPU component")}Pa(Um);var Ym="1.20.9",Wm=0;f=Um.prototype;f.qe=function(){return this.na};function Vm(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){g(d.message+" ("+c+")")}}a.K=b}function Zl(a,b,c){var d=null;a.K&&(d=a.K[b]);null==d&&c&&(d=c[b]);null==d&&"object"==typeof resources&&resources[b]&&(d=b);return d}f.xd=function(){return this.D||""};
this.pa.power||(this.S=!0);!c&&this.S&&Zm(this,this.bf)}else g("Unable to find CPU component")}Pa(Um);var Ym="1.20.9",Wm=0;f=Um.prototype;f.qe=function(){return this.na};function Vm(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){g(d.message+" ("+c+")")}}a.K=b}function Zl(a,b,c){var d;a.K&&(d=a.K[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}f.xd=function(){return this.D||""};
f.qj=function(a,b,c){c?(this.N=null,this.J=!1,this.Ha("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(this.T=b,this.ha=!0);$a(this)};function Zm(a,b,c){for(var d=Sa(a.id),e=0;e<=d.length;e++){var k=e<d.length?d[e]:a;if(!ab(k)){ab(k,function(){Zm(a,b,c)});return}}b.call(a,c)}
function $m(a,b){var c=new Td(a,Ym,"validate");if(c.load()&&Sm(c)){var d=Tm(c,"timestamp"),e=b?Tm(b,"timestamp"):"unknown";d!=e&&(a.Ha("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
f.bf=function(a){void 0===a&&(a=this.B||(this.T?1:Wm));if(!this.F){this.F++;var b=!1,c=!1;this.da=!1;var d=this.O||new Td(this,Ym);if(-1==a)b=!0;else if(a>Wm){if(d.load(this.T)){this.H=new Td(this,Ym,"failsafe");this.H.load()&&(an(this,d),a=2,Qm(this.H));D(this.H,"timestamp",la());Rm(this.H);var e=this.B&&!this.J;if(1==a||ra("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=Sm(d)){var k=Tm(d,"code"),l=Tm(d,"data");k&&("ok"==k?d.load(l):("error"==k&&"no machine state"!=