1133 </xsl:text> |
1129 </xsl:text> |
1134 <xsl:text> |
1130 <xsl:text> |
1135 </xsl:text> |
1131 </xsl:text> |
1136 <xsl:text>function switch_page(page_name) { |
1132 <xsl:text>function switch_page(page_name) { |
1137 </xsl:text> |
1133 </xsl:text> |
1138 <xsl:text> page_switch = page_name; |
1134 <xsl:text> if(current_subscribed_page != current_visible_page){ |
1139 </xsl:text> |
1135 </xsl:text> |
1140 <xsl:text> window.requestAnimationFrame(animate); |
1136 <xsl:text> /* page switch already going */ |
|
1137 </xsl:text> |
|
1138 <xsl:text> /* TODO LOG ERROR */ |
|
1139 </xsl:text> |
|
1140 <xsl:text> return; |
|
1141 </xsl:text> |
|
1142 <xsl:text> } else if(page_name == current_visible_page){ |
|
1143 </xsl:text> |
|
1144 <xsl:text> /* already in that page */ |
|
1145 </xsl:text> |
|
1146 <xsl:text> /* TODO LOG ERROR */ |
|
1147 </xsl:text> |
|
1148 <xsl:text> return; |
|
1149 </xsl:text> |
|
1150 <xsl:text> } |
|
1151 </xsl:text> |
|
1152 <xsl:text> switch_subscribed_page(page_name); |
|
1153 </xsl:text> |
|
1154 <xsl:text>}; |
|
1155 </xsl:text> |
|
1156 <xsl:text> |
|
1157 </xsl:text> |
|
1158 <xsl:text>function switch_subscribed_page(page_name) { |
|
1159 </xsl:text> |
|
1160 <xsl:text> let old_desc = page_desc[current_subscribed_page]; |
|
1161 </xsl:text> |
|
1162 <xsl:text> let new_desc = page_desc[page_name]; |
|
1163 </xsl:text> |
|
1164 <xsl:text> |
|
1165 </xsl:text> |
|
1166 <xsl:text> if(new_desc == undefined){ |
|
1167 </xsl:text> |
|
1168 <xsl:text> /* TODO LOG ERROR */ |
|
1169 </xsl:text> |
|
1170 <xsl:text> return; |
|
1171 </xsl:text> |
|
1172 <xsl:text> } |
|
1173 </xsl:text> |
|
1174 <xsl:text> |
|
1175 </xsl:text> |
|
1176 <xsl:text> if(old_desc){ |
|
1177 </xsl:text> |
|
1178 <xsl:text> for(let widget of old_desc.widgets){ |
|
1179 </xsl:text> |
|
1180 <xsl:text> /* remove subsribers */ |
|
1181 </xsl:text> |
|
1182 <xsl:text> for(let index of widget.indexes){ |
|
1183 </xsl:text> |
|
1184 <xsl:text> subscribers[index].delete(widget); |
|
1185 </xsl:text> |
|
1186 <xsl:text> } |
|
1187 </xsl:text> |
|
1188 <xsl:text> } |
|
1189 </xsl:text> |
|
1190 <xsl:text> } |
|
1191 </xsl:text> |
|
1192 <xsl:text> for(let widget of new_desc.widgets){ |
|
1193 </xsl:text> |
|
1194 <xsl:text> /* add widget's subsribers */ |
|
1195 </xsl:text> |
|
1196 <xsl:text> for(let index of widget.indexes){ |
|
1197 </xsl:text> |
|
1198 <xsl:text> subscribers[index].add(widget); |
|
1199 </xsl:text> |
|
1200 <xsl:text> } |
|
1201 </xsl:text> |
|
1202 <xsl:text> } |
|
1203 </xsl:text> |
|
1204 <xsl:text> |
|
1205 </xsl:text> |
|
1206 <xsl:text> update_subscriptions(); |
|
1207 </xsl:text> |
|
1208 <xsl:text> |
|
1209 </xsl:text> |
|
1210 <xsl:text> current_subscribed_page = page_name; |
|
1211 </xsl:text> |
|
1212 <xsl:text> |
|
1213 </xsl:text> |
|
1214 <xsl:text> requestHMIAnimation(); |
1141 </xsl:text> |
1215 </xsl:text> |
1142 <xsl:text>} |
1216 <xsl:text>} |
1143 </xsl:text> |
1217 </xsl:text> |
1144 <xsl:text> |
1218 <xsl:text> |
1145 </xsl:text> |
1219 </xsl:text> |
1146 <xsl:text>function do_switch_page(page_name) { |
1220 <xsl:text>function switch_visible_page(page_name) { |
1147 </xsl:text> |
1221 </xsl:text> |
1148 <xsl:text> let old_desc = page_desc[current_page]; |
1222 <xsl:text> |
|
1223 </xsl:text> |
|
1224 <xsl:text> let old_desc = page_desc[current_visible_page]; |
1149 </xsl:text> |
1225 </xsl:text> |
1150 <xsl:text> let new_desc = page_desc[page_name]; |
1226 <xsl:text> let new_desc = page_desc[page_name]; |
1151 </xsl:text> |
1227 </xsl:text> |
1152 <xsl:text> |
1228 <xsl:text> |
1153 </xsl:text> |
1229 </xsl:text> |
1154 <xsl:text> if(new_desc == undefined){ |
|
1155 </xsl:text> |
|
1156 <xsl:text> /* TODO LOG ERROR */ |
|
1157 </xsl:text> |
|
1158 <xsl:text> return; |
|
1159 </xsl:text> |
|
1160 <xsl:text> } |
|
1161 </xsl:text> |
|
1162 <xsl:text> |
|
1163 </xsl:text> |
|
1164 <xsl:text> if(old_desc){ |
1230 <xsl:text> if(old_desc){ |
1165 </xsl:text> |
1231 </xsl:text> |
1166 <xsl:text> for(let widget of old_desc.widgets){ |
1232 <xsl:text> for(let eltid in old_desc.required_detachables){ |
1167 </xsl:text> |
1233 </xsl:text> |
1168 <xsl:text> /* remove subsribers */ |
1234 <xsl:text> if(!(eltid in new_desc.required_detachables)){ |
1169 </xsl:text> |
1235 </xsl:text> |
1170 <xsl:text> for(let index of widget.indexes){ |
1236 <xsl:text> let [element, parent] = old_desc.required_detachables[eltid]; |
1171 </xsl:text> |
1237 </xsl:text> |
1172 <xsl:text> subscribers[index].delete(widget); |
1238 <xsl:text> parent.removeChild(element); |
1173 </xsl:text> |
1239 </xsl:text> |
1174 <xsl:text> } |
1240 <xsl:text> } |
1175 </xsl:text> |
1241 </xsl:text> |
1176 <xsl:text> } |
1242 <xsl:text> } |
1177 </xsl:text> |
1243 </xsl:text> |
1178 <xsl:text> for(let eltid in old_desc.required_detachables){ |
1244 <xsl:text> for(let eltid in new_desc.required_detachables){ |
1179 </xsl:text> |
1245 </xsl:text> |
1180 <xsl:text> if(!(eltid in new_desc.required_detachables)){ |
1246 <xsl:text> if(!(eltid in old_desc.required_detachables)){ |
1181 </xsl:text> |
1247 </xsl:text> |
1182 <xsl:text> let [element, parent] = old_desc.required_detachables[eltid]; |
1248 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
1183 </xsl:text> |
1249 </xsl:text> |
1184 <xsl:text> parent.removeChild(element); |
1250 <xsl:text> parent.appendChild(element); |
1185 </xsl:text> |
1251 </xsl:text> |
1186 <xsl:text> } |
1252 <xsl:text> } |
1187 </xsl:text> |
1253 </xsl:text> |
1188 <xsl:text> } |
1254 <xsl:text> } |
1189 </xsl:text> |
1255 </xsl:text> |
|
1256 <xsl:text> }else{ |
|
1257 </xsl:text> |
1190 <xsl:text> for(let eltid in new_desc.required_detachables){ |
1258 <xsl:text> for(let eltid in new_desc.required_detachables){ |
1191 </xsl:text> |
1259 </xsl:text> |
1192 <xsl:text> if(!(eltid in old_desc.required_detachables)){ |
1260 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
1193 </xsl:text> |
1261 </xsl:text> |
1194 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
1262 <xsl:text> parent.appendChild(element); |
1195 </xsl:text> |
|
1196 <xsl:text> parent.appendChild(element); |
|
1197 </xsl:text> |
|
1198 <xsl:text> } |
|
1199 </xsl:text> |
1263 </xsl:text> |
1200 <xsl:text> } |
1264 <xsl:text> } |
1201 </xsl:text> |
1265 </xsl:text> |
1202 <xsl:text> }else{ |
1266 <xsl:text> } |
1203 </xsl:text> |
1267 </xsl:text> |
1204 <xsl:text> for(let eltid in new_desc.required_detachables){ |
1268 <xsl:text> |
1205 </xsl:text> |
1269 </xsl:text> |
1206 <xsl:text> let [element, parent] = new_desc.required_detachables[eltid]; |
1270 <xsl:text> for(let widget of new_desc.widgets){ |
1207 </xsl:text> |
1271 </xsl:text> |
1208 <xsl:text> parent.appendChild(element); |
1272 <xsl:text> for(let index of widget.indexes){ |
|
1273 </xsl:text> |
|
1274 <xsl:text> /* dispatch current cache in newly opened page widgets */ |
|
1275 </xsl:text> |
|
1276 <xsl:text> let cached_val = cache[index]; |
|
1277 </xsl:text> |
|
1278 <xsl:text> if(cached_val != undefined) |
|
1279 </xsl:text> |
|
1280 <xsl:text> dispatch_value_to_widget(widget, index, cached_val, cached_val); |
1209 </xsl:text> |
1281 </xsl:text> |
1210 <xsl:text> } |
1282 <xsl:text> } |
1211 </xsl:text> |
1283 </xsl:text> |
1212 <xsl:text> } |
1284 <xsl:text> } |
1213 </xsl:text> |
1285 </xsl:text> |
1214 <xsl:text> |
1286 <xsl:text> |
1215 </xsl:text> |
1287 </xsl:text> |
1216 <xsl:text> for(let widget of new_desc.widgets){ |
|
1217 </xsl:text> |
|
1218 <xsl:text> /* add widget's subsribers */ |
|
1219 </xsl:text> |
|
1220 <xsl:text> for(let index of widget.indexes){ |
|
1221 </xsl:text> |
|
1222 <xsl:text> subscribers[index].add(widget); |
|
1223 </xsl:text> |
|
1224 <xsl:text> /* dispatch current cache in newly opened page widgets */ |
|
1225 </xsl:text> |
|
1226 <xsl:text> let cached_val = cache[index]; |
|
1227 </xsl:text> |
|
1228 <xsl:text> if(cached_val != undefined) |
|
1229 </xsl:text> |
|
1230 <xsl:text> dispatch_value_to_widget(widget, index, cached_val, cached_val); |
|
1231 </xsl:text> |
|
1232 <xsl:text> } |
|
1233 </xsl:text> |
|
1234 <xsl:text> } |
|
1235 </xsl:text> |
|
1236 <xsl:text> |
|
1237 </xsl:text> |
|
1238 <xsl:text> svg_root.setAttribute('viewBox',new_desc.bbox.join(" ")); |
1288 <xsl:text> svg_root.setAttribute('viewBox',new_desc.bbox.join(" ")); |
1239 </xsl:text> |
1289 </xsl:text> |
1240 <xsl:text> current_page = page_name; |
1290 <xsl:text> current_visible_page = page_name; |
1241 </xsl:text> |
|
1242 <xsl:text> |
|
1243 </xsl:text> |
|
1244 <xsl:text> window.setTimeout(update_subscriptions,0); |
|
1245 </xsl:text> |
1291 </xsl:text> |
1246 <xsl:text>}; |
1292 <xsl:text>}; |
1247 </xsl:text> |
1293 </xsl:text> |
1248 <xsl:text> |
1294 <xsl:text> |
1249 </xsl:text> |
1295 </xsl:text> |