From 32fd0a5cad7a799137262ef6670e185be6b215c3 Mon Sep 17 00:00:00 2001 From: David Contreras Date: Mon, 22 Apr 2024 21:47:08 -0600 Subject: [PATCH 1/7] Change to multiple appends in results --- main.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/main.js b/main.js index acd17a9..fd9d63e 100644 --- a/main.js +++ b/main.js @@ -53,7 +53,7 @@ for (let ID of listOfSessions) { radioInput.id = 'tab' + ID; radioInput.checked = lastTab == ID ? true : false; tabsField.appendChild(radioInput); - + const label = document.createElement('label'); label.htmlFor = 'tab' + ID; label.id = 'tabL' + ID; @@ -69,7 +69,7 @@ for (let ID of listOfSessions) { if (sessionText && !sessionText.trim()) { localStorage.removeItem(thisSession) } - + sessionNames[ID] = setSessionName(ID); } @@ -115,8 +115,12 @@ const waitToSave = 1000; mathWorker.onmessage = function (oEvent) { const results = JSON.parse(oEvent.data) const tabToSave = tabIDs.value; - const out = results.outputs.map(formatOutput).join("\n") - outputs.innerHTML = out; + outputs.innerHTML = ""; + results.outputs.forEach(out => { + const div = document.createElement("div"); + div.innerHTML = formatOutput(out); + outputs.appendChild(div); + }); clearTimeout(timerSave); sessions[lastTab] = editor.state timerSave = setTimeout(saveSession, waitToSave, tabToSave) From ad04cfd87a2e4b75a6845263117f76c48d262c16 Mon Sep 17 00:00:00 2001 From: David Contreras Date: Sun, 28 Apr 2024 20:11:11 -0600 Subject: [PATCH 2/7] Initial plot tests --- ToDo.md | 17 ++++ index.html | 1 + main.js | 46 ++++++++--- package-lock.json | 22 ------ package.json | 1 - public/mathWorker.js | 183 ++++++++++++++++++++++++++++++++++--------- 6 files changed, 199 insertions(+), 71 deletions(-) diff --git a/ToDo.md b/ToDo.md index dbed04d..cb2d314 100644 --- a/ToDo.md +++ b/ToDo.md @@ -1,3 +1,20 @@ +Temp +==== + + +Fix formats for special cases. +- Errors +- Units +- Help +- Plot +- Matrix +- Sparse Matrix +- Etc. + +Make react plots + +plot(data,layout) + ToDo ==== - [ ] Details diff --git a/index.html b/index.html index e820626..c6cf14f 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,7 @@ + diff --git a/main.js b/main.js index fd9d63e..8083b6a 100644 --- a/main.js +++ b/main.js @@ -117,9 +117,40 @@ mathWorker.onmessage = function (oEvent) { const tabToSave = tabIDs.value; outputs.innerHTML = ""; results.outputs.forEach(out => { - const div = document.createElement("div"); - div.innerHTML = formatOutput(out); - outputs.appendChild(div); + + switch (out.type) { + case "math": + out.text.forEach(e => { + const pre = document.createElement("pre"); + if (e.visible) { + const div = document.createElement("div"); + const type = e.outputs.type; + const value = e.outputs.value; + switch (type) { + case "number": + div.textContent = value; + break; + case "html": + div.innerHTML = value; + break; + case "plot": + Plotly.newPlot(div, e.outputs.data, e.outputs.layout) + break; + case "object": + div.textContent = value; + break; + } + pre.appendChild(div); + } + outputs.appendChild(pre); + }); + break; + case "markdown": + const div = document.createElement("div"); + div.innerHTML = md.render(out.text); + outputs.appendChild(div); + break; + } }); clearTimeout(timerSave); sessions[lastTab] = editor.state @@ -196,12 +227,3 @@ function sendWorkToMathWorker(mathExpressoins) { mathWorker.postMessage(JSON.stringify(request)) } } - -function formatOutput(x) { - switch (x.type) { - case "math": - return x.text; - case "markdown": - return md.render(x.text); - } -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ba9197b..a1f5830 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,6 @@ "name": "engineering-solver", "version": "0.0.0", "dependencies": { - "alpinejs": "^3.13.5", "codemirror": "^6.0.1", "github-markdown-css": "^5.5.1", "katex": "^0.16.9", @@ -671,27 +670,6 @@ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, - "node_modules/@vue/reactivity": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", - "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", - "dependencies": { - "@vue/shared": "3.1.5" - } - }, - "node_modules/@vue/shared": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", - "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==" - }, - "node_modules/alpinejs": { - "version": "3.13.5", - "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.13.5.tgz", - "integrity": "sha512-1d2XeNGN+Zn7j4mUAKXtAgdc4/rLeadyTMWeJGXF5DzwawPBxwTiBhFFm6w/Ei8eJxUZeyNWWSD9zknfdz1kEw==", - "dependencies": { - "@vue/reactivity": "~3.1.1" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", diff --git a/package.json b/package.json index 6d81982..4ea41cb 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "vite": "^5.1.4" }, "dependencies": { - "alpinejs": "^3.13.5", "codemirror": "^6.0.1", "github-markdown-css": "^5.5.1", "katex": "^0.16.9", diff --git a/public/mathWorker.js b/public/mathWorker.js index 09352fd..acebc6b 100644 --- a/public/mathWorker.js +++ b/public/mathWorker.js @@ -6,6 +6,7 @@ importScripts( "molecularMass.js" ) const parser = math.parser() +const digits = 14 /** * Applies a given function to each element of an array or matrix. @@ -32,6 +33,11 @@ const functionsToVectorize = math.import( { props, HAprops, phase, MM, + plot: math.typed({ + 'Array, Object, Object': plot, + 'Array, Object': (data, layout) => plot(data, layout, {}), + 'Array': data => plot(data, {}, {}), + }), ...Object.fromEntries(functionsToVectorize.map(f => [f, mapped(math[f])])), log: math.typed({ 'Array | Matrix': x => math.map(x, x1 => math.log(x1, math.e)), @@ -69,33 +75,6 @@ onmessage = (oEvent) => { postMessage(JSON.stringify(response)); } -function math2str(x) { - return typeof x == "string" ? x : math.format(x, 14) -} - -function evalBlock(block) { - let mathResult - try { - mathResult = parser.evaluate(block) - } catch (error) { - return error.toString() - } - if (typeof mathResult != 'undefined' && mathResult) { - if (typeof mathResult === 'object') { - if (mathResult.entries && Array.isArray(mathResult.entries)) { - return mathResult.entries - .filter(x => typeof x !== 'undefined') - .map(x => math2str(x)).join("\n") - } - } - } - return math2str(mathResult) -} - -function evalBlocks(blocks) { - return blocks.map(block => evalBlock(block)) -} - function makeDoc(code) { const splitCode = code.split('\n'); const lineTypes = splitCode.map(line => line.startsWith('# ') ? 'md' : 'math'); @@ -130,17 +109,13 @@ function makeDoc(code) { function processOutput(content, type) { switch (type) { case "math": - const blocks = content.join('\n') - .split(/\n\s*\n/g) - .filter(x => x.trim().length > 0) - const results = evalBlocks(blocks) - const formatedResult = results - .filter(x => typeof x !== 'undefined') - .map( - result => result.length ? '
' + result + '
' : '').join('\n') - return { type: "math", text: formatedResult } + const expressions = getExpressions(content.join('\n')); + const results = processExpressions(expressions) + return { type: "math", text: results } + break; case "md": return { type: "markdown", text: content.join('\n') } + break; } } @@ -192,3 +167,139 @@ function getMathState() { physicalConstants } } + +/** + * Extracts parsable expressions from a multiline string. + * + * @param {string} str - The multiline string containing expressions. + * @returns {Array<{from: number, to: number, source: string}>} An array of objects, + * where each object represents a parsable expression and contains: + * - from: The starting line number of the expression within the original string. + * - to: The ending line number of the expression within the original string. + * - source: The actual string content of the expression. + */ +function getExpressions(str) { + const lines = str.split('\n'); + let nextLineToParse = 0; + const result = []; + + for (let lineID = 0; lineID < lines.length; lineID++) { + const linesToTest = lines.slice(nextLineToParse, lineID + 1).join('\n'); + if (canBeParsed(linesToTest)) { + if (!isEmptyString(linesToTest)) { + result.push({ from: nextLineToParse, to: lineID, source: linesToTest }); + } + // Start the next parsing attempt from the line after the successfully parsed expression. + nextLineToParse = lineID + 1; + } + } + // Handle any remaining lines that couldn't be parsed as expressions. + const linesToTest = lines.slice(nextLineToParse).join('\n'); + if (!isEmptyString(linesToTest)) { + result.push({ from: nextLineToParse, to: lines.length - 1, source: linesToTest }); + } + return result; +} + +/** + * Determines whether a given expression can be successfully parsed. + * + * @param {string} expression - The expression to parse. + * @returns {boolean} True if the expression can be parsed, false otherwise. + */ +function canBeParsed(expression) { + try { + math.parse(expression) + return true + } catch (error) { + return false + } +} + +/** + * Checks if a given string is empty or only contains whitespace characters. + * + * @param {string} str - The string to check. + * @returns {boolean} True if the string is empty or only contains whitespace, false otherwise. + */ +function isEmptyString(str) { + return str.trim() === "" +} + +/** + * Formats result depending on the type of result + * + * @param {number, string, Help, any} result - The result to format + * @returns {Object} The formatted result + */ +const formatResult = math.typed({ + 'number': result => ({ type: "number", value: math.format(result, { precision: digits }) }), + 'string': result => ({ type: 'string', value: result }), + 'Help': result => ({ type: "help", value: math.format(result) }), + 'Object': result => { + if (result.isPlot) { + return { type: "plot", ...result } + } else { + return ({ type: "object", value:math.format(result) }) + } + }, + 'any': math.typed.referTo( + 'number', + fnumber => result => ({ type: "any", value: fnumber(result).value }) + ) +}) + +/** + * Processes an array of expressions by evaluating them, formatting the results, + * and determining their visibility. + * + * @param {Array<{from: number, to: number, source: string}>} expressions - An array of objects representing expressions, + * where each object has `from`, `to`, and `source` properties. + * @returns {Array<{from: number, to: number, source: string, outputs: any, visible: boolean}>} An array of processed expressions, + * where each object has additional `outputs` and `visible` properties. + */ +function processExpressions(expressions) { + return expressions.map(expression => { + const result = calc(expression.source) + const outputs = formatResult(result) + // Determine visibility based on the result type: + // - Undefined results are hidden. + // - Results with an `isResultSet` property are hidden when empty. + // - All other results are visible. + const visible = result === undefined ? false : (result.isResultSet && result.entries.length === 0) ? false : true + return ({ + ...expression, + outputs, + visible + }) + }) +} + +/** + * Evaluates a given expression using a parser. + * + * @param {string} expression - The expression to evaluate. + * @returns {any} The result of the evaluation, or the error message if an error occurred. +*/ +function calc(expression) { + let result + let error + try { + result = parser.evaluate(expression) + } catch (error) { + error = error.toString() + } + return { result, error } +} + +/** + * Creates a plot object. + * + * @param {Array} data - The data to plot. + * @param {Object} layout - The layout of the plot. + * @param {Object} config - The configuration of the plot. + * @returns {Object} The plot object. + */ +function plot(data, layout, config) { + return { isPlot: true, data, layout, config } +} \ No newline at end of file From 913809f1731da8922b791296afaca9a686fa008a Mon Sep 17 00:00:00 2001 From: David Contreras Date: Wed, 1 May 2024 17:08:56 -0600 Subject: [PATCH 3/7] Working plots --- ToDo.md | 23 +++-------- examples.js | 10 ++++- index.html | 5 +++ main.js | 17 ++++----- public/getWorker.js | 2 +- public/mathWorker.js | 91 +++++++++++++++++++++----------------------- 6 files changed, 71 insertions(+), 77 deletions(-) diff --git a/ToDo.md b/ToDo.md index cb2d314..ae769fd 100644 --- a/ToDo.md +++ b/ToDo.md @@ -1,19 +1,8 @@ Temp ==== - -Fix formats for special cases. -- Errors -- Units -- Help -- Plot -- Matrix -- Sparse Matrix -- Etc. - -Make react plots - -plot(data,layout) +Fix error. +Format help ToDo ==== @@ -31,11 +20,11 @@ ToDo - [ ] Download text # Plots -- [ ] Import plotly -- [ ] Return objects - - [ ] plot types +- [x] Import plotly +- [x] Return objects + - [x] plot types - [ ] doc types - - [ ] result type + - [x] result type ## Extra - [ ] Match outputs diff --git a/examples.js b/examples.js index f196d5e..0158d7f 100644 --- a/examples.js +++ b/examples.js @@ -467,7 +467,15 @@ print('x has two solutions $0 and $1', x, 4) proof = a x.^2 + b x + c; print('Using x = $1 we get $2', [x[1], proof[1]], 4) -print('Using x = $1 we get $2', [x[2], proof[2]], 4)` +print('Using x = $1 we get $2', [x[2], proof[2]], 4)`, +simplePlot:`# Plot + +x=0:pi/8: 4*pi; + +plot([ + {x:x, y:sin(x), name:"sin"}, + {x:x, y:atan(x), name:"atan"} +])` } // To get a new examples use editor.state.doc.toString().replace(/\r?\n/g,'\n').split('\n') diff --git a/index.html b/index.html index c6cf14f..707ae17 100644 --- a/index.html +++ b/index.html @@ -31,6 +31,11 @@ + + + + + diff --git a/main.js b/main.js index 8083b6a..8f817e3 100644 --- a/main.js +++ b/main.js @@ -124,25 +124,22 @@ mathWorker.onmessage = function (oEvent) { const pre = document.createElement("pre"); if (e.visible) { const div = document.createElement("div"); - const type = e.outputs.type; - const value = e.outputs.value; + const type = e.type; + const value = e.result; switch (type) { - case "number": + case "any": div.textContent = value; break; - case "html": - div.innerHTML = value; + case "error": + div.innerHTML = 'myError:'+ value; break; case "plot": - Plotly.newPlot(div, e.outputs.data, e.outputs.layout) - break; - case "object": - div.textContent = value; + Plotly.newPlot(div, e.result.data, e.result.layout, e.result.config) break; } pre.appendChild(div); + outputs.appendChild(pre); } - outputs.appendChild(pre); }); break; case "markdown": diff --git a/public/getWorker.js b/public/getWorker.js index 49dbce8..4a5ed4f 100644 --- a/public/getWorker.js +++ b/public/getWorker.js @@ -1 +1 @@ -const mathWorker = new Worker("mathWorker.js"); \ No newline at end of file +const mathWorker = new Worker("mathWorker.js", {type: "classic"}); \ No newline at end of file diff --git a/public/mathWorker.js b/public/mathWorker.js index acebc6b..4346ed8 100644 --- a/public/mathWorker.js +++ b/public/mathWorker.js @@ -1,10 +1,12 @@ + importScripts( "https://cdnjs.cloudflare.com/ajax/libs/mathjs/12.4.1/math.js", "coolprop.js", "fluidProperties.js", "molecularMass.js" ) + const parser = math.parser() const digits = 14 @@ -106,19 +108,6 @@ function makeDoc(code) { let output = []; - function processOutput(content, type) { - switch (type) { - case "math": - const expressions = getExpressions(content.join('\n')); - const results = processExpressions(expressions) - return { type: "math", text: results } - break; - case "md": - return { type: "markdown", text: content.join('\n') } - break; - } - } - cleanCells.forEach( cell => output.push(processOutput(cell.source, cell.cell_type)) ) @@ -168,6 +157,7 @@ function getMathState() { } } + /** * Extracts parsable expressions from a multiline string. * @@ -226,28 +216,9 @@ function isEmptyString(str) { return str.trim() === "" } -/** - * Formats result depending on the type of result - * - * @param {number, string, Help, any} result - The result to format - * @returns {Object} The formatted result - */ -const formatResult = math.typed({ - 'number': result => ({ type: "number", value: math.format(result, { precision: digits }) }), - 'string': result => ({ type: 'string', value: result }), - 'Help': result => ({ type: "help", value: math.format(result) }), - 'Object': result => { - if (result.isPlot) { - return { type: "plot", ...result } - } else { - return ({ type: "object", value:math.format(result) }) - } - }, - 'any': math.typed.referTo( - 'number', - fnumber => result => ({ type: "any", value: fnumber(result).value }) - ) -}) +function formatResult(result) { + return math.format(result) +} /** * Processes an array of expressions by evaluating them, formatting the results, @@ -260,21 +231,46 @@ const formatResult = math.typed({ */ function processExpressions(expressions) { return expressions.map(expression => { + // returns an object with isError and result properties + const visible = expression.source.trim().endsWith(';') ? false : true const result = calc(expression.source) - const outputs = formatResult(result) - // Determine visibility based on the result type: - // - Undefined results are hidden. - // - Results with an `isResultSet` property are hidden when empty. - // - All other results are visible. - const visible = result === undefined ? false : (result.isResultSet && result.entries.length === 0) ? false : true + let outputs + if (result.isError) { + outputs = { type: "error", result: result.result } + } if (result.result.isPlot) { + const { data, layout, config } = result.result + + outputs = { type: "plot", result: { data: formatObject(data), layout: formatObject(layout), config: formatObject(config) } } + } else { + outputs = { type: "any", result: formatResult(result.result) } + } + return ({ ...expression, - outputs, + type: outputs.type, + result: outputs.result, visible }) }) } +function formatObject (obj) { + return eval(math.format(obj).toString()) +} + +function processOutput(content, type) { + switch (type) { + case "math": + const expressions = getExpressions(content.join('\n')); + const results = processExpressions(expressions) + return { type: "math", text: results } + break; + case "md": + return { type: "markdown", text: content.join('\n') } + break; + } +} + /** * Evaluates a given expression using a parser. * @@ -282,14 +278,12 @@ function processExpressions(expressions) { * @returns {any} The result of the evaluation, or the error message if an error occurred. */ function calc(expression) { - let result - let error try { - result = parser.evaluate(expression) + const result = parser.evaluate(expression) + return { isError: false, result: result } } catch (error) { - error = error.toString() + return { isError: true, result: error.toString() } } - return { result, error } } /** @@ -302,4 +296,5 @@ function calc(expression) { */ function plot(data, layout, config) { return { isPlot: true, data, layout, config } -} \ No newline at end of file +} + From e35a8ec6d0901b317ceada0845f3e0ee372742d2 Mon Sep 17 00:00:00 2001 From: David Contreras Date: Wed, 1 May 2024 21:46:02 -0600 Subject: [PATCH 4/7] Added plot examples --- examples.js | 40 ++++++++++++++++++++++++++++++++++++++-- index.html | 2 +- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/examples.js b/examples.js index 0158d7f..a2d51ff 100644 --- a/examples.js +++ b/examples.js @@ -468,14 +468,50 @@ print('x has two solutions $0 and $1', x, 4) proof = a x.^2 + b x + c; print('Using x = $1 we get $2', [x[1], proof[1]], 4) print('Using x = $1 we get $2', [x[2], proof[2]], 4)`, -simplePlot:`# Plot +simplePlot:String.raw`# Plot x=0:pi/8: 4*pi; plot([ {x:x, y:sin(x), name:"sin"}, {x:x, y:atan(x), name:"atan"} -])` +])`, +plot3D:String.raw`# 3d plot + +data = [ + { + type: "isosurface", + x: [0,0,0,0,1,1,1,1], + y: [0,1,0,1,0,1,0,1], + z: [1,1,0,0,1,1,0,0], + value: 1:8, + isomin: 2, + isomax: 6, + colorscale: "Reds" + } +] + +plot(data)`, +statPlot:String.raw`# Statistical plots + +y0 = random([50]); +y1 = random([50])+1; + +trace1 = { + y: y0, + type: 'box', + name:'y0' +}; + +trace2 = { + y: y1, + type: 'box', + name: 'y1' +}; + +data = [trace1, trace2]; + +plot(data)` } // To get a new examples use editor.state.doc.toString().replace(/\r?\n/g,'\n').split('\n') diff --git a/index.html b/index.html index 707ae17..c918f3a 100644 --- a/index.html +++ b/index.html @@ -33,7 +33,7 @@ - + From 230ff8010b1650fa6f665d5c1e86ade7834ba1df Mon Sep 17 00:00:00 2001 From: David Contreras Date: Sat, 4 May 2024 12:25:23 -0600 Subject: [PATCH 5/7] Format errors and fix not visible --- ToDo.md | 13 ++++++------- main.js | 9 +++++++-- public/mathWorker.js | 9 +++++---- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/ToDo.md b/ToDo.md index ae769fd..32569ac 100644 --- a/ToDo.md +++ b/ToDo.md @@ -1,9 +1,3 @@ -Temp -==== - -Fix error. -Format help - ToDo ==== - [ ] Details @@ -18,6 +12,7 @@ ToDo - [ ] Variable finder - [ ] Drag and Drop - [ ] Download text +- [ ] Format help # Plots - [x] Import plotly @@ -25,6 +20,10 @@ ToDo - [x] plot types - [ ] doc types - [x] result type +- [ ] Document plots +- [ ] Add plotly +- [ ] More tests +- [ ] Format plot output ## Extra - [ ] Match outputs @@ -38,6 +37,6 @@ ToDo - [ ] Eval expressions vs blocks ## Decisions -- [ ] New nomeclature like pyodide +- [ ] New nomeclature like iodide - [ ] File names - [ ] Dropdown or tabs \ No newline at end of file diff --git a/main.js b/main.js index 8f817e3..6bd09e2 100644 --- a/main.js +++ b/main.js @@ -131,10 +131,15 @@ mathWorker.onmessage = function (oEvent) { div.textContent = value; break; case "error": - div.innerHTML = 'myError:'+ value; + div.style.color = "red"; + div.innerHTML = value; break; case "plot": - Plotly.newPlot(div, e.result.data, e.result.layout, e.result.config) + try { + Plotly.newPlot(div, e.result.data, e.result.layout, e.result.config) + } catch (error) { + div.innerHTML = 'myError:'+ error.toString(); + } break; } pre.appendChild(div); diff --git a/public/mathWorker.js b/public/mathWorker.js index 4346ed8..574247b 100644 --- a/public/mathWorker.js +++ b/public/mathWorker.js @@ -232,14 +232,15 @@ function formatResult(result) { function processExpressions(expressions) { return expressions.map(expression => { // returns an object with isError and result properties - const visible = expression.source.trim().endsWith(';') ? false : true const result = calc(expression.source) + const visible = expression.source.trim().endsWith(';') ? false : + result.result === undefined ? false : true let outputs if (result.isError) { outputs = { type: "error", result: result.result } - } if (result.result.isPlot) { + } else if (result.result && result.result.isPlot) { const { data, layout, config } = result.result - + outputs = { type: "plot", result: { data: formatObject(data), layout: formatObject(layout), config: formatObject(config) } } } else { outputs = { type: "any", result: formatResult(result.result) } @@ -254,7 +255,7 @@ function processExpressions(expressions) { }) } -function formatObject (obj) { +function formatObject(obj) { return eval(math.format(obj).toString()) } From 7bac861682edfcef733dff3027f81132e28fba1f Mon Sep 17 00:00:00 2001 From: David Contreras Date: Sat, 4 May 2024 12:55:32 -0600 Subject: [PATCH 6/7] renamed variable --- public/mathWorker.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/public/mathWorker.js b/public/mathWorker.js index 574247b..3a8615d 100644 --- a/public/mathWorker.js +++ b/public/mathWorker.js @@ -234,16 +234,16 @@ function processExpressions(expressions) { // returns an object with isError and result properties const result = calc(expression.source) const visible = expression.source.trim().endsWith(';') ? false : - result.result === undefined ? false : true + result.value === undefined ? false : true let outputs if (result.isError) { - outputs = { type: "error", result: result.result } - } else if (result.result && result.result.isPlot) { - const { data, layout, config } = result.result + outputs = { type: "error", result: result.value } + } else if (result.value && result.value.isPlot) { + const { data, layout, config } = result.value outputs = { type: "plot", result: { data: formatObject(data), layout: formatObject(layout), config: formatObject(config) } } } else { - outputs = { type: "any", result: formatResult(result.result) } + outputs = { type: "any", result: formatResult(result.value) } } return ({ @@ -281,9 +281,9 @@ function processOutput(content, type) { function calc(expression) { try { const result = parser.evaluate(expression) - return { isError: false, result: result } + return { isError: false, value: result } } catch (error) { - return { isError: true, result: error.toString() } + return { isError: true, value: error.toString() } } } From a8e559dace2f6fb54fd8554875d5a3626d1113de Mon Sep 17 00:00:00 2001 From: David Contreras Date: Sat, 4 May 2024 17:11:46 -0600 Subject: [PATCH 7/7] Added documentation for plots --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++- ToDo.md | 30 ++++++++++++---------- examples.js | 32 ++++++++++++++++++++++- img/helloWorldPlot.png | Bin 0 -> 19026 bytes img/lorenz.png | Bin 0 -> 72283 bytes img/twoTracesPlot.png | Bin 0 -> 26437 bytes index.html | 1 + 7 files changed, 104 insertions(+), 16 deletions(-) create mode 100644 img/helloWorldPlot.png create mode 100644 img/lorenz.png create mode 100644 img/twoTracesPlot.png diff --git a/README.md b/README.md index 5d32549..616385e 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ acceleration to yard/s^2 You will notice you get instant results as you are typing your expressions. -# Getting started +# Install and develop locally Clone this repository and run the following command to install dependencies. ``` @@ -149,3 +149,58 @@ CodeMirror is used for editing the mathjs code in the browser and includes: - Other key bindings - Find and replace Ctrl + F - The rest can be found in [CodeMirror: Reference Manual](https://codemirror.net/docs/ref/) + +## [Plotly](https://plotly.com/javascript/) + +Is used to do plots. Uses the main interface of plotly without many changes, but running first through mathjs simplifications. + +### Plot hello world [example](https://plotly.com/javascript/getting-started/) +```jl +plot([{x:1:5, y:2.^(1:5)}]) +``` +![HelloWorldPlot](img/helloWorldPlot.png) + +### Plot functions + +```jl +x = 0: pi/8: 2 pi; + +plot([ + {x:x, y:sin(x), name:"sin"}, + {x:x, y:atan(x), name:"atan"} +]) +``` +![Two traces plot](img/twoTracesPlot.png) + +### Plot advanced functions + +```jl +sigma = 10; +beta = 2.7; +rho = 28; + +lorenz(t, u) = + [ + sigma * (u[2] - u[1]), + u[1] * (rho - u[3]) - u[2], + u[1] * u[2] - beta * u[3] + ]; + +sol = solveODE(lorenz, [0, 100], [1, 1, 1]); + +plot( + [{ + x: flatten(sol.y[:,1]), + y: flatten(sol.y[:,2]), + z: flatten(sol.y[:,3]), + type: "scatter3d", + mode: "lines" +}]) +``` +![Lorenz Plot](img/lorenz.png) + +# Warnings + +- All calculations are done locally +- There is no server saving your calculations +- Don't run code that you don't trust \ No newline at end of file diff --git a/ToDo.md b/ToDo.md index 32569ac..ad5afe3 100644 --- a/ToDo.md +++ b/ToDo.md @@ -1,18 +1,14 @@ + ToDo ==== +- [ ] Match inputs and outputs +- [ ] Change worker to modules - [ ] Details - [x] Cleanup - [x] JS docs - [ ] Rename variables - [ ] Sessions to Editor States - - [x] 0 index Sessions - - [x] Array fill null for initial EditorStates -- [ ] Custom help -- [ ] Function finder -- [ ] Variable finder -- [ ] Drag and Drop -- [ ] Download text -- [ ] Format help + # Plots - [x] Import plotly @@ -21,22 +17,28 @@ ToDo - [ ] doc types - [x] result type - [ ] Document plots -- [ ] Add plotly -- [ ] More tests -- [ ] Format plot output + - [ ] Add plotly + - [x] More tests + - [ ] Format plot output ## Extra - [ ] Match outputs - [ ] Include dates (to work with multiple tabs) - [ ] Variables in scope - [ ] Help files +- [x] Eval expressions vs blocks +- [ ] Custom help +- [ ] Function finder +- [ ] Variable finder +- [ ] Drag and Drop +- [ ] Download text +- [ ] Format help + +## Decisions - [ ] GUI with Alpinejs - [ ] Tabs - [ ] Examples - [ ] IO -- [ ] Eval expressions vs blocks - -## Decisions - [ ] New nomeclature like iodide - [ ] File names - [ ] Dropdown or tabs \ No newline at end of file diff --git a/examples.js b/examples.js index a2d51ff..9d293d0 100644 --- a/examples.js +++ b/examples.js @@ -511,7 +511,37 @@ trace2 = { data = [trace1, trace2]; -plot(data)` +plot(data)`, +lorenz:String.raw`# # Lorenz attractor + +# Define the functions +# $$ +# {\displaystyle {\begin{aligned}{\frac {\mathrm {d} x}{\mathrm {d} t}}&=\sigma (y-x),\\[6pt]{\frac {\mathrm {d} y}{\mathrm {d} t}}&=x(\rho -z)-y,\\[6pt]{\frac {\mathrm {d} z}{\mathrm {d} t}}&=xy-\beta z.\end{aligned}}} +# $$ + +#| u is [x, y, z] +sigma = 10; +beta = 2.7; +rho = 28; + +lorenz(t, u) = + [ + sigma * (u[2] - u[1]), + u[1] * (rho - u[3]) - u[2], + u[1] * u[2] - beta * u[3] + ]; + +sol = solveODE(lorenz, [0, 100], [1, 1, 1]); + +plot( + [{ + x: flatten(sol.y[:,1]), + y: flatten(sol.y[:,2]), + z: flatten(sol.y[:,3]), + type: "scatter3d", + mode: "lines" +}]) +` } // To get a new examples use editor.state.doc.toString().replace(/\r?\n/g,'\n').split('\n') diff --git a/img/helloWorldPlot.png b/img/helloWorldPlot.png new file mode 100644 index 0000000000000000000000000000000000000000..1eff499a87534da43e1b4acfccf143faf718315f GIT binary patch literal 19026 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 E0HI?;3IG5A literal 0 HcmV?d00001 diff --git a/img/lorenz.png b/img/lorenz.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef71483d6862fddcdfd67ba4ec683b406e592b4 GIT binary patch literal 72283 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

#d6lXp4;-*IBD2^i` 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 PU)bDL(^Ab>w)FoeAI-Zb literal 0 HcmV?d00001 diff --git a/index.html b/index.html index c918f3a..6ca3115 100644 --- a/index.html +++ b/index.html @@ -35,6 +35,7 @@ +