MediaWiki:Resmark.js — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
Строка 81: Строка 81:
  
 
elm.parentNode.style.visibility = (resmark_data[resmark_elem][resmark_cols][j+1]['dl'][resmark_colors[i].s]) ? 'hidden' : 'visible';
 
elm.parentNode.style.visibility = (resmark_data[resmark_elem][resmark_cols][j+1]['dl'][resmark_colors[i].s]) ? 'hidden' : 'visible';
 +
 +
var newElm = document.createElement('input');
 +
newElm.setAttribute('type', 'radio');
 +
newElm.setAttribute('name', 'line'+(j+1));
 +
if(var val = resmark_data[resmark_elem][resmark_cols][j+1]['e'][resmark_colors[i].s])
 +
newElm.setAttribute('value', val);
 +
newElm.setAttribute('id', elm.id);
 +
resmark_replDiv(newElm, elm);
 
}
 
}
 
}
 
}

Версия 13:56, 3 октября 2007

//<source lang="javascript">
//- Resmark.js ------------------------------------------------------

addOnloadHook(do_resmark_init);

var resmark_cols = 3;
var resmark_elem = 'res';
var resmark_def_color = "#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'}}
		}
	}
};

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','checked':1},
				{id:'resmark_radio_lin_4',elm:'radio',nm:'lin'},
				{id:'resmark_radio_lin_5',elm:'radio',nm:'lin'},
				{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_resetTable()

		var js = document.getElementById('resmark_js_disabled');
		js.parentNode.removeChild(js);
	}
}

function 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');
			newElm.setAttribute('type', 'radio');
			newElm.setAttribute('name', 'line'+(j+1));
			if(var val = resmark_data[resmark_elem][resmark_cols][j+1]['e'][resmark_colors[i].s])
				newElm.setAttribute('value', val);
			newElm.setAttribute('id', elm.id);
			resmark_replDiv(newElm, elm);
		}
	}
}

//- element radio ------------------------------------------------------
function resmark_elmRes_click()
{
	resmark_hideMsg(0);
	resmark_elem = 'res';
}
function resmark_elmCap_click()
{
	resmark_hideMsg(1);
	resmark_elem = 'cap';
}
function resmark_elmInd_click()
{
	resmark_hideMsg(0);
	resmark_elem = 'ind';
}
function resmark_hideMsg(hide)
{
	var e = document.getElementById('resmark_outp_note');
	e.innerHTML = (hide) ? '<b>Примечание:</b> Для цветовой кодировки постоянных конденсаторов на практике используется несколько методик. Здесь представлена одна из них.' : '';
}

//- other ------------------------------------------------------
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>