MediaWiki:Resmark.js — различия между версиями
Vooon (обсуждение | вклад) |
Vooon (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 182: | Строка 182: | ||
newElm.setAttribute('checked', 1); | newElm.setAttribute('checked', 1); | ||
} | } | ||
− | + | ||
resmark_replDiv(newElm, elm); | resmark_replDiv(newElm, elm); | ||
} | } | ||
} | } | ||
+ | if(resmark_cols==5 && resmark_elem=='ind') | ||
+ | { | ||
+ | resmark_line1 = 0; | ||
+ | resmark_line2 = 0; | ||
+ | resmark_line3 = 0; | ||
+ | resmark_line4 = 0; | ||
+ | resmark_line5 = 'NONE!'; | ||
+ | resmark_resetTable(); | ||
+ | } | ||
+ | |||
resmark_eval(); | resmark_eval(); | ||
} | } | ||
Строка 213: | Строка 223: | ||
case 3: | case 3: | ||
var temp = eval(resmark_line1 + resmark_line2 + resmark_line3); | var temp = eval(resmark_line1 + resmark_line2 + resmark_line3); | ||
− | nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : temp; | + | nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp; |
dop.value = ''; | dop.value = ''; | ||
break; | break; | ||
case 4: | case 4: | ||
var temp = eval(resmark_line1 + resmark_line2 + resmark_line3); | var temp = eval(resmark_line1 + resmark_line2 + resmark_line3); | ||
− | nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : temp; | + | nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp; |
dop.value = resmark_line4 + '%'; | dop.value = resmark_line4 + '%'; | ||
break; | break; | ||
case 5: | case 5: | ||
var temp = eval(resmark_line1 + resmark_line2 + resmark_line3 + resmark_line4); | var temp = eval(resmark_line1 + resmark_line2 + resmark_line3 + resmark_line4); | ||
− | nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : temp; | + | nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp; |
dop.value = resmark_line5 + '%'; | dop.value = resmark_line5 + '%'; | ||
break; | break; | ||
Строка 255: | Строка 265: | ||
//- other ------------------------------------------------------ | //- other ------------------------------------------------------ | ||
+ | function resmark_ind(full) | ||
+ | { | ||
+ | if(Math.round(full * 1e+3)) | ||
+ | { | ||
+ | return (full * 1e+3) + ' мГн' | ||
+ | } | ||
+ | if(Math.round(full * 1e+6)) | ||
+ | { | ||
+ | return (full * 1e+6) + ' мкГн' | ||
+ | } | ||
+ | return (full) + ' Гн' | ||
+ | } | ||
function resmark_cap(full) | function resmark_cap(full) | ||
{ | { |
Текущая версия на 17:26, 3 октября 2007
//<source lang="javascript"> //- Resmark.js ------------------------------------------------------ addOnloadHook(do_resmark_init); var resmark_line1 = 0; var resmark_line2 = 0; var resmark_line3 = 0; var resmark_line4 = 0; var resmark_line5 = 0; var resmark_cols = 3; var resmark_elem = 'res'; var resmark_def_color = Array("#D9C09C","#D9C09C","#D9C09C","#D9C09C","#D9C09C"); var resmark_colors = new Array( {f:"white",s:"w"}, {f:"gray",s:"gr"}, {f:"violet",s:"v"}, {f:"blue",s:"b"}, {f:"green",s:"g"}, {f:"yellow",s:"y"}, {f:"orange",s:"o"}, {f:"red",s:"r"}, {f:"brown",s:"br"}, {f:"black",s:"bl"}, {f:"goldenrod",s:"au"}, {f:"gainsboro",s:"ag"} ); var resmark_data = { res: { 3: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}} }, 4: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}}, 4:{dl:{w:1,'y':1,o:1,bl:1},e:{gr:'0.05',v:'0.1',b:'0.25',g:'0.5',r:'2',br:'1',au:'5',ag:'10'}} }, 5: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 4:{dl:{},e:{w:'*1e+9',gr:'*100e+6',v:'*10e+6',b:'*1e+6',g:'*100e+3','y':'*10e+3',o:'*1e+3',r:'*100',br:'*10',bl:'*1',au:'*0.1',ag:'*0.01'}}, 5:{dl:{w:1,'y':1,o:1,bl:1},e:{gr:'0.05',v:'0.1',b:'0.25',g:'0.5',r:'2',br:'1',au:'5',ag:'10'}} } }, cap: { 3: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}} }, 4: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}}, 4:{dl:{v:1,b:1,g:1,'y':1,o:1},e:{w:'+80/-20',gr:'30',r:'2',br:'1',bl:'20',au:'5',ag:'10'}} }, 5: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 4:{dl:{},e:{w:'*1e-3',gr:'*100e-6',v:'*10e-6',b:'*1e-6',g:'*100e-9','y':'*10e-9',o:'*1e-9',r:'*100e-12',br:'*10e-12',bl:'*1e-12',au:'*0.1e-12',ag:'*0.01e-12'}}, 5:{dl:{v:1,b:1,g:1,'y':1,o:1},e:{w:'+80/-20',gr:'30',r:'2',br:'1',bl:'20',au:'5',ag:'10'}} } }, ind: { 3: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1},e:{o:'*1e-3',r:'*100e-6',br:'*10e-6',bl:'*1e-6',au:'*0.1e-6',ag:'*0.01e-6'}} }, 4: { 1:{dl:{bl:1,au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1'}}, 2:{dl:{au:1,ag:1},e:{w:'9',gr:'8',v:'7',b:'6',g:'5','y':'4',o:'3',r:'2',br:'1',bl:'0'}}, 3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1},e:{o:'*1e-3',r:'*100e-6',br:'*10e-6',bl:'*1e-6',au:'*0.1e-6',ag:'*0.01e-6'}}, 4:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1},e:{bl:'20',au:'5',ag:'10'}} }, 5: { 1:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}}, 2:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}}, 3:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}}, 4:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}}, 5:{dl:{w:1,gr:1,v:1,b:1,g:1,'y':1,o:1,r:1,br:1,bl:1,au:1,ag:1},e:{}}, } } }; function do_resmark_init() { if(document.getElementById('resmark')) { // resmark block exist var ids = new Array( {id:'resmark_radio_elm_res',elm:'radio',nm:'elm',onclick:"resmark_elmRes_click()",'checked':1}, {id:'resmark_radio_elm_cap',elm:'radio',nm:'elm',onclick:"resmark_elmCap_click()"}, {id:'resmark_radio_elm_ind',elm:'radio',nm:'elm',onclick:"resmark_elmInd_click()"}, {id:'resmark_radio_lin_3',elm:'radio',nm:'lin',onclick:'resmark_cols=3;resmark_createTable();','checked':1}, {id:'resmark_radio_lin_4',elm:'radio',nm:'lin',onclick:'resmark_cols=4;resmark_createTable();',}, {id:'resmark_radio_lin_5',elm:'radio',nm:'lin',onclick:'resmark_cols=5;resmark_createTable();',}, {id:'resmark_outp_nom',elm:'text'}, {id:'resmark_outp_dop',elm:'text'} ); var tags = { radio: {t:'input',tp:'radio'}, 'text': {t:'input',tp:'text'} } for(i = 0; i < ids.length; i++) { var old = document.getElementById(ids[i].id); var elmTag = tags[ids[i].elm].t; var newElm = document.createElement(elmTag); if(ids[i]['checked']) newElm.setAttribute('checked', ids[i]['checked']); if(ids[i].onclick) newElm.setAttribute('onclick', ids[i].onclick); if(ids[i].nm) newElm.setAttribute('name', ids[i].nm); if(tags[ids[i].elm].t) newElm.setAttribute('type', tags[ids[i].elm].tp); newElm.setAttribute('id', old.id); resmark_replDiv(newElm, old); } resmark_createTable() var js = document.getElementById('resmark_js_disabled'); js.parentNode.removeChild(js); } } function resmark_createTable() { resmark_resetTable(); for(i = 0; i < resmark_colors.length; i++) { for(j = 0; j < resmark_cols; j++) { var elm = document.getElementById('resmark_radio_l' + (j+1) + '_' + resmark_colors[i].s); elm.parentNode.style.visibility = (resmark_data[resmark_elem][resmark_cols][j+1]['dl'][resmark_colors[i].s]) ? 'hidden' : 'visible'; var newElm = document.createElement('input'); var val = resmark_data[resmark_elem][resmark_cols][j+1]['e'][resmark_colors[i].s] newElm.setAttribute('type', 'radio'); newElm.setAttribute('name', 'line'+(j+1)); if(val) newElm.setAttribute('value', val); var onclick = "resmark_line"+(j+1)+"=this.value;"; onclick += "; resmark_setResCol("+(j+1)+", '"+resmark_colors[i].f+"'); resmark_eval();"; newElm.setAttribute('onclick', onclick); newElm.setAttribute('id', elm.id); if(i==0) {// init main resmark_setResCol(j+1, resmark_colors[i].f); eval("resmark_line"+(j+1)+"=val;"); newElm.setAttribute('checked', 1); } if(i==1 && j==3 && resmark_cols==4 && resmark_elem=='res') {// init 4 resmark_setResCol(j+1, resmark_colors[i].f); eval("resmark_line"+(j+1)+"=val;"); newElm.setAttribute('checked', 1); } if(i==1 && j==4 && resmark_cols==5 && resmark_elem=='res') {// init 5 resmark_setResCol(j+1, resmark_colors[i].f); eval("resmark_line"+(j+1)+"=val;"); newElm.setAttribute('checked', 1); } if(i==6 && j==2 && resmark_cols>=3 && resmark_elem=='ind') {// init 4 resmark_setResCol(j+1, resmark_colors[i].f); eval("resmark_line"+(j+1)+"=val;"); newElm.setAttribute('checked', 1); } if(i==9 && j==3 && resmark_cols==4 && resmark_elem=='ind') {// init 4 resmark_setResCol(j+1, resmark_colors[i].f); eval("resmark_line"+(j+1)+"=val;"); newElm.setAttribute('checked', 1); } resmark_replDiv(newElm, elm); } } if(resmark_cols==5 && resmark_elem=='ind') { resmark_line1 = 0; resmark_line2 = 0; resmark_line3 = 0; resmark_line4 = 0; resmark_line5 = 'NONE!'; resmark_resetTable(); } resmark_eval(); } function resmark_resetTable() { for(i = 0; i < resmark_colors.length; i++) { for(j = 0; j < 5; j++) { var elm = document.getElementById('resmark_radio_l' + (j+1) + '_' + resmark_colors[i].s); elm.parentNode.style.visibility = 'hidden'; var newElm = document.createElement('div'); newElm.setAttribute('id', elm.id); resmark_replDiv(newElm, elm); } } resmark_setResCols(resmark_def_color); } function resmark_eval() { var nom = document.getElementById('resmark_outp_nom'); var dop = document.getElementById('resmark_outp_dop'); switch(resmark_cols) { case 3: var temp = eval(resmark_line1 + resmark_line2 + resmark_line3); nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp; dop.value = ''; break; case 4: var temp = eval(resmark_line1 + resmark_line2 + resmark_line3); nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp; dop.value = resmark_line4 + '%'; break; case 5: var temp = eval(resmark_line1 + resmark_line2 + resmark_line3 + resmark_line4); nom.value = (resmark_elem=='res') ? resmark_ohm(temp) : (resmark_elem=='cap') ? resmark_cap(temp) : (resmark_elem=='ind') ? resmark_ind(temp) : temp; dop.value = resmark_line5 + '%'; break; } } //- element radio ------------------------------------------------------ function resmark_elmRes_click() { resmark_hideMsg(0); resmark_elem = 'res'; resmark_createTable(); } function resmark_elmCap_click() { resmark_hideMsg(1); resmark_elem = 'cap'; resmark_createTable(); } function resmark_elmInd_click() { resmark_hideMsg(0); resmark_elem = 'ind'; resmark_createTable(); } function resmark_hideMsg(hide) { var e = document.getElementById('resmark_outp_note'); e.innerHTML = (hide) ? '<b>Примечание:</b> Для цветовой кодировки постоянных конденсаторов на практике используется несколько методик. Здесь представлена одна из них.' : ''; } //- other ------------------------------------------------------ function resmark_ind(full) { if(Math.round(full * 1e+3)) { return (full * 1e+3) + ' мГн' } if(Math.round(full * 1e+6)) { return (full * 1e+6) + ' мкГн' } return (full) + ' Гн' } function resmark_cap(full) { if(Math.round(full * 1e+3)) { return (full * 1e+3) + ' мФ' } if(Math.round(full * 1e+6)) { return (full * 1e+6) + ' мкФ' } if(Math.round(full * 1e+9)) { return (full * 1e+9) + ' нФ' } if(Math.round(full * 1e+12)) { return (full * 1e+12) + ' пФ' } return (full) + ' Ф' } function resmark_ohm(full) { if(Math.round(full / 1e+9)) { return (full/1e+9) + ' ГОм' } if(Math.round(full / 1e+6)) { return (full/1e+6) + ' МОм' } if(Math.round(full / 1e+3)) { return (full/1e+3) + ' кОм' } return (full) + ' Ом' } function resmark_setResCol(col, color) { elm = document.getElementById('resmark_resistor_' + col); elm.style.background = color; } function resmark_setResCols(colors) { for(i = 0; i < colors.length; i++) { elm = document.getElementById('resmark_resistor_' + (i+1)); elm.style.background = colors[i]; } } function resmark_replDiv(newElm, div) { div.parentNode.replaceChild(newElm, div); } //</source>