diff options
author | amritaH | 2016-06-06 17:12:14 +0530 |
---|---|---|
committer | amritaH | 2016-06-06 17:12:14 +0530 |
commit | 05936ff17159602918fa196c833fa2dda2ec7818 (patch) | |
tree | 1952255c8d1ae6709383b18b6a56f06f1fdb7763 | |
parent | 0c19bf0df37fd28bb65fbda4f61aaeb73e9bac2c (diff) | |
download | eSimWebApp-05936ff17159602918fa196c833fa2dda2ec7818.tar.gz eSimWebApp-05936ff17159602918fa196c833fa2dda2ec7818.tar.bz2 eSimWebApp-05936ff17159602918fa196c833fa2dda2ec7818.zip |
digital model properties added
-rw-r--r-- | views/schematic.html | 9 | ||||
-rw-r--r-- | views/script/gui.js | 17 | ||||
-rw-r--r-- | views/script/gui.js~ | 1526 | ||||
-rw-r--r-- | views/script/netlist.js | 9 | ||||
-rw-r--r-- | views/script/netlist.js~ | 839 | ||||
-rw-r--r-- | views/style/schematic.css | 3 | ||||
-rw-r--r-- | views/style/schematic.css~ | 439 |
7 files changed, 2834 insertions, 8 deletions
diff --git a/views/schematic.html b/views/schematic.html index e24ea83..cec04a8 100644 --- a/views/schematic.html +++ b/views/schematic.html @@ -446,6 +446,15 @@ properties form </fieldset> </td></tr> + <tr id="webtronics_inputload"><td> + <fieldset> + + <legend>Input Load:</legend> + <input id="webtronics_inputload_value" type="text" value="0.5e-12"> + + </fieldset> + </td></tr> + diff --git a/views/script/gui.js b/views/script/gui.js index 74c2bab..2493245 100644 --- a/views/script/gui.js +++ b/views/script/gui.js @@ -6,7 +6,7 @@ globalVariable=0; var webtronics={
- circuit:nul
+ circuit:null,
copy:null,
rightclickmenu:null,
title:null,
@@ -20,7 +20,7 @@ var webtronics={ Vlist:/\s*expression|\s*url|.*script/,
Alist:/^(x|y|x1|y1|x2|y2|dx|dy|cx|cy|r|width|height|transform|d|id|class|fill|stroke|visibility|stroke-width|xmlns|xmlns:wtx|connects|partvalue|flippable|spice|index|font-size|font-weight|font-style|font-family)$/,
- Elist:/^(path|circle|rect|line|text|g|tspan|svg|wtx:eval1|wtx:eval2|wtx:eval3|wtx:eval4|wtx:eval5|wtx:eval6|wtx:pwlval1|wtx:pwlval2|wtx:pwlval3|wtx:pwlval4|wtx:pwlval5|wtx:pwlval6|wtx:pwlval7|wtx:pwlval8|wtx:pulval1|wtx:pulval2|wtx:pulval3|wtx:pulval4|wtx:pulval5|wtx:pulval6|wtx:pulval7|wtx:amplitude|wtx:phase|wtx:offsetvoltage|wtx:voltageamplitude|wtx:frequency|wtx:delaytime|wtx:dampingfactor|wtx:part|wtx:pins|wtx:analog|wtx:digital|wtx:node|wtx:id|wtx:type|wtx:name|wtx:category|wtx:value|wtx:label|wtx:spice|wtx:risedelay|wtx:falldelay|wtx:flip|wtx:model|wtx:measure|metadata|)$/,
+ Elist:/^(path|circle|rect|line|text|g|tspan|svg|wtx:eval1|wtx:eval2|wtx:eval3|wtx:eval4|wtx:eval5|wtx:eval6|wtx:pwlval1|wtx:pwlval2|wtx:pwlval3|wtx:pwlval4|wtx:pwlval5|wtx:pwlval6|wtx:pwlval7|wtx:pwlval8|wtx:pulval1|wtx:pulval2|wtx:pulval3|wtx:pulval4|wtx:pulval5|wtx:pulval6|wtx:pulval7|wtx:amplitude|wtx:phase|wtx:offsetvoltage|wtx:voltageamplitude|wtx:frequency|wtx:delaytime|wtx:dampingfactor|wtx:part|wtx:pins|wtx:analog|wtx:digital|wtx:node|wtx:id|wtx:type|wtx:name|wtx:category|wtx:value|wtx:label|wtx:spice|wtx:risedelay|wtx:inputload|wtx:falldelay|wtx:flip|wtx:model|wtx:measure|metadata|)$/,
/* .lib files contain spice .model devices .mod devices contain .subckt devices and the id must begin with x*/
// serverurls:["http://logical.github.io/webtronix/webtronix_server"],
serverurls:["webtronix_server"],
@@ -130,7 +130,9 @@ returnchip:function(){ openProperties:function(){
document.forms['webtronics_properties_form'].reset();
var c=netlistcreator.readwtx(this.circuit.selected[0],"name");
-
+ $("webtronics_risedelay").style.display='none';
+ $("webtronics_falldelay").style.display='none';
+ $("webtronics_inputload").style.display='none';
if(!c){
netlistcreator.writewtx(this.circuit.selected[0],"name","ic");
}
@@ -514,10 +516,16 @@ openProperties:function(){ if(c=='and'|| c=='not'|| c=='nand'|| c=='or'||c=='nor'||c=='xor'||c=='xnor')
{
+
+ $("webtronics_risedelay").style.display='block';
+ $("webtronics_falldelay").style.display='block';
+ $("webtronics_inputload").style.display='block';
var risedelay = netlistcreator.readwtx(this.circuit.selected[0],"risedelay");
if(risedelay!=""){$(webtronics_part_risedelay).value=risedelay;}
var falldelay = netlistcreator.readwtx(this.circuit.selected[0],"falldelay");
if(falldelay!=""){$(webtronics_part_falldelay).value=falldelay;}
+ var inputload = netlistcreator.readwtx(this.circuit.selected[0],"inputload");
+ if(inputload!=""){$(webtronics_part_inputload).value=inputload;}
}
@@ -1299,9 +1307,10 @@ if($('webtronics_properties_ok'))Event.observe($('webtronics_properties_ok'), 'c netlistcreator.writewtx(model,"eval6",$('webtronics_eval6_value').value);
}
- else if(modelname=="and"|| c=='not'|| c=='nand'|| c=='or'||c=='nor'||c=='xor'||c=='xnor')){
+ else if(modelname=="and"|| c=='not'|| c=='nand'|| c=='or'||c=='nor'||c=='xor'||c=='xnor'){
netlistcreator.writewtx(model,"risedelay",$('webtronics_risedelay_value').value);
netlistcreator.writewtx(model,"falldelay",$('webtronics_falldelay_value').value);
+ netlistcreator.writewtx(model,"inputload",$('webtronics_inputload_value').value);
}
webtronics.circuit.createvalue(webtronics.circuit.selected[0]);
diff --git a/views/script/gui.js~ b/views/script/gui.js~ new file mode 100644 index 0000000..2493245 --- /dev/null +++ b/views/script/gui.js~ @@ -0,0 +1,1526 @@ +
+
+
+
+globalVariable=0;
+
+
+var webtronics={
+ circuit:null,
+ copy:null,
+ rightclickmenu:null,
+ title:null,
+ description:null,
+ file_id:null,
+ scopestatus:null,
+ scopedata:null,
+
+ tabs:[],
+ mode:'',
+
+ Vlist:/\s*expression|\s*url|.*script/,
+ Alist:/^(x|y|x1|y1|x2|y2|dx|dy|cx|cy|r|width|height|transform|d|id|class|fill|stroke|visibility|stroke-width|xmlns|xmlns:wtx|connects|partvalue|flippable|spice|index|font-size|font-weight|font-style|font-family)$/,
+ Elist:/^(path|circle|rect|line|text|g|tspan|svg|wtx:eval1|wtx:eval2|wtx:eval3|wtx:eval4|wtx:eval5|wtx:eval6|wtx:pwlval1|wtx:pwlval2|wtx:pwlval3|wtx:pwlval4|wtx:pwlval5|wtx:pwlval6|wtx:pwlval7|wtx:pwlval8|wtx:pulval1|wtx:pulval2|wtx:pulval3|wtx:pulval4|wtx:pulval5|wtx:pulval6|wtx:pulval7|wtx:amplitude|wtx:phase|wtx:offsetvoltage|wtx:voltageamplitude|wtx:frequency|wtx:delaytime|wtx:dampingfactor|wtx:part|wtx:pins|wtx:analog|wtx:digital|wtx:node|wtx:id|wtx:type|wtx:name|wtx:category|wtx:value|wtx:label|wtx:spice|wtx:risedelay|wtx:inputload|wtx:falldelay|wtx:flip|wtx:model|wtx:measure|metadata|)$/,
+ /* .lib files contain spice .model devices .mod devices contain .subckt devices and the id must begin with x*/
+// serverurls:["http://logical.github.io/webtronix/webtronix_server"],
+ serverurls:["webtronix_server"],
+ partslists:[],
+ models:{},
+ docfromtext:function(txt){
+ var xmlDoc;
+ if (window.DOMParser){
+ parser=new DOMParser();
+ xmlDoc=parser.parseFromString(txt,"text/xml");
+
+ }
+ else{ // Internet Explorer
+ xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
+ xmlDoc.async="false";
+ xmlDoc.loadXML(txt);
+ }
+ return xmlDoc;
+ },
+
+
+ setsize:function(){
+ var buffer=30;
+ var realheight=window.innerHeight-$('webtronics_toolbar').offsetHeight-$('webtronics_footer').offsetHeight;
+ var realwidth=window.innerWidth-$('webtronics_side_bar').offsetWidth;
+ $('webtronics_center').style.width = window.offsetWidth+'px';
+ $('webtronics_center').style.height = realheight-buffer+'px';
+ $('webtronics_diagram_area').style.width = realwidth-buffer+'px';
+ $('webtronics_diagram_area').style.height = realheight-buffer+'px';
+ frames=$$('#webtronics_diagram_area>iframe')
+ if(frames[0])frames[0].width = realwidth-buffer+'px';
+ $('webtronics_side_bar').style.height=realheight-buffer+'px';
+ },
+
+
+
+ setMode:function(mode, status){
+
+
+ //$('webtronics_status_bar').innerHTML = 'Mode: '+status;
+ $('webtronics_add_text').style.display='none';
+ if(mode=='select'){
+ if($('webtronics_context_menu'))$('webtronics_context_menu').style.display='block';
+ }
+ else if(mode=='line'){
+ if($('webtronics_context_menu'))$('webtronics_context_menu').style.display='none';
+ if(this.circuit.selected){
+ this.circuit.unselect();
+ }
+ }
+ else if(mode=='text'){
+ if($('webtronics_context_menu'))$('webtronics_context_menu').style.display='none';
+ }
+ $('webtronics_context_menu').style.display='none';
+ this.circuit.mode=mode;
+
+},
+
+
+getvalues:function(elem){
+
+
+ $("webtronics_part_model").options.length=0;
+ $("webtronics_part_dir_model").options.length=0;
+ $("webtronics_part_model").appendChild(new Element("option",{"value":""}).update("none"));
+ $("webtronics_part_dir_model").appendChild(new Element("option",{"value":""}).update("none"));
+ var part=netlistcreator.readwtx(elem,"name");
+ var cat=netlistcreator.readwtx(elem,"category");
+ if(cat && (part != "model")){
+ for(var i=0;i<webtronics.partslists.length;i++){
+ if(webtronics.partslists[i].parts[cat][part].values!=undefined){
+ for(var model in webtronics.partslists[i].parts[cat][part].values){
+ console.log("model");
+ $("webtronics_part_model").insert(new Element("option",{"value":model}).update(model));
+ }
+ if(JSON.stringify(list).indexOf(part)!=-1){
+ $("webtronics_part_help").innerHTML=webtronics.partslists[i].parts[cat][part].help;
+ }
+ }
+}
+}
+},
+
+center:function(e){
+
+ e.style.left = ($('webtronics_main_window').offsetWidth/2)-(e.offsetWidth/2)+'px';
+ e.style.top = ($('webtronics_main_window').offsetHeight/2)-(e.offsetHeight/2)+'px';
+},
+
+disablepage:function(){
+ $("webtronics_disable").style.display="block";
+},
+enablepage:function(){
+ $("webtronics_disable").style.display="none";
+},
+
+returnchip:function(){
+ if($('webtronics_chip_display').getElementsByTagName('g').length){
+ this.circuit.getgroup($('webtronics_chip_display').getElementsByTagName('g')[0]);
+ netlistcreator.writewtx(this.circuit.selected[0],"id",this.circuit.getnextid(this.circuit.selected[0],0));
+ this.circuit.createvalue(this.circuit.selected[0]);
+ }
+ $('webtronics_chips_box').style.display='none';
+ this.setMode('select','Selection');
+},
+
+openProperties:function(){
+ document.forms['webtronics_properties_form'].reset();
+ var c=netlistcreator.readwtx(this.circuit.selected[0],"name");
+ $("webtronics_risedelay").style.display='none';
+ $("webtronics_falldelay").style.display='none';
+ $("webtronics_inputload").style.display='none';
+ if(!c){
+ netlistcreator.writewtx(this.circuit.selected[0],"name","ic");
+ }
+ if(c=="ac"){
+ this.getvalues(this.circuit.selected[0]);
+ $("webtronics_amplitude").style.display='block'
+ $("webtronics_phase").style.display='block'
+
+ var amplitude=netlistcreator.readwtx(this.circuit.selected[0],"amplitude");
+ var phase=netlistcreator.readwtx(this.circuit.selected[0],"phase");
+
+ if(amplitude!=""){
+ $('webtronics_amplitude_value').value=amplitude;
+ //jQuery("#webtronics_amplitude_value").val()=amplitude;
+ }
+
+ if(phase!=""){$('webtronics_phase_value').value=phase;}
+
+
+ $("webtronics_eval1").style.display='none'
+ $("webtronics_eval2").style.display='none'
+ $("webtronics_eval3").style.display='none'
+ $("webtronics_eval4").style.display='none'
+ $("webtronics_eval5").style.display='none'
+ $("webtronics_eval6").style.display='none'
+
+
+ $("webtronics_pwlval1").style.display='none'
+ $("webtronics_pwlval2").style.display='none'
+ $("webtronics_pwlval3").style.display='none'
+ $("webtronics_pwlval4").style.display='none'
+ $("webtronics_pwlval5").style.display='none'
+ $("webtronics_pwlval6").style.display='none'
+ $("webtronics_pwlval7").style.display='none'
+ $("webtronics_pwlval8").style.display='none'
+
+
+ $("webtronics_offsetvoltage").style.display='none'
+ $("webtronics_frequency").style.display='none'
+ $("webtronics_voltageamplitude").style.display='none'
+ $("webtronics_delaytime").style.display='none'
+ $("webtronics_dampingfactor").style.display='none'
+ $("directive").style.display='none'
+
+
+ $("webtronics_pulval1").style.display='none'
+ $("webtronics_pulval2").style.display='none'
+ $("webtronics_pulval3").style.display='none'
+ $("webtronics_pulval4").style.display='none'
+ $("webtronics_pulval5").style.display='none'
+ $("webtronics_pulval6").style.display='none'
+ $("webtronics_pulval7").style.display='none'
+
+
+ $("valuemodel").style.display='none'
+
+ $("webtronics_print_dir_field").style.display='block'
+ $("webtronics_print_dir_value").value=netlistcreator.readwtx(this.circuit.selected[0],'measure');
+ }
+
+
+
+ else if(c=="sinvoltagesource"){
+ $("webtronics_amplitude").style.display='none'
+ $("webtronics_phase").style.display='none'
+
+
+ $("webtronics_eval1").style.display='none'
+ $("webtronics_eval2").style.display='none'
+ $("webtronics_eval3").style.display='none'
+ $("webtronics_eval4").style.display='none'
+ $("webtronics_eval5").style.display='none'
+ $("webtronics_eval6").style.display='none'
+
+
+ $("webtronics_offsetvoltage").style.display='block'
+ $("webtronics_frequency").style.display='block'
+ $("webtronics_voltageamplitude").style.display='block'
+ $("webtronics_delaytime").style.display='block'
+ $("webtronics_dampingfactor").style.display='block'
+ $("directive").style.display='none'
+
+
+ $("webtronics_pwlval1").style.display='none'
+ $("webtronics_pwlval2").style.display='none'
+ $("webtronics_pwlval3").style.display='none'
+ $("webtronics_pwlval4").style.display='none'
+ $("webtronics_pwlval5").style.display='none'
+ $("webtronics_pwlval6").style.display='none'
+ $("webtronics_pwlval7").style.display='none'
+ $("webtronics_pwlval8").style.display='none'
+
+
+ $("webtronics_pulval1").style.display='none'
+ $("webtronics_pulval2").style.display='none'
+ $("webtronics_pulval3").style.display='none'
+ $("webtronics_pulval4").style.display='none'
+ $("webtronics_pulval5").style.display='none'
+ $("webtronics_pulval6").style.display='none'
+ $("webtronics_pulval7").style.display='none'
+
+
+ var offsetvoltage=netlistcreator.readwtx(this.circuit.selected[0],"offsetvoltage");
+ var voltageamplitude=netlistcreator.readwtx(this.circuit.selected[0],"voltageamplitude");
+ var frequency=netlistcreator.readwtx(this.circuit.selected[0],"frequency");
+ var delaytime=netlistcreator.readwtx(this.circuit.selected[0],"delaytime");
+ var dampingfactor=netlistcreator.readwtx(this.circuit.selected[0],"dampingfactor");
+
+ if(offsetvoltage!=""){$('webtronics_offsetvoltage_value').value=offsetvoltage;}
+ if(voltageamplitude!=""){$('webtronics_voltageamplitude_value').value=voltageamplitude;}
+ if(frequency!=""){$('webtronics_frequency_value').value=frequency;}
+ if(delaytime!=""){$('webtronics_delaytime_value').value=delaytime;}
+ if(dampingfactor!=""){$('webtronics_dampingfactor_value').value=dampingfactor;}
+
+
+ $("valuemodel").style.display='none'
+ }
+
+
+ else if(c=="pulse"){
+ $("webtronics_amplitude").style.display='none'
+ $("webtronics_phase").style.display='none'
+
+ $("webtronics_offsetvoltage").style.display='none'
+ $("webtronics_frequency").style.display='none'
+ $("webtronics_voltageamplitude").style.display='none'
+ $("webtronics_delaytime").style.display='none'
+ $("webtronics_dampingfactor").style.display='none'
+
+
+ $("webtronics_eval1").style.display='none'
+ $("webtronics_eval2").style.display='none'
+ $("webtronics_eval3").style.display='none'
+ $("webtronics_eval4").style.display='none'
+ $("webtronics_eval5").style.display='none'
+ $("webtronics_eval6").style.display='none'
+
+
+
+ $("webtronics_pwlval1").style.display='none'
+ $("webtronics_pwlval2").style.display='none'
+ $("webtronics_pwlval3").style.display='none'
+ $("webtronics_pwlval4").style.display='none'
+ $("webtronics_pwlval5").style.display='none'
+ $("webtronics_pwlval6").style.display='none'
+ $("webtronics_pwlval7").style.display='none'
+ $("webtronics_pwlval8").style.display='none'
+
+ $("webtronics_pulval1").style.display='block'
+ $("webtronics_pulval2").style.display='block'
+ $("webtronics_pulval3").style.display='block'
+ $("webtronics_pulval4").style.display='block'
+ $("webtronics_pulval5").style.display='block'
+ $("webtronics_pulval6").style.display='block'
+ $("webtronics_pulval7").style.display='block'
+
+ $("directive").style.display='none'
+ var pulval1=netlistcreator.readwtx(this.circuit.selected[0],"pulval1");
+ var pulval2=netlistcreator.readwtx(this.circuit.selected[0],"pulval2");
+ var pulval3=netlistcreator.readwtx(this.circuit.selected[0],"pulval3");
+ var pulval4=netlistcreator.readwtx(this.circuit.selected[0],"pulval4");
+ var pulval5=netlistcreator.readwtx(this.circuit.selected[0],"pulval5");
+ var pulval6=netlistcreator.readwtx(this.circuit.selected[0],"pulval6");
+ var pulval7=netlistcreator.readwtx(this.circuit.selected[0],"pulval7");
+ if(pulval1!=""){$('webtronics_pulval1_value').value=pulval1;}
+ if(pulval2!=""){$('webtronics_pulval2_value').value=pulval2;}
+ if(pulval3!=""){$('webtronics_pulval3_value').value=pulval3;}
+ if(pulval4!=""){$('webtronics_pulval4_value').value=pulval4;}
+ if(pulval5!=""){$('webtronics_pulval5_value').value=pulval5;}
+ if(pulval6!=""){$('webtronics_pulval6_value').value=pulval6;}
+ if(pulval7!=""){$('webtronics_pulval7_value').value=pulval7;}
+
+ $("valuemodel").style.display='none'
+ }
+
+ else if(c=="exponential"){
+ $("webtronics_amplitude").style.display='none'
+ $("webtronics_phase").style.display='none'
+
+ $("webtronics_offsetvoltage").style.display='none'
+ $("webtronics_frequency").style.display='none'
+ $("webtronics_voltageamplitude").style.display='none'
+ $("webtronics_delaytime").style.display='none'
+ $("webtronics_dampingfactor").style.display='none'
+
+
+ $("webtronics_pulval1").style.display='none'
+ $("webtronics_pulval2").style.display='none'
+ $("webtronics_pulval3").style.display='none'
+ $("webtronics_pulval4").style.display='none'
+ $("webtronics_pulval5").style.display='none'
+ $("webtronics_pulval6").style.display='none'
+ $("webtronics_pulval7").style.display='none'
+
+
+ $("webtronics_pwlval1").style.display='none'
+ $("webtronics_pwlval2").style.display='none'
+ $("webtronics_pwlval3").style.display='none'
+ $("webtronics_pwlval4").style.display='none'
+ $("webtronics_pwlval5").style.display='none'
+ $("webtronics_pwlval6").style.display='none'
+ $("webtronics_pwlval7").style.display='none'
+ $("webtronics_pwlval8").style.display='none'
+
+ $("webtronics_eval1").style.display='block'
+ $("webtronics_eval2").style.display='block'
+ $("webtronics_eval3").style.display='block'
+ $("webtronics_eval4").style.display='block'
+ $("webtronics_eval5").style.display='block'
+ $("webtronics_eval6").style.display='block'
+
+
+ $("directive").style.display='none'
+ var eval1=netlistcreator.readwtx(this.circuit.selected[0],"eval1");
+ var eval2=netlistcreator.readwtx(this.circuit.selected[0],"eval2");
+ var eval4=netlistcreator.readwtx(this.circuit.selected[0],"eval4");
+ var eval3=netlistcreator.readwtx(this.circuit.selected[0],"eval3");
+ var eval5=netlistcreator.readwtx(this.circuit.selected[0],"eval5");
+ var eval6=netlistcreator.readwtx(this.circuit.selected[0],"eval6");
+
+ if(eval1!=""){$('webtronics_eval1_value').value=eval1;}
+ if(eval2!=""){$('webtronics_eval2_value').value=eval2;}
+ if(eval3!=""){$('webtronics_eval3_value').value=eval3;}
+ if(eval4!=""){$('webtronics_eval4_value').value=eval4;}
+ if(eval5!=""){$('webtronics_eval5_value').value=eval5;}
+ if(eval6!=""){$('webtronics_eval6_value').value=eval6;}
+
+
+ $("valuemodel").style.display='none'
+ }
+
+
+
+
+ else if(c=="pwl"){
+ $("webtronics_amplitude").style.display='none'
+ $("webtronics_phase").style.display='none'
+
+ $("webtronics_offsetvoltage").style.display='none'
+ $("webtronics_frequency").style.display='none'
+ $("webtronics_voltageamplitude").style.display='none'
+ $("webtronics_delaytime").style.display='none'
+ $("webtronics_dampingfactor").style.display='none'
+
+
+
+ $("webtronics_eval1").style.display='none'
+ $("webtronics_eval2").style.display='none'
+ $("webtronics_eval3").style.display='none'
+ $("webtronics_eval4").style.display='none'
+ $("webtronics_eval5").style.display='none'
+ $("webtronics_eval6").style.display='none'
+
+ $("webtronics_pulval1").style.display='none'
+ $("webtronics_pulval2").style.display='none'
+ $("webtronics_pulval3").style.display='none'
+ $("webtronics_pulval4").style.display='none'
+ $("webtronics_pulval5").style.display='none'
+ $("webtronics_pulval6").style.display='none'
+ $("webtronics_pulval7").style.display='none'
+
+
+ $("webtronics_pwlval1").style.display='block'
+ $("webtronics_pwlval2").style.display='block'
+ $("webtronics_pwlval3").style.display='block'
+ $("webtronics_pwlval4").style.display='block'
+ $("webtronics_pwlval5").style.display='block'
+ $("webtronics_pwlval6").style.display='block'
+ $("webtronics_pwlval7").style.display='block'
+ $("webtronics_pwlval8").style.display='block'
+
+ $("directive").style.display='none'
+ var pwlval1=netlistcreator.readwtx(this.circuit.selected[0],"pwlval1");
+ var pwlval2=netlistcreator.readwtx(this.circuit.selected[0],"pwlval2");
+ var pwlval3=netlistcreator.readwtx(this.circuit.selected[0],"pwlval3");
+ var pwlval4=netlistcreator.readwtx(this.circuit.selected[0],"pwlval4");
+ var pwlval5=netlistcreator.readwtx(this.circuit.selected[0],"pwlval5");
+ var pwlval6=netlistcreator.readwtx(this.circuit.selected[0],"pwlval6");
+ var pwlval7=netlistcreator.readwtx(this.circuit.selected[0],"pwlval7");
+ var pwlval8=netlistcreator.readwtx(this.circuit.selected[0],"pwlval8");
+ if(pwlval1!=""){$('webtronics_pwlval1_value').value=pwlval1;}
+ if(pwlval2!=""){$('webtronics_pwlval2_value').value=pwlval2;}
+ if(pwlval3!=""){$('webtronics_pwlval3_value').value=pwlval3;}
+ if(pwlval4!=""){$('webtronics_pwlval4_value').value=pwlval4;}
+ if(pwlval5!=""){$('webtronics_pwlval5_value').value=pwlval5;}
+ if(pwlval6!=""){$('webtronics_pwlval6_value').value=pwlval6;}
+ if(pwlval7!=""){$('webtronics_pwlval7_value').value=pwlval7;}
+ if(pwlval8!=""){$('webtronics_pwlval7_value').value=pwlval8;}
+
+ $("valuemodel").style.display='none'
+ }
+
+
+
+
+
+
+ else if(c=="scope"){
+ this.getvalues(this.circuit.selected[0]);
+ $("webtronics_print_dir_field").style.display='block'
+ $("webtronics_print_dir_value").value=netlistcreator.readwtx(this.circuit.selected[0],'measure');
+ $("directive").style.display='none'
+
+ $("webtronics_offsetvoltage").style.display='none'
+ $("webtronics_frequency").style.display='none'
+ $("webtronics_voltageamplitude").style.display='none'
+ $("webtronics_delaytime").style.display='none'
+ $("webtronics_dampingfactor").style.display='none'
+
+
+ $("webtronics_eval1").style.display='none'
+ $("webtronics_eval2").style.display='none'
+ $("webtronics_eval3").style.display='none'
+ $("webtronics_eval4").style.display='none'
+ $("webtronics_eval5").style.display='none'
+ $("webtronics_eval6").style.display='none'
+
+
+ $("webtronics_pwlval1").style.display='none'
+ $("webtronics_pwlval2").style.display='none'
+ $("webtronics_pwlval3").style.display='none'
+ $("webtronics_pwlval4").style.display='none'
+ $("webtronics_pwlval5").style.display='none'
+ $("webtronics_pwlval6").style.display='none'
+ $("webtronics_pwlval7").style.display='none'
+ $("webtronics_pwlval8").style.display='none'
+
+ $("webtronics_pulval1").style.display='none'
+ $("webtronics_pulval2").style.display='none'
+ $("webtronics_pulval3").style.display='none'
+ $("webtronics_pulval4").style.display='none'
+ $("webtronics_pulval5").style.display='none'
+ $("webtronics_pulval6").style.display='none'
+ $("webtronics_pulval7").style.display='none'
+
+ $("webtronics_amplitude").style.display='none'
+ $("webtronics_phase").style.display='none'
+ }
+ else {
+ this.getvalues(this.circuit.selected[0]);
+ $("directive").style.display='none'
+
+ $("webtronics_offsetvoltage").style.display='none'
+ $("webtronics_frequency").style.display='none'
+ $("webtronics_voltageamplitude").style.display='none'
+ $("webtronics_delaytime").style.display='none'
+ $("webtronics_dampingfactor").style.display='none'
+ $("valuemodel").style.display='block'
+
+ $("webtronics_amplitude").style.display='none'
+ $("webtronics_phase").style.display='none'
+
+
+ $("webtronics_eval1").style.display='none'
+ $("webtronics_eval2").style.display='none'
+ $("webtronics_eval3").style.display='none'
+ $("webtronics_eval4").style.display='none'
+ $("webtronics_eval5").style.display='none'
+ $("webtronics_eval6").style.display='none'
+
+
+ $("webtronics_pwlval1").style.display='none'
+ $("webtronics_pwlval2").style.display='none'
+ $("webtronics_pwlval3").style.display='none'
+ $("webtronics_pwlval4").style.display='none'
+ $("webtronics_pwlval5").style.display='none'
+ $("webtronics_pwlval6").style.display='none'
+ $("webtronics_pwlval7").style.display='none'
+ $("webtronics_pwlval8").style.display='none'
+
+
+ $("webtronics_pulval1").style.display='none'
+ $("webtronics_pulval2").style.display='none'
+ $("webtronics_pulval3").style.display='none'
+ $("webtronics_pulval4").style.display='none'
+ $("webtronics_pulval5").style.display='none'
+ $("webtronics_pulval6").style.display='none'
+ $("webtronics_pulval7").style.display='none'
+ var value=netlistcreator.readwtx(this.circuit.selected[0],"value");
+ if(value!=""){$('webtronics_part_value').value=value;}
+
+ if(c=='and'|| c=='not'|| c=='nand'|| c=='or'||c=='nor'||c=='xor'||c=='xnor')
+ {
+
+ $("webtronics_risedelay").style.display='block';
+ $("webtronics_falldelay").style.display='block';
+ $("webtronics_inputload").style.display='block';
+ var risedelay = netlistcreator.readwtx(this.circuit.selected[0],"risedelay");
+ if(risedelay!=""){$(webtronics_part_risedelay).value=risedelay;}
+ var falldelay = netlistcreator.readwtx(this.circuit.selected[0],"falldelay");
+ if(falldelay!=""){$(webtronics_part_falldelay).value=falldelay;}
+ var inputload = netlistcreator.readwtx(this.circuit.selected[0],"inputload");
+ if(inputload!=""){$(webtronics_part_inputload).value=inputload;}
+
+ }
+
+ }
+
+ if(c=="diode")$("directive").style.display='block'
+ var id=netlistcreator.readwtx(this.circuit.selected[0],"id");
+
+
+ if(id!=""){$('webtronics_part_id').value=id;}
+
+ $("webtronics_part_dir_value").value=netlistcreator.readwtx(this.circuit.selected[0],'model');
+
+ if(!netlistcreator.readwtx(webtronics.circuit.selected[0],"value")){
+ $('webtronics_part_id').value=this.circuit.getnextid(this.circuit.selected[0],0);
+ }
+
+ this.disablepage();
+ $('webtronics_properties_div').style.display = "block";
+
+},
+
+sanitize:function(xmldoc){
+ var elems=xmldoc.getElementsByTagName('*');
+ for(var i=0;i<elems.length;i++){
+ if(!elems[i].tagName.match(this.Elist))return elems[i].tagName;
+ var attr=elems[i].attributes;
+ for(var j=0;j<attr.length;j++){
+ if(!attr[j].name.match(this.Alist))return attr[j].name;
+ if(attr[j].value.match(this.Vlist))return attr[j].value;
+ }
+ }
+},
+createfilemenu:function(x,y,id,parent,list){
+ var menu=document.createElement('div');
+ menu.id=id;
+ menu.className='webtronics_menu';
+ menu.style.left=x+'px';
+ menu.style.top=y+'px';
+ for(var i=0;i<list.length;i++){
+ var item=new Element('a',{Title:list[i].label,id:'webtronics_context_option',class:'enabled'})
+ .observe('click',list[i].cb.bind(this))
+ .observe('contextmenu', Event.stop)
+ .update(list[i].label);
+ menu.insert(item);
+ menu.insert(new Element('br'));
+ }
+ menu.observe('click',Event.stop)
+ .observe('contextmenu',Event.stop);
+ menu.style.display='none';
+ return menu;
+
+},
+
+file_open:function(){
+ var file=new Element('input',{'type':'file'});
+ var div=new Element('div',{'class':'modal'}).insert(file);
+ Event.observe(file,'change',function(){
+ if(window.FileReader){
+ var textReader = new FileReader();
+ textReader.onloadend=function(){
+ if(!textReader.result){
+ console.log("error opening file");
+ return;
+ };
+
+ var xmlDoc=this.docfromtext(textReader.result);
+ if(!xmlDoc){alert("error parsing svg");}
+ else{
+ var result=this.sanitize(xmlDoc)
+ if(result){console.log(result+ ' found');alert('unclean file');return;}
+ var node=xmlDoc.getElementsByTagName('svg')[0];
+ if(!node){alert("svg node not found")}
+ else this.circuit.getfile(node);
+ }
+ }.bind(this);
+ textReader.readAsText(file.files[0]);
+ $('webtronics_main_window').removeChild(div);
+ }
+ }.bind(this));
+ $('webtronics_main_window').insert(div);
+ div.style.display='block';
+ file.focus();
+ file.click();
+ $('webtronics_file_menu').style.display='none';
+ div.style.display='none';
+
+},
+
+download:function(filename, data) {
+ var pom = document.createElement('a');
+ pom.setAttribute('href', data);
+ pom.setAttribute('download', filename);
+ document.body.appendChild(pom);
+ pom.click();
+ pom.parentNode.removeChild(pom);
+},
+saveuri:function(){
+ var string="<?xml version='1.0' ?>\n";
+ string+="<!--Created by webtronics 0.1-->\n";
+ var doc=this.circuit.getDoc(true,false);
+ string += (new XMLSerializer()).serializeToString(doc);
+ this.download("webtronix.svg","data:application/octet-stream;charset=utf-8;base64," + encode64(string));
+
+ $('webtronics_file_menu').style.display='none';
+
+},
+
+
+
+
+file_new:function(){
+ $('webtronics_file_menu').style.display='none';
+ //this.setMode('webtronics_select','select','Selection');
+ input_box=confirm("Click OK to Clear the Drawing.");
+ if (input_box==true){
+ $('webtronics_diagram_area').removeChild($("webtronics_display_frame"));
+ var frame=new Element('iframe',{id:'webtronics_display_frame',src:'canvas/canvas.html'});
+ $('webtronics_diagram_area').insert(frame);
+ Event.observe(frame,'load',function(){
+ var filename='Schematic.svg';
+ this.attachframe(filename,frame);
+
+ }.bind(this));
+ $("webtronics_showhelp").checked=false;
+ $$(".webtronics_help").forEach(function(e){
+ e.style.display="none";
+ });
+ $("webtronics_invert").checked=false;
+ $("webtronics_graph").checked=false;
+ $("webtronics_connections").checked=false;
+
+ }
+ },
+
+ attachframe:function(filename,frame){
+ this.circuit=frame.contentWindow.circuit;
+ this.setMode('select', 'Selection');
+ // this.circuit.mode=this.mode;
+
+ /*attach the menu*/
+ Event.observe(this.circuit.container,'contextmenu',function(e){
+ $('webtronics_context_menu').style.top=Event.pointerY(e)+'px';
+ $('webtronics_context_menu').style.left=Event.pointerX(e)+'px';
+ if(this.circuit.mode =="select")$('webtronics_context_menu').style.display='block';
+ if(this.circuit.selected.length===1&& this.circuit.selected[0].tagName==='g'){
+ $$('div#webtronics_context_menu [title=Properties]')[0].className='enabled';
+ }
+ else {
+ $$('div#webtronics_context_menu [title=Properties]')[0].className='disabled';
+ }
+ Event.stop(e);
+ }.bind(this));
+ Event.observe(this.circuit.container,'click',function(e){
+ if(Event.isLeftClick(e)){
+ if($('webtronics_context_menu')){
+ $('webtronics_context_menu').style.display='none';
+ }
+ }
+ }.bind(this));
+
+
+ },
+
+ formatnetlist:function(spice1,spice2){
+ var html=new Element('textarea');
+ html.id="webtronics_netlist_text_area";
+ html.cols=40;
+ html.rows=15;
+ html.value=spice1;
+ return html;
+ },
+ spicenetlist:"",
+ gnucapjs:function(netlist){
+ webtronics.spicenetlist=netlist;
+ /*add a new frame */
+ $('webtronics_scope_display_div').innerHTML='';
+ $("webtronics_scope_output_graph").checked=true;
+ $("webtronics_scope_status").innerHTML="DOWNLOADING GNUCAP";
+
+ var frame=new Element('iframe',{id:'webtronics_scope_display_frame',src:'gnucapjs/gnucap.html',width:"100%",height:"100%"});
+ $('webtronics_scope_display_div').insert(frame);
+ $("webtronics_scope_display").style.display="block"
+ },
+
+ /*
+ * postspice:function(spice){
+ * var text;
+ * new Ajax.Request("spice.php",{
+ * method:'post',
+ * contentType:"text/plain",
+ * asynchronous:true,
+ * postBody:spice,
+ * onSuccess:function(transport){
+ * if($("webtronics_scope_display_image"))$("webtronics_scope_display_image").parentNode.removeChild($("webtronics_scope_display_image"));
+ * var content;
+ * if(transport.responseText.match("data:image/png;base64,")){
+ * var content=new Element("img",{"src":transport.responseText,"width":400,"height":400,"id":"webtronics_scope_display_image"});
+}
+else{
+ var content=new Element("textarea",{"width":400,"height":400,"id":"webtronics_scope_display_image"}).update(transport.responseText);
+}
+if(content){
+ $("webtronics_scope_display").style.display="block";
+ $("webtronics_scope_display_div").insert(content);
+}
+},
+onFailure: function(){
+console.log('Could not retrieve file...');
+},
+onException: function(req,exception) {
+console.log(exception);
+}
+});
+
+},
+*/
+savepng:function(){
+/*
+ if(navigator.appName == 'Microsoft Internet Explorer'){
+ $('webtronics_image_div').innerHTML="<img id='webtronics_image_save' >";
+ }
+ */
+ if(this.circuit.drawing.getAttribute('class')==="inv"){
+ var doc=this.circuit.getDoc(true,true);
+ }
+ else{
+ var doc=this.circuit.getDoc(true,false);
+ }
+ var svgsize=this.circuit.svgSize();
+ var canvas=new Element('canvas',{'id':'webtronics_canvas','width':svgsize.width-svgsize.x+20+'px','height':svgsize.height-svgsize.y+20+'px',style:"display:none"});
+ document.body.insert(canvas);
+ var ctx=$("webtronics_canvas").getContext("2d");
+
+ ctx.drawSvg(doc, 0, 0, svgsize.width-svgsize.x+20,svgsize.height-svgsize.y+20);
+ var url= canvas.toDataURL("application/octet-stream");
+ this.download("webtronix.png",url);
+ canvas.parentNode.removeChild(canvas);
+ },
+ addpart:function(url,cat,partname) {
+ var listfile=function(partsvg){
+ var part=new Element("div",{"id":"webtronics_"+partname,"class":"webtronics_menu_part",'style':"display:none",'title':partname})
+ .update(partsvg);
+ $("webtronics_"+cat).insert(part);
+ Event.observe(part,'mousedown',function(e){
+ var group=$$( "#"+ part.id+" g" )[0];
+ webtronics.circuit.getgroup(group);
+ webtronics.setMode('select','Selection');
+ });
+ Event.observe(part,'mouseup',function(e){
+ webtronics.circuit.deleteSelection();
+ });
+
+
+ }
+
+ if(url.indexOf("http://")==-1){
+ openfile(url+'/'+cat+'/'+partname+'.svg',listfile);
+
+ }
+ else{
+ new request(url,cat+"/"+partname+'.svg',listfile);
+
+ }
+
+ },
+
+
+//this takes an objectand returns a menu element
+makemenu:function(url, partlist,menu){
+
+
+ for (var cat in partlist.parts){
+ if(!$("webtronics_"+cat)){
+ var category=new Element("div",{"id":"webtronics_"+cat})
+ .insert(new Element("p").update(cat)
+ .observe('click',function(e){
+
+ var menuitems=$$('#'+menu.id+'>div>div');
+
+ for(var i=0;i<menuitems.length;i++){
+ if(menuitems[i].parentNode==Event.element(e).parentNode){
+ if(menuitems[i].style.display=='none'){
+ menuitems[i].style.display='block';
+ }
+ else{
+ menuitems[i].style.display='none';
+ }
+ }
+ else{
+ menuitems[i].style.display='none';
+ }
+ }
+ }));
+ menu.insertBefore(category,menu.firstChild);
+
+ for(var partname in partlist.parts[cat]){
+ if(!$("webtronics_"+partname)){
+ webtronics.addpart(url , cat,partname);
+
+ }
+ //if(partlist.parts[cat][partname].indexOf()<0){}
+ }
+
+ }
+
+ }
+ },
+ populatemenu:function(){
+ /*asynchronous part loading */
+ $("webtronics_parts_list").innerHTML="";
+ webtronics.serverurls.each(function(url){
+ if(url=="webtronix_server"){
+ openfile(url+"/parts.json",function(text){
+ webtronics.partslists.push(text.evalJSON(true));
+ webtronics.partslists[webtronics.partslists.length-1].url=url;
+ webtronics.makemenu(url,webtronics.partslists[webtronics.partslists.length-1] , $("webtronics_parts_list"));
+ });
+
+ }
+ else{
+ new request(url,"parts.json",function(text){
+ webtronics.partslists.push(text.evalJSON(true));
+ webtronics.partslists[webtronics.partslists.length-1].url=url;
+ webtronics.makemenu(url,webtronics.partslists[webtronics.partslists.length-1] , $("webtronics_parts_list"));
+ });
+
+ }
+ }.bind(this));
+
+
+ },
+
+ opensources:function(){
+ var sources=$$(".webtronics_add_source_input");
+ for( var i=0;i<sources.length;i++){
+ if(webtronics.serverurls[i])sources[i].value=webtronics.serverurls[i];
+ else sources[i].value="";
+ }
+ $("webtronics_add source").style.display="block";
+ this.center($("webtronics_add source"));
+ this.disablepage();
+ },
+
+ /*all events are loaded here*/
+ init:function(){
+ Event.observe(window, 'load', function(){
+ if (!window.console) {
+ window.console = {};
+ window.console.log = function(){};
+ }
+
+ webtronics.setsize();
+ // $('webtronics_scope_display_iframe').src="";
+ var menu;
+ $("webtronics_showhelp").checked=false;
+ $("webtronics_invert").checked=false;
+ $("webtronics_graph").checked=false;
+ $("webtronics_connections").checked=false;
+
+ menu=this.createfilemenu($('webtronics_file').offsetLeft,
+ $('webtronics_file').offsetTop+$('webtronics_file').offsetHeight,
+ 'webtronics_file_menu',
+ $('webtronics_main_window'),
+ [{label:'sources',cb:webtronics.opensources},
+ {label:'import',cb:webtronics.file_open},
+ {label:'save',cb:webtronics.saveuri},
+ {label:'kicad',cb:wtx2kicad},
+ {label:'save-png',cb:webtronics.savepng},
+ {label:'new',cb:webtronics.file_new}]);
+ menu.observe('mouseout',function(e){
+ if((e.relatedTarget!=null)&&!((e.relatedTarget == menu) || e.relatedTarget.descendantOf(menu))){
+ // if(!(e.relatedTarget == menu) ){
+ menu.style.display='none';
+ }
+ });
+
+ $("webtronics_main_window").insertBefore(menu,$("webtronics_disable"));
+
+
+ /*replace context menu*/
+ var myLinks = [
+ {label:'copy',cb:function(){
+ webtronics.copy=webtronics.circuit.copy();
+ $('webtronics_context_menu').style.display='none';
+ }},
+ {label:'paste',cb:function(){
+ webtronics.circuit.paste(webtronics.copy);
+ $('webtronics_context_menu').style.display='none';}},
+
+ {label:'delete',cb:function(){
+ webtronics.circuit.deleteSelection();
+ $('webtronics_context_menu').style.display='none';}},
+
+ {label:'Properties',cb:function(){
+ webtronics.openProperties()
+ webtronics.center($('webtronics_properties_div'));
+ document.forms['webtronics_properties_form'].focus();
+ $('webtronics_context_menu').style.display='none';
+
+
+ }}];
+ var contextmenu=this.createfilemenu(0,
+ 0,
+ 'webtronics_context_menu',
+ $('webtronics_diagram_area'),
+ myLinks);
+ $("webtronics_diagram_area").insert(contextmenu);
+ /*add a new frame */
+ var frame=new Element('iframe',{id:'webtronics_display_frame',src:'canvas/canvas.html'});
+ $('webtronics_diagram_area').insert(frame);
+
+ Event.observe(frame,'load',function(){
+ var filename='Schematic.svg';
+ this.attachframe(filename,frame);
+ }.bind(this));
+
+ Event.observe(window, 'resize', function() {
+ webtronics.setsize();
+ webtronics.circuit.addtools();
+ });
+
+ $('webtronics_toolbar').onselectstart = function() {return false;}
+
+ $('webtronics_diagram_area').onselectstart = function() {return false;}
+ $('webtronics_side_bar').onselectstart = function() {return false;}
+
+
+//populate default menu
+
+webtronics.populatemenu();
+
+
+
+
+
+
+/*chipmaker*/
+$("webtronics_hor_pins").insert(Element("option",{"value":0}).update(0));
+for(var i=1;i<50;i++){
+ if(i>3){
+ $("webtronics_hor_pins").insert(Element("option",{"value":i}).update(i*2));
+ }
+ $("webtronics_vert_pins").insert(Element("option",{"value":i}).update(i*2));
+
+}
+
+/*menu events*/
+
+Event.observe($('webtronics_file'), 'click', function() {
+ if($('webtronics_file_menu').style.display=='block'){
+ $('webtronics_file_menu').style.display='none';
+ }
+ else {
+ $('webtronics_file_menu').style.display='block';
+ }
+});
+Event.observe($('webtronics_chips_open'), 'click', function() {
+ webtronics.circuit.clearinfo();
+ webtronics.setMode('select','Selection');
+ chipmaker.openmaker();
+ $('webtronics_chips_box').style.display = "block";
+ webtronics.center($('webtronics_chips_box'));
+ webtronics.disablepage();
+});
+if($("webtronics_select"))Event.observe($('webtronics_select'), 'click', function() {
+ webtronics.circuit.clearinfo();
+ webtronics.setMode('select', 'Selection');
+});
+ if($("webtronics_wire"))Event.observe($('webtronics_wire'), 'click', function() {
+ webtronics.circuit.clearinfo();
+ webtronics.setMode('line','Wire');
+ });
+ Event.observe($('webtronics_text'), 'click', function() {
+ webtronics.circuit.clearinfo();
+ if($('webtronics_text').className=='pressed_button'){
+ $('webtronics_text').className = 'normal_button';
+ webtronics.setMode('select', 'Selection');
+ }
+ else {
+ $('webtronics_text').className = 'pressed_button';
+ webtronics.setMode('text', 'Text');
+ }
+
+ });
+ if($('webtronics_undo')){
+ Event.observe($('webtronics_undo'),'click',function(){
+ webtronics.circuit.undo();
+
+ });
+ }
+ if($('webtronics_redo')){
+ Event.observe($('webtronics_redo'),'click',function(){
+ webtronics.circuit.redo();
+ });
+ }
+
+ Event.observe($('webtronics_delete'), 'click', function() {
+ webtronics.circuit.clearinfo();
+ webtronics.circuit.addhistory();
+ webtronics.circuit.deleteSelection();
+ });
+/*
+ if($('webtronics_save')){
+ Event.observe($('webtronics_save'), 'click', function() {
+ webtronics.circuit.clearinfo();
+ webtronics.showMarkup();
+ });
+ }
+ */
+
+ flag1=0;
+
+
+
+ jQuery("#analysis_selectbox").change(function(){
+
+ analysis_type = jQuery(this).val();
+
+ });
+
+
+
+
+
+ if($('webtronics_netlist')){
+ Event.observe($('webtronics_netlist'), 'click', function() {
+ if(flag1!=0){
+
+ netlistcreator.createnetlist(function(netlist){
+ var content=$$("#webtronics_netlist_text_div > *")
+ for(var i=0;i<content.length;i++){
+ $("webtronics_netlist_text_div").removeChild(content[i]);
+ }
+ $("webtronics_netlist_text_div").insert(webtronics.formatnetlist(netlist,null));
+ $("webtronics_netlist_text").style.display='block';
+ globalVariable=1;
+ webtronics.center($('webtronics_netlist_text_div'));
+ webtronics.disablepage();});
+
+
+
+
+ jQuery('#webtronics_netlist_buttons').show();
+
+
+
+
+
+ change_val = "0";
+ Flag = "";
+ //console.log("out")
+
+
+ if (change_val == "0")
+ {
+ Flag = jQuery("#webtronics_netlist_text_area").val();
+
+
+/*-------------------------------------------------------------------------------------------------------------------------------------
+ Here are the conditions concatenated to give final netlist values for dc all cases
+ ---------------------------------------------------------------------------------------------------------------------------------------------*/
+ if (analysis_type == "1")
+ {
+
+ console.log(jQuery("#analysis_selectbox").val());
+
+ jQuery("#webtronics_netlist_text_area").val(Flag + '\n'+ ".dc" + " " + source + " " + start + "e" + "-" + start_dc_unit + " " + stop + "e" + "-" + stop_dc_unit + " " + increment + "e" + "-" + increment_dc_unit + '\n' + '\n'+ ".control \n"+ "run \n"+ "print allv > dumpv.txt \n" + "print alli > dumpi.txt \n" + ".endc \n"+ ".end \n" );
+
+ change_val = "1";
+ console.log(jQuery("#analysis_selectbox").val());
+}
+
+
+/*------------------------------------------------------------------------------------------------------------------------------------------------
+Here are the all AC Cases for generating final netlist values
+------------------------------------------------------------------------------------------------------------------------------------------------*/
+else if (analysis_type == "2")
+{
+ jQuery("#webtronics_netlist_text_area").val(Flag + '\n'+ ".ac" + " " + scale_val + " " + noofpoint + " " + startfreq + start_ac_unit + " " + stopfreq + stop_ac_unit + '\n' + '\n'+ ".control \n"+ "run \n"+ "print allv > dumpv.txt \n" + "print alli > dumpi.txt \n" + ".endc \n"+ ".end \n" );
+
+ change_val = "1";
+}
+/*------------------------------------------------------------------------------------------------------------------------------------------------
+Here are the all Transiet Cases for generating final netlist values
+------------------------------------------------------------------------------------------------------------------------------------------------*/
+ //else if (analysis_type == "3" && time == "1")
+ else if (analysis_type== "3")
+ {
+ jQuery("#webtronics_netlist_text_area").val(Flag + '\n' + ".tran" + " " + step_trans + "e" + "-" + step_trans_unit + " " + stop_trans + "e"+ "-" + stop_trans_unit + " " + start_trans + "e" + "-" + start_trans_unit + '\n' + '\n'+ ".control \n"+ "run \n"+ "print allv > dumpv.txt \n" + "print alli > dumpi.txt \n" + ".endc \n" +".end \n" );
+
+ change_val = "1";
+ }
+
+
+}
+
+else if( change_val == "1")
+
+{
+
+ jQuery("#webtronics_netlist_text_area").val("");
+ //console.log("if when 1")
+
+ if (analysis_type == "1")
+
+ {
+
+
+ jQuery("#webtronics_netlist_text_area").val(Flag + '\n'+ ".dc" + " " + source + " " + start + "e" + "-" + start_dc_unit + " " + stop + "e" + "-" + stop_dc_unit + " " + increment + "e" + "-" + increment_dc_unit + '\n' + '\n'+ ".control \n"+ "run \n"+ "print allv > dumpv.txt \n" + "print alli > dumpi.txt \n" + ".endc \n"+ ".end \n" );
+ change_val = "1";
+ }
+
+
+
+ else if (analysis_type == "2")
+ {
+ jQuery("#webtronics_netlist_text_area").val(Flag + '\n'+ ".ac" + " " + scale_val + " " + noofpoint + " " + startfreq + start_ac_unit + " " + stopfreq + stop_ac_unit + '\n' + '\n'+ ".control \n"+ "run \n"+ "print allv > dumpv.txt \n" + "print alli > dumpi.txt \n" + ".endc \n"+ ".end \n" );
+
+ change_val = "1";
+ }
+
+
+ else if (analysis_type == "3")
+ {
+ jQuery("#webtronics_netlist_text_area").val(Flag + '\n' + ".tran" + " " + step_trans + "e" + "-" + step_trans_unit + " " + stop_trans + "e"+ "-" + stop_trans_unit + " " + start_trans + "e" + "-" + start_trans_unit + '\n' + '\n'+ ".control \n"+ "run \n"+ "print allv > dumpv.txt \n" + "print alli > dumpi.txt \n" + ".endc \n" +".end \n" );
+
+ change_val = "1";
+ }
+
+
+ }
+
+
+
+
+
+
+
+}
+else {
+ alert("Analysis information is not available !");
+
+
+}
+
+
+
+
+});
+}
+
+
+
+
+
+jQuery("#webtronics_analysis").click(function(){
+ flag1=1;
+ jQuery('#webtronics_netlist_analysis').show();
+
+ jQuery('#webtronics_disable').show();
+
+
+
+});
+
+jQuery(".button_cancel").click(function(){
+ flag1=0;
+ jQuery("#webtronics_netlist_analysis").hide();
+ jQuery("#webtronics_disable").hide();
+
+});
+
+
+
+
+
+if($('webtronics_run')){
+ Event.observe($('webtronics_run'), 'click', function() {
+ // webtronics.postspice(webtronics.circuit.createnetlist());
+ netlistcreator.createnetlist(webtronics.gnucapjs);
+ });
+
+}
+
+if($('webtronics_invert')){
+
+ Event.observe($('webtronics_invert'),'click',function(){
+ webtronics.circuit.invert($('webtronics_invert').checked);
+
+ });
+}
+if($('webtronics_graph')){
+ Event.observe($('webtronics_graph'),'click',function(){
+ if($('webtronics_graph').checked){
+ webtronics.circuit.graph=true;
+ webtronics.circuit.showbackground();
+ }
+ else{
+ webtronics.circuit.graph=false;
+ webtronics.circuit.showbackground();
+ }
+ });
+}
+if($('webtronics_connections')){
+ $('webtronics_connections').checked=false;
+ Event.observe($('webtronics_connections'),'click',function(){
+ webtronics.circuit.showconnections($('webtronics_connections').checked);
+
+ });
+}
+if($("webtronics_showhelp")){
+ Event.observe($("webtronics_showhelp"),"click",function(){
+ if($("webtronics_showhelp").checked){
+ $$(".webtronics_help").forEach(function(e){
+ e.style.display="block";
+ });
+ }
+ else{
+ $$(".webtronics_help").forEach(function(e){
+ e.style.display="none";
+ });
+ }
+});
+}
+/*properties events*/
+
+
+if($('webtronics_properties_ok'))Event.observe($('webtronics_properties_ok'), 'click', function() {
+ $("webtronics_print_dir_field").style.display="none";
+ $('webtronics_properties_div').style.display='none';
+ webtronics.enablepage();
+ var model=webtronics.circuit.selected[0];
+ netlistcreator.writewtx(model,"id",$('webtronics_part_id').value);
+ netlistcreator.writewtx(model,"value",$('webtronics_part_value').value);
+ netlistcreator.writewtx(model,"model",$('webtronics_part_dir_value').value);
+ netlistcreator.writewtx(model,"measure",$('webtronics_print_dir_value').value);
+
+ var modelname=netlistcreator.readwtx(model,"name");
+
+ if(modelname=="ac"){
+ netlistcreator.writewtx(model,"phase",$('webtronics_phase_value').value);
+ netlistcreator.writewtx(model,"amplitude",$('webtronics_amplitude_value').value);
+
+ }
+ else if(modelname=="sinvoltagesource"){
+ netlistcreator.writewtx(model,"offsetvoltage",$('webtronics_offsetvoltage_value').value);
+ netlistcreator.writewtx(model,"voltageamplitude",$('webtronics_voltageamplitude_value').value);
+ netlistcreator.writewtx(model,"frequency",$('webtronics_frequency_value').value);
+ netlistcreator.writewtx(model,"delaytime",$('webtronics_delaytime_value').value);
+ netlistcreator.writewtx(model,"dampingfactor",$('webtronics_dampingfactor_value').value);
+
+ }
+ else if(modelname=="pulse"){
+ netlistcreator.writewtx(model,"pulval1",$('webtronics_pulval1_value').value);
+ netlistcreator.writewtx(model,"pulval2",$('webtronics_pulval2_value').value);
+ netlistcreator.writewtx(model,"pulval3",$('webtronics_pulval3_value').value);
+ netlistcreator.writewtx(model,"pulval4",$('webtronics_pulval4_value').value);
+ netlistcreator.writewtx(model,"pulval5",$('webtronics_pulval5_value').value);
+ netlistcreator.writewtx(model,"pulval6",$('webtronics_pulval6_value').value);
+ netlistcreator.writewtx(model,"pulval7",$('webtronics_pulval7_value').value);
+ }
+ else if(modelname=="pwl"){
+ netlistcreator.writewtx(model,"pwlval1",$('webtronics_pwlval1_value').value);
+ netlistcreator.writewtx(model,"pwlval2",$('webtronics_pwlval2_value').value);
+ netlistcreator.writewtx(model,"pwlval3",$('webtronics_pwlval3_value').value);
+ netlistcreator.writewtx(model,"pwlval4",$('webtronics_pwlval4_value').value);
+ netlistcreator.writewtx(model,"pwlval5",$('webtronics_pwlval5_value').value);
+ netlistcreator.writewtx(model,"pwlval6",$('webtronics_pwlval6_value').value);
+ netlistcreator.writewtx(model,"pwlval7",$('webtronics_pwlval7_value').value);
+ netlistcreator.writewtx(model,"pwlval8",$('webtronics_pwlval8_value').value);
+ }
+ else if(modelname=="exponential"){
+ netlistcreator.writewtx(model,"eval1",$('webtronics_eval1_value').value);
+ netlistcreator.writewtx(model,"eval2",$('webtronics_eval2_value').value);
+ netlistcreator.writewtx(model,"eval3",$('webtronics_eval3_value').value);
+ netlistcreator.writewtx(model,"eval4",$('webtronics_eval4_value').value);
+ netlistcreator.writewtx(model,"eval5",$('webtronics_eval5_value').value);
+ netlistcreator.writewtx(model,"eval6",$('webtronics_eval6_value').value);
+ }
+
+ else if(modelname=="and"|| c=='not'|| c=='nand'|| c=='or'||c=='nor'||c=='xor'||c=='xnor'){
+ netlistcreator.writewtx(model,"risedelay",$('webtronics_risedelay_value').value);
+ netlistcreator.writewtx(model,"falldelay",$('webtronics_falldelay_value').value);
+ netlistcreator.writewtx(model,"inputload",$('webtronics_inputload_value').value);
+ }
+
+ webtronics.circuit.createvalue(webtronics.circuit.selected[0]);
+});
+
+ if($('webtronics_properties_cancel'))Event.observe($('webtronics_properties_cancel'), 'click', function() {
+ $("webtronics_print_dir_field").style.display="none";
+ $('webtronics_properties_div').style.display='none';
+ webtronics.enablepage();
+ });
+
+ if($('webtronics_part_model'))Event.observe($('webtronics_part_model'),'change',function(){
+ var part=netlistcreator.readwtx(webtronics.circuit.selected[0],"name");
+ var cat=netlistcreator.readwtx(webtronics.circuit.selected[0],"category");
+ if($('webtronics_part_model').value){
+ $("webtronics_part_dir_model").options.length=0;
+ $("webtronics_part_dir_model").appendChild(new Element("option",{"value":""}).update("none"));
+ for( var i=0;i<webtronics.partslists.length;i++){
+ for(var j=0;j<webtronics.partslists[i].parts[cat][part].values[$('webtronics_part_model').value].length;j++){
+ $("webtronics_part_dir_model").insert(new Element("option",{"value":webtronics.partslists[i].parts[cat][part].values[$('webtronics_part_model').value][j]}).update(webtronics.partslists[i].parts[cat][part].values[$('webtronics_part_model').value][j]));
+ }
+ }
+ }
+ $('webtronics_part_value').value=$("webtronics_part_model").options[$("webtronics_part_model").selectedIndex].value;
+
+ });
+
+ if($('webtronics_part_dir_model'))Event.observe($('webtronics_part_dir_model'),'change',function(){
+ $('webtronics_part_dir_value').value=$("webtronics_part_dir_model").options[$("webtronics_part_dir_model").selectedIndex].value;
+
+ });
+ //**OPEN LOCAL SPICE MODELS EXPERIMENT
+ // if($("webtronics_part_file"))Event.observe($("webtronics_part_file"),'change',function(){
+ // console.log($("webtronics_part_file").files[0]);
+ // if(window.FileReader){
+ //
+ // var textReader = new FileReader();
+ // textReader.onloadend=function(){
+ // if(!textReader.result){
+ // console.log("error opening file");
+ // return;
+ // };
+ //
+ // }.bind(this);
+ // textReader.readAsText();
+ // }
+ // }.bind(this));
+
+ /*save as png modal*/
+ if($("webtronics_image_ok")){
+ Event.observe($('webtronics_image_ok'), 'click', function() {
+ webtronics.enablepage();
+ $('webtronics_image').style.display='none';
+ webtronics.setMode('select','Selection');
+ });
+
+
+ }
+
+ /*chip box events*/
+ Event.observe($('webtronics_vert_pins'), 'change', function() {
+ $("webtronics_chip_display").parentNode.removeChild($("webtronics_chip_display"));
+ var div=new Element("div",{id:"webtronics_chip_display"})
+ .insert(chipmaker.drawchip($('webtronics_hor_pins').value,$('webtronics_vert_pins').value));
+ $("webtronics_chips_box").insertBefore(div,$("webtronics_chips_box").firstChild);
+ });
+ Event.observe($('webtronics_hor_pins'), 'change', function() {
+ $("webtronics_chip_display").parentNode.removeChild($("webtronics_chip_display"));
+ var div=new Element("div",{id:"webtronics_chip_display"})
+ .update(chipmaker.drawchip($('webtronics_hor_pins').value,$('webtronics_vert_pins').value));
+ $("webtronics_chips_box").insertBefore(div,$("webtronics_chips_box").firstChild);
+ });
+
+ Event.observe($('webtronics_chip_spice_select'), 'change', function() {
+ $("webtronics_chip_display").parentNode.removeChild($("webtronics_chip_display"));
+ var div=new Element("div",{id:"webtronics_chip_display"})
+ $("webtronics_chips_box").insertBefore(div,$("webtronics_chips_box").firstChild);
+ $("webtronics_chip_spice").value=$('webtronics_chip_spice_select').value;
+ if($('webtronics_chip_spice_select').value!="none"){
+ openfile("symbols/predefined/"+$('webtronics_chip_spice_select').value+".svg",function(svg){
+ div.update(svg);
+ var model=$("webtronics_chip_display").getElementsByTagName("g")[0];
+ netlistcreator.writewtx(model,"value",$('webtronics_chip_spice_select').value);
+ netlistcreator.writewtx(model,"model",webtronics.models[$('webtronics_chip_spice_select').value]);
+ });
+ }
+ });
+
+
+ Event.observe($('webtronics_chip_ok'), 'click', function() {
+ webtronics.enablepage()
+ webtronics.returnchip();
+ //chipmaker.clear();
+ });
+ Event.observe($('webtronics_chip_cancel'), 'click', function() {
+ webtronics.enablepage();
+ $('webtronics_chips_box').style.display='none';
+ webtronics.setMode('select','Selection');
+ });
+ /*text add events*/
+ if($("webtronics_text_ok")){
+ Event.observe($('webtronics_text_ok'), 'click', function() {
+ webtronics.circuit.addtext($('webtronics_comment').value);
+ $('webtronics_add_text').style.display='none';
+ webtronics.setMode('select','Selection');
+ });
+ }
+ if($("webtronics_text_cancel")){
+ Event.observe($('webtronics_text_cancel'), 'click', function() {
+ webtronics.setMode('select','Selection');
+ $('webtronics_add_text').style.display='none';
+ });
+ }
+ /*netlist text events*/
+ if($("webtronics_netlist_text_ok")){
+ Event.observe($('webtronics_netlist_text_ok'), 'click', function() {
+ webtronics.setMode('select','Selection');
+ $('webtronics_netlist_text').style.display='none';
+ webtronics.enablepage();
+ });
+ }
+
+
+
+
+
+
+
+ if($("webtronics_netlist_text_run")){
+ Event.observe($('webtronics_netlist_text_run'), 'click', function() {
+ webtronics.gnucapjs($("webtronics_netlist_text_area").value);
+ //$('webtronics_netlist_text').style.visibility='none';
+ //webtronics.enablepage();
+ });
+ }
+ /*scope events*/
+ if($("webtronics_scope_display")){
+ this.scopestatus=$("webtronics_scope_status");
+ this.scopedata=$("webtronics_scope_data");
+
+ $("webtronics_scope_output_graph").checked=true;
+ Event.observe($("webtronics_scope_output_graph"),'click',function(){$("webtronics_scope_display_frame").contentWindow.displaygraph()});
+ Event.observe($("webtronics_scope_output_log"),'click', function(){$("webtronics_scope_display_frame").contentWindow.displaylog()});
+
+ Event.observe($('webtronics_scope_display_ok'), 'click', function() {
+ webtronics.setMode('select','Selection');
+ $('webtronics_scope_display').style.display='none';
+ $('webtronics_scope_display_div').innerHTML="";
+ // webtronics.enablepage();
+ });
+ Event.observe($('webtronics_scope_display_stop'), 'click', function() {
+ webtronics.setMode('select','Selection');
+ $("webtronics_scope_display_frame").contentWindow.stopsimulation()
+// $('webtronics_scope_display').style.display='none';
+// $('webtronics_scope_display_div').innerHTML="";
+ // webtronics.enablepage();
+ });
+
+
+
+ Event.observe($("webtronics_scope_display"),'mousedown',function(e){
+ var startx=e.layerX;
+ var starty=e.layerY;
+ Event.observe($("webtronics_scope_display"),'mousemove',function(e){
+ $("webtronics_scope_display").style.top =e.clientY-starty + 'px';
+ $("webtronics_scope_display").style.left =e.clientX-startx + 'px';
+ });
+ e.preventDefault();
+ });
+ Event.observe($("webtronics_scope_display"),'mouseup',function(){
+ Event.stopObserving($("webtronics_scope_display"),'mousemove');
+ });
+
+ }
+
+
+
+ /*text open events*/
+ Event.observe($('webtronics_open_text_ok'), 'click', function() {
+ $('webtronics_open_text').style.display='none';
+ });
+ Event.observe($('webtronics_open_text_cancel'), 'click', function() {
+ webtronics.setMode('select','Selection');
+
+ $('webtronics_open_text').style.display='none';
+ });
+ //sources events
+ Event.observe($('webtronics_add source_ok'), 'click', function() {
+ var sources=$$(".webtronics_add_source_input");
+ var addresses=[]
+ for( var i=0;i<sources.length;i++){
+ if(sources[i].value.match(/.*/)!=-1)addresses.push(sources[i].value);
+ }
+ webtronics.serverurls=addresses;
+ webtronics.populatemenu();
+ $('webtronics_add source').style.display='none';
+ webtronics.enablepage();
+ });
+
+ Event.observe($("webtronics_add_source_cancel"), 'click', function() {
+ webtronics.setMode('select','Selection');
+
+ $('webtronics_add source').style.display='none';
+ webtronics.enablepage();
+ });
+
+
+
+ }.bind(this));
+
+}
+}
+webtronics.init();
diff --git a/views/script/netlist.js b/views/script/netlist.js index 4935433..6e74bdd 100644 --- a/views/script/netlist.js +++ b/views/script/netlist.js @@ -408,6 +408,11 @@ try{ catch(e){ part.error="wtx:risedelay not found";} +try{ + part.inputload=this.readwtx(parts[i],'inputload'); + } +catch(e){ + part.error="wtx:inputload not found";} //special tag for parts that do simulation @@ -573,7 +578,7 @@ getnodes:function(parts){ //create pins array var net={error:parts[i].error,pwlval1:parts[i].pwlval1,pwlval2:parts[i].pwlval2,pwlval3:parts[i].pwlval3,pwlval4:parts[i].pwlval4,pwlval5:parts[i].pwlval5,pwlval6:parts[i].pwlval6,pwlval7:parts[i].pwlval7,pwlval8:parts[i].pwlval8,pulval1:parts[i].pulval1,pulval2:parts[i].pulval2,pulval3:parts[i].pulval3,pulval4:parts[i].pulval4,pulval5:parts[i].pulval5,pulval6:parts[i].pulval6,pulval7:parts[i].pulval7,name:parts[i].name, partid:parts[i].id,pins:{analog:parts[i].analogpins,digital:parts[i].digitalpins},model:parts[i].value,amplitude:parts[i].amplitude, - phase:parts[i].phase, risedelay:parts[i].risedelay, falldelay:parts[i].falldelay, offsetvoltage:parts[i].offsetvoltage,voltageamplitude:parts[i].voltageamplitude,frequency:parts[i].frequency, + phase:parts[i].phase, risedelay:parts[i].risedelay, inputload:parts[i].inputload, falldelay:parts[i].falldelay, offsetvoltage:parts[i].offsetvoltage,voltageamplitude:parts[i].voltageamplitude,frequency:parts[i].frequency, delaytime:parts[i].delaytime,dampingfactor:parts[i].dampingfactor,eval1:parts[i].eval1,eval2:parts[i].eval2,eval3:parts[i].eval3,eval4:parts[i].eval4,eval5:parts[i].eval5,eval6:parts[i].eval6}; if(net!=null)sections.netlist.push(net); } @@ -642,7 +647,7 @@ else if(sections.netlist[i].name=="exponential"){ command+=" "+"EXP ("+sections.netlist[i].eval1+" "+sections.netlist[i].eval2+" "+sections.netlist[i].eval3+" "+sections.netlist[i].eval4+" "+sections.netlist[i].eval5+" "+sections.netlist[i].eval6+")"; } else if(sections.netlist[i].name=="and"){ - command+=" "+sections.netlist[i].risedelay+" "+sections.netlist[i].falldelay; + command+=" "+sections.netlist[i].risedelay+" "+sections.netlist[i].falldelay+" "+sections.netlist[i].inputload; } else{ command+=" "+sections.netlist[i].model; diff --git a/views/script/netlist.js~ b/views/script/netlist.js~ new file mode 100644 index 0000000..8265718 --- /dev/null +++ b/views/script/netlist.js~ @@ -0,0 +1,839 @@ +var netlistcreator={ + matrixxform:function(point,matrix){ + var pin=webtronics.circuit.svgRoot.createSVGPoint(); + pin.x=point.x; + pin.y=point.y; + pin=pin.matrixTransform(matrix); + return {x:Math.round(pin.x),y:Math.round(pin.y)}; + }, + + /*tests if 2 point are within 3 pixels of each other*/ + ispoint:function(point1,point2){ + return (Math.abs(point2.x-point1.x)<3)&&(Math.abs(point2.y-point1.y)<3); + }, + + sortnetlist:function(list){ + var G=[]; + var S=[]; + var A=[]; + var B=[]; + var C=[]; + var D=[]; + var I=[]; + var J=[]; + var K=[]; + var L=[]; + var M=[]; + var N=[]; + var P=[]; + var Q=[]; + var R=[]; + var U=[]; + var V=[]; + var wire=[]; + var other=[] + for(var i=0;i<list.length;i++){ + if(list[i].type=='gnd'){ + G.push(list[i]); + } + else if(list[i].type=='v'){ + V.push(list[i]); + } + else if(list[i].type=='wire'){ + wire.push(list[i]); + } + else if(list[i].type=='b'){ + B.push(list[i]); + } + else if(list[i].type=='c'){ + C.push(list[i]); + } + else if(list[i].type=='d'){ + D.push(list[i]); + } + else if(list[i].type=='i'){ + J.push(list[i]); + } + else if(list[i].type=='j'){ + J.push(list[i]); + } + else if(list[i].type=='k'){ + K.push(list[i]); + } + else if(list[i].type=='l'){ + L.push(list[i]); + } + else if(list[i].type=='m'){ + M.push(list[i]); + } + else if(list[i].type=='n'){ + N.push(list[i]); + } + else if(list[i].type=='plot'){ + P.push(list[i]); + } + else if(list[i].type=='q'){ + Q.push(list[i]); + } + else if(list[i].type=='r'){ + R.push(list[i]); + } + else if(list[i].type=='u'){ + U.push(list[i]); + } + /* this is the best way I could think to tell if a part i digital */ + else if(list[i].category=="digital"){ + A.push(list[i]); + } + else { + list[i].error='unknown device'; + other.push(list[i]); + } + } + + var sortfunction=function(a,b){ + var apart=a.id.replace(a.type,""); + var bpart=b.id.replace(b.type,""); + if(!apart)apart=0; + if(!bpart)bpart=0; + return (apart>bpart); + }; + V.sort(sortfunction); + wire.sort(sortfunction); + B.sort(sortfunction); + C.sort(sortfunction); + D.sort(sortfunction); + I.sort(sortfunction); + J.sort(sortfunction); + K.sort(sortfunction); + L.sort(sortfunction); + M.sort(sortfunction); + N.sort(sortfunction); + P.sort(sortfunction); + Q.sort(sortfunction); + R.sort(sortfunction); + U.sort(sortfunction); + A.sort(sortfunction); + + var newlist=[]; + G.each(function(item){newlist.push(item)}); + G.reverse(); + V.each(function(item){newlist.push(item)}); + wire.each(function(item){newlist.push(item)}); + B.each(function(item){newlist.push(item)}); + C.each(function(item){newlist.push(item)}); + D.each(function(item){newlist.push(item)}); + I.each(function(item){newlist.push(item)}); + J.each(function(item){newlist.push(item)}); + K.each(function(item){newlist.push(item)}); + L.each(function(item){newlist.push(item)}); + M.each(function(item){newlist.push(item)}); + N.each(function(item){newlist.push(item)}); + Q.each(function(item){newlist.push(item)}); + R.each(function(item){newlist.push(item)}); + U.each(function(item){newlist.push(item)}); + A.each(function(item){newlist.push(item)}); + other.each(function(item){newlist.push(item)}); + + /*plots go last*/ + P.each(function(item){newlist.push(item)}); + + + return newlist; + }, + + /* draws wires to namewire ports with the same id*/ + connectnamewires:function(list){ + + for(var i=0;i<list.length;i++){ + if((list[i].type=="wire") || (list[i].type=="gnd")){ + for(var j=i;j<list.length;j++){ + if( (list[i]!=list[j]) && ((list[i].id==list[j].id) || (list[i].type=="gnd" && list[j].type=="gnd")) ){ + var line= webtronics.circuit.createline('yellow',1,list[i]['analogpins'][0]['x'],list[i]['analogpins'][0]['y'],list[j]['analogpins'][0]['x'],list[j]['analogpins'][0]['y']); + line.setAttributeNS(null,'class','webtronics_namewire_connector'); + webtronics.circuit.info.appendChild(line); + //console.log(line); + break; + } +} +} +} +}, + +/*check for vectors and convert them*/ +tovector:function(pin,nodenumber){ + var v =""; + if(pin.parentNode.tagName=="wtx:vector"){ + var vector=Element.descendants(pin.parentNode); + if(pin==vector[0]){v+="["} + v+="a"+nodenumber; + if(pin==vector[vector.length-1]){v+="]";} + } + else{ + v+="a"+nodenumber; + } + + return v; +}, + +/* + * <wtx:pins> + * <wtx:analog> + * <wtx:node index="1" x="0" y="10"></wtx:node> + * <wtx:node index="2" x="40" y="10"></wtx:node> + * </wtx:analog> + * </wtx:pins> + * <wtx:id>r</wtx:id> + * <wtx:type>r</wtx:type> + * <wtx:name>testresistor</wtx:name> + * <wtx:category>resistors</wtx:category> + * <wtx:value></wtx:value> + * <wtx:label></wtx:label> + * <wtx:spice></wtx:spice> + * <wtx:flip></wtx:flip> + * <wtx:model></wtx:model> + */ + + + getwtxdata:function(parts){ + list=[]; + for(var i=0;i<parts.length;i++){ + var part={error:"", elem:{}, analogpins:[],digitalpins:[],amplitude:"",phase:"",offsetvoltage:"",voltageamplitude:"",frequency:"",delaytime:"",dampingfactor:"",type:"", name:"", category:"", value:"", spice:"", model:"",measure:"", risedelay:"", falldelay:"", pulval1:"", pulval2:"", pulval3:"", pulval4:"", pulval5:"", pulval6:"", pulval7:"", eval1:"", eval2:"", eval3:"", eval4:"", eval5:"", eval6:"", pwlval1:"", pwlval2:"", pwlval3:"", pwlval4:"", pwlval5:"", pwlval6:"", pwlval7:"", pwlval8:"" + } + /* + * try{ + * part.nodes=this.getwtxpins(part[i]); + } + catch{part.error="wtx:pins not found"} + */ + part.elem=parts[i]; + + try{ + var category=webtronics.circuit.getwtxtagname(parts[i],"analog")[0]; + var nodes = webtronics.circuit.getwtxtagname(category,"node"); + for(var j=0;j<nodes.length;j++){ + var point = this.matrixxform( {x:webtronics.circuit.getwtxattribute(nodes[j],"x"),y:webtronics.circuit.getwtxattribute(nodes[j],"y")},webtronics.circuit.parseMatrix(part.elem)); + part.analogpins.push({index:webtronics.circuit.getwtxattribute(nodes[j],"index"),x:point.x,y:point.y,node:undefined}) ; + } + //sort nodes int correct order + part.analogpins.sort(function(a,b){if (a.name > b.name)return 1;if (a.name < b.name)return -1;return 0;}); + } + catch(e){console.log("no analog pins found");} + + try{ + var category=webtronics.circuit.getwtxtagname(parts[i],"digital")[0]; + var nodes = webtronics.circuit.getwtxtagname(category,"node"); + for(var j=0;j<nodes.length;j++){ + var point = this.matrixxform( {x:webtronics.circuit.getwtxattribute(nodes[j],"x"),y:webtronics.circuit.getwtxattribute(nodes[j],"y")},webtronics.circuit.parseMatrix(part.elem)); + part.digitalpins.push({index:webtronics.circuit.getwtxattribute(nodes[j],"index"),x:point.x,y:point.y,node:undefined}) ; + } + part.digitalpins.sort(function(a,b){if (a.name > b.name)return 1;if (a.name < b.name)return -1;return 0;}); + } + catch(e){console.log("no digital pins found");} + try{ + part.id=this.readwtx(parts[i],'id'); + if(part.type=="gnd"){part.id=part.type;this.writewtx(parts[i],'id',part.id);console.log(this.readwtx(parts[i],'id')+" sfd ");} + } + catch(e){part.error="wtx:id not found";} + try{ + part.type=this.readwtx(parts[i],'type'); + } + catch(e){ + part.error="wtx:type not found"; + } + try{ + part.name=this.readwtx(parts[i],'name'); + } + catch(e){part.error="wtx:name not found";} + try{ + part.category=this.readwtx(parts[i],'category'); + } + catch(e){part.error="wtx:category not found";} + try{ + part.value=this.readwtx(parts[i],'value'); + + } + catch(e){part.error="wtx:value not found";} + try{ + part.spice=this.readwtx(parts[i],'spice'); + } + catch(e){part.error="wtx:spice not found";} + try{ + part.model=this.readwtx(parts[i],'model'); + } + catch(e){part.error="wtx:model not found";} + //for ac voltage source + try{ + part.amplitude=this.readwtx(parts[i],'amplitude'); + + + } + + catch(e){part.error="wtx:amplitude not found";} + try{ + part.phase=this.readwtx(parts[i],'phase'); + } + catch(e){part.error="wtx:phase not found";} + + //for sinusoidal voltage source + + try{ + part.offsetvoltage=this.readwtx(parts[i],'offsetvoltage'); + } + catch(e){part.error="wtx:offsetvoltage not found";} + + try{ + part.voltageamplitude=this.readwtx(parts[i],'voltageamplitude'); + } + catch(e){part.error="wtx:voltageamplitude not found";} + try{ + part.frequency=this.readwtx(parts[i],'frequency'); + } + catch(e){part.error="wtx:frequency not found";} + try{ + part.delaytime=this.readwtx(parts[i],'delaytime'); + } + catch(e){part.error="wtx:delaytime not found";} + try{ + part.dampingfactor=this.readwtx(parts[i],'dampingfactor'); + } + catch(e){part.error="wtx:dampingfactor not found";} + + // FOR pulse volatge source + try{ + part.pulval1=this.readwtx(parts[i],'pulval1'); + } + catch(e){part.error="wtx:Initial Value not found";} + + try{ + part.pulval2=this.readwtx(parts[i],'pulval2'); + } + catch(e){part.error="wtx:Pulse Value not found";} + try{ + part.pulval3=this.readwtx(parts[i],'pulval3'); + } + catch(e){part.error="wtx:Delay Time not found";} + try{ + part.pulval4=this.readwtx(parts[i],'pulval4'); + } + catch(e){part.error="wtx:Rise Time not found";} + + try{ + part.pulval5=this.readwtx(parts[i],'pulval5'); + } + catch(e){part.error="wtx:Fall Time not found";} + try{ + part.pulval6=this.readwtx(parts[i],'pulval6'); + } + catch(e){part.error="wtx:Pulse Period not found";} + try{ + part.pulval7=this.readwtx(parts[i],'pulval7'); + } + catch(e){part.error="wtx:Pulse Width not found";} + + //FOR pwl volatge source + try{ + part.pwlval1=this.readwtx(parts[i],'pwlval1'); + } + catch(e){part.error="wtx:Time T1 Value not found";} + + try{ + part.pwlval2=this.readwtx(parts[i],'pwlval2'); + } + catch(e){part.error="wtx:Voltage V1 Value not found";} + try{ + part.pwlval3=this.readwtx(parts[i],'pwlval3'); + } + catch(e){part.error="wtx:Time T2 Value not found";} + try{ + part.pwlval4=this.readwtx(parts[i],'pwlval4'); + } + catch(e){part.error="wtx:Voltage V2 value not found";} + + try{ + part.pwlval5=this.readwtx(parts[i],'pwlval5'); + } + catch(e){part.error="wtx:Time T3 value not found";} + try{ + part.pwlval6=this.readwtx(parts[i],'pwlval6'); + } + catch(e){part.error="wtx:Voltage V3 value not found";} + try{ + part.pwlval7=this.readwtx(parts[i],'pwlval7'); + } + catch(e){part.error="wtx:Time T4 Value not found";} + try{ + part.pwlval8=this.readwtx(parts[i],'pwlval8'); + } + catch(e){part.error="wtx:Voltage V4 Value not found";} + +//FOR exponential volatge source +try{ + part.eval1=this.readwtx(parts[i],'eval1'); +} +catch(e){part.error="wtx:Initial Value not found";} + +try{ + part.eval2=this.readwtx(parts[i],'eval2'); +} +catch(e){part.error="wtx:Pulse Value not found";} +try{ + part.eval3=this.readwtx(parts[i],'eval3'); +} +catch(e){part.error="wtx:Rise Time Delay value not found";} +try{ + part.eval4=this.readwtx(parts[i],'eval4'); +} +catch(e){part.error="wtx:Rise Time Constant value not found";} + +try{ + part.eval5=this.readwtx(parts[i],'eval5'); +} +catch(e){part.error="wtx:Fall Time Delay value not found";} +try{ + part.eval6=this.readwtx(parts[i],'eval6'); +} +catch(e){part.error="wtx:Fall Time Constan value not found";} + +//digital and + try{ + part.risedelay=this.readwtx(parts[i],'risedelay'); + } +catch(e){ + part.error="wtx:risedelay not found";} + +try{ + part.falldelay=this.readwtx(parts[i],'falldelay'); + } +catch(e){ + part.error="wtx:risedelay not found";} + +try{ + part.inputload=this.readwtx(parts[i],'inputload'); + } +catch(e){ + part.error="wtx:inputload not found";} + + + //special tag for parts that do simulation + try{ + part.measure=this.readwtx(parts[i],'measure'); + } + catch(e){} + + list.push(part); + } + return list; + +}, +/*detect analog and digital mix*/ +mixedsignals:function(analogwires,digitalwires){ + + for(var j=1;j<analogwires.length;j++){ + var crossed=this.getconnected(digitalwires,analogwires[j]); + if(crossed>-1){ + return true; + } + } + return false; +}, + +/* test if wires are connected anywhere*/ +getconnected:function(wirelist,wire){ + for(var i=0;i<wirelist.length;i++){ + for(var j=0;j<wirelist[i].length;j++){ + for(var k=0;k<wire.length;k++){ + if(this.ispoint(wirelist[i][j],wire[k])){ + return i; + } + } + } + } + return -1; +}, + +//returns points connected by lines +//it is recursive and should be called with NULL for wires +followwires:function(wires,pin){ + if(wires==null)wires=[]; + var points=[]; + points.push(pin); + var lines =webtronics.circuit.getwithselector('#webtronics_drawing > line, #information > .webtronics_namewire_connector'); + for(var i =0 ;i<lines.length;i++){ + var point1={x:lines[i].getAttribute('x1')-0,y:lines[i].getAttribute('y1')-0}; + var point2={x:lines[i].getAttribute('x2')-0,y:lines[i].getAttribute('y2')-0}; + if(wires.indexOf(lines[i])<0){ + if(this.ispoint(point1,pin)){ + wires.push(lines[i]); + var p=this.followwires(wires,point2); + for(var j=0;j<p.length;j++)points.push(p[j]); + } + else if(this.ispoint(point2,pin)){ + wires.push(lines[i]); + var p=this.followwires(wires,point1); + for(var j=0;j<p.length;j++)points.push(p[j]); + } +} +} +return points; +}, + + + +//sets the node numbers for parts +numberwires:function(parts){ + var analogpoints=[]; + var digitalpoints=[]; + for(var i=0;i<parts.length; i++){ + //analog node numbering loop + if(parts[i].type=="wire")continue; + + if( parts[i].type=="gnd"){ + if (analogpoints.length==0 ){ + var wire=this.followwires(null,{x:parts[i].analogpins[0]['x'],y:parts[i].analogpins[0]['y']}); + analogpoints.push(wire); +//add this node to thelist of digital wires +digitalpoints.push(wire); +} +parts[i].analogpins[0]["node"]=0; +// parts[i].digitalpins[0]["node"]=0; +continue; +} +if(parts[i].analogpins!=undefined){ + for(var j=0;j<parts[i].analogpins.length;j++){ + var wire=this.followwires(null,{x:parts[i].analogpins[j]['x'],y:parts[i].analogpins[j]['y']}); + var found=this.getconnected(analogpoints,wire); + if(found<0){ + analogpoints.push(wire); + parts[i].analogpins[j]["node"]=analogpoints.length-1; + } + else{ + parts[i].analogpins[j]["node"]=found; + } + } +} + //digital node numbering loop + + if(parts[i].digitalpins!=undefined){ + for(var j=0;j<parts[i].digitalpins.length;j++){ + var wire=this.followwires(null,{x:parts[i].digitalpins[j]['x'],y:parts[i].digitalpins[j]['y']}); + var found=this.getconnected(digitalpoints,wire); + if(found<0){ + digitalpoints.push(wire); + parts[i].digitalpins[j]["node"]=digitalpoints.length-1; + } + else{ + parts[i].digitalpins[j]["node"]=found; + } + } + } + } + //returns true if digital and analog are mixed + return this.mixedsignals(analogpoints,digitalpoints); +} , + + + +/* creates all netlist data from parts data*/ +getnodes:function(parts){ + var sections={netlist:[],coupling:[],firstdir:[],simulation:[],lastdir:[]}; + + //if(this.numberwires(parts))return {firstdir:[],netlist:[{error:"pin is both analog and digital"}],lastdir:[],plot:[]}; + this.numberwires(parts); + for(var i=0;i<parts.length; i++){ + // if(parts[i].type=="wire")continue; + // check what type of simulation to use + if(parts[i].type=='gnd' || parts[i].type=='wire')continue; + if(parts[i].type=="plot"){ + if(sections.simulation.length==0){ + sections.simulation.push(".op"); + sections.simulation.push(".print tran"); + } + if(sections.simulation[1] !=undefined && sections.simulation[1].match(/\.print\sac/g)==null){ + sections.simulation[1]+=" v("+parts[i].analogpins[0]["node"]+")"; + sections.simulation[1]+=" "+parts[i].measure; + if(parts[i].model)sections.simulation.push(parts[i].model); + } + + + } + else{ + if(parts[i].type=="v"){ + if(sections.simulation.length==0 && parts[i].model.length){ + sections.simulation.push(".op"); + sections.simulation.push(".print ac "+parts[i].measure); + sections.simulation.push(parts[i].model); + } + } + else if(parts[i].type=="l"){ + if(parts[i].model.length){ + sections.coupling.push(parts[i].model); + } + } + else{ + if(parts[i].model.match(/\.mod/i) && !parts[i].id.match(/^x/))parts[i].id="x"+parts[i].id; + if(parts[i].model.length)sections.firstdir.push(parts[i].model); + + } + //create pins array + var net={error:parts[i].error,pwlval1:parts[i].pwlval1,pwlval2:parts[i].pwlval2,pwlval3:parts[i].pwlval3,pwlval4:parts[i].pwlval4,pwlval5:parts[i].pwlval5,pwlval6:parts[i].pwlval6,pwlval7:parts[i].pwlval7,pwlval8:parts[i].pwlval8,pulval1:parts[i].pulval1,pulval2:parts[i].pulval2,pulval3:parts[i].pulval3,pulval4:parts[i].pulval4,pulval5:parts[i].pulval5,pulval6:parts[i].pulval6,pulval7:parts[i].pulval7,name:parts[i].name, + partid:parts[i].id,pins:{analog:parts[i].analogpins,digital:parts[i].digitalpins},model:parts[i].value,amplitude:parts[i].amplitude, + phase:parts[i].phase, risedelay:parts[i].risedelay, inputload:parts[i].inputload, falldelay:parts[i].falldelay, offsetvoltage:parts[i].offsetvoltage,voltageamplitude:parts[i].voltageamplitude,frequency:parts[i].frequency, + delaytime:parts[i].delaytime,dampingfactor:parts[i].dampingfactor,eval1:parts[i].eval1,eval2:parts[i].eval2,eval3:parts[i].eval3,eval4:parts[i].eval4,eval5:parts[i].eval5,eval6:parts[i].eval6}; + if(net!=null)sections.netlist.push(net); + } + + } + + return sections; +}, + +/* organizes data into netlist*/ +createnetlist:function(responsefunc){ + + var parts=webtronics.circuit.getwithselector('#webtronics_drawing > g'); + + if(parts.length<1){ + responsefunc("no parts found \n"); + return; + } + + + + var partswtx=this.sortnetlist(this.getwtxdata(parts)); + + + if(partswtx[0].type.toLowerCase()!='gnd'){ + responsefunc('no ground node'); + return; + } + this.connectnamewires(partswtx); + + var spice="*ngspice netlist * \n"; + var sections=this.getnodes(partswtx); + + //dump models into spice + + if(sections.netlist.length){ + var command=""; + for(var i=0;i<sections.netlist.length;i++){ + if(sections.netlist[i].error!=""){ + spice+=sections.netlist[i].error+'\n'; + continue; + } + command=sections.netlist[i].partid; + var pins=[]; + for(var j=0;j<sections.netlist[i].pins['analog'].length;j++)pins.push(sections.netlist[i].pins['analog'][j]); + for(var j=0;j<sections.netlist[i].pins['digital'].length;j++)pins.push(sections.netlist[i].pins['digital'][j]); + pins.sort(function(a,b){return a.index > b.index? 1:a.index < b.index?-1:0;}) +// console.log(pins); +for(var j=0;j<pins.length;j++){command += " "+pins[j].node;} + + if(sections.netlist[i].name=="ac"){ + command+=" "+"AC "+sections.netlist[i].amplitude+" "+sections.netlist[i].phase; + }else if(sections.netlist[i].name=="sinvoltagesource"){ + command+=" "+"SIN ("+sections.netlist[i].offsetvoltage+" "+sections.netlist[i].voltageamplitude+" "+sections.netlist[i].frequency+" "+sections.netlist[i].delaytime+" "+sections.netlist[i].dampingfactor+")"; + }else if(sections.netlist[i].name=="battery"){ + command+=" "+"DC "+sections.netlist[i].model; +}else if(sections.netlist[i].name=="current"){ + command+=" "+"dc "+sections.netlist[i].model; +}else if(sections.netlist[i].name=="pulse"){ + command+=" "+"PULSE ("+sections.netlist[i].pulval1+" "+sections.netlist[i].pulval2+" "+sections.netlist[i].pulval3+" "+sections.netlist[i].pulval4+" "+sections.netlist[i].pulval5+" "+sections.netlist[i].pulval6+" "+sections.netlist[i].pulval7+")"; +} +else if(sections.netlist[i].name=="pwl"){ + command+=" "+"PWL ("+sections.netlist[i].pwlval1+" "+sections.netlist[i].pwlval2+" "+sections.netlist[i].pwlval3+" "+sections.netlist[i].pwlval4+" "+sections.netlist[i].pwlval5+" "+sections.netlist[i].pwlval6+" "+sections.netlist[i].pwlval7+" "+sections.netlist[i].pwlval8+")"; +} +else if(sections.netlist[i].name=="exponential"){ + command+=" "+"EXP ("+sections.netlist[i].eval1+" "+sections.netlist[i].eval2+" "+sections.netlist[i].eval3+" "+sections.netlist[i].eval4+" "+sections.netlist[i].eval5+" "+sections.netlist[i].eval6+")"; +} +else if(sections.netlist[i].name=="and"){ + command+=" "+sections.netlist[i].risedelay+" "+sections.netlist[i].falldelay; +} +else{ + command+=" "+sections.netlist[i].model; +} +if(command!="")spice+=command+'\n'; +} +} + +if(sections.coupling.length){ + for(var i=0;i<sections.coupling.length;i++){ + spice+=sections.coupling[i]+'\n'; + } +} + + +var modelloader={ + modeltext:"", + modelcount:0, + download:function(name){ + var found=false; + for( var i=0;i<webtronics.partslists.length;i++){ + + if(JSON.stringify(webtronics.partslists[i]).indexOf(name)!=-1){ + found=true; + if(webtronics.partslists[i].url.indexOf("http://")==-1){//see if path is local + + openfile( webtronics.partslists[i].url+"/spice/"+ name,this.responder); + } + else{ + server.requestfile(list.url,this.responder); + } + break; + this.modelcount++; + } + + } + if(!found)console.log("model not found"); + }, + finish:function(){ + spice+=modelloader.modeltext; + if(sections.simulation.length){ + for(var i=0;i<sections.simulation.length;i++){ + if(sections.simulation[i]!="")spice+=sections.simulation[i]+"\n"; + } + } + if(sections.lastdir.length){ + sections.lastdir=sections.lastdir.uniq(); + for(var i=0;i<sections.lastdir.length;i++){ + if(sections.lastdir[i]!="")spice+=sections.lastdir[i]+"\n"; + } + } + responsefunc(spice); + }, + + responder:function(text){ + console.log("reponded"); + modelloader.modeltext+=text; + if(!modelloader.modelcount){ + modelloader.finish(); + spice=spice.concat(".end \n"); + + } + } +} + + +if(sections.firstdir.length){ + sections.firstdir=sections.firstdir.uniq(); + + for(var i=0;i<sections.firstdir.length;i++){ +// console.log(sections.firstdir[i]); + +if(sections.firstdir[i].length){ + + + + modelloader.download(sections.firstdir[i],sections,webtronics.partslists); +} +} +} +else modelloader.finish(); +var connector=webtronics.circuit.getwithselector('#information > .webtronics_namewire_connector') +for(var i=0;i<connector.length;i++)connector[i].parentNode.removeChild(connector[i]); + + + +}, + + + + + +writeconnects:function(pins){ + + var str=[]; + + for(var i=0;i<pins.length;i++){ + str[i] = pins[i].x +','+pins[i].y; + } + return str.join(';'); +}, + + +getconnects:function(elem){ + var pins=[]; + var nodes = this.getwtxtagname(elem,"node"); + for(var j=0;j<nodes.length;j++){ +// console.log(nodes[j]); +// console.log(this.parseMatrix(elem)); +var point = this.matrixxform( {x:this.getwtxattribute(nodes[j],"x"),y:this.getwtxattribute(nodes[j],"y")},this.parseMatrix(elem)); +pins.push({x:point.x,y:point.y}) ; +} + //sort nodes int correct order + return pins; + }, + + isconnect:function(pin,radius,x,y){ + return (Math.abs(pin.x-x)<3)&&(Math.abs(pin.y-y)<3); + }, + + isconnects:function(parts,radius,x,y){ + + for(var i=0; i<parts.length; i++){ + if(parts[i].tagName =='g'){ + var pins=this.getconnects(parts[i]); + if(pins){ + for(var j=0;j<pins.length;j++){ + if(this.isconnect(pins[j],radius,x,y)){ + return pins[j]; + } + } + } + } + } + return null; + }, + +//get the number by part id and leg +getnodenumber:function(name, leg){ + //get part by id + var part=webtronics.circuit.getwithselector("#webtronics_drawing wtx:id "+name )[0]; + var nodes=part.getwtxtagname("node"); + for(var i=0;i<nodes.length;i++){ + if(nodes[i].getAttribute("index")==leg){ + var wire = this.followwires(null,{ x:this.getwtxattribute(node,"x"),y:this.getwtxattribute(node,"y")}); + return this.getconnected(analogwires,wire); + } + } + return -1 +}, +getwtxtagname:function(elem,tagname){ + + + var tag=elem.getElementsByTagName("wtx:"+tagname); + if(!tag.length){ + tag=elem.getElementsByTagName(tagname); + } + if(!tag.length){ + tag=elem.getElementsByTagNameNS(this.wtxNs,tagname); + } + if(!tag.length){ + tag=elem.getElementsByTagNameNS("*",tagname); + } + return tag; + +}, + +getwtxattribute:function(elem,attrib){ + var value=elem.getAttribute(attrib); + if(value==undefined)value=elem.getAttributeNS(this.wtxNs,attrib); + if(value==undefined)value=elem.getAttributeNS("*",attrib); + + return value; +}, + +readwtx:function(elem,value){ + var tag=this.getwtxtagname(elem,value); + if(tag[0])return tag[0].textContent; + else return ""; +}, + +writewtx:function(elem,value,text){ + var tag=this.getwtxtagname(elem,value); + if(tag[0])tag[0].textContent=text; +}, + + + +} diff --git a/views/style/schematic.css b/views/style/schematic.css index 031ef32..0aca39d 100644 --- a/views/style/schematic.css +++ b/views/style/schematic.css @@ -220,8 +220,6 @@ div#webtronics_toolbar{ - - /*popups*/ div.modal{ display:none; @@ -423,3 +421,4 @@ div#webtronics_scope_status_bar{ -ms-user-select:none; } + diff --git a/views/style/schematic.css~ b/views/style/schematic.css~ new file mode 100644 index 0000000..9502122 --- /dev/null +++ b/views/style/schematic.css~ @@ -0,0 +1,439 @@ +.normal_button { + padding:2px; + border-style:solid; + border-width:2px; + border-color:black; + background-color:#e7e7e7; + border-radius:6px; + } + +.pressed_button { + padding:2px; + border-style:solid; + border-width:2px; + border-color:#000000; + background-color:#bfbfbf; + border-radius:6px; + } + +.normal_button:hover{ + padding:2px; + border-style:solid; + border-width:2px; + border-color:#000000; + background-color:#ffffff; + border-radius:6px; +} + + + +#webtronics_file{ + position :relative; + float:left; + height:32px; + margin:8px; + padding:2px; + border-style:solid; + border-width:2px; + border-color:#000000; + background-color:#FFFAF0; + border-radius:6px; +} +#webtronics_file *{ + float:left; +} + +.webtronics_menu{ + position:absolute; + padding:2px; + border-style:solid; + border-width:2px; + border-color:black; + background-color:#e7e7e7; + cursor:pointer; +} +.webtronics_menu>p:hover{ + background-color:#ffffff; + +} + + +div#webtronics_main_window{ + + font-family:verdana,arial; + font-size:10pt; + height:100%; + background-color:#e7e7e7; + border:2px solid #e7e7e7; + +} + +#webtronics_diagram_area>iframe{ + position:absolute; + overflow:hidden; + height:100%; + width:100%; + background-color:#e7e7e7; + border-width: 0px; + margin: 0px; + padding: 0px; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; +} + +/*list menu */ +div#webtronics_center{ + position:relative; + overflow:hidden; + background-color:inherit; + border:2px solid #000000; +} +/* tabs */ +div#webtronics_tab_area{ + position:relative; + float:left; + height: 32px; + background-color: #e7e7e7; +} + + +div.webtronics_tab{ + position:relative; + float:left; + overflow:hidden; + height:30px; + border-style:solid; + border-width:2px; + border-color:black; + border-top-left-radius:6px; + border-top-right-radius:6px; + background-color:#bfbfbf; + +} +div.webtronics_selected_tab{ + position:relative; + float:left; + overflow:hidden; + height:30px; + border-style:solid; + border-width:2px; + border-color:black; + border-top-left-radius:6px; + border-top-right-radius:6px; + background-color:inherit; + +} + +div#webtronics_new_tab{ + position:relative; + float:left; + height:30px; + border-style:solid; + border-width:2px; + border-color:black; + border-radius:6px; + background-color:#bfbfbf; +} + +div.webtronics_close_tab{ + position:relative; + float:right; + border-style:solid; + border-width:2px; + border-color:black; + border-radius:6px; + background-color:#bfbfbf; +} + +div#webtronics_side_bar{ + position:relative; + float:left; + width: 132px; + overflow: hidden; + border-style:solid; + border-width:2px; + border-color:black; +} + +div#webtronics_parts_list{ + position:relative; + left:0; + top:0; + width:132px; + display:block; + height:auto; + overflow:auto; +} + +div#webtronics_parts_list p{ + cursor:pointer; +} + + + +div#webtronics_parts_list>div div{ + display:none; + background-color:#ffffff; + cursor:pointer; +} + +div#webtronics_parts_list>div{ + background-color:#cfcfcf; + border-style:solid; + border-width:2px; + border-color:black; +} + +div#webtronics_parts_list>div>p:hover{ + background-color:#ffffff; +} + +div#webtronics_parts_list *{ + margin:0px; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; +} + + + +fieldset { + float:left; + margin-left:12px; + padding:0px; +} + + + +div#webtronics_toolbar{ + height:60px; + width:100%; + border-style:solid; + border-width:2px; + border-color:#000000; + overflow:hidden; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; + } + + + +/*popups*/ +div.modal{ + display:none; + position:absolute; + left:200px; + top:10px; + border-style: solid; + border-radius:20px; + background-color:inherit; + padding: 5px; +} +div.modal>*{ + float:left; +} +#webtronics_properties_buttons{ + clear:left; +} + +#webtronics_netlist_buttons{ + clear:left; +} + + +.webtronics_help{ + float:right; + border-style: solid; + border-color:#000000; + background-color:#000000; + color:#ffffff; + padding: 5px; + display:none; +} + + +#webtronics_chips_box>*{ +float:left; +} + +#webtronics_netlist_text>*{ +float:left; +} +#webtronics_netlist_text_div{ + overflow:hide; +} + +#webtronics_image{ + width:340px; + height:360px; + border:1px solid black; + background-color:#e7e7e7; + overflow:hide; +} +/*display areas*/ + + + +#webtronics_image_div{ + width:100%; + height:80%; + border:1px solid black; + background-color:#e7e7e7; + overflow:auto; +} +#webtronics_image_div>img{ + max-width:300px; + max-height:280px; + width:auto; + height:auto; +} + +#webtronics_diagram_area { + position:relative; + float:left; + overflow:hidden; + cursor:crosshair; + border:1px solid black; + background-color:#e7e7e7; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; + +} + +#webtronics_part_display{ + width:126px; + height:130px; + background-color:#ffffff; + border:2px solid black; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; + +} + + + +#webtronics_chip_display{ + width:200px; + height:200px; + border:1px solid black; + background-color:#ffffff; + overflow: auto; + } + +#webtronics_print_dir_field{ + display:none; + clear:right; +} + +div#webtronics_footer{ + float:left; + width:100%; + height:auto ; + background-color:inherit; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; +} +div#webtronics_disable{ + display:none; + position:absolute; + left:0; + top:0; + width:100%; + height:100%; + background: rgba(45,45,45,0.5) url(web.png) no-repeat; + background-size: 100% 100%; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; +} +div#webtronics_open_file{ + display:none; + overflow:hidden; + position:absolute; + left:200px; + top:10px; + border-style: none; + background-color:inherit; + padding: none; + } + +div#webtronics_open_file_selector{ + font-size:30pt; +} +/*menu style*/ + +div#webtronics_context_menu{ + display:none; + z-index:100; + position:absolute; + top:0; + left:0; + background-color:inherit; +} + +div#webtronics_context_menu .enabled,div#webtronics_file_menu .enabled{ + color:#000000; +} + +div#webtronics_context_menu .disabled,div#webtronics_file_menu .disabled{ + color:#bfbfbf; +} + +div#webtronics_context_menu .enabled:hover,div#webtronics_file_menu .enabled:hover{ + background-color:#bfbfbf; + color:#ffffff; +} + +#webtronics_scope_display>*{ + float:left; +} + +div#webtronics_scope_display_div{ + overflow:hidden; + width:480px; + height:360px; +} +#webtronics_scope_display_frame{ + overflow:hidden; + width:480px; + height:360px; + border-color:#000000; + border-width: 2px; +} + +div#webtronics_scope_display{ + width:540px; + height:auto; + overflow: hide; +} +div#webtronics_scope_status_bar{ + float:left; + width:100%; + height:auto ; + background-color:inherit; + -moz-user-select:none; + -webkit-user-select:none; + -ms-user-select:none; +} + + +#webtronics_risedelay{ + display:none; +} + +#webtronics_falldelay{ + display:none; +} + +#webtronics_inputload{ + display:none; +} + + + + |