feat: upgrade toolbox for v1.2.1
CI / test (pull_request) Canceled after 52s
PR合并自动部署 / release-check (pull_request) Successful in 13s
PR合并自动部署 / deploy (pull_request) Successful in 13s

This commit is contained in:
2026-08-10 02:05:21 +08:00
parent 30f335c83b
commit 8e94f053b1
12 changed files with 1135 additions and 324 deletions
+106 -43
View File
@@ -214,46 +214,84 @@
</section>
<section class="view" id="view-toolbox">
<div class="page-title"><span class="kicker">MATHEMATICAL WORKBENCH</span><h1>工具箱</h1><p>计算、查询、绘图与表达,把想法直接变成可以继续工作的对象</p></div>
<div class="tool-grid" id="tool-grid">
<button class="tool-card" data-tool="mental"><span></span><b>口算竞技</b><small>限时挑战你的心算速度</small></button>
<button class="tool-card active" data-tool="calculator"><span>123</span><b>数学计算工作台</b><small>代数、微积分、矩阵与统计</small></button>
<button class="tool-card" data-tool="symbols"><span>Σ</span><b>数学符号查询</b><small>含义、读法与 LaTeX 写法</small></button>
<button class="tool-card" data-tool="graph"><span></span><b>函数图形绘制</b><small>多函数、参数、导数与分析</small></button>
<button class="tool-card" data-tool="whiteboard"><span>✎△</span><b>数学画板</b><small>白板、几何、联机展示与你画我猜</small></button>
<button class="tool-card" data-tool="latex"><span>TeX</span><b>LaTeX Lab</b><small>编辑、预览、课程与公式库</small></button>
<div class="page-title"><span class="kicker">MATHEMATICAL WORKBENCH</span><h1>工具箱</h1><p>从符号计算、函数探索到数学表达与协作创作,按任务组织完整工作流</p></div>
<div class="tool-groups" id="tool-grid">
<section class="tool-group">
<header><span>01</span><div><b>计算与探索</b><small>从表达式到结构与图像</small></div></header>
<div class="tool-grid">
<button class="tool-card active" data-tool="calculator"><span>CAS</span><b>高级计算工作台</b><small>代数、微积分、方程组、矩阵与数据分析</small></button>
<button class="tool-card" data-tool="graph"><span>ƒ(x)</span><b>函数探索器</b><small>响应式曲线、独立视窗、平移缩放与分析</small></button>
</div>
</section>
<section class="tool-group">
<header><span>02</span><div><b>知识与表达</b><small>查询、排版与规范表达</small></div></header>
<div class="tool-grid">
<button class="tool-card" data-tool="symbols"><span>Σ</span><b>数学符号查询</b><small>含义、读法与 LaTeX 写法</small></button>
<button class="tool-card" data-tool="latex"><span>TeX</span><b>LaTeX Lab</b><small>编辑、实时预览与版本保存</small></button>
</div>
</section>
<section class="tool-group">
<header><span>03</span><div><b>创作与协作</b><small>把思路画出来并实时分享</small></div></header>
<div class="tool-grid">
<button class="tool-card" data-tool="whiteboard"><span>✎△</span><b>数学画板</b><small>白板、几何、联机展示与你画我猜</small></button>
</div>
</section>
</div>
<div class="tool-workspace active" id="tool-calculator">
<div class="workspace-heading"><div><span class="kicker">COMPUTATION STUDIO</span><h2>数学计算工作台</h2></div><p>精确值、方程、微积分、矩阵、统计与进制转换由受限数学内核计算。</p></div>
<div class="workspace-heading"><div><span class="kicker">SYMBOLIC COMPUTATION STUDIO</span><h2>高级计算工作台</h2></div><p>受限 SymPy 内核提供精确符号计算、多元分析、线性代数和数据换算。</p></div>
<div class="calculator-shell advanced-calculator">
<div class="calc-category-tabs" aria-label="计算分类">
<button class="active" data-calc-category="algebra">代数与方程</button>
<button data-calc-category="calculus">微积分与多元分析</button>
<button data-calc-category="linear">线性代数</button>
<button data-calc-category="data">数据与换算</button>
</div>
<div class="calculator-controls">
<label>计算类型
<select id="calc-operation">
<option value="calculate">精确计算</option>
<option value="simplify">表达式化简</option>
<option value="expand">代数展开</option>
<option value="factor">因式分解</option>
<option value="solve">方程</option>
<option value="derivative">求导</option>
<option value="integral">积分</option>
<option value="limit">极限</option>
<option value="matrix_det">矩阵行列式</option>
<option value="matrix_inverse">逆矩阵</option>
<option value="matrix_rref">矩阵行最简形</option>
<option value="matrix_transpose">矩阵转置</option>
<option value="statistics">描述统计</option>
<option value="base">进制转换</option>
<option value="unit">单位换算</option>
<optgroup label="代数与方程" data-calc-category-options="algebra">
<option value="calculate">精确计算</option>
<option value="simplify">表达式化简</option>
<option value="expand">代数展开</option>
<option value="factor">因式分</option>
<option value="solve">符号解方程</option>
<option value="solve_system">解多元方程组</option>
<option value="polynomial_roots">多项式全部数值根</option>
</optgroup>
<optgroup label="微积分与多元分析" data-calc-category-options="calculus">
<option value="derivative">高阶导数</option>
<option value="integral">定积分 / 不定积分</option>
<option value="limit">单侧 / 双侧极限</option>
<option value="series">Taylor / Laurent 级数</option>
<option value="gradient">梯度</option>
<option value="hessian">Hessian 矩阵</option>
</optgroup>
<optgroup label="线性代数" data-calc-category-options="linear">
<option value="matrix_det">矩阵行列式</option>
<option value="matrix_inverse">逆矩阵</option>
<option value="matrix_rref">矩阵行最简形</option>
<option value="matrix_transpose">矩阵转置</option>
<option value="matrix_rank">矩阵秩</option>
<option value="matrix_nullspace">零空间基</option>
<option value="matrix_eigenvalues">特征值与重数</option>
</optgroup>
<optgroup label="数据与换算" data-calc-category-options="data">
<option value="statistics">增强描述统计</option>
<option value="base">进制转换</option>
<option value="unit">单位换算</option>
</optgroup>
</select>
</label>
<label>变量
<select id="calc-variable"><option>x</option><option>y</option><option>z</option><option>a</option><option>b</option><option>t</option><option>n</option></select>
</label>
<label class="calc-field" data-calc-field="order">阶数<input id="calc-order" type="number" min="1" max="5" value="1"></label>
<label class="calc-field" data-calc-field="variables">变量列表<input id="calc-variables" value="x,y" placeholder="例如 x,y"></label>
<label class="calc-field" data-calc-field="order">阶数<input id="calc-order" type="number" min="1" max="12" value="1"></label>
<label class="calc-field" data-calc-field="bounds">下限<input id="calc-lower" placeholder="可留空"></label>
<label class="calc-field" data-calc-field="bounds">上限<input id="calc-upper" placeholder="可留空"></label>
<label class="calc-field" data-calc-field="point">趋近值<input id="calc-point" value="0"></label>
<label class="calc-field" data-calc-field="direction">方向<select id="calc-direction"><option value="+-">双侧</option><option value="+">右极限</option><option value="-">左极限</option></select></label>
<label class="calc-field" data-calc-field="base">原进制<input id="calc-from-base" type="number" min="2" max="36" value="10"></label>
<label class="calc-field" data-calc-field="base">目标进制<input id="calc-to-base" type="number" min="2" max="36" value="2"></label>
<label class="calc-field" data-calc-field="unit">原单位<select id="calc-from-unit"><option>mm</option><option>cm</option><option selected>m</option><option>km</option><option>in</option><option>ft</option><option>g</option><option>kg</option><option>lb</option><option>s</option><option>min</option><option>h</option><option>deg</option><option>rad</option></select></label>
@@ -262,13 +300,13 @@
<label class="calculator-expression-label">表达式或数据
<textarea id="calc-input" class="formula-input" autocomplete="off" aria-label="计算表达式">sqrt(2) + 1/3</textarea>
</label>
<p id="calc-hint" class="calc-hint">支持精确常量、函数与变量;按 Command/Ctrl + Enter 运行。</p>
<div class="calculator-actions calc-examples">
<button data-calc-operation="solve" data-calc-example="x^2 - 5*x + 6 = 0">方程</button>
<button data-calc-operation="derivative" data-calc-example="sin(x) + x^3">求导</button>
<button data-calc-operation="integral" data-calc-example="x^2">积分</button>
<button data-calc-operation="matrix_inverse" data-calc-example="1,2;3,4">逆矩阵</button>
<button data-calc-operation="statistics" data-calc-example="12,15,18,21,24">统计</button>
<button data-calc-operation="unit" data-calc-example="1.75">单位换算</button>
<button data-calc-operation="solve_system" data-calc-example="x + y = 5; x - y = 1">方程</button>
<button data-calc-operation="series" data-calc-example="exp(x)*cos(x)">级数展开</button>
<button data-calc-operation="hessian" data-calc-example="x^2 + x*y + y^2">Hessian</button>
<button data-calc-operation="matrix_eigenvalues" data-calc-example="2,1;1,2">特征值</button>
<button data-calc-operation="statistics" data-calc-example="12,15,18,21,24">增强统计</button>
<button id="calc-run" class="primary-button">开始计算</button>
</div>
<div class="calculator-result" aria-live="polite">
@@ -288,23 +326,47 @@
</div>
<div class="tool-workspace" id="tool-graph">
<div class="workspace-heading"><div><span class="kicker">FUNCTION PLOTTER</span><h2>函数图形绘制</h2></div><p>行一个函数;支持参数 a、数值导数、积分区域和曲线分析</p></div>
<div class="graph-shell">
<div class="graph-controls">
<div class="workspace-heading"><div><span class="kicker">INTERACTIVE FUNCTION EXPLORER</span><h2>函数探索器</h2></div><p>条曲线独立编辑;画布随容器缩放,支持平移、滚轮缩放、自动取景和清晰刻度</p></div>
<div class="graph-shell advanced-graph-shell">
<aside class="graph-controls">
<details class="function-syntax-help" open>
<summary>函数书写规则</summary>
<p>每行一个表达式,直接写右侧:<code>sin(x)</code><code>x^2 - 2*x + 1</code><code>sqrt(abs(x))</code>。乘法必须<code>*</code>,幂<code>^</code>,参数仅支持 <code>a</code></p>
<p>直接写右侧:<code>sin(x)</code><code>x^2 - 2*x + 1</code><code>sqrt(abs(x))</code>。乘法写 <code>*</code>,幂写 <code>^</code>可使用参数 <code>a</code></p>
</details>
<label>函数列表<textarea id="graph-expression" class="formula-input">sin(x) + a*x/3&#10;0.08*x^2 - 2</textarea></label>
<label>X 范围<input id="graph-range" type="range" min="5" max="30" value="10"><span id="graph-range-label">10 到 10</span></label>
<label>参数 a<input id="graph-parameter" type="range" min="-5" max="5" step="0.1" value="1"><span id="graph-parameter-label">a = 1</span></label>
<label class="check-row"><input id="graph-derivative" type="checkbox"> 绘制第一条函数的导数</label>
<label class="check-row"><input id="graph-integral" type="checkbox"> 填充第一条函数与 x 轴区域</label>
<button id="graph-run" class="primary-button">绘制函数</button>
<div class="graph-functions-heading"><b>函数列表</b><button id="graph-add-function" type="button">+ 添加曲线</button></div>
<div id="graph-function-list" class="graph-function-list"></div>
<div class="graph-parameter-control">
<label>参数 a <output id="graph-parameter-label">1.0</output></label>
<input id="graph-parameter" type="range" min="-10" max="10" step="0.1" value="1">
</div>
<details class="graph-viewport-controls" open>
<summary>坐标视窗</summary>
<div class="graph-range-grid">
<label>X 最小<input id="graph-x-min" type="number" step="any" value="-10"></label>
<label>X 最大<input id="graph-x-max" type="number" step="any" value="10"></label>
<label>Y 最小<input id="graph-y-min" type="number" step="any" value="-6"></label>
<label>Y 最大<input id="graph-y-max" type="number" step="any" value="6"></label>
</div>
<label class="check-row"><input id="graph-auto-y" type="checkbox" checked> 根据可见曲线自动计算 Y 范围</label>
</details>
<div class="graph-option-grid">
<label class="check-row"><input id="graph-grid" type="checkbox" checked> 网格与刻度</label>
<label class="check-row"><input id="graph-derivative" type="checkbox"> 第一条曲线导数</label>
<label class="check-row"><input id="graph-integral" type="checkbox"> 第一条曲线积分区域</label>
</div>
<div class="graph-actions">
<button id="graph-auto-fit" type="button">自动取景</button>
<button id="graph-reset-view" type="button">重置视窗</button>
<button id="graph-run" class="primary-button">重新绘制</button>
</div>
<p id="graph-error"></p>
</aside>
<section class="graph-stage">
<div id="graph-legend" class="graph-legend"></div>
<canvas id="graph-canvas" aria-label="可交互函数坐标图"></canvas>
<div class="graph-stage-hint">拖动画布平移 · 滚轮或触控板缩放 · 双击自动取景</div>
<div id="graph-analysis" class="graph-analysis"></div>
</div>
<canvas id="graph-canvas" width="900" height="480" aria-label="函数曲线图"></canvas>
</section>
</div>
</div>
@@ -478,6 +540,7 @@
<div class="toast" id="toast" role="status"></div>
<div class="csrf-token">{% csrf_token %}</div>
<script src="{% static 'vendor/katex/katex.min.js' %}" defer></script>
<script src="{% static 'js/graph.js' %}" defer></script>
<script src="{% static 'js/toolbox.js' %}" defer></script>
<script src="{% static 'js/games.js' %}" defer></script>
<script src="{% static 'js/realtime.js' %}" defer></script>