MediaWiki:Resmark.js — различия между версиями
Vooon (обсуждение | вклад) |
Vooon (обсуждение | вклад) |
||
Строка 131: | Строка 131: | ||
eval("resmark_line"+(j+1)+"=val;"); | eval("resmark_line"+(j+1)+"=val;"); | ||
newElm.setAttribute('checked', 1); | newElm.setAttribute('checked', 1); | ||
− | resmark_eval(); | + | //resmark_eval(); |
} | } | ||
Версия 15:27, 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'}} } } }; 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); resmark_eval(); } if(i==1 && j==3 && resmark_cols==4) {// init 4 resmark_setResCol(j+1, resmark_colors[i].f); eval("resmark_line"+(j+1)+"=val;"); newElm.setAttribute('checked', 1); resmark_eval(); } if(i==1 && j==4 && resmark_cols==5) {// init 5 resmark_setResCol(j+1, resmark_colors[i].f); eval("resmark_line"+(j+1)+"=val;"); newElm.setAttribute('checked', 1); //resmark_eval(); } resmark_replDiv(newElm, elm); } } } 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: nom.value = resmark_ohm(eval(resmark_line1 + resmark_line2 + resmark_line3)); dop.value = ''; break; case 4: nom.value = resmark_ohm(eval(resmark_line1 + resmark_line2 + resmark_line3)); dop.value = resmark_line4 + '%'; break; case 5: nom.value = resmark_ohm(eval(resmark_line1 + resmark_line2 + resmark_line3 + resmark_line4)); 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_ohm(full) { if(parseInt(full / 1e+9)) { return (full/1e+9) + ' ГОм' } if(parseInt(full / 1e+6)) { return (full/1e+6) + ' МОм' } if(parseInt(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>