UNPKG

ze-react-component-library

Version:
109 lines (106 loc) 2.94 kB
import React, { Suspense, useEffect, lazy } from "react"; import { typePropertyOfSchema } from "../util"; var ZEJsonEditor = /*#__PURE__*/lazy(function () { return import("../ZEJsonEditor"); }); export var types = ["entity", "event"]; var getSchema = function getSchema(json, isCreate) { var scheme = { type: "object", properties: { schema: { type: "string", // 更新时,设定enum,不允许修改 enum: isCreate ? undefined : [json === null || json === void 0 ? void 0 : json.schema], description: "数仓的表名" }, name: { type: "string", description: "指标名称" }, syno: { type: "array", items: { type: "string" }, description: "指标的同义词" }, type: { type: "string", enum: typePropertyOfSchema.constraints.enum, description: "指标类型" }, is_additive: { type: "boolean", description: "是否可加" }, run: { type: "string", description: "js的run函数" }, shouldSplitGroupby: { type: "string", description: "js的shouldSplitGroupby函数" }, sql: { type: "string", description: "sql" }, sqlLeftJoinClause: { type: "string", description: "sqlLeftJoinClause" }, target: { type: "number", description: "目标" }, unit: { type: "string", description: "单位;例如: (元)。此字段会显示在问答的结果旁边。" }, ui: { type: "object", properties: { formatter: { type: "string", description: "数字格式;例如: 0,0.0A。格式配置详情请见使用文档" }, representation: { type: "string", enum: ["column", "bar", "line", "area", "pie"], description: "图表格式" } } }, description: { type: "string", description: "说明" } }, required: ["schema", "name", "type"] }; return scheme; }; var JsonEditor = function JsonEditor(_a) { var value = _a.value, editorRef = _a.editorRef, editable = _a.editable, isCreate = _a.isCreate; useEffect(function () { if (editorRef.current) { editorRef.current.set(value || {}); } }, [JSON.stringify(value)]); return /*#__PURE__*/React.createElement(Suspense, { fallback: /*#__PURE__*/React.createElement("strong", null, "\u52A0\u8F7D\u4E2D...") }, /*#__PURE__*/React.createElement(ZEJsonEditor, { value: value || {}, editorRef: editorRef, editable: editable, mode: editable ? "code" : "view", modes: editable ? ["tree", "code"] : undefined, schema: getSchema(value, isCreate), templates: [] })); }; export default JsonEditor;