Index: client/samples/total/src/SYLKReader.dart |
diff --git a/client/samples/total/src/SYLKReader.dart b/client/samples/total/src/SYLKReader.dart |
index 2eb4d62630c2420e0a35176c5f81bf6306bbb7d3..96f6108885bb943d2b687afc71460854e0354dde 100644 |
--- a/client/samples/total/src/SYLKReader.dart |
+++ b/client/samples/total/src/SYLKReader.dart |
@@ -44,10 +44,10 @@ class SYLKReader extends Reader { |
} |
} |
if (row == -1) { |
- throw new RuntimeException("No row (Y) specified in ${sylk[i]}"); |
+ throw new RuntimeException("${i}: No row (Y) specified in ${sylk[i]}"); |
} |
if (col == -1) { |
- throw new RuntimeException("No col (X) specified in ${sylk[i]}"); |
+ throw new RuntimeException("${i}: No col (X) specified in ${sylk[i]}"); |
} |
lastLocation = new CellLocation(spreadsheet, new RowCol(row, col)); |
spreadsheet.execute(new SetCellContentsCommand(lastLocation, contents)); |
@@ -94,166 +94,38 @@ class SYLKReader extends Reader { |
} |
} |
- List<String> makeExample(String id) { |
- if (id == "mortgage") { |
- return _makeMortgageExample(); |
- } else if (id == "insertTest") { |
- return _makeInsertTest(); |
- } else if (id == "collatz") { |
- return _makeCollatzTest(); |
- } |
- } |
- |
- List<String> _makeCollatzTest() { |
- List<String> sylk = new List<String>(); |
- sylk.add('ID;P'); |
- sylk.add('B;X1;Y180'); |
- sylk.add("C;X1;Y1;K871"); |
- for (int row = 2; row < 180; row++) { |
- // x even ==> x / 2 |
- // x odd ==> 3 * x + 1 |
- // Note that (x - 2*trunc(x/2)) is 0 when x is even and 1 when x is odd |
- sylk.add("C;X1;Y${row};K=(R[-1]C-2*TRUNC(R[-1]C/2))*(3*R[-1]C+1)+(1-(R[-1]C-2*TRUNC(R[-1]C/2)))*(R[-1]C/2)"); |
- } |
- return sylk; |
- } |
- |
- List<String> _makeInsertTest() { |
- List<String> sylk = new List<String>(); |
- |
- sylk.add('ID;P'); |
- sylk.add('B;X6;Y3'); |
- |
- sylk.add('C;Y1;X1;K"InsertTest"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y2;X1;K"Absolute"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y3;X1;K"Relative"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X2;K"Fixed"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X3;K"NS to NS"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X4;K"NS to S"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X5;K"S to NS"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X6;K"S to S"'); |
- sylk.add('F;SD;FD0C'); |
- |
- sylk.add('C;Y2;X2;K1'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y3;X2;K2'); |
- sylk.add('F;P1;FD0C'); |
- |
- sylk.add('C;Y2;X3;K=(R2C2+10)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y3;X3;K=(R[0]C[-1] + 10)'); |
- sylk.add('F;P1;FD0C'); |
- |
- sylk.add('C;Y2;X4;K=(R2C5-1000)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y3;X4;K=(R[0]C[1] - 1000)'); |
- sylk.add('F;P1;FD0C'); |
- |
- sylk.add('C;Y2;X5;K=(R2C3+1100)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y3;X5;K=(R[0]C[-2] + 1100)'); |
- sylk.add('F;P1;FD0C'); |
- |
- sylk.add('C;Y2;X6;K=(R2C5+10000)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y3;X6;K=(R[0]C[-1] + 10000)'); |
- sylk.add('F;P1;FD0C'); |
- |
- sylk.add('C;Y4;X1;K"Sums Relative"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y4;X2;K=SUM(R[-2]C[0]:R[-1]C[0])'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y4;X3;K=SUM(R[-2]C[0]:R[-1]C[0])'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y4;X4;K=SUM(R[-2]C[0]:R[-1]C[0])'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y4;X5;K=SUM(R[-2]C[0]:R[-1]C[0])'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y4;X6;K=SUM(R[-2]C[0]:R[-1]C[0])'); |
- sylk.add('F;P1;FD0C'); |
- |
- sylk.add('C;Y5;X1;K"Sums Absolute"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y5;X2;K=SUM(B2:B3)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y5;X3;K=SUM(C2:C3)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y5;X4;K=SUM(D2:D3)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y5;X5;K=SUM(E2:E3)'); |
- sylk.add('F;P1;FD0C'); |
- sylk.add('C;Y5;X6;K=SUM(F2:F3)'); |
- sylk.add('F;P1;FD0C'); |
+ void request(String name, void callback(String spreadsheet)) { |
+ String url = '/spreadsheet/get?name=$name'; |
+ XMLHttpRequest req = new XMLHttpRequest(); |
+ req.on.readyStateChange.add((Event event) { |
+ if (req.readyState != XMLHttpRequest.DONE) { |
+ return; |
+ } |
- return sylk; |
- } |
+ String text; |
+ switch (true) { |
+ case req.status == 200 && req.responseText != null : |
+ text = req.responseText; |
+ break; |
+ |
+ default: |
+ text = '''ID;P |
+B;X1;Y3 |
+C;Y1;X1;K${req.status} |
+C;Y2;X1;K"spreadsheet/get" |
+C;Y3;X1;K"not found" |
+'''; |
+ break; |
+ } |
- List<String> _makeMortgageExample() { |
- int years = 8; |
- int payments = years * 12; |
- List<String> sylk = new List<String>(); |
- sylk.add('ID;P'); |
- sylk.add('B;X4;Y${payments + 4}'); |
- sylk.add('C;Y1;X1;K"Loan Amount"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X2;K"Interest Rate"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X3;K"Years"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y1;X4;K"\$/Month"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y2;X1;K30000'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y2;X2;K.05375'); |
- sylk.add('F;P8;F%3R'); |
- sylk.add('C;Y2;X3;K${years}'); |
- sylk.add('F;P2;FD0R'); |
- sylk.add('C;Y2;X4;K=ROUND((R2C1 * ((R2C2/12)/(1 - POWER((1 + (R2C2/12)), (-12 * R2C3))))), 2)'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y3;X1;K"Payment #"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y3;X2;K"Balance"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y3;X3;K"Interest"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y3;X4;K"Principal"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y4;X1;K1'); |
- sylk.add('F;P2;FD0C'); |
- sylk.add('C;Y4;X2;K=R2C1'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y4;X3;K=(RC[-1] * R2C2)/12'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y4;X4;K=R2C4 - RC[-1]'); |
- sylk.add('F;P5;F\$2R'); |
- for (int j = 5; j < payments + 4; j++) { |
- sylk.add('C;Y${j};X1;K=R[-1]C + 1'); |
- sylk.add('F;P2;FD0C'); |
- sylk.add('C;Y${j};X2;K=R[-1]C - R[-1]C[2]'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y${j};X3;K=(RC[-1] * R2C2)/12'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y${j};X4;K=R2C4 - RC[-1]'); |
- sylk.add('F;P5;F\$2R'); |
- } |
+ try { |
+ callback(text); |
+ } catch (var e, var s) { |
+ print(e); |
+ } |
+ }); |
- int p3 = payments + 3; |
- int p4 = payments + 4; |
- sylk.add('C;Y${p4};X1;K"Totals"'); |
- sylk.add('F;SD;FD0C'); |
- sylk.add('C;Y${p4};X2;K=C${p4} + D${p4}'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y${p4};X3;K=SUM(C4:C${p3})'); |
- sylk.add('F;P5;F\$2R'); |
- sylk.add('C;Y${p4};X4;K=SUM(D4:D${p3})'); |
- sylk.add('F;P5;F\$2R'); |
- return sylk; |
+ req.open('GET', url, true); |
+ req.send(); |
} |
} |