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']"> |
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); |