From a67da36d7686c311746910c651ca89ffb504aea5 Mon Sep 17 00:00:00 2001 From: aarav18 Date: Sat, 5 Mar 2022 15:08:21 -0700 Subject: [PATCH] More table support --- src/main/java/frc4388/robot/Robot.java | 2 ++ .../java/frc4388/utility/DesmosClient.html | 8 +++++-- .../java/frc4388/utility/DesmosServer.java | 22 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/frc4388/robot/Robot.java b/src/main/java/frc4388/robot/Robot.java index 56ef6b5..ce92db7 100644 --- a/src/main/java/frc4388/robot/Robot.java +++ b/src/main/java/frc4388/robot/Robot.java @@ -38,6 +38,8 @@ public class Robot extends TimedRobot { desmosServer = new DesmosServer(8000); desmosServer.start(); DesmosServer.putInteger("Active", 1); + + DesmosServer.putTable("test", "x1", new double[] {1, 2}, "y1", new double[] {1, 2}); } /** diff --git a/src/main/java/frc4388/utility/DesmosClient.html b/src/main/java/frc4388/utility/DesmosClient.html index e84403b..b92bf98 100644 --- a/src/main/java/frc4388/utility/DesmosClient.html +++ b/src/main/java/frc4388/utility/DesmosClient.html @@ -49,8 +49,12 @@ break; case 'table': let cols = []; - for(let col of variable['value'].split('\t')) { - let latex = latexName(col[0]); + for(let col of variable['value'].split('\s')) { + col = col.split(','); + let latexStr = latexName(col[0]); + let valuesArr = col.slice(1, col.length); + + cols.push({ latex: latexStr, values: valuesArr }); } calculator.setExpression({ type: 'table', id: variable['name'], columns: cols}); diff --git a/src/main/java/frc4388/utility/DesmosServer.java b/src/main/java/frc4388/utility/DesmosServer.java index 27c3eb0..9b8921e 100644 --- a/src/main/java/frc4388/utility/DesmosServer.java +++ b/src/main/java/frc4388/utility/DesmosServer.java @@ -199,6 +199,28 @@ public class DesmosServer extends Thread { desmosVariables.put(name, new String[] {"array", Arrays.toString(arr).replace(" ", "")}); } + public static void putTable(String name, Object... table) { + // Check parameters + for(int i = 0; i < table.length; i += 2) + if(!(table[i] instanceof String)) { return; } + + for(int i = 1; i < table.length; i += 2) + if(!(table[i] instanceof double[])) { return; } + + String tableStr = ""; + + for(int i = 0; i < table.length; i += 2) { + tableStr += table[i] + ","; + String values = Arrays.toString((double[]) table[i+1]).replace(" ", ""); + tableStr += values.substring(1, values.length() - 1); + tableStr += " "; + } + + tableStr = tableStr.substring(0, tableStr.length()-1); // remove tab at the end + + desmosVariables.put(name, new String[] {"table", tableStr}); + } + // --------------------------------------------------------------------- public static int readInteger(String name) {