107// c consists of many solenoids backets, in each backet we have several ports connect to it together.
108function on_off(c: Array<Array<number>>, port_choose: Array<number>) {
109 var switch_s = [];
110 for (var i = 0; i < c.length; i++) {111 if (port_choose.indexOf(c[i][0]) >= 0) switch_s[switch_s.length] = "on";
112 else switch_s[switch_s.length] = "off";
113 }
106// port_choose means which solenoids should be used in current mode.
107// c consists of many solenoids backets, in each backet we have several ports connect to it together.
108function on_off(c: Array<Array<number>>, port_choose: Array<number>) {
109 var switch_s = [];110 for (var i = 0; i < c.length; i++) {
111 if (port_choose.indexOf(c[i][0]) >= 0) switch_s[switch_s.length] = "on";
112 else switch_s[switch_s.length] = "off";
89 // component_each_info consists of
90 while (i <= component_each_info[index].length) {
91 var j = 0;
92 var flag = 0; 93 for (let ci of c) {
94 if (ci.indexOf(i) >= 0) {
95 flag = 1;
88 var index = component_exist_list.indexOf("Port_control");
89 // component_each_info consists of
90 while (i <= component_each_info[index].length) {
91 var j = 0; 92 var flag = 0;
93 for (let ci of c) {
94 if (ci.indexOf(i) >= 0) {
85 }
86 var i = 1;
87 close_ports = [];
88 var index = component_exist_list.indexOf("Port_control"); 89 // component_each_info consists of
90 while (i <= component_each_info[index].length) {
91 var j = 0;
83 }
84 }
85 }
86 var i = 1; 87 close_ports = [];
88 var index = component_exist_list.indexOf("Port_control");
89 // component_each_info consists of
71 console.log(c[i]);
72 if (c[i].indexOf(10) >= 0) {
73 console.log(i, c[i]);
74 var index = c[i].indexOf(10); 75 c[i].splice(index, 1);
76 index = c[i].indexOf(11);
77 c[i].splice(index, 1);
67 // special to mode 5 of layout v1_i7
68 if (mode_a.indexOf(5) >= 0) {
69 var lc = c.length;
70 for (var i = 0; i < lc; i++) { 71 console.log(c[i]);
72 if (c[i].indexOf(10) >= 0) {
73 console.log(i, c[i]);
66
67 // special to mode 5 of layout v1_i7
68 if (mode_a.indexOf(5) >= 0) {
69 var lc = c.length; 70 for (var i = 0; i < lc; i++) {
71 console.log(c[i]);
72 if (c[i].indexOf(10) >= 0) {
50 c.splice(j, 1);
51 j--;
52 lc--;
53 var i = 0; 54 // don't scan the a_left in d.
55 while (i < d.length - 1) {
56 if (d[i].length > 0 && c.indexOf(d[i]) < 0) c.push(d[i]);
43 // split a[k] using current c
44 for (var j = 0; j < lc; j++) {
45 if (a_left.length <= 0) break;
46 var d = []; 47 if (c[j].length > 0) {
48 d = port_merge_split(a_left, c[j]);
49 a_left = d[d.length - 1];
41 var a_left = a[k];
42 console.log(c.slice(0));
43 // split a[k] using current c
44 for (var j = 0; j < lc; j++) { 45 if (a_left.length <= 0) break;
46 var d = [];
47 if (c[j].length > 0) {
38 k++;
39 } else {
40 var lc = c.length;
41 var a_left = a[k]; 42 console.log(c.slice(0));
43 // split a[k] using current c
44 for (var j = 0; j < lc; j++) {
37 }
38 k++;
39 } else {
40 var lc = c.length; 41 var a_left = a[k];
42 console.log(c.slice(0));
43 // split a[k] using current c
30 if (k == 0) {
31 d = port_merge_split(a[0], a[1]);
32 console.log(d.slice(0));
33 var i = 0; 34 while (i < d.length) {
35 if (d[i].length > 0 && c.indexOf(d[i]) < 0) c.push(d[i]);
36 i++;
25function union_merge(a: Array<Array<number>>) {
26 var c = [];
27 var k = 0;
28 var la = a.length; 29 while (k < la) {
30 if (k == 0) {
31 d = port_merge_split(a[0], a[1]);
24}
25function union_merge(a: Array<Array<number>>) {
26 var c = [];
27 var k = 0; 28 var la = a.length;
29 while (k < la) {
30 if (k == 0) {
23 return d;
24}
25function union_merge(a: Array<Array<number>>) {
26 var c = []; 27 var k = 0;
28 var la = a.length;
29 while (k < la) {
4// dynamicly analyse what is newly removed or added from/to open sets
5function port_merge_split(a: Array<number>, b: Array<number>) {
6 var d = [];
7 var b_left = [], 8 a_left = [], 9 keep_open = [], 10 keep_close = []; 11
12 for (let element of a) {
13 if (b.indexOf(element) < 0) a_left[a_left.length] = element;
3import { component_each_info } from "@/guide/component_list";
4// dynamicly analyse what is newly removed or added from/to open sets
5function port_merge_split(a: Array<number>, b: Array<number>) {
6 var d = []; 7 var b_left = [],
8 a_left = [],
9 keep_open = [],
11}
12function color(i) {
13 for (var j = 1; j < 6; j++) {
14 var sidebar = document.getElementById("side" + j);15 if (i == j) sidebar.style.color = "#111";
16 else sidebar.style.color = "#FFFFFF";
17 }
10 document.body.style.backgroundColor = "white";
11}
12function color(i) {
13 for (var j = 1; j < 6; j++) {14 var sidebar = document.getElementById("side" + j);
15 if (i == j) sidebar.style.color = "#111";
16 else sidebar.style.color = "#FFFFFF";
10 if (mode_description[mode_a[i]].indexOf("\n") < 0) message += "\n";
11 message += "Valve on: " + solenoids_each_mode[i] + "\n";
12 var switch_s = on_off(solenoid_set, solenoids_each_mode[i]);
13 for (var j = 0; j < solenoid_set.length; j++) {14 message += "Solenoid " + j + ": " + switch_s[j] + " \n";
15 }
16 }
9 message += mode_description[mode_a[i]];
10 if (mode_description[mode_a[i]].indexOf("\n") < 0) message += "\n";
11 message += "Valve on: " + solenoids_each_mode[i] + "\n";
12 var switch_s = on_off(solenoid_set, solenoids_each_mode[i]);13 for (var j = 0; j < solenoid_set.length; j++) {
14 message += "Solenoid " + j + ": " + switch_s[j] + " \n";
15 }
4 for (var j = 0; j < solenoid_set.length; j++) {
5 message += "Solenoid " + j + ": " + solenoid_set[j] + "\n";
6 }
7 for (var i = 0; i < mode_a.length; i++) { 8 message += "\n" + "Mode: " + mode_a[i] + ", Chosen Ports: " + ports_select[i] + "\n";
9 message += mode_description[mode_a[i]];
10 if (mode_description[mode_a[i]].indexOf("\n") < 0) message += "\n";
It is recommended to use let
or const
over var
.
This will help prevent re-declaration of variables that are in the global scope when using var
.
ES6 allows programmers to create variables with block scope instead of function scope using the let
and const
keywords.
Block scope is common in many other programming languages and helps programmers avoid mistakes such as this one:
var count = people.length;
var enoughFood = count > sandwiches.length;
if (enoughFood) {
var count = sandwiches.length; // accidentally overriding the count variable
console.log("We have " + count + " sandwiches for everyone. Plenty for all!");
}
// our count variable is no longer accurate
console.log("We have " + count + " people and " + sandwiches.length + " sandwiches!");
Block scoped variables shadow outer declarations instead of writing to them.
NOTE: There are certain edge cases where users might want to consider var. Consider this example:
var lib = lib || { run: () => {} }
Here, lib
might be a library that is exposed to an HTML file using a <script>
tag.
The var
keyword helps avoid re-writing lib
if it has already been declared via an injected script that was executed before this one.
Ideally, you should let bundlers worry about cases like this.
But if you want to use var
anyway, consider using a skipcq comment, or disabling the issue altogether.
Bad Practice
var x = "y";
var CONFIG = {};
Recommended
let x = "y";
const CONFIG = {};