@teachinglab/omd 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +257 -251
- package/README.old.md +137 -137
- package/canvas/core/canvasConfig.js +202 -202
- package/canvas/drawing/segment.js +167 -167
- package/canvas/drawing/stroke.js +385 -385
- package/canvas/events/eventManager.js +444 -444
- package/canvas/events/pointerEventHandler.js +262 -262
- package/canvas/index.js +48 -48
- package/canvas/tools/PointerTool.js +71 -71
- package/canvas/tools/tool.js +222 -222
- package/canvas/utils/boundingBox.js +377 -377
- package/canvas/utils/mathUtils.js +258 -258
- package/docs/api/configuration-options.md +198 -198
- package/docs/api/eventManager.md +82 -82
- package/docs/api/focusFrameManager.md +144 -144
- package/docs/api/index.md +105 -105
- package/docs/api/main.md +62 -62
- package/docs/api/omdBinaryExpressionNode.md +86 -86
- package/docs/api/omdCanvas.md +83 -83
- package/docs/api/omdConfigManager.md +112 -112
- package/docs/api/omdConstantNode.md +52 -52
- package/docs/api/omdDisplay.md +87 -87
- package/docs/api/omdEquationNode.md +174 -174
- package/docs/api/omdEquationSequenceNode.md +258 -258
- package/docs/api/omdEquationStack.md +192 -192
- package/docs/api/omdFunctionNode.md +82 -82
- package/docs/api/omdGroupNode.md +78 -78
- package/docs/api/omdHelpers.md +87 -87
- package/docs/api/omdLeafNode.md +85 -85
- package/docs/api/omdNode.md +201 -201
- package/docs/api/omdOperationDisplayNode.md +117 -117
- package/docs/api/omdOperatorNode.md +91 -91
- package/docs/api/omdParenthesisNode.md +133 -133
- package/docs/api/omdPopup.md +191 -191
- package/docs/api/omdPowerNode.md +131 -131
- package/docs/api/omdRationalNode.md +144 -144
- package/docs/api/omdSequenceNode.md +128 -128
- package/docs/api/omdSimplification.md +78 -78
- package/docs/api/omdSqrtNode.md +144 -144
- package/docs/api/omdStepVisualizer.md +146 -146
- package/docs/api/omdStepVisualizerHighlighting.md +65 -65
- package/docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
- package/docs/api/omdStepVisualizerLayout.md +70 -70
- package/docs/api/omdStepVisualizerNodeUtils.md +140 -140
- package/docs/api/omdStepVisualizerTextBoxes.md +76 -76
- package/docs/api/omdToolbar.md +130 -130
- package/docs/api/omdTranscriptionService.md +95 -95
- package/docs/api/omdTreeDiff.md +169 -169
- package/docs/api/omdUnaryExpressionNode.md +137 -137
- package/docs/api/omdUtilities.md +82 -82
- package/docs/api/omdVariableNode.md +123 -123
- package/docs/api/selectTool.md +74 -74
- package/docs/api/simplificationEngine.md +97 -97
- package/docs/api/simplificationRules.md +76 -76
- package/docs/api/simplificationUtils.md +64 -64
- package/docs/api/transcribe.md +43 -43
- package/docs/api-reference.md +85 -85
- package/docs/index.html +453 -453
- package/docs/index.md +38 -38
- package/docs/omd-objects.md +258 -258
- package/index.js +79 -79
- package/jsvg/index.js +3 -0
- package/jsvg/jsvg.js +898 -898
- package/jsvg/jsvgComponents.js +357 -358
- package/npm-docs/DOCUMENTATION_SUMMARY.md +220 -220
- package/npm-docs/README.md +251 -251
- package/npm-docs/api/api-reference.md +85 -85
- package/npm-docs/api/configuration-options.md +198 -198
- package/npm-docs/api/eventManager.md +82 -82
- package/npm-docs/api/expression-nodes.md +561 -561
- package/npm-docs/api/focusFrameManager.md +144 -144
- package/npm-docs/api/index.md +105 -105
- package/npm-docs/api/main.md +62 -62
- package/npm-docs/api/omdBinaryExpressionNode.md +86 -86
- package/npm-docs/api/omdCanvas.md +83 -83
- package/npm-docs/api/omdConfigManager.md +112 -112
- package/npm-docs/api/omdConstantNode.md +52 -52
- package/npm-docs/api/omdDisplay.md +87 -87
- package/npm-docs/api/omdEquationNode.md +174 -174
- package/npm-docs/api/omdEquationSequenceNode.md +258 -258
- package/npm-docs/api/omdEquationStack.md +192 -192
- package/npm-docs/api/omdFunctionNode.md +82 -82
- package/npm-docs/api/omdGroupNode.md +78 -78
- package/npm-docs/api/omdHelpers.md +87 -87
- package/npm-docs/api/omdLeafNode.md +85 -85
- package/npm-docs/api/omdNode.md +201 -201
- package/npm-docs/api/omdOperationDisplayNode.md +117 -117
- package/npm-docs/api/omdOperatorNode.md +91 -91
- package/npm-docs/api/omdParenthesisNode.md +133 -133
- package/npm-docs/api/omdPopup.md +191 -191
- package/npm-docs/api/omdPowerNode.md +131 -131
- package/npm-docs/api/omdRationalNode.md +144 -144
- package/npm-docs/api/omdSequenceNode.md +128 -128
- package/npm-docs/api/omdSimplification.md +78 -78
- package/npm-docs/api/omdSqrtNode.md +144 -144
- package/npm-docs/api/omdStepVisualizer.md +146 -146
- package/npm-docs/api/omdStepVisualizerHighlighting.md +65 -65
- package/npm-docs/api/omdStepVisualizerInteractiveSteps.md +108 -108
- package/npm-docs/api/omdStepVisualizerLayout.md +70 -70
- package/npm-docs/api/omdStepVisualizerNodeUtils.md +140 -140
- package/npm-docs/api/omdStepVisualizerTextBoxes.md +76 -76
- package/npm-docs/api/omdToolbar.md +130 -130
- package/npm-docs/api/omdTranscriptionService.md +95 -95
- package/npm-docs/api/omdTreeDiff.md +169 -169
- package/npm-docs/api/omdUnaryExpressionNode.md +137 -137
- package/npm-docs/api/omdUtilities.md +82 -82
- package/npm-docs/api/omdVariableNode.md +123 -123
- package/npm-docs/api/selectTool.md +74 -74
- package/npm-docs/api/simplificationEngine.md +97 -97
- package/npm-docs/api/simplificationRules.md +76 -76
- package/npm-docs/api/simplificationUtils.md +64 -64
- package/npm-docs/api/transcribe.md +43 -43
- package/npm-docs/guides/equations.md +854 -854
- package/npm-docs/guides/factory-functions.md +354 -354
- package/npm-docs/guides/getting-started.md +318 -318
- package/npm-docs/guides/quick-examples.md +525 -525
- package/npm-docs/guides/visualizations.md +682 -682
- package/npm-docs/index.html +12 -0
- package/npm-docs/json-schemas.md +826 -826
- package/omd/config/omdConfigManager.js +279 -267
- package/omd/core/index.js +158 -158
- package/omd/core/omdEquationStack.js +546 -546
- package/omd/core/omdUtilities.js +113 -113
- package/omd/display/omdDisplay.js +969 -962
- package/omd/display/omdToolbar.js +501 -501
- package/omd/nodes/omdBinaryExpressionNode.js +459 -459
- package/omd/nodes/omdConstantNode.js +141 -141
- package/omd/nodes/omdEquationNode.js +1327 -1327
- package/omd/nodes/omdFunctionNode.js +351 -351
- package/omd/nodes/omdGroupNode.js +67 -67
- package/omd/nodes/omdLeafNode.js +76 -76
- package/omd/nodes/omdNode.js +556 -556
- package/omd/nodes/omdOperationDisplayNode.js +321 -321
- package/omd/nodes/omdOperatorNode.js +108 -108
- package/omd/nodes/omdParenthesisNode.js +292 -292
- package/omd/nodes/omdPowerNode.js +235 -235
- package/omd/nodes/omdRationalNode.js +295 -295
- package/omd/nodes/omdSqrtNode.js +307 -307
- package/omd/nodes/omdUnaryExpressionNode.js +227 -227
- package/omd/nodes/omdVariableNode.js +122 -122
- package/omd/simplification/omdSimplification.js +140 -140
- package/omd/simplification/omdSimplificationEngine.js +887 -887
- package/omd/simplification/package.json +5 -5
- package/omd/simplification/rules/binaryRules.js +1037 -1037
- package/omd/simplification/rules/functionRules.js +111 -111
- package/omd/simplification/rules/index.js +48 -48
- package/omd/simplification/rules/parenthesisRules.js +19 -19
- package/omd/simplification/rules/powerRules.js +143 -143
- package/omd/simplification/rules/rationalRules.js +725 -725
- package/omd/simplification/rules/sqrtRules.js +48 -48
- package/omd/simplification/rules/unaryRules.js +37 -37
- package/omd/simplification/simplificationRules.js +31 -31
- package/omd/simplification/simplificationUtils.js +1055 -1055
- package/omd/step-visualizer/omdStepVisualizer.js +947 -947
- package/omd/step-visualizer/omdStepVisualizerHighlighting.js +246 -246
- package/omd/step-visualizer/omdStepVisualizerLayout.js +892 -892
- package/omd/step-visualizer/omdStepVisualizerTextBoxes.js +200 -200
- package/omd/utils/aiNextEquationStep.js +106 -106
- package/omd/utils/omdNodeOverlay.js +638 -638
- package/omd/utils/omdPopup.js +1203 -1203
- package/omd/utils/omdStepVisualizerInteractiveSteps.js +684 -684
- package/omd/utils/omdStepVisualizerNodeUtils.js +267 -267
- package/omd/utils/omdTranscriptionService.js +123 -123
- package/omd/utils/omdTreeDiff.js +733 -733
- package/package.json +59 -57
- package/readme.html +184 -120
- package/src/index.js +74 -74
- package/src/json-schemas.md +576 -576
- package/src/omd-json-samples.js +147 -147
- package/src/omdApp.js +391 -391
- package/src/omdAppCanvas.js +335 -335
- package/src/omdBalanceHanger.js +199 -199
- package/src/omdColor.js +13 -13
- package/src/omdCoordinatePlane.js +541 -541
- package/src/omdExpression.js +115 -115
- package/src/omdFactory.js +150 -150
- package/src/omdFunction.js +114 -114
- package/src/omdMetaExpression.js +290 -290
- package/src/omdNaturalExpression.js +563 -563
- package/src/omdNode.js +383 -383
- package/src/omdNumber.js +52 -52
- package/src/omdNumberLine.js +114 -112
- package/src/omdNumberTile.js +118 -118
- package/src/omdOperator.js +72 -72
- package/src/omdPowerExpression.js +91 -91
- package/src/omdProblem.js +259 -259
- package/src/omdRatioChart.js +251 -251
- package/src/omdRationalExpression.js +114 -114
- package/src/omdSampleData.js +215 -215
- package/src/omdShapes.js +512 -512
- package/src/omdSpinner.js +151 -151
- package/src/omdString.js +49 -49
- package/src/omdTable.js +498 -498
- package/src/omdTapeDiagram.js +244 -244
- package/src/omdTerm.js +91 -91
- package/src/omdTileEquation.js +349 -349
- package/src/omdUtils.js +84 -84
- package/src/omdVariable.js +51 -51
package/src/omdUtils.js
CHANGED
|
@@ -1,84 +1,84 @@
|
|
|
1
|
-
// Small parsers to convert simple equation/expression strings into OMD JSON
|
|
2
|
-
|
|
3
|
-
// Parse an expression like "3x+4-2y" into a termsAndOpers array:
|
|
4
|
-
// ['3x', '+', '4', '-', '2y'] -> [{omdType:'term', coefficient:3, variable:'x' }, {omdType:'operator', operator:'+'}, ...]
|
|
5
|
-
export function parseExpressionString(str) {
|
|
6
|
-
const cleaned = String(str || '').replace(/\s+/g, '');
|
|
7
|
-
if (!cleaned) return null;
|
|
8
|
-
|
|
9
|
-
// Tokenize numbers, variables, operators, and superscripts
|
|
10
|
-
// Token regex covers +/- as signs attached to numbers/vars, or standalone operators
|
|
11
|
-
const tokenRe = /([+-]?\d*\.?\d+[a-zA-Z]*)|([+-]?[a-zA-Z]+\^?\d*)|([+\-*/=×÷])/g;
|
|
12
|
-
const matches = cleaned.match(tokenRe) || [];
|
|
13
|
-
if (matches.length === 0) return null;
|
|
14
|
-
|
|
15
|
-
const out = [];
|
|
16
|
-
for (let tok of matches) {
|
|
17
|
-
// operator-only tokens
|
|
18
|
-
if (/^[+\-*/=×÷]$/.test(tok)) {
|
|
19
|
-
out.push({ omdType: 'operator', operator: tok.replace('*', '×') });
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
// term or number/variable
|
|
23
|
-
const m = tok.match(/^([+-]?)(\d*\.?\d*)([a-zA-Z]?)(?:\^(\d+))?$/);
|
|
24
|
-
if (m) {
|
|
25
|
-
const sign = m[1] === '-' ? -1 : 1;
|
|
26
|
-
const coefRaw = m[2];
|
|
27
|
-
const varChar = m[3] || '';
|
|
28
|
-
const exp = m[4] ? Number(m[4]) : 1;
|
|
29
|
-
let coef = 1;
|
|
30
|
-
if (coefRaw && coefRaw.length > 0) coef = Number(coefRaw);
|
|
31
|
-
if (!varChar && coefRaw) {
|
|
32
|
-
// pure number
|
|
33
|
-
out.push({ omdType: 'number', value: sign * coef });
|
|
34
|
-
} else {
|
|
35
|
-
out.push({ omdType: 'term', coefficient: sign * coef, variable: varChar, exponent: exp });
|
|
36
|
-
}
|
|
37
|
-
} else {
|
|
38
|
-
// fallback to string token
|
|
39
|
-
out.push({ omdType: 'string', name: tok });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// If first token is an operator like '+' or '-', and followed by a term/number, fold it
|
|
44
|
-
const folded = [];
|
|
45
|
-
for (let i = 0; i < out.length; i++) {
|
|
46
|
-
const t = out[i];
|
|
47
|
-
if (t.omdType === 'operator' && (t.operator === '+' || t.operator === '-')) {
|
|
48
|
-
// If it's a leading sign attached to next term, merge
|
|
49
|
-
const next = out[i+1];
|
|
50
|
-
if (next && (next.omdType === 'term' || next.omdType === 'number')) {
|
|
51
|
-
if (next.omdType === 'number') {
|
|
52
|
-
next.value = (t.operator === '-') ? -next.value : next.value;
|
|
53
|
-
} else if (next.omdType === 'term') {
|
|
54
|
-
next.coefficient = (t.operator === '-') ? -next.coefficient : next.coefficient;
|
|
55
|
-
}
|
|
56
|
-
i++; // skip next because we've merged
|
|
57
|
-
folded.push(next);
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
folded.push(t);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Interleave operators where missing: if folded array alternates term/number and operator
|
|
65
|
-
const result = [];
|
|
66
|
-
for (let i = 0; i < folded.length; i++) {
|
|
67
|
-
result.push(folded[i]);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return { termsAndOpers: result };
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Parse an equation like "3x+4=2x+1" into left/right expression JSON
|
|
74
|
-
export function parseEquationString(str) {
|
|
75
|
-
const s = String(str || '');
|
|
76
|
-
const parts = s.split('=');
|
|
77
|
-
if (parts.length !== 2) return null;
|
|
78
|
-
const left = parts[0].trim();
|
|
79
|
-
const right = parts[1].trim();
|
|
80
|
-
const leftJson = parseExpressionString(left);
|
|
81
|
-
const rightJson = parseExpressionString(right);
|
|
82
|
-
if (!leftJson || !rightJson) return null;
|
|
83
|
-
return { leftExpression: leftJson, rightExpression: rightJson };
|
|
84
|
-
}
|
|
1
|
+
// Small parsers to convert simple equation/expression strings into OMD JSON
|
|
2
|
+
|
|
3
|
+
// Parse an expression like "3x+4-2y" into a termsAndOpers array:
|
|
4
|
+
// ['3x', '+', '4', '-', '2y'] -> [{omdType:'term', coefficient:3, variable:'x' }, {omdType:'operator', operator:'+'}, ...]
|
|
5
|
+
export function parseExpressionString(str) {
|
|
6
|
+
const cleaned = String(str || '').replace(/\s+/g, '');
|
|
7
|
+
if (!cleaned) return null;
|
|
8
|
+
|
|
9
|
+
// Tokenize numbers, variables, operators, and superscripts
|
|
10
|
+
// Token regex covers +/- as signs attached to numbers/vars, or standalone operators
|
|
11
|
+
const tokenRe = /([+-]?\d*\.?\d+[a-zA-Z]*)|([+-]?[a-zA-Z]+\^?\d*)|([+\-*/=×÷])/g;
|
|
12
|
+
const matches = cleaned.match(tokenRe) || [];
|
|
13
|
+
if (matches.length === 0) return null;
|
|
14
|
+
|
|
15
|
+
const out = [];
|
|
16
|
+
for (let tok of matches) {
|
|
17
|
+
// operator-only tokens
|
|
18
|
+
if (/^[+\-*/=×÷]$/.test(tok)) {
|
|
19
|
+
out.push({ omdType: 'operator', operator: tok.replace('*', '×') });
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
// term or number/variable
|
|
23
|
+
const m = tok.match(/^([+-]?)(\d*\.?\d*)([a-zA-Z]?)(?:\^(\d+))?$/);
|
|
24
|
+
if (m) {
|
|
25
|
+
const sign = m[1] === '-' ? -1 : 1;
|
|
26
|
+
const coefRaw = m[2];
|
|
27
|
+
const varChar = m[3] || '';
|
|
28
|
+
const exp = m[4] ? Number(m[4]) : 1;
|
|
29
|
+
let coef = 1;
|
|
30
|
+
if (coefRaw && coefRaw.length > 0) coef = Number(coefRaw);
|
|
31
|
+
if (!varChar && coefRaw) {
|
|
32
|
+
// pure number
|
|
33
|
+
out.push({ omdType: 'number', value: sign * coef });
|
|
34
|
+
} else {
|
|
35
|
+
out.push({ omdType: 'term', coefficient: sign * coef, variable: varChar, exponent: exp });
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
// fallback to string token
|
|
39
|
+
out.push({ omdType: 'string', name: tok });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// If first token is an operator like '+' or '-', and followed by a term/number, fold it
|
|
44
|
+
const folded = [];
|
|
45
|
+
for (let i = 0; i < out.length; i++) {
|
|
46
|
+
const t = out[i];
|
|
47
|
+
if (t.omdType === 'operator' && (t.operator === '+' || t.operator === '-')) {
|
|
48
|
+
// If it's a leading sign attached to next term, merge
|
|
49
|
+
const next = out[i+1];
|
|
50
|
+
if (next && (next.omdType === 'term' || next.omdType === 'number')) {
|
|
51
|
+
if (next.omdType === 'number') {
|
|
52
|
+
next.value = (t.operator === '-') ? -next.value : next.value;
|
|
53
|
+
} else if (next.omdType === 'term') {
|
|
54
|
+
next.coefficient = (t.operator === '-') ? -next.coefficient : next.coefficient;
|
|
55
|
+
}
|
|
56
|
+
i++; // skip next because we've merged
|
|
57
|
+
folded.push(next);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
folded.push(t);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Interleave operators where missing: if folded array alternates term/number and operator
|
|
65
|
+
const result = [];
|
|
66
|
+
for (let i = 0; i < folded.length; i++) {
|
|
67
|
+
result.push(folded[i]);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return { termsAndOpers: result };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Parse an equation like "3x+4=2x+1" into left/right expression JSON
|
|
74
|
+
export function parseEquationString(str) {
|
|
75
|
+
const s = String(str || '');
|
|
76
|
+
const parts = s.split('=');
|
|
77
|
+
if (parts.length !== 2) return null;
|
|
78
|
+
const left = parts[0].trim();
|
|
79
|
+
const right = parts[1].trim();
|
|
80
|
+
const leftJson = parseExpressionString(left);
|
|
81
|
+
const rightJson = parseExpressionString(right);
|
|
82
|
+
if (!leftJson || !rightJson) return null;
|
|
83
|
+
return { leftExpression: leftJson, rightExpression: rightJson };
|
|
84
|
+
}
|
package/src/omdVariable.js
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
import { omdColor } from "./omdColor.js";
|
|
3
|
-
import { omdMetaExpression } from "./omdMetaExpression.js"
|
|
4
|
-
import { jsvgTextBox } from "@teachinglab/jsvg";
|
|
5
|
-
|
|
6
|
-
export class omdVariable extends omdMetaExpression
|
|
7
|
-
{
|
|
8
|
-
constructor( V = 'A' )
|
|
9
|
-
{
|
|
10
|
-
// initialization
|
|
11
|
-
super();
|
|
12
|
-
|
|
13
|
-
this.type = "omdVariable";
|
|
14
|
-
|
|
15
|
-
this.numText = new jsvgTextBox();
|
|
16
|
-
this.numText.setWidthAndHeight( 30,30 );
|
|
17
|
-
this.numText.setText ( this.name );
|
|
18
|
-
this.numText.setFontFamily( "Albert Sans" );
|
|
19
|
-
this.numText.setFontColor( "black" );
|
|
20
|
-
this.numText.setFontSize( 18 );
|
|
21
|
-
this.numText.setVerticalCentering();
|
|
22
|
-
this.numText.setAlignment("center");
|
|
23
|
-
// this.numText.div.style.border = "1px solid black";
|
|
24
|
-
this.addChild( this.numText );
|
|
25
|
-
|
|
26
|
-
this.setName( V );
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
loadFromJSON( data )
|
|
30
|
-
{
|
|
31
|
-
if ( typeof data.name != "undefined" )
|
|
32
|
-
this.name = data.name;
|
|
33
|
-
|
|
34
|
-
this.updateLayout();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
setName( newName )
|
|
38
|
-
{
|
|
39
|
-
this.name = newName;
|
|
40
|
-
this.updateLayout();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
updateLayout()
|
|
44
|
-
{
|
|
45
|
-
var W = 15 + this.name.length*10;
|
|
46
|
-
this.backRect.setWidthAndHeight( W, 30 );
|
|
47
|
-
this.numText.setWidthAndHeight( W, 30 );
|
|
48
|
-
this.numText.setText ( this.name );
|
|
49
|
-
|
|
50
|
-
this.setWidthAndHeight( this.backRect.width, this.backRect.height );
|
|
51
|
-
}
|
|
1
|
+
|
|
2
|
+
import { omdColor } from "./omdColor.js";
|
|
3
|
+
import { omdMetaExpression } from "./omdMetaExpression.js"
|
|
4
|
+
import { jsvgTextBox } from "@teachinglab/jsvg";
|
|
5
|
+
|
|
6
|
+
export class omdVariable extends omdMetaExpression
|
|
7
|
+
{
|
|
8
|
+
constructor( V = 'A' )
|
|
9
|
+
{
|
|
10
|
+
// initialization
|
|
11
|
+
super();
|
|
12
|
+
|
|
13
|
+
this.type = "omdVariable";
|
|
14
|
+
|
|
15
|
+
this.numText = new jsvgTextBox();
|
|
16
|
+
this.numText.setWidthAndHeight( 30,30 );
|
|
17
|
+
this.numText.setText ( this.name );
|
|
18
|
+
this.numText.setFontFamily( "Albert Sans" );
|
|
19
|
+
this.numText.setFontColor( "black" );
|
|
20
|
+
this.numText.setFontSize( 18 );
|
|
21
|
+
this.numText.setVerticalCentering();
|
|
22
|
+
this.numText.setAlignment("center");
|
|
23
|
+
// this.numText.div.style.border = "1px solid black";
|
|
24
|
+
this.addChild( this.numText );
|
|
25
|
+
|
|
26
|
+
this.setName( V );
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
loadFromJSON( data )
|
|
30
|
+
{
|
|
31
|
+
if ( typeof data.name != "undefined" )
|
|
32
|
+
this.name = data.name;
|
|
33
|
+
|
|
34
|
+
this.updateLayout();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
setName( newName )
|
|
38
|
+
{
|
|
39
|
+
this.name = newName;
|
|
40
|
+
this.updateLayout();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
updateLayout()
|
|
44
|
+
{
|
|
45
|
+
var W = 15 + this.name.length*10;
|
|
46
|
+
this.backRect.setWidthAndHeight( W, 30 );
|
|
47
|
+
this.numText.setWidthAndHeight( W, 30 );
|
|
48
|
+
this.numText.setText ( this.name );
|
|
49
|
+
|
|
50
|
+
this.setWidthAndHeight( this.backRect.width, this.backRect.height );
|
|
51
|
+
}
|
|
52
52
|
}
|