425 }; |
425 }; |
426 |
426 |
427 const xmlns = "http://www.w3.org/2000/svg"; |
427 const xmlns = "http://www.w3.org/2000/svg"; |
428 var edit_callback; |
428 var edit_callback; |
429 const localtypes = {"PAGE_LOCAL":null, "HMI_LOCAL":null} |
429 const localtypes = {"PAGE_LOCAL":null, "HMI_LOCAL":null} |
430 function edit_value(path, valuetype, callback, initial, size) { |
430 function edit_value(path, valuetype, callback, initial) { |
431 if(valuetype in localtypes){ |
431 if(valuetype in localtypes){ |
432 valuetype = (typeof initial) == "number" ? "HMI_REAL" : "HMI_STRING"; |
432 valuetype = (typeof initial) == "number" ? "HMI_REAL" : "HMI_STRING"; |
433 } |
433 } |
434 let [keypadid, xcoord, ycoord] = keypads[valuetype]; |
434 let [keypadid, xcoord, ycoord] = keypads[valuetype]; |
435 edit_callback = callback; |
435 edit_callback = callback; |
436 let widget = hmi_widgets[keypadid]; |
436 let widget = hmi_widgets[keypadid]; |
437 widget.start_edit(path, valuetype, callback, initial, size); |
437 widget.start_edit(path, valuetype, callback, initial); |
438 }; |
438 }; |
439 |
439 |
440 var current_modal; /* TODO stack ?*/ |
440 var current_modal; /* TODO stack ?*/ |
441 |
441 |
442 function show_modal(size) { |
442 function show_modal() { |
443 let [element, parent] = detachable_elements[this.element.id]; |
443 let [element, parent] = detachable_elements[this.element.id]; |
444 |
444 |
445 tmpgrp = document.createElementNS(xmlns,"g"); |
445 tmpgrp = document.createElementNS(xmlns,"g"); |
446 tmpgrpattr = document.createAttribute("transform"); |
446 tmpgrpattr = document.createAttribute("transform"); |
447 let [xcoord,ycoord] = this.coordinates; |
447 let [xcoord,ycoord] = this.coordinates; |
448 let [xdest,ydest] = page_desc[current_visible_page].bbox; |
448 let [xdest,ydest] = page_desc[current_visible_page].bbox; |
449 if (typeof size === 'undefined'){ |
449 tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")"; |
450 tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")"; |
|
451 } |
|
452 else{ |
|
453 tmpgrpattr.value = "translate("+String(xdest-xcoord+size.x)+","+String(ydest-ycoord+size.y)+")"; |
|
454 } |
|
455 |
450 |
456 tmpgrp.setAttributeNode(tmpgrpattr); |
451 tmpgrp.setAttributeNode(tmpgrpattr); |
457 |
452 |
458 tmpgrp.appendChild(element); |
453 tmpgrp.appendChild(element); |
459 parent.appendChild(tmpgrp); |
454 parent.appendChild(tmpgrp); |