-
Notifications
You must be signed in to change notification settings - Fork 148
/
debug.js
120 lines (113 loc) · 3.95 KB
/
debug.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
"use strict"
function getSolutionHeader(matrixSolver, answerHeader) {
var row = document.createElement("tr")
var allImages = matrixSolver.recipes
for (var i = 0; i < allImages.length; i++) {
var obj = allImages[i]
var cell = document.createElement("th")
cell.appendChild(getImage(obj))
row.appendChild(cell)
}
var cell = document.createElement("th")
cell.appendChild(new Text("tax"))
row.appendChild(cell)
var items = matrixSolver.items
for (var i = 0; i < items.length; i++) {
var item = items[i]
var cell = document.createElement("th")
cell.appendChild(new Text("s"))
cell.appendChild(getImage(item))
row.appendChild(cell)
}
var cell = document.createElement("th")
cell.appendChild(new Text("C"))
row.appendChild(cell)
if (answerHeader) {
var cell = document.createElement("th")
cell.appendChild(new Text("answer"))
row.appendChild(cell)
}
return row
}
function renderMatrix(matrixSolver, A, rowIcons) {
var table = document.createElement("table")
table.border = "1"
var header = getSolutionHeader(matrixSolver, true)
if (rowIcons) {
header.insertBefore(document.createElement("th"), header.firstChild)
}
table.appendChild(header)
for (var j = 0; j < A.rows; j++) {
var row = document.createElement("tr")
table.appendChild(row)
if (rowIcons) {
var td = document.createElement("td")
if (j < matrixSolver.items.length) {
var item = matrixSolver.items[j]
td.appendChild(getImage(item))
} else if (j == A.rows - 2) {
td.appendChild(new Text("tax"))
} else if (j == A.rows - 1) {
td.appendChild(new Text("cost"))
}
row.appendChild(td)
}
for (var k = 0; k < A.cols; k++) {
var cell = document.createElement("td")
cell.classList.add("right-align")
row.appendChild(cell)
var x = A.index(j, k)
var tt = document.createElement("tt")
tt.textContent = x.toMixed()
cell.appendChild(tt)
}
}
return table
}
function renderDebug() {
var debugTab = document.getElementById("debug_tab")
var oldMatrixes = document.getElementById("matrixes")
var node = document.createElement("div")
node.id = "matrixes"
debugTab.replaceChild(node, oldMatrixes)
for (var i = 0; i < solver.matrixSolvers.length; i++) {
var matrixSolver = solver.matrixSolvers[i]
var A = matrixSolver.matrix
var table = renderMatrix(matrixSolver, A, true)
node.appendChild(table)
}
var oldSolutions = document.getElementById("solution")
node = document.createElement("div")
node.id = "solution"
debugTab.replaceChild(node, oldSolutions)
for (var i = 0; i < solver.matrixSolvers.length; i++) {
var matrixSolver = solver.matrixSolvers[i]
var A = matrixSolver.lastProblem
if (A) {
var table = renderMatrix(matrixSolver, A, false)
node.appendChild(table)
}
var A = matrixSolver.lastSolution
/*if (A) {
var table = renderMatrix(matrixSolver, A, false)
node.appendChild(table)
}*/
var basis = getBasis(A)
var table = document.createElement("table")
table.border = "1"
var header = getSolutionHeader(matrixSolver)
table.appendChild(header)
var row = document.createElement("tr")
table.appendChild(row)
for (var j = 0; j < basis.length; j++) {
var cell = document.createElement("td")
cell.classList.add("right-align")
row.appendChild(cell)
var x = basis[j]
var tt = document.createElement("tt")
tt.textContent = x.toDecimal(3)
cell.appendChild(tt)
}
node.appendChild(table)
}
}