"use strict"; if (typeof($readonly) == "undefined") var $readonly = false; var spi; var spi_addr; var reset_list = new Object(); var initData = new Object(); var dependency = { MPS_Cut: { used: {class:[{MPS_Weight:"+obli"}, {MPS_Area:"+obli"}, {MPS_Luff:"+obli"}]}, unused:{class:[{MPS_Weight:"-obli"}, {MPS_Area:"-obli"}, {MPS_Luff:"-obli"}]} }, Spi_Cut: { used: {class:[{Spi_Weight:"+obli"}, {Spi_Area:"+obli"}, {Spi_Luff:"+obli"}]}, unused:{class:[{Spi_Weight:"-obli"}, {Spi_Area:"-obli"}, {Spi_Luff:"-obli"}]} }, MPS_Luff: { focus:{take:["MPS_Spi_J","MPS_Spi_I"],calc:hypotenuse} }, Spi_Luff: { focus:{take:["MPS_Spi_J","MPS_Spi_I"],calc:hypotenuse} }, MPS_Area: { focus: {take:["MPS_Luff","MPS_Spi_J"],calc:[set_area]} }, Spi_Area: { focus: {take:["MPS_Luff","MPS_Spi_J"],calc:[set_area]} } }; function spi_init ( t ) { if ( t > 0 ) { window.setTimeout("spi_init(0)",t); return; } spi = new Array(); spi.push ( new spi_slice ( { img: "images/measurements/spi/spi_asim_tri_rad_pass.gif", layout: "images/measurements/spi/spi_asim_tri_rad_init.gif", parent_id:"spi_asim_tri_rad", colorinit: [ {x:10,y:100}, {x:40,y:100}, {x:20,y:130}, {x:10,y:160}, {x:50,y:200}, {x:35,y:170},{x:50,y:220}, {x:30,y:90}, {x:60,y:190},{x:45,y:150}, {x:20,y:170}, {x:60,y:90}, {x:45,y:170} ] })); spi.push ( new spi_slice ( { img: "images/measurements/spi/spi_asim_bi_rad_pass.gif", layout: "images/measurements/spi/spi_asim_bi_rad_init.gif", parent_id:"spi_asim_bi_rad", colorinit: [ {x:15,y:120}, {x:50,y:120}, {x:70,y:180}, {x:50,y:225}, {x:30,y:120}, {x:65,y:120}, {x:40,y:200} ] })); spi.push ( new spi_slice ( { img: "images/measurements/spi/spi_asim_star_pass.gif", layout: "images/measurements/spi/spi_asim_star_init.gif", parent_id:"spi_asim_star", colorinit: [ {x:15,y:70}, {x:65,y:70}, {x:30,y:70}, {x:50,y:70} ] })); spi.push ( new spi_slice ( { img: "images/measurements/spi/spi_sim_tri_rad_pass.gif", layout: "images/measurements/spi/spi_sim_tri_rad_init.gif", parent_id:"spi_sim_tri_rad", colorinit: [ {x:10,y:90}, {x:40,y:90}, {x:20,y:130}, {x:7,y:170}, {x:25,y:170}, {x:45,y:210}, {x:25,y:90}, {x:15,y:170},{x:65,y:170},{x:70,y:150}, {x:60,y:90}, {x:45,y:170}, {x:45,y:220} ] })); spi.push ( new spi_slice ( { img: "images/measurements/spi/spi_sim_bi_rad_pass.gif", layout: "images/measurements/spi/spi_sim_bi_rad_init.gif", parent_id:"spi_sim_bi_rad", colorinit: [ {x:15,y:70}, {x:50,y:70}, {x:50,y:180}, {x:50,y:225}, {x:30,y:70}, {x:65,y:70}, {x:40,y:200} ] })); spi.push ( new spi_slice ( { img: "images/measurements/spi/spi_sim_star_pass.gif", layout: "images/measurements/spi/spi_sim_star_init.gif", parent_id:"spi_sim_star", colorinit: [ {x:15,y:70}, {x:65,y:70}, {x:30,y:70}, {x:50,y:70} ] })); spi_addr = new Object(); for ( var i = 0; i < spi.length; i++ ) { var addr = spi[i].load(); spi_addr[addr] = i; } var eimer = new Image(); eimer.src = "images/eimer.gif"; var pipette = new Image(); pipette.src = "images/pipette.gif"; var types = document.getElementsByClassName("reset_div"); if (types.length > 0) { for (var i=0; i 0 && params["color"] != null ) { if ( evt.preventDefault ) evt.preventDefault(); if ( evt.stopPropagation ) evt.stopPropagation(); var addr = thisObject.makehex(x,y); thisObject.changeColor(addr, params["color"]); } } else { if ( type == "mousemove" && imgData.data[3] != 0 && params["color"] != null ) { root.className = "over"; pass_div.style.visibility = "visible"; } else { root.className = "out"; pass_div.style.visibility = "hidden"; } } }; this.isload = function(evt) { outstanding--; if ( outstanding == 0 ) { var src = img.src.substr(img.src.lastIndexOf("/")); params["width"] = img.width; params["height"]= img.height; root = ( params["parent_id"] == null ) ? document.body : document.getElementById(params["parent_id"]); if ( root != null ) { root.style.width = params["width"]+"px"; root.style.height = params["height"]+"px"; luz_div = document.createElement("div"); luz_div.style.position = "absolute"; luz_div.style.top = 0; luz_div.style.left = 0; luz_div.style.zIndex = 4; luz_div.style.width = params["width"]+"px"; luz_div.style.height = params["height"]+"px"; luz_div.className = "luz_pict"; root.appendChild(luz_div); thisObject.installEventListener({obj:luz_div,evt:"click",fkt:thisObject.isOver,ctrl:false,info:"luz_div"}); thisObject.installEventListener({obj:luz_div,evt:"mouseover",fkt:thisObject.isOver,ctrl:false,info:"luz_div"}); thisObject.installEventListener({obj:luz_div,evt:"mousemove",fkt:thisObject.isOver,ctrl:false,info:"luz_div"}); thisObject.installEventListener({obj:luz_div,evt:"mouseout",fkt:thisObject.isOver,ctrl:false,info:"luz_div"}); var luz = document.createElement("canvas"); luz.width = params["width"]; luz.height = params["height"]; luz_div.appendChild(luz); luz_div.style.opacity = 0.8; var luz_ctx=luz.getContext("2d"); var grd=luz_ctx.createRadialGradient(55,80,1, 55,80,100); grd.addColorStop(0,"white"); grd.addColorStop(1,"rgba(255,255,255,0)"); luz_ctx.fillStyle = grd; luz_ctx.fillRect(0,0,params["width"],params["height"]); pass_div = document.createElement("div"); pass_div.style.position="absolute"; pass_div.style.top=0; pass_div.style.left=0; pass_div.style.zIndex=3; pass_div.style.width=params["width"]+"px"; pass_div.style.height=params["height"]+"px"; pass_div.style.visibility = "hidden"; pass_div.appendChild(img); root.appendChild(pass_div); overlay_div = document.createElement("div"); overlay_div.style.position="absolute"; overlay_div.style.top=0; overlay_div.style.left=0; overlay_div.style.zIndex=2; overlay_div.style.width=params["width"]+"px"; overlay_div.style.height=params["height"]+"px"; var c = document.createElement("canvas"); c.width = params["width"]; c.height = params["height"]; ctx_overlay = c.getContext("2d"); ctx_overlay.drawImage(layout,0,0); overlay_div.appendChild(c); root.appendChild(overlay_div); layout_div = document.createElement("div"); layout_div.style.position="absolute"; layout_div.style.top=0; layout_div.style.left=0; layout_div.style.zIndex=1; layout_div.style.width=params["width"]+"px"; layout_div.style.height=params["height"]+"px"; var c = document.createElement("canvas"); c.width = params["width"]; c.height = params["height"]; ctx_layout = c.getContext("2d"); ctx_layout.drawImage(layout,0,0); layout_div.appendChild(c); root.appendChild(layout_div); var imgData = ctx_layout.getImageData(0,0,params["width"],params["height"]); for (var i=0;i 1 ) { var data = params["colorinit"]; thisObject.colorFill(data); } } thisObject.setColor(null); } is_Ready = true; spi_ready(); } }; this.colorFill = function(data) { var choise; var rgb; for ( var i = 0; i < data.length; i++ ) { var o = data[i]; var c=ctx_layout.getImageData(o.x,o.y,1,1); if (c) { var rt = c.data[0].toString(16); rt = (rt.length == 1) ? "0"+rt : rt; var gn = c.data[1].toString(16); gn = (gn.length == 1) ? "0"+gn : gn; var bl = c.data[2].toString(16); bl = (bl.length == 1) ? "0"+bl : bl; var a = rt+gn+bl; var addr = a.toUpperCase(); var iname = params["parent_id"] + " / "+addr rgb = {r:c.data[0],g:c.data[1],b:c.data[2]}; slice[addr] = {pos:{x:o.x,y:o.y},rgb:rgb}; } } params["color"] = null; }; this.setColor = function(ctrl,key) { if ( typeof(ctrl) == "undefined" ) { return [params["color"],params["key"]]; } else { params["color"] = ctrl; params["key"] =( typeof(key) != "undefined" ) ? key : null; } }; this.set_default = function(e) { var evt = (e) ? e : window.event; if (e) { if ( evt.preventDefault ) evt.preventDefault(); if ( evt.stopPropagation ) evt.stopPropagation(); } root = ( params["parent_id"] == null ) ? document.body : document.getElementById(params["parent_id"]); if ( root != null ) { var img = root.childNodes[0]; var cn = root.childNodes[3]; var c = cn.firstChild; ctx_layout = c.getContext("2d"); ctx_layout.drawImage(layout,0,0); var iform = document.forms["spi"]; for( var key in slice) { var iname = "_"+params["parent_id"] + "_"+key; if (iform.elements[iname]) { var ele = iform.elements[iname]; var type = ele.type; var tagname = ele.tagName; ele.value = ""; notify(ele,false); iform.removeChild(ele); } } var b = reset_list[params["parent_id"]]; if (b) { if (!b.classList.contains("hide")) b.classList.add("hide"); } } }; this.isReady = function() { return is_Ready;}; this.load = function() { thisObject = this; is_Ready = false; if (params["img"] !== null) { img = new Image(); img.src = params["img"]; img.onload = this.isload; img.className = "spi_pict"; layout = new Image(); layout.src = params["layout"]; layout.onload = this.isload; } return params['parent_id']; }; this.printstyle = function(ctrl) { var Width; var Height; var Display; if (ctrl == true) { /* anz=2 % 0 */ Width = "23.2mm"; /* anz=2 % 0 */ Height = "39mm"; Display = "none"; } else { Width = params["width"]+"px"; Height = params["height"]+"px"; Display = "inline-block"; } root.style.width = Width; root.style.height = Height; root.firstChild.style.display = Display; pass_div.style.display = Display; layout_div.style.display = Display; luz_div.style.width = Width; luz_div.style.height = Height; luz_div.firstChild.style.width = Width; luz_div.firstChild.style.height = Height; overlay_div.style.width = Width; overlay_div.style.height = Height; overlay_div.firstChild.style.width = Width; overlay_div.firstChild.style.height = Height; }; this.changeColor = function(key, value) { if (typeof(key) != "undefined") { var c = (value.indexOf(";") > 0) ? value.split(";")[0] : value; if (slice[key]) { if (is_Ready) { thisObject.fillslice(key,c); } else { fillslice_stack.push({key:key,value:c}); } } else { fillslice_stack.push({key:key,value:c}); } } else { if (fillslice_stack.length > 0 && is_Ready) { while (fillslice_stack.length > 0) { var o = fillslice_stack.pop(); thisObject.fillslice(o.key,o.value); }; } } }; this.fillslice = function(key,c) { if (typeof(slice[key]) != "undefined") { var redPart = slice[key].rgb.r; var checkPart = ctx_layout.getImageData(slice[key].pos.x,slice[key].pos.y,1,1); if (checkPart.data[0] =! redPart) alert(checkPart.data[0]+"\n"+redPart); var imgData = ctx_layout.getImageData(0,0,params["width"],params["height"]); ctx_overlay.fillStyle = c; var cnt = 0; for ( var i = 0; i < imgData.data.length; i += 4) { if ( imgData.data[i] === redPart && imgData.data[i+3] > 0 ) { cnt++; var pixel = i / 4; var line = Math.floor(pixel / 140); var row = pixel - (line*140); ctx_overlay.fillRect(row,line,1,1); } } var iform = document.forms["spi"]; var islice = document.forms["spi"].elements["_"+params["parent_id"]+"_"+key]; var rgbSuche = /rgb\((\d*),(\d*),(\d*)\)/; var rgb = rgbSuche.exec(c); var diff_r = Math.abs(rgb[1] - slice[key].rgb.r); var diff_g = Math.abs(rgb[2] - slice[key].rgb.g); var diff_b = Math.abs(rgb[3] - slice[key].rgb.b); if (diff_r < 10 && diff_g < 10 && diff_b < 10) { if (islice) { islice.value = ""; notify(islice); iform.removeChild(islice); var not_changed = true; var iform = document.forms["spi"]; for( var key in slice) { var iname = "_"+params["parent_id"] + "_"+key; if (iform.elements[iname]) { not_changed = false; } } if (not_changed) { var b = reset_list[params["parent_id"]]; if (b) { if (!b.classList.contains("hide")) b.classList.add("hide"); } } } } else { var b = reset_list[params["parent_id"]]; if (b) { if (b.classList.contains("hide")) b.classList.remove("hide"); } if (islice) { islice.value = c; } else { islice = document.createElement("input"); islice.name = "_"+params["parent_id"]+"_"+key; islice.type = "hidden"; islice.value = c; iform.appendChild(islice); } notify(islice, false); } } else { var iform = document.forms["spi"]; var islice = document.forms["spi"].elements["_"+params["parent_id"]+"_"+key]; if (islice) { islice.value = ""; notify(islice); iform.removeChild(islice); } else { var o = {name:params["parent_id"]+"_"+key,value:""}; notify(o); } } } }