Desmos API 中文件夹可接受的属性有哪些?

问题描述 投票:0回答:1

我正在使用 Desmos API 来可视化我正在测试的应用程序中的一些数据。我有相当多的公式想要进行有意义的分组,并且我知道在 UI 中我可以使用文件夹来实现这一点。

Desmos 的 API 文档

setExpression
可以采用
type
属性,但声称它只能是
expression
(这是默认值)或
table
– 尽管进一步往下看,很明显它也可以是
text

我已经成功地用

setExpression({ type: 'folder' })
创建了一个文件夹,所以这显然也有效;但我无法重命名文件夹
name
text
title
folderName
都没有效果,它仍然是“无标题文件夹”),而且我不知道如何也可以将其他表达式放入其中

我还使用 UI 将这些东西放入我想要的状态,并使用

getState()
抓取它们 – 它们看起来部分像这样:

"expressions": {
  "list": [
    {
      "type": "folder",
      "id": "gradients",
      "title": "Gradients" // This is significant
    },
    {
      "type": "expression",
      "id": "gradient",
      "folderId": "gradients", // This is significant
      "color": "#2d70b3",
      "latex": "\\Delta=y_1\\left[1...\\right]-y_1\\left[0...\\right]",
      "hidden": true
    }, // ...

...但是使用

setExpression()
设置这些值也没有达到预期的效果。

谷歌没有帮助。这个社区能应对挑战吗?

desmos
1个回答
0
投票

正如您所说,没有办法直接从 setExpression 修改文件夹,但您可以使用 setState() 和 getState()。我直接通过控制台运行它,但是,它应该与 API 类似。这是一个可以修改文件夹标题的函数

function SetfolderTitle(id, title){
    let state = Calc.getState();
    for (var i in state.expressions.list){
        if(state.expressions.list[i].id == id){
            state.expressions.list[i].title = title
            break;
        }
    }
    Calc.setState(state)
}

至于给它添加一个表达式,你可以做类似的事情:

function AddExpression(FolderId, id){
    let state = Calc.getState();
    for (var i in state.expressions.list){
        if(state.expressions.list[i].id == id){
            state.expressions.list[i]["folderId"] = FolderId
            break;
        }
    }
    Calc.setState(state)
}

可能有更简单的方法可以做到这一点,但我对 Javascript 很糟糕。

© www.soinside.com 2019 - 2024. All rights reserved.