Google Data Studio - 创建您自己的可视化 - config.json 问题

Google Data Studio - Creating your own visualization - config.json problem

我的问题是 index.json

{
  "data": [
    {
      "id": "concepts",
      "label": "Fields",
      "elements": [
        {
          "id": "dim",
          "label": "label, quadrant, ring, link, active, moved",
          "type": "DIMENSION",
          "options": {
            "min": 6,
            "max": 6
          }
        }
      ]
    }
  ],
  "style": [

    ...here is unrelated code...

    {
      "id": "offsets",
      "label": "Legend-Offset in pixel",
      "elements": [
        {
          "id": "offset_0",
          "label": "Offset_0 (-500 to 500)",
          "type": "INTERVAL"
        },
        {
          "id": "offset_1",
          "label": "Offset_1 (-500 to 500)",
          "type": "INTERVAL"
        },
        {
          "id": "offset_2",
          "label": "Offset_2 (-500 to 500)",
          "type": "INTERVAL"
        },
        {
          "id": "offset_3",
          "label": "Offset_3 (-500 to 500)",
          "type": "INTERVAL"
        }
      ]
    }
  ]
}

config reference中说,间隔需要有这种形式:

并且应该有一个选项对象。

这意味着样式元素应该看起来像这样:

{
          "id": "offset_3",
          "label": "Offset_3 (-500 to 500)",
          "type": "INTERVAL", 
          "defaultValue": 0,
          "options": {
             "min": -500,
             "max": 500
          }
}

这就是 dscc-scripts 验证希望它看起来像的样子:

{
      "id": "offset_3",
      "label": "Offset_3 (-500 to 500)",
      "defaultValue": "0",
      "type": "TEXTINPUT"
}

可悲的是,执行“应该”会破坏 dscc 脚本,错误告诉我,应该没有 选项,并且 defaultValue 需要是一个字符串。

好吧,按照上一个代码片段中的做法解决了这个问题,我确实可以构建代码并将其推送到 google 存储桶,遗憾的是,这对我现在完全没有帮助数据Studio(浏览器)出现错误,告诉我“间隔”值需要是数字类型。

知道如何解决这个问题吗?

我找到了比使用 type: "TEXTFIELD":

更好的解决方案

刚刚更改了 dscc-scripts 包用于适应主页的架构。 (所以我把它从字符串改为数字) 我真的不明白为什么他们自己不这样做,因为他们将类型从字符串更改为数字,但是 nvm 那。

这是我在 schemas.js 中更改的内容 (node_modules/@google/dscc-scripts/builds/viz/schemas.js):

(请参阅默认值下的类型...)

...
interval: {
        type: 'object',
        additionalProperties: false,
        required: ['id', 'label', 'type'],
        properties: {
            id: { type: 'string' },
            label: { type: 'string' },
            type: {
                type: 'string',
                enum: ['INTERVAL'],
            },
            defaultValue: { type: 'number' },
        },
    },
...

#QuestionClosed