2155 </xsl:text> |
2204 </xsl:text> |
2156 <xsl:text>function apply_hmi_value(index, new_val) { |
2205 <xsl:text>function apply_hmi_value(index, new_val) { |
2157 </xsl:text> |
2206 </xsl:text> |
2158 <xsl:text> let old_val = cache[index] |
2207 <xsl:text> let old_val = cache[index] |
2159 </xsl:text> |
2208 </xsl:text> |
2160 <xsl:text> console.log("apply", index, new_val); |
2209 <xsl:text> if(new_val != undefined && old_val != new_val) |
2161 </xsl:text> |
|
2162 <xsl:text> if(new_val != undefined && old_val != new_val){ |
|
2163 </xsl:text> |
|
2164 <xsl:text> console.log("sending", new_val); |
|
2165 </xsl:text> |
2210 </xsl:text> |
2166 <xsl:text> send_hmi_value(index, new_val); |
2211 <xsl:text> send_hmi_value(index, new_val); |
2167 </xsl:text> |
2212 </xsl:text> |
|
2213 <xsl:text> return new_val; |
|
2214 </xsl:text> |
|
2215 <xsl:text>} |
|
2216 </xsl:text> |
|
2217 <xsl:text> |
|
2218 </xsl:text> |
|
2219 <xsl:text>function change_hmi_value(index, opstr) { |
|
2220 </xsl:text> |
|
2221 <xsl:text> let op = opstr[0]; |
|
2222 </xsl:text> |
|
2223 <xsl:text> let given_val = opstr.slice(1); |
|
2224 </xsl:text> |
|
2225 <xsl:text> let old_val = cache[index] |
|
2226 </xsl:text> |
|
2227 <xsl:text> let new_val; |
|
2228 </xsl:text> |
|
2229 <xsl:text> switch(op){ |
|
2230 </xsl:text> |
|
2231 <xsl:text> case "=": |
|
2232 </xsl:text> |
|
2233 <xsl:text> eval("new_val"+opstr); |
|
2234 </xsl:text> |
|
2235 <xsl:text> break; |
|
2236 </xsl:text> |
|
2237 <xsl:text> case "+": |
|
2238 </xsl:text> |
|
2239 <xsl:text> case "-": |
|
2240 </xsl:text> |
|
2241 <xsl:text> case "*": |
|
2242 </xsl:text> |
|
2243 <xsl:text> case "/": |
|
2244 </xsl:text> |
|
2245 <xsl:text> if(old_val != undefined) |
|
2246 </xsl:text> |
|
2247 <xsl:text> new_val = eval("old_val"+opstr); |
|
2248 </xsl:text> |
|
2249 <xsl:text> break; |
|
2250 </xsl:text> |
2168 <xsl:text> } |
2251 <xsl:text> } |
2169 </xsl:text> |
2252 </xsl:text> |
|
2253 <xsl:text> if(new_val != undefined && old_val != new_val) |
|
2254 </xsl:text> |
|
2255 <xsl:text> send_hmi_value(index, new_val); |
|
2256 </xsl:text> |
2170 <xsl:text> return new_val; |
2257 <xsl:text> return new_val; |
2171 </xsl:text> |
2258 </xsl:text> |
2172 <xsl:text>} |
2259 <xsl:text>} |
2173 </xsl:text> |
2260 </xsl:text> |
2174 <xsl:text> |
2261 <xsl:text> |
2175 </xsl:text> |
2262 </xsl:text> |
2176 <xsl:text>function change_hmi_value(index, opstr) { |
2263 <xsl:text>var current_visible_page; |
2177 </xsl:text> |
2264 </xsl:text> |
2178 <xsl:text> let op = opstr[0]; |
2265 <xsl:text>var current_subscribed_page; |
2179 </xsl:text> |
2266 </xsl:text> |
2180 <xsl:text> let given_val = opstr.slice(1); |
2267 <xsl:text>var current_page_index; |
2181 </xsl:text> |
2268 </xsl:text> |
2182 <xsl:text> let old_val = cache[index] |
2269 <xsl:text> |
2183 </xsl:text> |
2270 </xsl:text> |
2184 <xsl:text> let new_val; |
2271 <xsl:text>function prepare_svg() { |
2185 </xsl:text> |
2272 </xsl:text> |
2186 <xsl:text> switch(op){ |
2273 <xsl:text> for(let eltid in detachable_elements){ |
2187 </xsl:text> |
2274 </xsl:text> |
2188 <xsl:text> case "=": |
2275 <xsl:text> let [element,parent] = detachable_elements[eltid]; |
2189 </xsl:text> |
2276 </xsl:text> |
2190 <xsl:text> eval("new_val"+opstr); |
2277 <xsl:text> parent.removeChild(element); |
2191 </xsl:text> |
|
2192 <xsl:text> break; |
|
2193 </xsl:text> |
|
2194 <xsl:text> case "+": |
|
2195 </xsl:text> |
|
2196 <xsl:text> case "-": |
|
2197 </xsl:text> |
|
2198 <xsl:text> case "*": |
|
2199 </xsl:text> |
|
2200 <xsl:text> case "/": |
|
2201 </xsl:text> |
|
2202 <xsl:text> if(old_val != undefined) |
|
2203 </xsl:text> |
|
2204 <xsl:text> new_val = eval("old_val"+opstr); |
|
2205 </xsl:text> |
|
2206 <xsl:text> break; |
|
2207 </xsl:text> |
2278 </xsl:text> |
2208 <xsl:text> } |
2279 <xsl:text> } |
2209 </xsl:text> |
2280 </xsl:text> |
2210 <xsl:text> if(new_val != undefined && old_val != new_val) |
2281 <xsl:text>}; |
2211 </xsl:text> |
2282 </xsl:text> |
2212 <xsl:text> send_hmi_value(index, new_val); |
2283 <xsl:text> |
2213 </xsl:text> |
2284 </xsl:text> |
2214 <xsl:text> return new_val; |
2285 <xsl:text>function switch_page(page_name, page_index) { |
|
2286 </xsl:text> |
|
2287 <xsl:text> if(current_subscribed_page != current_visible_page){ |
|
2288 </xsl:text> |
|
2289 <xsl:text> /* page switch already going */ |
|
2290 </xsl:text> |
|
2291 <xsl:text> /* TODO LOG ERROR */ |
|
2292 </xsl:text> |
|
2293 <xsl:text> return false; |
|
2294 </xsl:text> |
|
2295 <xsl:text> } |
|
2296 </xsl:text> |
|
2297 <xsl:text> |
|
2298 </xsl:text> |
|
2299 <xsl:text> if(page_name == undefined) |
|
2300 </xsl:text> |
|
2301 <xsl:text> page_name = current_subscribed_page; |
|
2302 </xsl:text> |
|
2303 <xsl:text> |
|
2304 </xsl:text> |
|
2305 <xsl:text> |
|
2306 </xsl:text> |
|
2307 <xsl:text> let old_desc = page_desc[current_subscribed_page]; |
|
2308 </xsl:text> |
|
2309 <xsl:text> let new_desc = page_desc[page_name]; |
|
2310 </xsl:text> |
|
2311 <xsl:text> |
|
2312 </xsl:text> |
|
2313 <xsl:text> if(new_desc == undefined){ |
|
2314 </xsl:text> |
|
2315 <xsl:text> /* TODO LOG ERROR */ |
|
2316 </xsl:text> |
|
2317 <xsl:text> return false; |
|
2318 </xsl:text> |
|
2319 <xsl:text> } |
|
2320 </xsl:text> |
|
2321 <xsl:text> |
|
2322 </xsl:text> |
|
2323 <xsl:text> if(page_index == undefined){ |
|
2324 </xsl:text> |
|
2325 <xsl:text> page_index = new_desc.page_index; |
|
2326 </xsl:text> |
|
2327 <xsl:text> } |
|
2328 </xsl:text> |
|
2329 <xsl:text> |
|
2330 </xsl:text> |
|
2331 <xsl:text> if(old_desc){ |
|
2332 </xsl:text> |
|
2333 <xsl:text> old_desc.absolute_widgets.map(w=>w.unsub()); |
|
2334 </xsl:text> |
|
2335 <xsl:text> old_desc.relative_widgets.map(w=>w.unsub()); |
|
2336 </xsl:text> |
|
2337 <xsl:text> } |
|
2338 </xsl:text> |
|
2339 <xsl:text> new_desc.absolute_widgets.map(w=>w.sub()); |
|
2340 </xsl:text> |
|
2341 <xsl:text> var new_offset = page_index == undefined ? 0 : page_index - new_desc.page_index; |
|
2342 </xsl:text> |
|
2343 <xsl:text> new_desc.relative_widgets.map(w=>w.sub(new_offset)); |
|
2344 </xsl:text> |
|
2345 <xsl:text> |
|
2346 </xsl:text> |
|
2347 <xsl:text> update_subscriptions(); |
|
2348 </xsl:text> |
|
2349 <xsl:text> |
|
2350 </xsl:text> |
|
2351 <xsl:text> current_subscribed_page = page_name; |
|
2352 </xsl:text> |
|
2353 <xsl:text> current_page_index = page_index; |
|
2354 </xsl:text> |
|
2355 <xsl:text> |
|
2356 </xsl:text> |
|
2357 <xsl:text> jumps_need_update = true; |
|
2358 </xsl:text> |
|
2359 <xsl:text> |
|
2360 </xsl:text> |
|
2361 <xsl:text> requestHMIAnimation(); |
|
2362 </xsl:text> |
|
2363 <xsl:text> |
|
2364 </xsl:text> |
|
2365 <xsl:text> jump_history.push([page_name, page_index]); |
|
2366 </xsl:text> |
|
2367 <xsl:text> if(jump_history.length > 42) |
|
2368 </xsl:text> |
|
2369 <xsl:text> jump_history.shift(); |
|
2370 </xsl:text> |
|
2371 <xsl:text> |
|
2372 </xsl:text> |
|
2373 <xsl:text> return true; |
|
2374 </xsl:text> |
|
2375 <xsl:text>}; |
|
2376 </xsl:text> |
|
2377 <xsl:text> |
|
2378 </xsl:text> |
|
2379 <xsl:text>function* chain(a,b){ |
|
2380 </xsl:text> |
|
2381 <xsl:text> yield* a; |
|
2382 </xsl:text> |
|
2383 <xsl:text> yield* b; |
|
2384 </xsl:text> |
|
2385 <xsl:text>}; |
|
2386 </xsl:text> |
|
2387 <xsl:text> |
|
2388 </xsl:text> |
|
2389 <xsl:text>function unsubscribe(){ |
|
2390 </xsl:text> |
|
2391 <xsl:text> /* remove subsribers */ |
|
2392 </xsl:text> |
|
2393 <xsl:text> for(let index of this.indexes){ |
|
2394 </xsl:text> |
|
2395 <xsl:text> let idx = index + this.offset; |
|
2396 </xsl:text> |
|
2397 <xsl:text> subscribers[idx].delete(this); |
|
2398 </xsl:text> |
|
2399 <xsl:text> } |
|
2400 </xsl:text> |
|
2401 <xsl:text> this.offset = 0; |
2215 </xsl:text> |
2402 </xsl:text> |
2216 <xsl:text>} |
2403 <xsl:text>} |
2217 </xsl:text> |
2404 </xsl:text> |
2218 <xsl:text> |
2405 <xsl:text> |
2219 </xsl:text> |
2406 </xsl:text> |
2220 <xsl:text>var current_visible_page; |
2407 <xsl:text>function subscribe(new_offset=0){ |
2221 </xsl:text> |
2408 </xsl:text> |
2222 <xsl:text>var current_subscribed_page; |
2409 <xsl:text> /* set the offset because relative */ |
2223 </xsl:text> |
2410 </xsl:text> |
2224 <xsl:text>var current_page_index; |
2411 <xsl:text> this.offset = new_offset; |
2225 </xsl:text> |
2412 </xsl:text> |
2226 <xsl:text> |
2413 <xsl:text> /* add this's subsribers */ |
2227 </xsl:text> |
2414 </xsl:text> |
2228 <xsl:text>function prepare_svg() { |
2415 <xsl:text> for(let index of this.indexes){ |
2229 </xsl:text> |
2416 </xsl:text> |
2230 <xsl:text> for(let eltid in detachable_elements){ |
2417 <xsl:text> subscribers[index + new_offset].add(this); |
2231 </xsl:text> |
|
2232 <xsl:text> let [element,parent] = detachable_elements[eltid]; |
|
2233 </xsl:text> |
|
2234 <xsl:text> parent.removeChild(element); |
|
2235 </xsl:text> |
2418 </xsl:text> |
2236 <xsl:text> } |
2419 <xsl:text> } |
2237 </xsl:text> |
2420 </xsl:text> |
|
2421 <xsl:text> need_cache_apply.push(this); |
|
2422 </xsl:text> |
|
2423 <xsl:text>} |
|
2424 </xsl:text> |
|
2425 <xsl:text> |
|
2426 </xsl:text> |
|
2427 <xsl:text>function foreach_unsubscribe(){ |
|
2428 </xsl:text> |
|
2429 <xsl:text> for(let item of this.items){ |
|
2430 </xsl:text> |
|
2431 <xsl:text> for(let widget of item) { |
|
2432 </xsl:text> |
|
2433 <xsl:text> unsubscribe.call(widget); |
|
2434 </xsl:text> |
|
2435 <xsl:text> } |
|
2436 </xsl:text> |
|
2437 <xsl:text> } |
|
2438 </xsl:text> |
|
2439 <xsl:text> this.offset = 0; |
|
2440 </xsl:text> |
|
2441 <xsl:text>} |
|
2442 </xsl:text> |
|
2443 <xsl:text> |
|
2444 </xsl:text> |
|
2445 <xsl:text>function foreach_widgets_do(new_offset, todo){ |
|
2446 </xsl:text> |
|
2447 <xsl:text> this.offset = new_offset; |
|
2448 </xsl:text> |
|
2449 <xsl:text> for(let i = 0; i < this.items.length; i++) { |
|
2450 </xsl:text> |
|
2451 <xsl:text> let item = this.items[i]; |
|
2452 </xsl:text> |
|
2453 <xsl:text> let orig_item_index = this.index_pool[i]; |
|
2454 </xsl:text> |
|
2455 <xsl:text> let item_index = this.index_pool[i+this.item_offset]; |
|
2456 </xsl:text> |
|
2457 <xsl:text> let item_index_offset = item_index - orig_item_index; |
|
2458 </xsl:text> |
|
2459 <xsl:text> for(let widget of item) { |
|
2460 </xsl:text> |
|
2461 <xsl:text> todo.call(widget, new_offset + item_index_offset); |
|
2462 </xsl:text> |
|
2463 <xsl:text> } |
|
2464 </xsl:text> |
|
2465 <xsl:text> } |
|
2466 </xsl:text> |
|
2467 <xsl:text>} |
|
2468 </xsl:text> |
|
2469 <xsl:text> |
|
2470 </xsl:text> |
|
2471 <xsl:text>function foreach_subscribe(new_offset=0){ |
|
2472 </xsl:text> |
|
2473 <xsl:text> foreach_widgets_do.call(this, new_offset, subscribe); |
|
2474 </xsl:text> |
|
2475 <xsl:text>} |
|
2476 </xsl:text> |
|
2477 <xsl:text> |
|
2478 </xsl:text> |
|
2479 <xsl:text>function widget_apply_cache() { |
|
2480 </xsl:text> |
|
2481 <xsl:text> for(let index of this.indexes){ |
|
2482 </xsl:text> |
|
2483 <xsl:text> /* dispatch current cache in newly opened page widgets */ |
|
2484 </xsl:text> |
|
2485 <xsl:text> let realindex = index+this.offset; |
|
2486 </xsl:text> |
|
2487 <xsl:text> let cached_val = cache[realindex]; |
|
2488 </xsl:text> |
|
2489 <xsl:text> if(cached_val != undefined) |
|
2490 </xsl:text> |
|
2491 <xsl:text> dispatch_value_to_widget(this, realindex, cached_val, cached_val); |
|
2492 </xsl:text> |
|
2493 <xsl:text> } |
|
2494 </xsl:text> |
|
2495 <xsl:text>} |
|
2496 </xsl:text> |
|
2497 <xsl:text> |
|
2498 </xsl:text> |
|
2499 <xsl:text>function foreach_apply_cache() { |
|
2500 </xsl:text> |
|
2501 <xsl:text> foreach_widgets_do.call(this, this.offset, widget_apply_cache); |
|
2502 </xsl:text> |
|
2503 <xsl:text>} |
|
2504 </xsl:text> |
|
2505 <xsl:text> |
|
2506 </xsl:text> |
|
2507 <xsl:text>function foreach_onclick(opstr, evt) { |
|
2508 </xsl:text> |
|
2509 <xsl:text> new_item_offset = eval(String(this.item_offset)+opstr) |
|
2510 </xsl:text> |
|
2511 <xsl:text> if(new_item_offset + this.items.length > this.index_pool.length) { |
|
2512 </xsl:text> |
|
2513 <xsl:text> if(this.item_offset + this.items.length == this.index_pool.length) |
|
2514 </xsl:text> |
|
2515 <xsl:text> new_item_offset = 0; |
|
2516 </xsl:text> |
|
2517 <xsl:text> else |
|
2518 </xsl:text> |
|
2519 <xsl:text> new_item_offset = this.index_pool.length - this.items.length; |
|
2520 </xsl:text> |
|
2521 <xsl:text> } else if(new_item_offset < 0) { |
|
2522 </xsl:text> |
|
2523 <xsl:text> if(this.item_offset == 0) |
|
2524 </xsl:text> |
|
2525 <xsl:text> new_item_offset = this.index_pool.length - this.items.length; |
|
2526 </xsl:text> |
|
2527 <xsl:text> else |
|
2528 </xsl:text> |
|
2529 <xsl:text> new_item_offset = 0; |
|
2530 </xsl:text> |
|
2531 <xsl:text> } |
|
2532 </xsl:text> |
|
2533 <xsl:text> this.item_offset = new_item_offset; |
|
2534 </xsl:text> |
|
2535 <xsl:text> off = this.offset; |
|
2536 </xsl:text> |
|
2537 <xsl:text> foreach_unsubscribe.call(this); |
|
2538 </xsl:text> |
|
2539 <xsl:text> foreach_subscribe.call(this,off); |
|
2540 </xsl:text> |
|
2541 <xsl:text> update_subscriptions(); |
|
2542 </xsl:text> |
|
2543 <xsl:text> need_cache_apply.push(this); |
|
2544 </xsl:text> |
|
2545 <xsl:text> jumps_need_update = true; |
|
2546 </xsl:text> |
|
2547 <xsl:text> requestHMIAnimation(); |
|
2548 </xsl:text> |
|
2549 <xsl:text>} |
|
2550 </xsl:text> |
|
2551 <xsl:text> |
|
2552 </xsl:text> |
|
2553 <xsl:text> |
|
2554 </xsl:text> |
|
2555 <xsl:text>function switch_visible_page(page_name) { |
|
2556 </xsl:text> |
|
2557 <xsl:text> |
|
2558 </xsl:text> |
|
2559 <xsl:text> let old_desc = page_desc[current_visible_page]; |
|
2560 </xsl:text> |
|
2561 <xsl:text> let new_desc = page_desc[page_name]; |
|
2562 </xsl:text> |
|
2563 <xsl:text> |
|
2564 </xsl:text> |
|
2565 <xsl:text> if(old_desc){ |
|
2566 </xsl:text> |
|
2567 <xsl:text> for(let eltid in old_desc.required_detachables){ |
|
2568 </xsl:text> |
|
2569 <xsl:text> if(!(eltid in new_desc.required_detachables)){ |
|
2570 </xsl:text> |
|
2571 <xsl:text> let [element, parent] = old_desc.required_detachables[eltid]; |
|
2572 </xsl:text> |
|
2573 <xsl:text> parent.removeChild(element); |
|
2574 </xsl:text> |
|
2575 <xsl:text> } |
|
2576 </xsl:text> |
|
2577 <xsl:text> } |
|
2578 </xsl:text> |
|
2579 <xsl:text> for(let eltid in new_desc.required_detachables){ |
|
2580 </xsl:text> |
|
2581 <xsl:text> if(!(eltid in old_desc.required_detachables)){ |
|
2582 </xsl:text> |
|
2583 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
|
2584 </xsl:text> |
|
2585 <xsl:text> parent.appendChild(element); |
|
2586 </xsl:text> |
|
2587 <xsl:text> } |
|
2588 </xsl:text> |
|
2589 <xsl:text> } |
|
2590 </xsl:text> |
|
2591 <xsl:text> }else{ |
|
2592 </xsl:text> |
|
2593 <xsl:text> for(let eltid in new_desc.required_detachables){ |
|
2594 </xsl:text> |
|
2595 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
|
2596 </xsl:text> |
|
2597 <xsl:text> parent.appendChild(element); |
|
2598 </xsl:text> |
|
2599 <xsl:text> } |
|
2600 </xsl:text> |
|
2601 <xsl:text> } |
|
2602 </xsl:text> |
|
2603 <xsl:text> |
|
2604 </xsl:text> |
|
2605 <xsl:text> svg_root.setAttribute('viewBox',new_desc.bbox.join(" ")); |
|
2606 </xsl:text> |
|
2607 <xsl:text> current_visible_page = page_name; |
|
2608 </xsl:text> |
2238 <xsl:text>}; |
2609 <xsl:text>}; |
2239 </xsl:text> |
2610 </xsl:text> |
2240 <xsl:text> |
2611 <xsl:text> |
2241 </xsl:text> |
2612 </xsl:text> |
2242 <xsl:text>function switch_page(page_name, page_index) { |
2613 <xsl:text>function update_jumps() { |
2243 </xsl:text> |
2614 </xsl:text> |
2244 <xsl:text> if(current_subscribed_page != current_visible_page){ |
2615 <xsl:text> page_desc[current_visible_page].jumps.map(w=>w.notify_page_change(current_visible_page,current_page_index)); |
2245 </xsl:text> |
2616 </xsl:text> |
2246 <xsl:text> /* page switch already going */ |
2617 <xsl:text> jumps_need_update = false; |
2247 </xsl:text> |
|
2248 <xsl:text> /* TODO LOG ERROR */ |
|
2249 </xsl:text> |
|
2250 <xsl:text> return false; |
|
2251 </xsl:text> |
|
2252 <xsl:text> } |
|
2253 </xsl:text> |
|
2254 <xsl:text> |
|
2255 </xsl:text> |
|
2256 <xsl:text> if(page_name == undefined) |
|
2257 </xsl:text> |
|
2258 <xsl:text> page_name = current_subscribed_page; |
|
2259 </xsl:text> |
|
2260 <xsl:text> |
|
2261 </xsl:text> |
|
2262 <xsl:text> |
|
2263 </xsl:text> |
|
2264 <xsl:text> let old_desc = page_desc[current_subscribed_page]; |
|
2265 </xsl:text> |
|
2266 <xsl:text> let new_desc = page_desc[page_name]; |
|
2267 </xsl:text> |
|
2268 <xsl:text> |
|
2269 </xsl:text> |
|
2270 <xsl:text> if(new_desc == undefined){ |
|
2271 </xsl:text> |
|
2272 <xsl:text> /* TODO LOG ERROR */ |
|
2273 </xsl:text> |
|
2274 <xsl:text> return false; |
|
2275 </xsl:text> |
|
2276 <xsl:text> } |
|
2277 </xsl:text> |
|
2278 <xsl:text> |
|
2279 </xsl:text> |
|
2280 <xsl:text> if(page_index == undefined){ |
|
2281 </xsl:text> |
|
2282 <xsl:text> page_index = new_desc.page_index; |
|
2283 </xsl:text> |
|
2284 <xsl:text> } |
|
2285 </xsl:text> |
|
2286 <xsl:text> |
|
2287 </xsl:text> |
|
2288 <xsl:text> if(old_desc){ |
|
2289 </xsl:text> |
|
2290 <xsl:text> old_desc.absolute_widgets.map(w=>w.unsub()); |
|
2291 </xsl:text> |
|
2292 <xsl:text> old_desc.relative_widgets.map(w=>w.unsub()); |
|
2293 </xsl:text> |
|
2294 <xsl:text> } |
|
2295 </xsl:text> |
|
2296 <xsl:text> new_desc.absolute_widgets.map(w=>w.sub()); |
|
2297 </xsl:text> |
|
2298 <xsl:text> var new_offset = page_index == undefined ? 0 : page_index - new_desc.page_index; |
|
2299 </xsl:text> |
|
2300 <xsl:text> new_desc.relative_widgets.map(w=>w.sub(new_offset)); |
|
2301 </xsl:text> |
|
2302 <xsl:text> |
|
2303 </xsl:text> |
|
2304 <xsl:text> update_subscriptions(); |
|
2305 </xsl:text> |
|
2306 <xsl:text> |
|
2307 </xsl:text> |
|
2308 <xsl:text> current_subscribed_page = page_name; |
|
2309 </xsl:text> |
|
2310 <xsl:text> current_page_index = page_index; |
|
2311 </xsl:text> |
|
2312 <xsl:text> |
|
2313 </xsl:text> |
|
2314 <xsl:text> jumps_need_update = true; |
|
2315 </xsl:text> |
|
2316 <xsl:text> |
|
2317 </xsl:text> |
|
2318 <xsl:text> requestHMIAnimation(); |
|
2319 </xsl:text> |
|
2320 <xsl:text> |
|
2321 </xsl:text> |
|
2322 <xsl:text> jump_history.push([page_name, page_index]); |
|
2323 </xsl:text> |
|
2324 <xsl:text> if(jump_history.length > 42) |
|
2325 </xsl:text> |
|
2326 <xsl:text> jump_history.shift(); |
|
2327 </xsl:text> |
|
2328 <xsl:text> |
|
2329 </xsl:text> |
|
2330 <xsl:text> return true; |
|
2331 </xsl:text> |
2618 </xsl:text> |
2332 <xsl:text>}; |
2619 <xsl:text>}; |
2333 </xsl:text> |
2620 </xsl:text> |
2334 <xsl:text> |
2621 <xsl:text> |
2335 </xsl:text> |
2622 </xsl:text> |
2336 <xsl:text>function* chain(a,b){ |
2623 <xsl:text> |
2337 </xsl:text> |
2624 </xsl:text> |
2338 <xsl:text> yield* a; |
2625 <xsl:text>// Once connection established |
2339 </xsl:text> |
2626 </xsl:text> |
2340 <xsl:text> yield* b; |
2627 <xsl:text>ws.onopen = function (evt) { |
|
2628 </xsl:text> |
|
2629 <xsl:text> init_widgets(); |
|
2630 </xsl:text> |
|
2631 <xsl:text> send_reset(); |
|
2632 </xsl:text> |
|
2633 <xsl:text> // show main page |
|
2634 </xsl:text> |
|
2635 <xsl:text> prepare_svg(); |
|
2636 </xsl:text> |
|
2637 <xsl:text> switch_page(default_page); |
2341 </xsl:text> |
2638 </xsl:text> |
2342 <xsl:text>}; |
2639 <xsl:text>}; |
2343 </xsl:text> |
2640 </xsl:text> |
2344 <xsl:text> |
2641 <xsl:text> |
2345 </xsl:text> |
2642 </xsl:text> |
2346 <xsl:text>function unsubscribe(){ |
2643 <xsl:text>ws.onclose = function (evt) { |
2347 </xsl:text> |
2644 </xsl:text> |
2348 <xsl:text> /* remove subsribers */ |
2645 <xsl:text> // TODO : add visible notification while waiting for reload |
2349 </xsl:text> |
2646 </xsl:text> |
2350 <xsl:text> for(let index of this.indexes){ |
2647 <xsl:text> console.log("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+" Reload in 10s."); |
2351 </xsl:text> |
2648 </xsl:text> |
2352 <xsl:text> let idx = index + this.offset; |
2649 <xsl:text> // TODO : re-enable auto reload when not in debug |
2353 </xsl:text> |
2650 </xsl:text> |
2354 <xsl:text> subscribers[idx].delete(this); |
2651 <xsl:text> //window.setTimeout(() => location.reload(true), 10000); |
2355 </xsl:text> |
2652 </xsl:text> |
2356 <xsl:text> } |
2653 <xsl:text> alert("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+"."); |
2357 </xsl:text> |
2654 </xsl:text> |
2358 <xsl:text> this.offset = 0; |
2655 <xsl:text> |
2359 </xsl:text> |
|
2360 <xsl:text>} |
|
2361 </xsl:text> |
|
2362 <xsl:text> |
|
2363 </xsl:text> |
|
2364 <xsl:text>function subscribe(new_offset=0){ |
|
2365 </xsl:text> |
|
2366 <xsl:text> /* set the offset because relative */ |
|
2367 </xsl:text> |
|
2368 <xsl:text> this.offset = new_offset; |
|
2369 </xsl:text> |
|
2370 <xsl:text> /* add this's subsribers */ |
|
2371 </xsl:text> |
|
2372 <xsl:text> for(let index of this.indexes){ |
|
2373 </xsl:text> |
|
2374 <xsl:text> subscribers[index + new_offset].add(this); |
|
2375 </xsl:text> |
|
2376 <xsl:text> } |
|
2377 </xsl:text> |
|
2378 <xsl:text> need_cache_apply.push(this); |
|
2379 </xsl:text> |
|
2380 <xsl:text>} |
|
2381 </xsl:text> |
|
2382 <xsl:text> |
|
2383 </xsl:text> |
|
2384 <xsl:text>function foreach_unsubscribe(){ |
|
2385 </xsl:text> |
|
2386 <xsl:text> for(let item of this.items){ |
|
2387 </xsl:text> |
|
2388 <xsl:text> for(let widget of item) { |
|
2389 </xsl:text> |
|
2390 <xsl:text> unsubscribe.call(widget); |
|
2391 </xsl:text> |
|
2392 <xsl:text> } |
|
2393 </xsl:text> |
|
2394 <xsl:text> } |
|
2395 </xsl:text> |
|
2396 <xsl:text> this.offset = 0; |
|
2397 </xsl:text> |
|
2398 <xsl:text>} |
|
2399 </xsl:text> |
|
2400 <xsl:text> |
|
2401 </xsl:text> |
|
2402 <xsl:text>function foreach_widgets_do(new_offset, todo){ |
|
2403 </xsl:text> |
|
2404 <xsl:text> this.offset = new_offset; |
|
2405 </xsl:text> |
|
2406 <xsl:text> for(let i = 0; i < this.items.length; i++) { |
|
2407 </xsl:text> |
|
2408 <xsl:text> let item = this.items[i]; |
|
2409 </xsl:text> |
|
2410 <xsl:text> let orig_item_index = this.index_pool[i]; |
|
2411 </xsl:text> |
|
2412 <xsl:text> let item_index = this.index_pool[i+this.item_offset]; |
|
2413 </xsl:text> |
|
2414 <xsl:text> let item_index_offset = item_index - orig_item_index; |
|
2415 </xsl:text> |
|
2416 <xsl:text> for(let widget of item) { |
|
2417 </xsl:text> |
|
2418 <xsl:text> todo.call(widget, new_offset + item_index_offset); |
|
2419 </xsl:text> |
|
2420 <xsl:text> } |
|
2421 </xsl:text> |
|
2422 <xsl:text> } |
|
2423 </xsl:text> |
|
2424 <xsl:text>} |
|
2425 </xsl:text> |
|
2426 <xsl:text> |
|
2427 </xsl:text> |
|
2428 <xsl:text>function foreach_subscribe(new_offset=0){ |
|
2429 </xsl:text> |
|
2430 <xsl:text> foreach_widgets_do.call(this, new_offset, subscribe); |
|
2431 </xsl:text> |
|
2432 <xsl:text>} |
|
2433 </xsl:text> |
|
2434 <xsl:text> |
|
2435 </xsl:text> |
|
2436 <xsl:text>function widget_apply_cache() { |
|
2437 </xsl:text> |
|
2438 <xsl:text> for(let index of this.indexes){ |
|
2439 </xsl:text> |
|
2440 <xsl:text> /* dispatch current cache in newly opened page widgets */ |
|
2441 </xsl:text> |
|
2442 <xsl:text> let realindex = index+this.offset; |
|
2443 </xsl:text> |
|
2444 <xsl:text> let cached_val = cache[realindex]; |
|
2445 </xsl:text> |
|
2446 <xsl:text> if(cached_val != undefined) |
|
2447 </xsl:text> |
|
2448 <xsl:text> dispatch_value_to_widget(this, realindex, cached_val, cached_val); |
|
2449 </xsl:text> |
|
2450 <xsl:text> } |
|
2451 </xsl:text> |
|
2452 <xsl:text>} |
|
2453 </xsl:text> |
|
2454 <xsl:text> |
|
2455 </xsl:text> |
|
2456 <xsl:text>function foreach_apply_cache() { |
|
2457 </xsl:text> |
|
2458 <xsl:text> foreach_widgets_do.call(this, this.offset, widget_apply_cache); |
|
2459 </xsl:text> |
|
2460 <xsl:text>} |
|
2461 </xsl:text> |
|
2462 <xsl:text> |
|
2463 </xsl:text> |
|
2464 <xsl:text>function foreach_onclick(opstr, evt) { |
|
2465 </xsl:text> |
|
2466 <xsl:text> new_item_offset = eval(String(this.item_offset)+opstr) |
|
2467 </xsl:text> |
|
2468 <xsl:text> if(new_item_offset + this.items.length > this.index_pool.length) { |
|
2469 </xsl:text> |
|
2470 <xsl:text> if(this.item_offset + this.items.length == this.index_pool.length) |
|
2471 </xsl:text> |
|
2472 <xsl:text> new_item_offset = 0; |
|
2473 </xsl:text> |
|
2474 <xsl:text> else |
|
2475 </xsl:text> |
|
2476 <xsl:text> new_item_offset = this.index_pool.length - this.items.length; |
|
2477 </xsl:text> |
|
2478 <xsl:text> } else if(new_item_offset < 0) { |
|
2479 </xsl:text> |
|
2480 <xsl:text> if(this.item_offset == 0) |
|
2481 </xsl:text> |
|
2482 <xsl:text> new_item_offset = this.index_pool.length - this.items.length; |
|
2483 </xsl:text> |
|
2484 <xsl:text> else |
|
2485 </xsl:text> |
|
2486 <xsl:text> new_item_offset = 0; |
|
2487 </xsl:text> |
|
2488 <xsl:text> } |
|
2489 </xsl:text> |
|
2490 <xsl:text> this.item_offset = new_item_offset; |
|
2491 </xsl:text> |
|
2492 <xsl:text> off = this.offset; |
|
2493 </xsl:text> |
|
2494 <xsl:text> foreach_unsubscribe.call(this); |
|
2495 </xsl:text> |
|
2496 <xsl:text> foreach_subscribe.call(this,off); |
|
2497 </xsl:text> |
|
2498 <xsl:text> update_subscriptions(); |
|
2499 </xsl:text> |
|
2500 <xsl:text> need_cache_apply.push(this); |
|
2501 </xsl:text> |
|
2502 <xsl:text> jumps_need_update = true; |
|
2503 </xsl:text> |
|
2504 <xsl:text> requestHMIAnimation(); |
|
2505 </xsl:text> |
|
2506 <xsl:text>} |
|
2507 </xsl:text> |
|
2508 <xsl:text> |
|
2509 </xsl:text> |
|
2510 <xsl:text> |
|
2511 </xsl:text> |
|
2512 <xsl:text>function switch_visible_page(page_name) { |
|
2513 </xsl:text> |
|
2514 <xsl:text> |
|
2515 </xsl:text> |
|
2516 <xsl:text> let old_desc = page_desc[current_visible_page]; |
|
2517 </xsl:text> |
|
2518 <xsl:text> let new_desc = page_desc[page_name]; |
|
2519 </xsl:text> |
|
2520 <xsl:text> |
|
2521 </xsl:text> |
|
2522 <xsl:text> if(old_desc){ |
|
2523 </xsl:text> |
|
2524 <xsl:text> for(let eltid in old_desc.required_detachables){ |
|
2525 </xsl:text> |
|
2526 <xsl:text> if(!(eltid in new_desc.required_detachables)){ |
|
2527 </xsl:text> |
|
2528 <xsl:text> let [element, parent] = old_desc.required_detachables[eltid]; |
|
2529 </xsl:text> |
|
2530 <xsl:text> parent.removeChild(element); |
|
2531 </xsl:text> |
|
2532 <xsl:text> } |
|
2533 </xsl:text> |
|
2534 <xsl:text> } |
|
2535 </xsl:text> |
|
2536 <xsl:text> for(let eltid in new_desc.required_detachables){ |
|
2537 </xsl:text> |
|
2538 <xsl:text> if(!(eltid in old_desc.required_detachables)){ |
|
2539 </xsl:text> |
|
2540 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
|
2541 </xsl:text> |
|
2542 <xsl:text> parent.appendChild(element); |
|
2543 </xsl:text> |
|
2544 <xsl:text> } |
|
2545 </xsl:text> |
|
2546 <xsl:text> } |
|
2547 </xsl:text> |
|
2548 <xsl:text> }else{ |
|
2549 </xsl:text> |
|
2550 <xsl:text> for(let eltid in new_desc.required_detachables){ |
|
2551 </xsl:text> |
|
2552 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
|
2553 </xsl:text> |
|
2554 <xsl:text> parent.appendChild(element); |
|
2555 </xsl:text> |
|
2556 <xsl:text> } |
|
2557 </xsl:text> |
|
2558 <xsl:text> } |
|
2559 </xsl:text> |
|
2560 <xsl:text> |
|
2561 </xsl:text> |
|
2562 <xsl:text> svg_root.setAttribute('viewBox',new_desc.bbox.join(" ")); |
|
2563 </xsl:text> |
|
2564 <xsl:text> current_visible_page = page_name; |
|
2565 </xsl:text> |
2656 </xsl:text> |
2566 <xsl:text>}; |
2657 <xsl:text>}; |
2567 </xsl:text> |
2658 </xsl:text> |
2568 <xsl:text> |
2659 <xsl:text> |
2569 </xsl:text> |
2660 </xsl:text> |
2570 <xsl:text>function update_jumps() { |
2661 <xsl:text>var xmlns = "http://www.w3.org/2000/svg"; |
2571 </xsl:text> |
2662 </xsl:text> |
2572 <xsl:text> page_desc[current_visible_page].jumps.map(w=>w.notify_page_change(current_visible_page,current_page_index)); |
2663 <xsl:text>var edit_callback; |
2573 </xsl:text> |
2664 </xsl:text> |
2574 <xsl:text> jumps_need_update = false; |
2665 <xsl:text>function edit_value(path, valuetype, callback, initial) { |
|
2666 </xsl:text> |
|
2667 <xsl:text> |
|
2668 </xsl:text> |
|
2669 <xsl:text> let [keypadid, xcoord, ycoord] = keypads[valuetype]; |
|
2670 </xsl:text> |
|
2671 <xsl:text> console.log('XXX TODO : Edit value', path, valuetype, callback, initial, keypadid); |
|
2672 </xsl:text> |
|
2673 <xsl:text> edit_callback = callback; |
|
2674 </xsl:text> |
|
2675 <xsl:text> let widget = hmi_widgets[keypadid]; |
|
2676 </xsl:text> |
|
2677 <xsl:text> widget.start_edit(path, valuetype, callback, initial); |
2575 </xsl:text> |
2678 </xsl:text> |
2576 <xsl:text>}; |
2679 <xsl:text>}; |
2577 </xsl:text> |
2680 </xsl:text> |
2578 <xsl:text> |
2681 <xsl:text> |
2579 </xsl:text> |
2682 </xsl:text> |
2580 <xsl:text> |
2683 <xsl:text>var current_modal; /* TODO stack ?*/ |
2581 </xsl:text> |
2684 </xsl:text> |
2582 <xsl:text>// Once connection established |
2685 <xsl:text> |
2583 </xsl:text> |
2686 </xsl:text> |
2584 <xsl:text>ws.onopen = function (evt) { |
2687 <xsl:text>function show_modal() { |
2585 </xsl:text> |
2688 </xsl:text> |
2586 <xsl:text> init_widgets(); |
2689 <xsl:text> let [element, parent] = detachable_elements[this.element.id]; |
2587 </xsl:text> |
2690 </xsl:text> |
2588 <xsl:text> send_reset(); |
2691 <xsl:text> |
2589 </xsl:text> |
2692 </xsl:text> |
2590 <xsl:text> // show main page |
2693 <xsl:text> tmpgrp = document.createElementNS(xmlns,"g"); |
2591 </xsl:text> |
2694 </xsl:text> |
2592 <xsl:text> prepare_svg(); |
2695 <xsl:text> tmpgrpattr = document.createAttribute("transform"); |
2593 </xsl:text> |
2696 </xsl:text> |
2594 <xsl:text> switch_page(default_page); |
2697 <xsl:text> |
|
2698 </xsl:text> |
|
2699 <xsl:text> let [xcoord,ycoord] = this.coordinates; |
|
2700 </xsl:text> |
|
2701 <xsl:text> let [xdest,ydest] = page_desc[current_visible_page].bbox; |
|
2702 </xsl:text> |
|
2703 <xsl:text> tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")"; |
|
2704 </xsl:text> |
|
2705 <xsl:text> tmpgrp.setAttributeNode(tmpgrpattr); |
|
2706 </xsl:text> |
|
2707 <xsl:text> |
|
2708 </xsl:text> |
|
2709 <xsl:text> tmpgrp.appendChild(element); |
|
2710 </xsl:text> |
|
2711 <xsl:text> parent.appendChild(tmpgrp); |
|
2712 </xsl:text> |
|
2713 <xsl:text> |
|
2714 </xsl:text> |
|
2715 <xsl:text> current_modal = [this.element.id, tmpgrp]; |
2595 </xsl:text> |
2716 </xsl:text> |
2596 <xsl:text>}; |
2717 <xsl:text>}; |
2597 </xsl:text> |
2718 </xsl:text> |
2598 <xsl:text> |
2719 <xsl:text> |
2599 </xsl:text> |
2720 </xsl:text> |
2600 <xsl:text>ws.onclose = function (evt) { |
2721 <xsl:text>function end_modal() { |
2601 </xsl:text> |
2722 </xsl:text> |
2602 <xsl:text> // TODO : add visible notification while waiting for reload |
2723 <xsl:text> let [eltid, tmpgrp] = current_modal; |
2603 </xsl:text> |
2724 </xsl:text> |
2604 <xsl:text> console.log("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+" Reload in 10s."); |
2725 <xsl:text> let [element, parent] = detachable_elements[this.element.id]; |
2605 </xsl:text> |
2726 </xsl:text> |
2606 <xsl:text> // TODO : re-enable auto reload when not in debug |
2727 <xsl:text> |
2607 </xsl:text> |
2728 </xsl:text> |
2608 <xsl:text> //window.setTimeout(() => location.reload(true), 10000); |
2729 <xsl:text> parent.removeChild(tmpgrp); |
2609 </xsl:text> |
2730 </xsl:text> |
2610 <xsl:text> alert("Connection closed. code:"+evt.code+" reason:"+evt.reason+" wasClean:"+evt.wasClean+"."); |
2731 <xsl:text> |
2611 </xsl:text> |
2732 </xsl:text> |
2612 <xsl:text> |
2733 <xsl:text> current_modal = undefined; |
2613 </xsl:text> |
2734 </xsl:text> |
2614 <xsl:text>}; |
2735 <xsl:text>}; |
2615 </xsl:text> |
2736 </xsl:text> |
2616 <xsl:text> |
2737 <xsl:text> |
2617 </xsl:text> |
2738 </xsl:text> |
2618 <xsl:text>var xmlns = "http://www.w3.org/2000/svg"; |
2739 <xsl:text>function widget_active_activable(eltsub) { |
2619 </xsl:text> |
2740 </xsl:text> |
2620 <xsl:text>var edit_callback; |
2741 <xsl:text> if(eltsub.inactive_style === undefined) |
2621 </xsl:text> |
2742 </xsl:text> |
2622 <xsl:text>function edit_value(path, valuetype, callback, initial) { |
2743 <xsl:text> eltsub.inactive_style = eltsub.inactive.getAttribute("style"); |
2623 </xsl:text> |
2744 </xsl:text> |
2624 <xsl:text> |
2745 <xsl:text> eltsub.inactive.setAttribute("style", "display:none"); |
2625 </xsl:text> |
2746 </xsl:text> |
2626 <xsl:text> let [keypadid, xcoord, ycoord] = keypads[valuetype]; |
2747 <xsl:text> if(eltsub.active_style !== undefined) |
2627 </xsl:text> |
2748 </xsl:text> |
2628 <xsl:text> console.log('XXX TODO : Edit value', path, valuetype, callback, initial, keypadid); |
2749 <xsl:text> eltsub.active.setAttribute("style", eltsub.active_style); |
2629 </xsl:text> |
2750 </xsl:text> |
2630 <xsl:text> edit_callback = callback; |
2751 <xsl:text> console.log("active", eltsub); |
2631 </xsl:text> |
|
2632 <xsl:text> let widget = hmi_widgets[keypadid]; |
|
2633 </xsl:text> |
|
2634 <xsl:text> widget.start_edit(path, valuetype, callback, initial); |
|
2635 </xsl:text> |
2752 </xsl:text> |
2636 <xsl:text>}; |
2753 <xsl:text>}; |
2637 </xsl:text> |
2754 </xsl:text> |
2638 <xsl:text> |
2755 <xsl:text>function widget_inactive_activable(eltsub) { |
2639 </xsl:text> |
2756 </xsl:text> |
2640 <xsl:text>var current_modal; /* TODO stack ?*/ |
2757 <xsl:text> if(eltsub.active_style === undefined) |
2641 </xsl:text> |
2758 </xsl:text> |
2642 <xsl:text> |
2759 <xsl:text> eltsub.active_style = eltsub.active.getAttribute("style"); |
2643 </xsl:text> |
2760 </xsl:text> |
2644 <xsl:text>function show_modal() { |
2761 <xsl:text> eltsub.active.setAttribute("style", "display:none"); |
2645 </xsl:text> |
2762 </xsl:text> |
2646 <xsl:text> let [element, parent] = detachable_elements[this.element.id]; |
2763 <xsl:text> if(eltsub.inactive_style !== undefined) |
2647 </xsl:text> |
2764 </xsl:text> |
2648 <xsl:text> |
2765 <xsl:text> eltsub.inactive.setAttribute("style", eltsub.inactive_style); |
2649 </xsl:text> |
2766 </xsl:text> |
2650 <xsl:text> tmpgrp = document.createElementNS(xmlns,"g"); |
2767 <xsl:text> console.log("inactive", eltsub); |
2651 </xsl:text> |
|
2652 <xsl:text> tmpgrpattr = document.createAttribute("transform"); |
|
2653 </xsl:text> |
|
2654 <xsl:text> |
|
2655 </xsl:text> |
|
2656 <xsl:text> let [xcoord,ycoord] = this.coordinates; |
|
2657 </xsl:text> |
|
2658 <xsl:text> let [xdest,ydest] = page_desc[current_visible_page].bbox; |
|
2659 </xsl:text> |
|
2660 <xsl:text> tmpgrpattr.value = "translate("+String(xdest-xcoord)+","+String(ydest-ycoord)+")"; |
|
2661 </xsl:text> |
|
2662 <xsl:text> tmpgrp.setAttributeNode(tmpgrpattr); |
|
2663 </xsl:text> |
|
2664 <xsl:text> |
|
2665 </xsl:text> |
|
2666 <xsl:text> tmpgrp.appendChild(element); |
|
2667 </xsl:text> |
|
2668 <xsl:text> parent.appendChild(tmpgrp); |
|
2669 </xsl:text> |
|
2670 <xsl:text> |
|
2671 </xsl:text> |
|
2672 <xsl:text> current_modal = [this.element.id, tmpgrp]; |
|
2673 </xsl:text> |
2768 </xsl:text> |
2674 <xsl:text>}; |
2769 <xsl:text>}; |
2675 </xsl:text> |
2770 </xsl:text> |
2676 <xsl:text> |
|
2677 </xsl:text> |
|
2678 <xsl:text>function end_modal() { |
|
2679 </xsl:text> |
|
2680 <xsl:text> let [eltid, tmpgrp] = current_modal; |
|
2681 </xsl:text> |
|
2682 <xsl:text> let [element, parent] = detachable_elements[this.element.id]; |
|
2683 </xsl:text> |
|
2684 <xsl:text> |
|
2685 </xsl:text> |
|
2686 <xsl:text> parent.removeChild(tmpgrp); |
|
2687 </xsl:text> |
|
2688 <xsl:text> |
|
2689 </xsl:text> |
|
2690 <xsl:text> current_modal = undefined; |
|
2691 </xsl:text> |
|
2692 <xsl:text>}; |
|
2693 </xsl:text> |
|
2694 <xsl:text> |
|
2695 </xsl:text> |
|
2696 <xsl:text>function widget_active_activable(eltsub) { |
|
2697 </xsl:text> |
|
2698 <xsl:text> if(eltsub.inactive_style === undefined) |
|
2699 </xsl:text> |
|
2700 <xsl:text> eltsub.inactive_style = eltsub.inactive.getAttribute("style"); |
|
2701 </xsl:text> |
|
2702 <xsl:text> eltsub.inactive.setAttribute("style", "display:none"); |
|
2703 </xsl:text> |
|
2704 <xsl:text> if(eltsub.active_style !== undefined) |
|
2705 </xsl:text> |
|
2706 <xsl:text> eltsub.active.setAttribute("style", eltsub.active_style); |
|
2707 </xsl:text> |
|
2708 <xsl:text> console.log("active", eltsub); |
|
2709 </xsl:text> |
|
2710 <xsl:text>}; |
|
2711 </xsl:text> |
|
2712 <xsl:text>function widget_inactive_activable(eltsub) { |
|
2713 </xsl:text> |
|
2714 <xsl:text> if(eltsub.active_style === undefined) |
|
2715 </xsl:text> |
|
2716 <xsl:text> eltsub.active_style = eltsub.active.getAttribute("style"); |
|
2717 </xsl:text> |
|
2718 <xsl:text> eltsub.active.setAttribute("style", "display:none"); |
|
2719 </xsl:text> |
|
2720 <xsl:text> if(eltsub.inactive_style !== undefined) |
|
2721 </xsl:text> |
|
2722 <xsl:text> eltsub.inactive.setAttribute("style", eltsub.inactive_style); |
|
2723 </xsl:text> |
|
2724 <xsl:text> console.log("inactive", eltsub); |
|
2725 </xsl:text> |
|
2726 <xsl:text>}; |
|
2727 </xsl:text> |
|
2728 </xsl:template> |
2771 </xsl:template> |
2729 </xsl:stylesheet> |
2772 </xsl:stylesheet> |