svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 2917 c8d923dd707f
parent 2913 ac4328e69079
child 2919 c6e6051898f5
equal deleted inserted replaced
2916:4f3b130fd197 2917:c8d923dd707f
   949 </xsl:text>
   949 </xsl:text>
   950     <xsl:text>        edit_value("</xsl:text>
   950     <xsl:text>        edit_value("</xsl:text>
   951     <xsl:value-of select="path/@value"/>
   951     <xsl:value-of select="path/@value"/>
   952     <xsl:text>", "</xsl:text>
   952     <xsl:text>", "</xsl:text>
   953     <xsl:value-of select="path/@type"/>
   953     <xsl:value-of select="path/@type"/>
   954     <xsl:text>", this.edit_callback, this.last_val);
   954     <xsl:text>", this, this.last_val);
   955 </xsl:text>
   955 </xsl:text>
   956     <xsl:text>    },
   956     <xsl:text>    },
   957 </xsl:text>
   957 </xsl:text>
   958     <xsl:text>    edit_callback: function(new_val) {
   958     <xsl:text>    edit_callback: function(new_val) {
   959 </xsl:text>
   959 </xsl:text>
   960     <xsl:text>        apply_hmi_value(this.indexes[0], opstr);
   960     <xsl:text>        apply_hmi_value(this.indexes[0], new_val);
   961 </xsl:text>
   961 </xsl:text>
   962     <xsl:if test="$have_value">
   962     <xsl:if test="$have_value">
   963       <xsl:text>        this.value_elt.textContent = String(new_val);
   963       <xsl:text>        this.value_elt.textContent = String(new_val);
   964 </xsl:text>
   964 </xsl:text>
   965     </xsl:if>
   965     </xsl:if>
  1185         </xsl:message>
  1185         </xsl:message>
  1186       </xsl:if>
  1186       </xsl:if>
  1187     </xsl:if>
  1187     </xsl:if>
  1188   </xsl:template>
  1188   </xsl:template>
  1189   <xsl:template mode="widget_defs" match="widget[@type='Keypad']">
  1189   <xsl:template mode="widget_defs" match="widget[@type='Keypad']">
       
  1190     <xsl:param name="hmi_element"/>
       
  1191     <xsl:call-template name="defs_by_labels">
       
  1192       <xsl:with-param name="hmi_element" select="$hmi_element"/>
       
  1193       <xsl:with-param name="labels">
       
  1194         <xsl:text>Esc Enter BackSpace Keys Info Value</xsl:text>
       
  1195       </xsl:with-param>
       
  1196     </xsl:call-template>
       
  1197     <xsl:call-template name="defs_by_labels">
       
  1198       <xsl:with-param name="hmi_element" select="$hmi_element"/>
       
  1199       <xsl:with-param name="labels">
       
  1200         <xsl:text>Sign CapsLock Shift Space</xsl:text>
       
  1201       </xsl:with-param>
       
  1202       <xsl:with-param name="mandatory" select="'no'"/>
       
  1203     </xsl:call-template>
  1190     <xsl:text>    init: function() {
  1204     <xsl:text>    init: function() {
       
  1205 </xsl:text>
       
  1206     <xsl:for-each select="$hmi_element/*[@inkscape:label = 'Keys']/*">
       
  1207       <xsl:text>        id("</xsl:text>
       
  1208       <xsl:value-of select="@id"/>
       
  1209       <xsl:text>").setAttribute("onclick", "hmi_widgets['</xsl:text>
       
  1210       <xsl:value-of select="$hmi_element/@id"/>
       
  1211       <xsl:text>'].on_key_click('</xsl:text>
       
  1212       <xsl:value-of select="func:escape_quotes(@inkscape:label)"/>
       
  1213       <xsl:text>')");
       
  1214 </xsl:text>
       
  1215     </xsl:for-each>
       
  1216     <xsl:for-each select="str:split('Esc Enter BackSpace Sign Space CapsLock Shift')">
       
  1217       <xsl:text>        if(this.</xsl:text>
       
  1218       <xsl:value-of select="."/>
       
  1219       <xsl:text>_elt)
       
  1220 </xsl:text>
       
  1221       <xsl:text>            this.</xsl:text>
       
  1222       <xsl:value-of select="."/>
       
  1223       <xsl:text>_elt.setAttribute("onclick", "hmi_widgets['</xsl:text>
       
  1224       <xsl:value-of select="$hmi_element/@id"/>
       
  1225       <xsl:text>'].on_</xsl:text>
       
  1226       <xsl:value-of select="."/>
       
  1227       <xsl:text>_click()");
       
  1228 </xsl:text>
       
  1229     </xsl:for-each>
       
  1230     <xsl:text>    },
       
  1231 </xsl:text>
       
  1232     <xsl:text>    on_key_click: function(symbols) {
       
  1233 </xsl:text>
       
  1234     <xsl:text>        var syms = symbols.split(" ");
       
  1235 </xsl:text>
       
  1236     <xsl:text>        this.shift = this.caps;
       
  1237 </xsl:text>
       
  1238     <xsl:text>        this.editstr += syms[this.shift?syms.length:0];
       
  1239 </xsl:text>
       
  1240     <xsl:text>        this.shift = false;
       
  1241 </xsl:text>
       
  1242     <xsl:text>        this.update();
       
  1243 </xsl:text>
       
  1244     <xsl:text>        console.log(symbols);
       
  1245 </xsl:text>
       
  1246     <xsl:text>    },
       
  1247 </xsl:text>
       
  1248     <xsl:text>    on_Esc_click: function() {
       
  1249 </xsl:text>
       
  1250     <xsl:text>        end_modal.call(this);
       
  1251 </xsl:text>
       
  1252     <xsl:text>        console.log("Esc");
       
  1253 </xsl:text>
       
  1254     <xsl:text>    },
       
  1255 </xsl:text>
       
  1256     <xsl:text>    on_Enter_click: function() {
       
  1257 </xsl:text>
       
  1258     <xsl:text>        end_modal.call(this);
       
  1259 </xsl:text>
       
  1260     <xsl:text>        callback_obj = this.result_callback_obj;
       
  1261 </xsl:text>
       
  1262     <xsl:text>        callback_obj.edit_callback(this.editstr);
       
  1263 </xsl:text>
       
  1264     <xsl:text>        console.log("Enter");
       
  1265 </xsl:text>
       
  1266     <xsl:text>    },
       
  1267 </xsl:text>
       
  1268     <xsl:text>    on_BackSpace_click: function() {
       
  1269 </xsl:text>
       
  1270     <xsl:text>        this.editstr = this.editstr.slice(0,this.editstr.length-1);
       
  1271 </xsl:text>
       
  1272     <xsl:text>        this.update();
       
  1273 </xsl:text>
       
  1274     <xsl:text>        console.log("BackSpace");
       
  1275 </xsl:text>
       
  1276     <xsl:text>    },
       
  1277 </xsl:text>
       
  1278     <xsl:text>    on_Sign_click: function() {
       
  1279 </xsl:text>
       
  1280     <xsl:text>        if(this.editstr[0] == "-")
       
  1281 </xsl:text>
       
  1282     <xsl:text>            this.editstr = this.editstr.slice(1,this.editstr.length);
       
  1283 </xsl:text>
       
  1284     <xsl:text>        else
       
  1285 </xsl:text>
       
  1286     <xsl:text>            this.editstr = "-" + this.editstr;
       
  1287 </xsl:text>
       
  1288     <xsl:text>        console.log("Sign");
       
  1289 </xsl:text>
       
  1290     <xsl:text>    },
       
  1291 </xsl:text>
       
  1292     <xsl:text>    on_Space_click: function() {
       
  1293 </xsl:text>
       
  1294     <xsl:text>        this.editstr += " ";
       
  1295 </xsl:text>
       
  1296     <xsl:text>        console.log("Space");
       
  1297 </xsl:text>
       
  1298     <xsl:text>    },
       
  1299 </xsl:text>
       
  1300     <xsl:text>    caps: false,
       
  1301 </xsl:text>
       
  1302     <xsl:text>    on_CapsLock_click: function() {
       
  1303 </xsl:text>
       
  1304     <xsl:text>        this.caps = !this.caps;
       
  1305 </xsl:text>
       
  1306     <xsl:text>        console.log("CapsLock");
       
  1307 </xsl:text>
       
  1308     <xsl:text>    },
       
  1309 </xsl:text>
       
  1310     <xsl:text>    shift: false,
       
  1311 </xsl:text>
       
  1312     <xsl:text>    on_Shift_click: function() {
       
  1313 </xsl:text>
       
  1314     <xsl:text>        this.shift = true;
       
  1315 </xsl:text>
       
  1316     <xsl:text>        console.log("Shift");
       
  1317 </xsl:text>
       
  1318     <xsl:text>    },
       
  1319 </xsl:text>
       
  1320     <xsl:variable name="g" select="$geometry[@Id = $hmi_element/@id]"/>
       
  1321     <xsl:text>    coordinates: [</xsl:text>
       
  1322     <xsl:value-of select="$g/@x"/>
       
  1323     <xsl:text>, </xsl:text>
       
  1324     <xsl:value-of select="$g/@y"/>
       
  1325     <xsl:text>],
       
  1326 </xsl:text>
       
  1327     <xsl:text>    editstr: "",
       
  1328 </xsl:text>
       
  1329     <xsl:text>    result_callback_obj: undefined,
       
  1330 </xsl:text>
       
  1331     <xsl:text>    start_edit: function(info, valuetype, callback_obj, initial) {
       
  1332 </xsl:text>
       
  1333     <xsl:text>        show_modal.call(this);
       
  1334 </xsl:text>
       
  1335     <xsl:text>        this.editstr = initial;
       
  1336 </xsl:text>
       
  1337     <xsl:text>        this.result_callback_obj = callback_obj;
       
  1338 </xsl:text>
       
  1339     <xsl:text>        this.Info_elt.textContent = info;
       
  1340 </xsl:text>
       
  1341     <xsl:text>        this.shift = false;
       
  1342 </xsl:text>
       
  1343     <xsl:text>        this.caps = false;
       
  1344 </xsl:text>
       
  1345     <xsl:text>        this.update();
       
  1346 </xsl:text>
       
  1347     <xsl:text>    },
       
  1348 </xsl:text>
       
  1349     <xsl:text>    update: function() {
       
  1350 </xsl:text>
       
  1351     <xsl:text>        /* TODO Swith shift and capslock active/inactive elements */
       
  1352 </xsl:text>
       
  1353     <xsl:text>        this.Value_elt.textContent = this.editstr;
  1191 </xsl:text>
  1354 </xsl:text>
  1192     <xsl:text>    },
  1355     <xsl:text>    },
  1193 </xsl:text>
  1356 </xsl:text>
  1194   </xsl:template>
  1357   </xsl:template>
  1195   <xsl:template mode="widget_defs" match="widget[@type='Meter']">
  1358   <xsl:template mode="widget_defs" match="widget[@type='Meter']">
  2365 </xsl:text>
  2528 </xsl:text>
  2366     <xsl:text>};
  2529     <xsl:text>};
  2367 </xsl:text>
  2530 </xsl:text>
  2368     <xsl:text>
  2531     <xsl:text>
  2369 </xsl:text>
  2532 </xsl:text>
       
  2533     <xsl:text>var xmlns = "http://www.w3.org/2000/svg";
       
  2534 </xsl:text>
  2370     <xsl:text>var edit_callback;
  2535     <xsl:text>var edit_callback;
  2371 </xsl:text>
  2536 </xsl:text>
  2372     <xsl:text>function edit_value(path, valuetype, callback, initial) {
  2537     <xsl:text>function edit_value(path, valuetype, callback, initial) {
  2373 </xsl:text>
  2538 </xsl:text>
  2374     <xsl:text>
  2539     <xsl:text>
  2377 </xsl:text>
  2542 </xsl:text>
  2378     <xsl:text>    console.log('XXX TODO : Edit value', path, valuetype, callback, initial, keypadid);
  2543     <xsl:text>    console.log('XXX TODO : Edit value', path, valuetype, callback, initial, keypadid);
  2379 </xsl:text>
  2544 </xsl:text>
  2380     <xsl:text>    edit_callback = callback;
  2545     <xsl:text>    edit_callback = callback;
  2381 </xsl:text>
  2546 </xsl:text>
  2382     <xsl:text>
  2547     <xsl:text>    let widget = hmi_widgets[keypadid];
  2383 </xsl:text>
  2548 </xsl:text>
  2384     <xsl:text>    let [element, parent] = detachable_elements[keypadid];
  2549     <xsl:text>    widget.start_edit(path, valuetype, callback, initial);
  2385 </xsl:text>
  2550 </xsl:text>
  2386     <xsl:text>    tmpgrp = document.createElement("g");
  2551     <xsl:text>};
       
  2552 </xsl:text>
       
  2553     <xsl:text>
       
  2554 </xsl:text>
       
  2555     <xsl:text>var current_modal; /* TODO stack ?*/
       
  2556 </xsl:text>
       
  2557     <xsl:text>
       
  2558 </xsl:text>
       
  2559     <xsl:text>function show_modal() {
       
  2560 </xsl:text>
       
  2561     <xsl:text>    let [element, parent] = detachable_elements[this.element.id];
       
  2562 </xsl:text>
       
  2563     <xsl:text>
       
  2564 </xsl:text>
       
  2565     <xsl:text>    tmpgrp = document.createElementNS(xmlns,"g");
  2387 </xsl:text>
  2566 </xsl:text>
  2388     <xsl:text>    tmpgrpattr = document.createAttribute("transform");
  2567     <xsl:text>    tmpgrpattr = document.createAttribute("transform");
  2389 </xsl:text>
  2568 </xsl:text>
  2390     <xsl:text>
  2569     <xsl:text>
  2391 </xsl:text>
  2570 </xsl:text>
       
  2571     <xsl:text>    let [xcoord,ycoord] = this.coordinates;
       
  2572 </xsl:text>
  2392     <xsl:text>    let [xdest,ydest] = page_desc[current_visible_page].bbox;
  2573     <xsl:text>    let [xdest,ydest] = page_desc[current_visible_page].bbox;
  2393 </xsl:text>
  2574 </xsl:text>
  2394     <xsl:text>    tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")";
  2575     <xsl:text>    tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")";
  2395 </xsl:text>
  2576 </xsl:text>
  2396     <xsl:text>    tmpgrp.setAttributeNode(tmpgrpattr);
  2577     <xsl:text>    tmpgrp.setAttributeNode(tmpgrpattr);
  2401 </xsl:text>
  2582 </xsl:text>
  2402     <xsl:text>    parent.appendChild(tmpgrp);
  2583     <xsl:text>    parent.appendChild(tmpgrp);
  2403 </xsl:text>
  2584 </xsl:text>
  2404     <xsl:text>
  2585     <xsl:text>
  2405 </xsl:text>
  2586 </xsl:text>
       
  2587     <xsl:text>    current_modal = [this.element.id, tmpgrp];
       
  2588 </xsl:text>
  2406     <xsl:text>};
  2589     <xsl:text>};
  2407 </xsl:text>
  2590 </xsl:text>
  2408     <xsl:text>
  2591     <xsl:text>
  2409 </xsl:text>
  2592 </xsl:text>
       
  2593     <xsl:text>function end_modal() {
       
  2594 </xsl:text>
       
  2595     <xsl:text>    let [eltid, tmpgrp] = current_modal;
       
  2596 </xsl:text>
       
  2597     <xsl:text>    let [element, parent] = detachable_elements[this.element.id];
       
  2598 </xsl:text>
       
  2599     <xsl:text>
       
  2600 </xsl:text>
       
  2601     <xsl:text>    parent.removeChild(tmpgrp);
       
  2602 </xsl:text>
       
  2603     <xsl:text>
       
  2604 </xsl:text>
       
  2605     <xsl:text>    current_modal = undefined;
       
  2606 </xsl:text>
       
  2607     <xsl:text>};
       
  2608 </xsl:text>
  2410   </xsl:template>
  2609   </xsl:template>
  2411 </xsl:stylesheet>
  2610 </xsl:stylesheet>