@gingkoo/pandora-metabase 0.0.1-alpha.1

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.
Files changed (60) hide show
  1. package/README.md +93 -0
  2. package/lib/es/components/Portal/index.d.ts +8 -0
  3. package/lib/es/constant.d.ts +1 -0
  4. package/lib/es/css.d.ts +10 -0
  5. package/lib/es/enum.d.ts +17 -0
  6. package/lib/es/helper.d.ts +16 -0
  7. package/lib/es/icons.d.ts +2 -0
  8. package/lib/es/index.d.ts +2 -0
  9. package/lib/es/index.js +5756 -0
  10. package/lib/es/index.js.map +1 -0
  11. package/lib/es/metaBase/components/dialog/const.d.ts +4 -0
  12. package/lib/es/metaBase/components/dialog/custom-column/config.d.ts +352 -0
  13. package/lib/es/metaBase/components/dialog/custom-column/dialog/function-tip.d.ts +7 -0
  14. package/lib/es/metaBase/components/dialog/custom-column/dialog/select-list.d.ts +15 -0
  15. package/lib/es/metaBase/components/dialog/custom-column/expression-editor.d.ts +11 -0
  16. package/lib/es/metaBase/components/dialog/custom-column/expressions/suggest.d.ts +69 -0
  17. package/lib/es/metaBase/components/dialog/custom-column/expressions/tokenizer.d.ts +36 -0
  18. package/lib/es/metaBase/components/dialog/custom-column/index.d.ts +12 -0
  19. package/lib/es/metaBase/components/dialog/custom-column/keyboard.d.ts +11 -0
  20. package/lib/es/metaBase/components/dialog/custom-column/tokenized-expression.d.ts +10 -0
  21. package/lib/es/metaBase/components/dialog/custom-column/tokenizedI-input.d.ts +3 -0
  22. package/lib/es/metaBase/components/dialog/index.d.ts +7 -0
  23. package/lib/es/metaBase/components/dialog/select-column/index.d.ts +15 -0
  24. package/lib/es/metaBase/components/dialog/select-filter/index.d.ts +6 -0
  25. package/lib/es/metaBase/components/dialog/select-join/index.d.ts +13 -0
  26. package/lib/es/metaBase/components/dialog/select-join-column/index.d.ts +41 -0
  27. package/lib/es/metaBase/components/dialog/select-summarize/index.d.ts +18 -0
  28. package/lib/es/metaBase/components/dialog/select-table/index.d.ts +17 -0
  29. package/lib/es/metaBase/components/icons.d.ts +32 -0
  30. package/lib/es/metaBase/components/modules/components/header.d.ts +7 -0
  31. package/lib/es/metaBase/components/modules/components/meta-icon.d.ts +3 -0
  32. package/lib/es/metaBase/components/modules/components/wrapper.d.ts +7 -0
  33. package/lib/es/metaBase/components/modules/custom-column.d.ts +3 -0
  34. package/lib/es/metaBase/components/modules/filter.d.ts +3 -0
  35. package/lib/es/metaBase/components/modules/index.d.ts +3 -0
  36. package/lib/es/metaBase/components/modules/join-data.d.ts +3 -0
  37. package/lib/es/metaBase/components/modules/row-limit.d.ts +3 -0
  38. package/lib/es/metaBase/components/modules/sort.d.ts +3 -0
  39. package/lib/es/metaBase/components/modules/summarize/group-by.d.ts +8 -0
  40. package/lib/es/metaBase/components/modules/summarize/index.d.ts +3 -0
  41. package/lib/es/metaBase/components/modules/summarize/select-index.d.ts +3 -0
  42. package/lib/es/metaBase/components/modules/table-data.d.ts +3 -0
  43. package/lib/es/metaBase/components/popup.d.ts +97 -0
  44. package/lib/es/metaBase/enum.d.ts +54 -0
  45. package/lib/es/metaBase/index.d.ts +7 -0
  46. package/lib/es/metaBase/interface.d.ts +11 -0
  47. package/lib/es/metaBase/locale.d.ts +1 -0
  48. package/lib/es/metaBase/sql-formula.d.ts +19 -0
  49. package/lib/es/metaBase/utils.d.ts +15 -0
  50. package/lib/es/request.d.ts +23 -0
  51. package/lib/es/store/metabase/enum.d.ts +54 -0
  52. package/lib/es/store/metabase/helper.d.ts +6 -0
  53. package/lib/es/store/metabase/index.d.ts +51 -0
  54. package/lib/es/store/metabase/types.d.ts +207 -0
  55. package/lib/es/types.d.ts +38 -0
  56. package/lib/es/utils/event.d.ts +20 -0
  57. package/lib/es/utils/helper-dom.d.ts +11 -0
  58. package/lib/es/utils/helper.d.ts +23 -0
  59. package/lib/es/utils/selection.d.ts +7 -0
  60. package/package.json +93 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../node_modules/style-inject/dist/style-inject.es.js","../../src/metaBase/enum.ts","../../src/metaBase/locale.ts","../../src/store/metabase/enum.ts","../../src/utils/selection.ts","../../src/metaBase/components/dialog/custom-column/keyboard.ts","../../src/metaBase/components/dialog/custom-column/expressions/tokenizer.ts","../../src/metaBase/sql-formula.ts","../../src/metaBase/components/dialog/custom-column/expressions/suggest.ts","../../src/metaBase/components/dialog/custom-column/config.ts","../../src/metaBase/components/dialog/custom-column/tokenized-expression.tsx","../../src/metaBase/components/dialog/custom-column/tokenizedI-input.tsx","../../src/utils/helper-dom.ts","../../src/utils/helper.ts","../../src/utils/event.ts","../../src/components/Portal/index.tsx","../../src/metaBase/components/popup.tsx","../../src/metaBase/components/dialog/custom-column/dialog/select-list.tsx","../../src/metaBase/components/dialog/custom-column/dialog/function-tip.tsx","../../src/metaBase/components/dialog/custom-column/expression-editor.tsx","../../src/metaBase/components/dialog/custom-column/index.tsx","../../src/metaBase/components/icons.tsx","../../src/metaBase/components/dialog/select-column/index.tsx","../../src/store/metabase/index.tsx","../../src/metaBase/components/dialog/const.ts","../../src/metaBase/components/dialog/select-join-column/index.tsx","../../src/metaBase/components/dialog/select-filter/index.tsx","../../src/metaBase/components/dialog/select-summarize/index.tsx","../../src/metaBase/components/dialog/select-join/index.tsx","../../src/metaBase/components/dialog/select-table/index.tsx","../../src/metaBase/components/modules/components/wrapper.tsx","../../src/metaBase/utils.ts","../../src/metaBase/components/modules/components/meta-icon.tsx","../../src/metaBase/components/modules/components/header.tsx","../../src/metaBase/components/modules/table-data.tsx","../../src/metaBase/components/modules/components/Wrapper.tsx","../../src/metaBase/components/modules/join-data.tsx","../../src/metaBase/components/modules/custom-column.tsx","../../src/metaBase/components/modules/filter.tsx","../../src/metaBase/components/modules/summarize/group-by.tsx","../../src/store/metabase/helper.ts","../../src/metaBase/components/modules/summarize/select-index.tsx","../../src/metaBase/components/modules/summarize/index.tsx","../../src/metaBase/components/modules/sort.tsx","../../src/metaBase/components/modules/row-limit.tsx","../../src/metaBase/components/modules/index.ts","../../src/metaBase/index.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export enum SortEnum {\n desc = 'DESC',\n asc = 'ASC',\n}\n\nexport enum TypeEnum {\n data = 'data',\n joinData = 'joinData',\n customColumn = 'customColumn',\n filter = 'filter',\n summarize = 'summarize',\n sort = 'sort',\n rowLimit = 'rowLimit',\n}\n\nexport enum JoinEnum {\n left = 'LEFT JOIN',\n right = 'RIGHT JOIN',\n inner = 'INNER JOIN',\n}\n\nexport enum ColumnsPopupThemeEnum {\n skyBlue = 'skyBlue',\n greenGrass = 'greenGrass',\n purple = 'purple',\n}\n\nexport enum SpecialType {\n PK = 'pk',\n FK = 'fk',\n}\n\nexport enum SQL_COLUMN_TYPE {\n STRING = 'STRING',\n DATE = 'DATE',\n FLOAT = 'FLOAT',\n LONG = 'LONG',\n CURRENCY = 'CURRENCY',\n}\n\n// 之前的 SQL_COLUMN_TYPE\n// export enum SQL_COLUMN_TYPE {\n// BIGINT = 'BIGINT',\n// SMALLINT = 'SMALLINT',\n// DOUBLE = 'DOUBLE',\n// INTEGER = 'INTEGER',\n// CLOB = 'CLOB',\n// CHAR = 'CHAR',\n// VARCHAR = 'VARCHAR',\n// TIMESTAMP = 'TIMESTAMP',\n// }\n\nexport enum SQL_GROUP_TYPE {\n NUMBER = 'number',\n STRING = 'string',\n DATE = 'date',\n}\n\n// 字段数据类型\nexport enum DataTypeEnum {\n float = 'float', // 小数\n string = 'string', // 字符\n date = 'date', // 日期\n long = 'long', // 整数\n currency = 'currency', // 金额\n}\n\n// 字段控件类型\nexport enum EleComponentEnum {\n text = 'text', // 文本框\n select = 'select', // 下拉框\n}\n\n// 静态tab\nexport enum TabEnum {\n RESULT = 'RESULT',\n FIELD = 'FIELD',\n}\n","const localeMap: any = {\n 'SqlQueryBuilder.data': '数据',\n 'SqlQueryBuilder.joinData': '关联',\n 'SqlQueryBuilder.filter': '过滤器',\n 'SqlQueryBuilder.summarize': '聚合',\n 'SqlQueryBuilder.sort': '排序',\n 'SqlQueryBuilder.rowLimit': '行限制',\n 'SqlQueryBuilder.columns': '字段',\n 'SqlQueryBuilder.tipsLimit': '输入限制条件',\n 'SqlQueryBuilder.customColumn': '自定义列',\n 'SqlQueryBuilder.by': '通过',\n 'SqlQueryBuilder.basicMetrics': '基础指标',\n 'SqlQueryBuilder.countOfRows': '总行数',\n 'SqlQueryBuilder.sumOf': '总和',\n 'SqlQueryBuilder.averageOf': '平均值',\n 'SqlQueryBuilder.numberOfDistinctValuesOf': '不重复值的总数',\n 'SqlQueryBuilder.cumulativeSumOf': '累计求和',\n 'SqlQueryBuilder.cumulativeCountOfRows': '累计行数',\n 'SqlQueryBuilder.standardDeviationOf': '标准差',\n 'SqlQueryBuilder.minimumOf': '最小值',\n 'SqlQueryBuilder.maximumOf': '最大值',\n 'SqlQueryBuilder.customExpression': '自定义表达方式',\n 'SqlQueryBuilder.pickTable': '选择数据表...',\n 'SqlQueryBuilder.visualize': '可视化',\n};\n\nexport const __ = function (str: string) {\n return localeMap[str];\n};\n","export enum SortEnum {\n desc = 'DESC',\n asc = 'ASC',\n}\n\nexport enum TypeEnum {\n data = 'data',\n joinData = 'joinData',\n customColumn = 'customColumn',\n filter = 'filter',\n summarize = 'summarize',\n sort = 'sort',\n rowLimit = 'rowLimit',\n}\n\nexport enum JoinEnum {\n left = 'LEFT JOIN',\n right = 'RIGHT JOIN',\n inner = 'INNER JOIN',\n}\n\nexport enum ColumnsPopupThemeEnum {\n skyBlue = 'skyBlue',\n greenGrass = 'greenGrass',\n purple = 'purple',\n}\n\nexport enum SpecialType {\n PK = 'pk',\n FK = 'fk',\n}\n\nexport enum SQL_COLUMN_TYPE {\n STRING = 'STRING',\n DATE = 'DATE',\n FLOAT = 'FLOAT',\n LONG = 'LONG',\n CURRENCY = 'CURRENCY',\n}\n\n// 之前的 SQL_COLUMN_TYPE\n// export enum SQL_COLUMN_TYPE {\n// BIGINT = 'BIGINT',\n// SMALLINT = 'SMALLINT',\n// DOUBLE = 'DOUBLE',\n// INTEGER = 'INTEGER',\n// CLOB = 'CLOB',\n// CHAR = 'CHAR',\n// VARCHAR = 'VARCHAR',\n// TIMESTAMP = 'TIMESTAMP',\n// }\n\nexport enum SQL_GROUP_TYPE {\n NUMBER = 'number',\n STRING = 'string',\n DATE = 'date',\n}\n\n// 字段数据类型\nexport enum DataTypeEnum {\n float = 'float', // 小数\n string = 'string', // 字符\n date = 'date', // 日期\n long = 'long', // 整数\n currency = 'currency', // 金额\n}\n\n// 字段控件类型\nexport enum EleComponentEnum {\n text = 'text', // 文本框\n select = 'select', // 下拉框\n}\n\n// 静态tab\nexport enum TabEnum {\n RESULT = 'RESULT',\n FIELD = 'FIELD',\n}\n","function getTextNodeAtPosition(root: any, index: number) {\n try {\n const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, (elem) => {\n if (index > (elem as any).textContent.length) {\n index -= (elem as any).textContent.length;\n return NodeFilter.FILTER_REJECT;\n }\n return NodeFilter.FILTER_ACCEPT;\n });\n const c = treeWalker.nextNode();\n return {\n node: c ? c : root,\n position: c ? index : 0,\n };\n } catch (e) {\n return {\n node: root,\n position: 0,\n };\n }\n}\n\nexport function getSelectionPosition(element: any): RangeType {\n // input, textarea, IE\n if (element.setSelectionRange || element.createTextRange) {\n return [element.selectionStart, element.selectionEnd];\n } else {\n // contenteditable\n try {\n const selection: Selection | null = window.getSelection();\n // Clone the Range otherwise setStart/setEnd will mutate the actual selection in Chrome 58+ and Firefox!\n const range = (selection as Selection).getRangeAt(0).cloneRange();\n const { startContainer, startOffset } = range;\n range.setStart(element, 0);\n const end = range.toString().length;\n range.setEnd(startContainer, startOffset);\n const start = range.toString().length;\n\n return [start, end];\n } catch (e) {\n return [0, 0];\n }\n }\n}\n\nexport function setSelectionPosition(element: any, [start, end]: RangeType) {\n // input, textarea\n if (element.setSelectionRange) {\n element.focus();\n element.setSelectionRange(start, end);\n } else if (element.createTextRange) {\n // IE\n const range = element.createTextRange();\n range.collapse(true);\n range.moveEnd('character', end);\n range.moveStart('character', start);\n range.select();\n } else {\n // contenteditable\n try {\n const selection = window.getSelection();\n const startPos = getTextNodeAtPosition(element, start);\n const endPos = getTextNodeAtPosition(element, end);\n (selection as Selection).removeAllRanges();\n const range = new Range();\n range.setStart(startPos.node, startPos.position);\n range.setEnd(endPos.node, endPos.position);\n (selection as Selection).addRange(range);\n } catch (e) {\n element && element.focus();\n }\n }\n}\n\nexport function getCaretPosition(element: any) {\n return getSelectionPosition(element)[1];\n}\n\nexport function saveSelection(element: any) {\n const range = getSelectionPosition(element);\n return () => setSelectionPosition(element, range);\n}\n\nexport function setCaretPosition(element: any, position: number) {\n setSelectionPosition(element, [position, position]);\n}\n\ntype RangeType = [number, number];\n","export const KEYCODE_SPACE = 0;\nexport const KEYCODE_BACKSPACE = 8;\nexport const KEYCODE_TAB = 9;\nexport const KEYCODE_ENTER = 13;\nexport const KEYCODE_ESCAPE = 27;\n\nexport const KEYCODE_LEFT = 37;\nexport const KEYCODE_UP = 38;\nexport const KEYCODE_RIGHT = 39;\nexport const KEYCODE_DOWN = 40;\n\nexport const KEY_COMMA = ',';\nexport const KEYCODE_FORWARD_SLASH = 191;\n","// @ts-nocheck\n\nconst t = (msg) => msg;\n\nexport const TOKEN = {\n Operator: 1,\n Number: 2,\n String: 3,\n Identifier: 4,\n};\n\nexport const OPERATOR = {\n Comma: ',',\n OpenParenthesis: '(',\n CloseParenthesis: ')',\n Plus: '+',\n Minus: '-',\n Star: '*',\n Slash: '/',\n Equal: '=',\n NotEqual: '!=',\n LessThan: '<',\n GreaterThan: '>',\n LessThanEqual: '<=',\n GreaterThanEqual: '>=',\n Not: 'not',\n And: 'and',\n Or: 'or',\n};\n\nexport function tokenize(expression) {\n const source = expression;\n const length = expression.length;\n let index = 0;\n\n const isWhiteSpace = (cp) =>\n cp === 0x0009 || // tab\n cp === 0x000a || // line feed\n cp === 0x000b || // vertical tab\n cp === 0x000c || // form feed\n cp === 0x000d || // carriage return\n cp === 0x0020 || // space\n cp === 0x0085 || // next line\n cp === 0x00a0 || // non-breking space\n cp === 0x1680 || // ogham space\n cp === 0x2000 || // en quad\n cp === 0x2001 || // em quad\n cp === 0x2002 || // en space\n cp === 0x2003 || // em space\n cp === 0x2004 || // third em space\n cp === 0x2005 || // fourth em space\n cp === 0x2006 || // sixth em space\n cp === 0x2007 || // figure space\n cp === 0x2008 || // punctuation space\n cp === 0x2009 || // thin space\n cp === 0x200a || // hair space\n cp === 0x2028 || // line separator\n cp === 0x2029 || // paragraph separator\n cp === 0x202f || // no break narrow space\n cp === 0x205f || // four-eighteenths em space\n cp === 0x3000; // cjk language space\n\n const isDigit = (cp) => cp >= 0x30 && cp <= 0x39; // 0..9\n\n const isAlpha = (cp) =>\n (cp >= 0x41 && cp <= 0x5a) || // A..Z\n (cp >= 0x61 && cp <= 0x7a); // a..z\n\n const skipWhitespaces = () => {\n while (index < length) {\n const cp = source.charCodeAt(index);\n if (!isWhiteSpace(cp)) {\n break;\n }\n ++index;\n }\n };\n\n const scanOperator = () => {\n const start = index;\n const ch = source[start];\n\n switch (ch) {\n case OPERATOR.OpenParenthesis:\n case OPERATOR.CloseParenthesis:\n case OPERATOR.Comma:\n case OPERATOR.Plus:\n case OPERATOR.Minus:\n case OPERATOR.Star:\n case OPERATOR.Slash:\n case OPERATOR.Equal:\n ++index;\n break;\n\n case OPERATOR.LessThan:\n case OPERATOR.GreaterThan:\n ++index;\n if (source[index] === OPERATOR.Equal) {\n // OPERATOR.LessThanEqual (<=) or\n // OPERATOR.GreaterThanEqual (>=)\n ++index;\n }\n break;\n\n case '!':\n if (source[start + 1] === OPERATOR.Equal) {\n // OPERATOR.NotEqual (!=)\n index += 2;\n }\n break;\n\n default:\n break;\n }\n if (index === start) {\n return null;\n }\n const type = TOKEN.Operator;\n const end = index;\n const op = source.slice(start, end);\n const error = null;\n return { type, op, start, end, error };\n };\n\n const scanNumericLiteral = () => {\n const start = index;\n while (index < length) {\n const cp = source.charCodeAt(index);\n if (!isDigit(cp)) {\n break;\n }\n ++index;\n }\n if (index <= start) {\n return null;\n }\n const dot = source[index];\n if (dot === '.') {\n ++index;\n while (index < length) {\n const cp = source.charCodeAt(index);\n if (!isDigit(cp)) {\n break;\n }\n ++index;\n }\n }\n const exp = source[index];\n if (exp === 'e' || exp === 'E') {\n ++index;\n const sign = source[index];\n if (sign === '+' || sign === '-') {\n ++index;\n }\n const marker = index;\n while (index < length) {\n const cp = source.charCodeAt(index);\n if (!isDigit(cp)) {\n break;\n }\n ++index;\n }\n if (index <= marker) {\n const type = TOKEN.Number;\n const end = index;\n const error = t`Missing exponent`;\n return { type, start, end, error };\n }\n }\n const type = TOKEN.Number;\n const end = index;\n const error = null;\n return { type, start, end, error };\n };\n\n const scanStringLiteral = () => {\n const start = index;\n const quote = source[start];\n if (quote !== \"'\" && quote !== '\"') {\n return null;\n }\n ++index;\n let value = '';\n while (index < length) {\n const ch = source[index++];\n if (ch === quote) {\n break;\n } else if (ch === '\\\\') {\n const seq = source[index++];\n if (seq) {\n switch (seq) {\n case 'b':\n value += '\\b';\n break;\n case 'f':\n value += '\\f';\n break;\n case 'n':\n value += '\\n';\n break;\n case 'r':\n value += '\\r';\n break;\n case 't':\n value += '\\t';\n break;\n case 'v':\n value += '\\x0b';\n break;\n default:\n value += seq;\n break;\n }\n }\n } else {\n value += ch;\n }\n }\n const type = TOKEN.String;\n const end = index;\n const terminated = quote === source[end - 1];\n const error = terminated ? null : t`Missing closing quotes`;\n return { type, value, start, end, error };\n };\n\n const scanBracketIdentifier = () => {\n const start = index;\n const bracket = source[start];\n if (bracket !== '[') {\n return null;\n }\n ++index;\n while (index < length) {\n const ch = source[index++];\n if (ch === ']') {\n break;\n } else if (ch === '[') {\n const type = TOKEN.Identifier;\n const end = index;\n const error = t`Bracket identifier in another bracket identifier`;\n return { type, start, end, error };\n } else if (ch === '\\\\') {\n // ignore the next char, even if it's [ or ]\n index++;\n }\n }\n const type = TOKEN.Identifier;\n const end = index;\n const terminated = source[end - 1] === ']';\n const error = terminated ? null : t`Missing a closing bracket`;\n return { type, start, end, error };\n };\n\n const isIdentifierStart = (cp) => isAlpha(cp) || cp === 0x5f; // underscore;\n\n const isIdentifierChar = (cp) =>\n isAlpha(cp) ||\n isDigit(cp) ||\n cp === 0x2e || // dot\n cp === 0x5f; // underscore\n\n const scanIdentifier = () => {\n const start = index;\n const initial = source.charCodeAt(start);\n if (!isIdentifierStart(initial)) {\n return null;\n }\n\n while (index < length) {\n const cp = source.charCodeAt(index);\n if (!isIdentifierChar(cp)) {\n break;\n }\n ++index;\n }\n const end = index;\n if (index === start) {\n return null;\n }\n const id = source.slice(start, end).toLowerCase();\n if (id === OPERATOR.Not || id === OPERATOR.And || id === OPERATOR.Or) {\n const type = TOKEN.Operator;\n const op = id;\n const error = null;\n return { type, op, start, end, error };\n }\n const type = TOKEN.Identifier;\n const error = null;\n return { type, start, end, error };\n };\n\n const main = () => {\n const tokens = [],\n errors = [];\n while (index < length) {\n skipWhitespaces();\n let token = scanOperator();\n if (!token) {\n token = scanNumericLiteral();\n }\n if (!token) {\n token = scanStringLiteral();\n }\n if (!token) {\n token = scanIdentifier();\n }\n if (!token) {\n token = scanBracketIdentifier();\n }\n if (token) {\n const { error, ...t } = token;\n tokens.push(t);\n if (error) {\n const message = error;\n const pos = t.start;\n errors.push({ message, pos });\n }\n } else {\n const char = source[index];\n if (!char) {\n break;\n }\n const pos = index;\n if (char === ']') {\n const prev = tokens[tokens.length - 1];\n const ref =\n prev && prev.type === TOKEN.Identifier ? source.slice(prev.start, prev.end) : null;\n const message = ref\n ? t`Missing an opening bracket for ${ref}`\n : t`Missing an opening bracket`;\n errors.push({ message, pos });\n } else {\n const message = t`Invalid character: ${char}`;\n errors.push({ message, pos });\n }\n ++index;\n }\n }\n return { tokens, errors };\n };\n\n return main();\n}\n","// 自定义列函数 tips\n\nexport interface ParameterType {\n key: string;\n explain: string;\n}\n\nexport interface FunctionInfoType {\n tip: string;\n name: string;\n desc: string;\n case: string;\n parameter: ParameterType[];\n}\nexport interface FunctionsType {\n [name: string]: FunctionInfoType;\n}\n\nexport const functions: FunctionsType = {\n abs: {\n tip: 'abs(列)',\n name: 'abs',\n desc: '返回指定列的绝对值(正值)。',\n case: 'abs([债务])',\n parameter: [{ key: '列', explain: '返回绝对值(正值)的列或数字。' }],\n },\n ceil: {\n tip: 'ceil(列)',\n name: 'ceil',\n desc: '将小数点向上舍入。',\n case: 'ceil([价格])',\n parameter: [{ key: '列', explain: '要四舍五入的栏目或数字。' }],\n },\n coalesce: {\n tip: 'coalesce(值1, 值2, …)',\n name: 'coalesce',\n desc: '按顺序查看每个参数中的值,并为每行返回第一个非空值。',\n case: 'coalesce([评论], [笔记], \"无评论\")',\n parameter: [\n { key: '值1', explain: '要返回的列或值。' },\n { key: '值2', explain: '如果value1为空,如果value2不为空则返回,以此类推。' },\n ],\n },\n\n concat: {\n tip: 'concat(值1, 值2, …)',\n name: 'concat',\n desc: '将两串或多串文字组合在一起。',\n case: 'concat([姓], \", \", [名])',\n parameter: [\n { key: '值1', explain: '栏目或文字开始。' },\n { key: '值2', explain: '这将被添加到value1的末尾,以此类推。' },\n ],\n },\n exp: {\n tip: 'exp(列)',\n name: 'exp',\n desc: '返回欧拉数e,升到所提供数字的幂。',\n case: 'exp([利息月数])',\n parameter: [{ key: '列', explain: '返回指数值的列或数字。' }],\n },\n floor: {\n tip: 'floor(列)',\n name: 'floor',\n desc: '将一个小数点向下舍入。',\n case: 'floor([价格])',\n parameter: [{ key: '列', explain: '要四舍五入的栏目或数字' }],\n },\n length: {\n tip: 'length(文本)',\n name: 'length',\n desc: '返回文本中的字符数。',\n case: 'length([评论])',\n parameter: [{ key: '文本', explain: '你想得到的列或文本的长度' }],\n },\n log: {\n tip: 'log(列)',\n name: 'log',\n desc: '返回数字的基数为10的对数。',\n case: 'log([价值])',\n parameter: [{ key: '列', explain: '要返回自然对数值的列或数字。' }],\n },\n lower: {\n tip: 'lower(文本)',\n name: 'lower',\n desc: '返回全部为小写的文本字符串。',\n case: 'lower([状态])',\n parameter: [{ key: '文本', explain: '含有要转换为小写的值的列。' }],\n },\n ltrim: {\n tip: 'ltrim(文本)',\n name: 'ltrim',\n desc: '从文本字符串中删除前导空格。',\n case: 'ltrim([评论])',\n parameter: [{ key: '文本', explain: '你要修剪的列或文本。' }],\n },\n power: {\n tip: 'power(列, 指数)',\n name: 'power',\n desc: '将一个数字提高到指数值的幂。',\n case: 'power([长度], 2)',\n parameter: [\n { key: '列', explain: '列或数字提高到指数。' },\n { key: '指数', explain: '指数的值。' },\n ],\n },\n replace: {\n tip: 'replace(文本, 找, 更换)',\n name: 'replace',\n desc: '用新文本替换输入文本的一部分。',\n case: 'replace([标题], \"巨大的\", \"巨大的\")',\n parameter: [\n { key: '文本', explain: '要搜索的栏目或文本。' },\n { key: '找', explain: '要查找的文字。' },\n { key: '更换', explain: '用作替代的文本' },\n ],\n },\n round: {\n tip: 'round(列)',\n name: 'tip',\n desc: '将小数点向上或向下舍入到最接近的整数值。',\n case: 'round([溫度])',\n parameter: [{ key: '列', explain: '要四舍五入到最接近的整数的列或数字。' }],\n },\n rtrim: {\n tip: 'rtrim(文本)',\n name: 'rtrim',\n desc: '从文本字符串中删除结尾的空格。',\n case: 'rtrim([评论])',\n parameter: [{ key: '文本', explain: '你要修剪的列或文本。' }],\n },\n sqrt: {\n tip: 'sqrt(列)',\n name: 'sqrt',\n desc: '返回平方根。',\n case: 'sqrt([下端])',\n parameter: [{ key: '列', explain: '返回列或数字的平方根值。' }],\n },\n substring: {\n tip: 'substring(文本, 位置, 长度)',\n name: 'substring',\n desc: '返回提供的文本的一部分。',\n case: 'substring([标题], 0, 10)',\n parameter: [\n { key: '文本', explain: '要返回一部分的列或文本。' },\n { key: '位置', explain: '开始复制字符的位置。' },\n { key: '长度', explain: '要返回的字符数。' },\n ],\n },\n trim: {\n tip: 'trim(文本)',\n name: 'trim',\n desc: '从文本字符串中删除开头和结尾的空格。',\n case: 'trim([评论])',\n parameter: [{ key: '文本', explain: '你要修剪的列或文本。' }],\n },\n upper: {\n tip: 'upper(文本)',\n name: 'upper',\n desc: '返回全部大写的文本。',\n case: 'upper([状态])',\n parameter: [{ key: '文本', explain: '具有要转换为大写字母的值的列。' }],\n },\n};\n\nexport default {\n getFuncInfo(name: string): FunctionInfoType | null {\n if (name in functions) {\n return functions[name];\n }\n return null;\n },\n};\n","import _ from 'underscore';\n\nimport { tokenize, TOKEN, OPERATOR as OP } from './tokenizer';\nimport { functions } from '../../../../sql-formula';\nimport { MetaData_ColumnsType } from '../../../../../store/metabase/types';\n\nimport { ListProps } from '../dialog/select-list';\n\nexport enum OptionsTypeEnum {\n FUNCTION = 'function',\n FIELD = 'field',\n OPERATOR = 'operator',\n OTHER = 'other',\n}\n\nexport enum SelectPopupTypeEnum {\n FUNCTION_DESC = 'function_desc', // 弹函数描述提示框\n SELECT_LIST = 'select_list', // 弹select下拉框\n EMPTY = 'empty', // 不弹框\n}\n\ntype SelectPopup = {\n type: SelectPopupTypeEnum.SELECT_LIST;\n data: ListProps[];\n};\n\ntype FunctionPopup = {\n type: SelectPopupTypeEnum.FUNCTION_DESC;\n functionName: string;\n};\n\ntype VoidPopup = {\n type: SelectPopupTypeEnum.EMPTY;\n};\n\nexport type ChoosePopupResultType = SelectPopup | FunctionPopup | VoidPopup;\n\ninterface ChoosePopupType {\n source: string;\n targetOffset: number;\n fields: MetaData_ColumnsType[];\n}\n\nconst Operator = ['*', '+', '-', '/'];\n\nclass Suggest {\n /**\n * 主要是看光标前面是什么\n * 1、主动识别的有\n * 1)字段\n * ① 光标在[]中间 筛选只能在表字段列表筛选 如果没有匹配 则不显示弹框\n * ② 光标在]后面 显示运算符\n * ③ 光标在[前面 不用理\n * 2)字符串\n * ① 光标在字符串中间 筛选 函数、表字段\n * ② 光标在字符串后面 如果有匹配同上面① 如果没匹配 则不显示弹框\n * ③ 光标在字符串前面 不用理\n * 3)函数\n * ① 点函数名 筛选 函数、表字段\n * ② 函数括号里面 如果光标前面是(,或者后面是)提示函数详情\n * ③ 在)后面,显示运算符\n * ④ 在函数名前面 不用理会\n * 4)括号\n * ① 光标在(后面 显示所有函数、表字段\n * ① 光标在)后面 显示运算符弹框\n * ② 光标在(前面 或者在)前面 都不用理会\n * 5)运算符\n * ① 光标在前面显示运算符弹框\n * ② 光标在后面显示所有函数、表字段\n * 6)起点\n * ① 显示所有函数、表字段\n *\n * 2、不识别的有\n * 1)\"aaa\" 双引号字符串里面的 都不提示\n * 2)1234 数字里面\n * 3)前面包含特殊符号 ! @ ...\n *\n */\n // [ID] + power([ID], 2) * ([ID] - [ID]) + 123 + aaa\n choosePopup({ source, targetOffset, fields }: ChoosePopupType): ChoosePopupResultType {\n const partialSource = source.slice(0, targetOffset);\n // matchPrefix 只匹配 字符串 如:字段[id]、函数abs、字符串 aaa 其他都返回null,如果字符串外面“有双引号” 也是null\n const matchPrefix = partialMatch(partialSource);\n const _fields = fields.map((v) => v.name);\n\n // ① 没有匹配到 或者匹配到字段的\n if (!matchPrefix || _.last(matchPrefix) === ']') {\n const functionDisplayName = enclosingFunction(partialSource);\n // 匹配到在函数里面\n if (functionDisplayName) {\n return {\n type: SelectPopupTypeEnum.FUNCTION_DESC,\n functionName: functionDisplayName,\n };\n }\n\n // 匹配到是字段后面\n if (matchPrefix && _.last(matchPrefix) === ']') {\n return {\n type: SelectPopupTypeEnum.SELECT_LIST,\n data: [{ name: '运算符', type: OptionsTypeEnum.OPERATOR, list: Operator }],\n };\n }\n // 没有匹配到\n if (!matchPrefix) {\n let _partialSource = partialSource.replace(/\\s/g, '');\n let prevStr = _partialSource.substr(-1);\n if (_partialSource.length && !~Operator.indexOf(prevStr)) {\n return {\n type: SelectPopupTypeEnum.SELECT_LIST,\n data: [{ name: '运算符', type: OptionsTypeEnum.OPERATOR, list: Operator }],\n };\n } else {\n return {\n type: SelectPopupTypeEnum.SELECT_LIST,\n data: [\n { name: '字段', type: OptionsTypeEnum.FIELD, list: _fields },\n { name: 'FUNCTIONS', type: OptionsTypeEnum.FUNCTION, list: Object.keys(functions) },\n { name: '其他', type: OptionsTypeEnum.OTHER, list: ['('] },\n ],\n };\n }\n }\n }\n\n let fieldList = _fields.filter((v) => v.includes(matchPrefix));\n let funcList = Object.keys(functions).filter((v) => v.includes(matchPrefix));\n\n // ② 匹配到前面是字符串\n if (_.first(matchPrefix) !== '[') {\n let data = [];\n fieldList.length && data.push({ name: '字段', type: OptionsTypeEnum.FIELD, list: fieldList });\n funcList.length &&\n data.push({ name: 'FUNCTIONS', type: OptionsTypeEnum.FUNCTION, list: funcList });\n if (data.length) {\n return {\n type: SelectPopupTypeEnum.SELECT_LIST,\n data,\n };\n }\n }\n\n fieldList = _fields.filter((v) => v.includes(matchPrefix.substr(1)));\n // ③ 匹配到前面是字段\n if (_.first(matchPrefix) === '[') {\n if (fieldList.length) {\n return {\n type: SelectPopupTypeEnum.SELECT_LIST,\n data: [{ name: '字段', type: OptionsTypeEnum.FIELD, list: fieldList }],\n };\n }\n }\n\n return { type: SelectPopupTypeEnum.EMPTY };\n }\n}\n\nexport default new Suggest();\n\nexport function partialMatch(expression: string) {\n const { tokens } = tokenize(expression);\n const lastToken = _.last(tokens);\n if (lastToken && lastToken.type === TOKEN.Identifier) {\n if (lastToken.end === expression.length) {\n return expression.slice(lastToken.start, lastToken.end);\n }\n }\n\n return null;\n}\n\nexport function enclosingFunction(expression: string) {\n const { tokens } = tokenize(expression);\n\n const isOpen = (t: any) => t.op === OP.OpenParenthesis;\n const isClose = (t: any) => t.op === OP.CloseParenthesis;\n\n let parenCount = 0;\n for (let i = tokens.length - 1; i > 0; --i) {\n const token = tokens[i];\n if (isClose(token)) {\n --parenCount;\n } else if (isOpen(token)) {\n ++parenCount;\n if (parenCount === 1) {\n const prev = tokens[i - 1];\n if (prev.type === TOKEN.Identifier) {\n return expression.slice(prev.start, prev.end);\n }\n }\n }\n }\n\n return null;\n}\n","// @ts-nocheck\nexport const DISPLAY_QUOTES = {\n identifierQuoteDefault: '',\n literalQuoteDefault: '',\n};\n\nexport const EDITOR_QUOTES = {\n // specifies where different quoting is used:\n characters: {\n '[': 'identifier',\n \"'\": 'literal',\n '\"': 'literal',\n },\n // specifies the default quoting style:\n literalQuoteDefault: '\"',\n identifierQuoteDefault: '[',\n // always quote identifiers even if they have non-word characters or conflict with reserved words\n identifierAlwaysQuoted: true,\n};\n\n// export const EDITOR_QUOTES = {\n// characters: {\n// \"'\": \"literal\",\n// '\"': \"identifier\",\n// },\n// literalQuoteDefault: \"'\",\n// identifierQuoteDefault: '\"',\n// identifierAlwaysQuoted: false,\n// };\n\nexport const EDITOR_FK_SYMBOLS = {\n // specifies which symbols can be used to delimit foreign/joined fields\n symbols: ['.', ' → '],\n // specifies the default/canonical symbol\n default: ' → ',\n};\n\n// copied relevant parts from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence\nexport const OPERATOR_PRECEDENCE = {\n not: 17,\n '*': 15,\n '/': 15,\n '+': 14,\n '-': 14,\n and: 6,\n or: 5,\n};\n\nexport const EXPRESSION_TYPES = ['expression', 'aggregation', 'boolean', 'string', 'number'];\n\nexport const EXPRESSION_SUBTYPES = {\n // can't currently add \"boolean\" as a subtype of expression due to conflict between segments and fields\n expression: new Set(['string', 'number']),\n};\n\nexport const isExpressionType = (typeA, typeB) =>\n typeA === typeB || (EXPRESSION_SUBTYPES[typeB] && EXPRESSION_SUBTYPES[typeB].has(typeA)) || false;\n\nexport function getFunctionArgType(clause, index) {\n return clause.multiple ? clause.args[0] : clause.args[index];\n}\n\nexport const MBQL_CLAUSES = {\n // aggregation functions\n count: { displayName: `Count`, type: 'aggregation', args: [] },\n 'cum-count': {\n displayName: `CumulativeCount`,\n type: 'aggregation',\n args: [],\n },\n sum: { displayName: `Sum`, type: 'aggregation', args: ['number'] },\n 'cum-sum': {\n displayName: `CumulativeSum`,\n type: 'aggregation',\n args: ['number'],\n },\n distinct: { displayName: `Distinct`, type: 'aggregation', args: ['number'] },\n stddev: {\n displayName: `StandardDeviation`,\n type: 'aggregation',\n args: ['number'],\n requiresFeature: 'standard-deviation-aggregations',\n },\n avg: { displayName: `Average`, type: 'aggregation', args: ['number'] },\n min: { displayName: `Min`, type: 'aggregation', args: ['number'] },\n max: { displayName: `Max`, type: 'aggregation', args: ['number'] },\n share: { displayName: `Share`, type: 'aggregation', args: ['boolean'] },\n 'count-where': {\n displayName: `CountIf`,\n type: 'aggregation',\n args: ['boolean'],\n },\n 'sum-where': {\n displayName: `SumIf`,\n type: 'aggregation',\n args: ['number', 'boolean'],\n },\n var: {\n displayName: `Variance`,\n type: 'aggregation',\n args: ['number'],\n requiresFeature: 'standard-deviation-aggregations',\n },\n median: {\n displayName: `Median`,\n type: 'aggregation',\n args: ['number'],\n requiresFeature: 'percentile-aggregations',\n },\n percentile: {\n displayName: `Percentile`,\n type: 'aggregation',\n args: ['number', 'number'],\n requiresFeature: 'percentile-aggregations',\n },\n // string functions\n lower: { displayName: `lower`, type: 'string', args: ['string'] },\n upper: { displayName: `upper`, type: 'string', args: ['string'] },\n substring: {\n displayName: `substring`,\n type: 'string',\n args: ['string', 'number', 'number'],\n },\n 'regex-match-first': {\n displayName: `regexextract`,\n type: 'string',\n args: ['string', 'string'],\n requiresFeature: 'regex',\n },\n concat: {\n displayName: `concat`,\n type: 'string',\n args: ['expression'],\n multiple: true,\n },\n replace: {\n displayName: `replace`,\n type: 'string',\n args: ['string', 'string', 'string'],\n },\n length: { displayName: `length`, type: 'number', args: ['string'] },\n trim: { displayName: `trim`, type: 'string', args: ['string'] },\n rtrim: { displayName: `rtrim`, type: 'string', args: ['string'] },\n ltrim: { displayName: `ltrim`, type: 'string', args: ['string'] },\n // numeric functions\n abs: {\n displayName: `abs`,\n type: 'number',\n args: ['number'],\n requiresFeature: 'expressions',\n },\n floor: {\n displayName: `floor`,\n type: 'number',\n args: ['number'],\n requiresFeature: 'expressions',\n },\n ceil: {\n displayName: `ceil`,\n type: 'number',\n args: ['number'],\n requiresFeature: 'expressions',\n },\n round: {\n displayName: `round`,\n type: 'number',\n args: ['number'],\n requiresFeature: 'expressions',\n },\n sqrt: {\n displayName: `sqrt`,\n type: 'number',\n args: ['number'],\n requiresFeature: 'advanced-math-expressions',\n },\n power: {\n displayName: `power`,\n type: 'number',\n args: ['number', 'number'],\n requiresFeature: 'advanced-math-expressions',\n },\n log: {\n displayName: `log`,\n type: 'number',\n args: ['number'],\n requiresFeature: 'advanced-math-expressions',\n },\n exp: {\n displayName: `exp`,\n type: 'number',\n args: ['number'],\n requiresFeature: 'advanced-math-expressions',\n },\n // boolean functions\n contains: {\n displayName: `contains`,\n type: 'boolean',\n args: ['string', 'string'],\n hasOptions: true,\n },\n 'starts-with': {\n displayName: `startsWith`,\n type: 'boolean',\n args: ['string', 'string'],\n hasOptions: true,\n },\n 'ends-with': {\n displayName: `endsWith`,\n type: 'boolean',\n args: ['string', 'string'],\n hasOptions: true,\n },\n between: {\n displayName: `between`,\n type: 'boolean',\n args: ['expression', 'expression', 'expression'],\n },\n 'time-interval': {\n displayName: `interval`,\n type: 'boolean',\n args: ['expression', 'number', 'string'],\n },\n 'is-null': {\n displayName: `isnull`,\n type: 'boolean',\n args: ['expression'],\n },\n 'is-empty': {\n displayName: `isempty`,\n type: 'boolean',\n args: ['expression'],\n },\n // other expression functions\n coalesce: {\n displayName: `coalesce`,\n type: 'expression',\n args: ['expression', 'expression'],\n multiple: true,\n },\n case: {\n displayName: `case`,\n type: 'expression',\n args: ['expression', 'expression'], // ideally we'd alternate boolean/expression\n multiple: true,\n },\n // boolean operators\n and: { displayName: `AND`, type: 'boolean', args: ['boolean', 'boolean'] },\n or: { displayName: `OR`, type: 'boolean', args: ['boolean', 'boolean'] },\n not: { displayName: `NOT`, type: 'boolean', args: ['boolean'] },\n // numeric operators\n '*': {\n displayName: '*',\n tokenName: 'Multi',\n type: 'number',\n args: ['number', 'number'],\n },\n '/': {\n displayName: '/',\n tokenName: 'Div',\n type: 'number',\n args: ['number', 'number'],\n },\n '-': {\n displayName: '-',\n tokenName: 'Minus',\n type: 'number',\n args: ['number', 'number'],\n },\n '+': {\n displayName: '+',\n tokenName: 'Plus',\n type: 'number',\n args: ['number', 'number'],\n },\n // comparison operators\n '!=': {\n displayName: '!=',\n tokenName: 'NotEqual',\n type: 'boolean',\n args: ['expression', 'expression'],\n },\n '<=': {\n displayName: '<=',\n tokenName: 'LessThanEqual',\n type: 'boolean',\n args: ['expression', 'expression'],\n },\n '>=': {\n displayName: '>=',\n tokenName: 'GreaterThanEqual',\n type: 'boolean',\n args: ['expression', 'expression'],\n },\n '<': {\n displayName: '<',\n tokenName: 'LessThan',\n type: 'boolean',\n args: ['expression', 'expression'],\n },\n '>': {\n displayName: '>',\n tokenName: 'GreaterThan',\n type: 'boolean',\n args: ['expression', 'expression'],\n },\n '=': {\n displayName: '=',\n tokenName: 'Equal',\n type: 'boolean',\n args: ['expression', 'expression'],\n },\n};\n\nfor (const [name, clause] of Object.entries(MBQL_CLAUSES)) {\n if (clause.name !== undefined && clause.name !== name) {\n console.warn('Mismatched name for MBQL_CLAUSES ' + name);\n }\n clause.name = name;\n}\n\n// Reserved token names\nconst MBQL_TO_EXPRESSION_NAME = new Map(\n Object.entries(MBQL_CLAUSES).map(([mbql, { displayName }]) => [mbql, displayName]),\n);\nconst EXPRESSION_TO_MBQL_NAME = new Map(\n Object.entries(MBQL_CLAUSES).map(([mbql, { displayName }]) => [\n // case-insensitive\n displayName.toLowerCase(),\n mbql,\n ]),\n);\nexport function getExpressionName(mbqlName) {\n return MBQL_TO_EXPRESSION_NAME.get(mbqlName);\n}\nexport function getMBQLName(expressionName) {\n // case-insensitive\n return EXPRESSION_TO_MBQL_NAME.get(expressionName.toLowerCase());\n}\n\nexport const AGGREGATION_FUNCTIONS = new Set([\n // count-where/sum-where must come before count/sum\n 'count-where',\n 'sum-where',\n 'count',\n 'cum-count',\n 'sum',\n 'cum-sum',\n 'distinct',\n 'stddev',\n 'avg',\n 'min',\n 'max',\n 'share',\n 'var',\n 'median',\n 'percentile',\n]);\n\nexport const EXPRESSION_FUNCTIONS = new Set([\n // string\n 'lower',\n 'upper',\n 'substring',\n 'regex-match-first',\n 'concat',\n 'replace',\n 'trim',\n 'rtrim',\n 'ltrim',\n 'length',\n // number\n 'abs',\n 'floor',\n 'ceil',\n 'round',\n 'sqrt',\n 'power',\n 'log',\n 'exp',\n // boolean\n 'contains',\n 'ends-with',\n 'starts-with',\n 'between',\n 'time-interval',\n 'is-null',\n 'is-empty',\n // other\n 'coalesce',\n]);\n\nexport const EXPRESSION_OPERATORS = new Set(['+', '-', '*', '/']);\nexport const FILTER_OPERATORS = new Set(['!=', '<=', '>=', '<', '>', '=']);\n\nexport const BOOLEAN_UNARY_OPERATORS = new Set(['not']);\nexport const LOGICAL_AND_OPERATOR = new Set(['and']);\nexport const LOGICAL_OR_OPERATOR = new Set(['or']);\n\nexport const FUNCTIONS = new Set([...EXPRESSION_FUNCTIONS, ...AGGREGATION_FUNCTIONS]);\n\nexport const OPERATORS = new Set([\n ...EXPRESSION_OPERATORS,\n ...FILTER_OPERATORS,\n ...BOOLEAN_UNARY_OPERATORS,\n ...LOGICAL_AND_OPERATOR,\n ...LOGICAL_OR_OPERATOR,\n]);\n\n// \"standard\" filters, can be edited using UI\nexport const STANDARD_FILTERS = new Set([\n '!=',\n '<=',\n '>=',\n '<',\n '>',\n '=',\n 'contains',\n 'does-not-contain',\n 'ends-with',\n 'starts-with',\n 'between',\n 'time-interval',\n 'is-null',\n 'not-null',\n 'is-empty',\n 'not-empty',\n 'inside',\n]);\n\n// \"standard\" aggregations, can be edited using UI\nexport const STANDARD_AGGREGATIONS = new Set([\n 'count',\n 'cum-count',\n 'sum',\n 'cum-sum',\n 'distinct',\n 'stddev',\n 'avg',\n 'min',\n 'max',\n]);\n","/* eslint-disable react/prop-types */\nimport React from 'react';\n\nimport './tokenized-expression.less';\n\nimport cx from 'classnames';\n\nimport { tokenize, TOKEN, OPERATOR } from './expressions/tokenizer';\nimport { getMBQLName, FUNCTIONS } from './config';\n\ninterface TokenType {\n type: number;\n op: string;\n}\n\nfunction mapTokenType(token: TokenType) {\n const { type, op } = token;\n switch (type) {\n case TOKEN.Operator:\n return op === OPERATOR.OpenParenthesis\n ? 'open-paren'\n : op === OPERATOR.CloseParenthesis\n ? 'close-paren'\n : 'operator';\n case TOKEN.Number:\n return 'number-literal';\n case TOKEN.String:\n return 'string-literal';\n case TOKEN.Identifier:\n // FIXME metric vs dimension vs segment\n return 'dimension';\n default:\n return 'token';\n }\n}\n\nfunction createSpans(source: string) {\n const isFunction = (name: string) =>\n name.toLowerCase() === 'case' || FUNCTIONS.has(getMBQLName(name) as string);\n const { tokens } = tokenize(source);\n let lastPos = 0;\n const spans = [];\n tokens.forEach((token) => {\n const str = source.substring(lastPos, token.start);\n if (str.length > 0) {\n spans.push({\n kind: 'whitespace',\n text: str,\n });\n }\n const text = source.substring(token.start, token.end);\n const kind = isFunction(text) ? 'function-name' : mapTokenType(token);\n spans.push({ kind, text });\n lastPos = token.end;\n });\n const tail = source.substring(lastPos);\n if (tail.length > 0) {\n spans.push({\n kind: 'whitespace',\n text: tail,\n });\n }\n return spans;\n}\n\ninterface PropsType {\n startRule: string;\n source: string;\n}\nexport default class TokenizedExpression extends React.Component<PropsType> {\n render() {\n const { source, startRule } = this.props;\n const spans = createSpans(source);\n return (\n <span className={cx(`Expression-node`, `Expression-${startRule}`)}>\n {spans.map(({ kind, text }, index) => (\n <span key={index} className={cx(`Expression-node`, `Expression-${kind}`)}>\n {text}\n </span>\n ))}\n </span>\n );\n }\n}\n","import React, { forwardRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { getCaretPosition, saveSelection, setCaretPosition } from '../../../../utils/selection';\n\nimport TokenizedExpression from './tokenized-expression';\n\ninterface PropsType {\n forwardedRef: any;\n style: object;\n className: string;\n value: string;\n onFocus: (e?: any) => any;\n onBlur: (e?: any) => any;\n onChange: (e?: any) => any;\n onKeyDown: (e?: any) => any;\n onClick: (e?: any) => any;\n}\n\nclass TokenizedInput extends React.Component<PropsType> {\n static defaultProps = {\n style: {},\n };\n\n componentDidMount() {\n (ReactDOM.findDOMNode(this) as HTMLDivElement).focus();\n this.componentDidUpdate();\n document.addEventListener('selectionchange', this.onSelectionChange, false);\n }\n\n componentDidUpdate() {\n const inputNode = ReactDOM.findDOMNode(this);\n const restore = saveSelection(inputNode);\n\n (inputNode as HTMLDivElement).innerHTML = ReactDOMServer.renderToStaticMarkup(\n <TokenizedExpression source={this.props.value || ''} startRule={'expression'} />,\n );\n if (document.activeElement === inputNode) {\n restore();\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('selectionchange', this.onSelectionChange, false);\n }\n\n onSelectionChange = (e: any) => {\n (ReactDOM.findDOMNode(this) as HTMLInputElement).selectionStart = getCaretPosition(\n ReactDOM.findDOMNode(this),\n );\n };\n\n setValue(value: string) {\n (ReactDOM.findDOMNode(this) as HTMLInputElement).value = value;\n this.props.onChange({ target: { value } });\n }\n\n onInput = (e: any) => {\n this.setValue(e.target.textContent);\n };\n\n render() {\n const { className, onFocus, onBlur, onKeyDown, onClick, style, forwardedRef } = this.props;\n return (\n <div\n ref={forwardedRef}\n className={className}\n style={{ ...style }}\n contentEditable\n spellCheck={false}\n onInput={this.onInput}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onClick={onClick}\n />\n );\n }\n}\n\nexport default forwardRef(function TokenizedInputWithForwardedRef(\n props: Omit<PropsType, 'forwardedRef'> & { ref: any },\n ref,\n) {\n return <TokenizedInput forwardedRef={ref} {...props} />;\n});\n","// 获取元素translate x y值\nexport const getComputedTranslate = (obj: any): { x: number; y: number } => {\n if (!window.getComputedStyle) return { x: 0, y: 0 };\n var style: any = getComputedStyle(obj),\n transform = style.transform || style.webkitTransform || style.mozTransform;\n var mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) {\n return {\n x: parseFloat(mat[1].split(', ')[12]),\n y: parseFloat(mat[1].split(', ')[13]),\n };\n }\n mat = transform.match(/^matrix\\((.+)\\)$/);\n if (mat) {\n return {\n x: parseFloat(mat[1].split(', ')[4]),\n y: parseFloat(mat[1].split(', ')[5]),\n };\n }\n return { x: 0, y: 0 };\n};\n\n// 获取元素距离浏览器顶部的距离\nexport const getElementTop = (elem: HTMLElement): number => {\n let elemTop: number = elem.offsetTop;\n let pElem: any = elem.offsetParent;\n while (pElem != null) {\n elemTop += pElem.offsetTop;\n if (pElem.style.transform) {\n elemTop += getComputedTranslate(pElem).y;\n }\n pElem = pElem.offsetParent;\n }\n return elemTop;\n};\n\n// 获取元素距离浏览器顶部的距离\nexport const getElementLeft = (elem: HTMLElement): number => {\n let elemLeft = elem.offsetLeft;\n let pElem: any = elem.offsetParent;\n while (pElem != null) {\n elemLeft += pElem.offsetLeft;\n if (pElem.style.transform) {\n elemLeft += getComputedTranslate(pElem).x;\n }\n pElem = pElem.offsetParent;\n }\n return elemLeft;\n};\n\nexport const getScrollTop = () => {\n return document.documentElement.scrollTop;\n};\n\n// 浏览器可视宽高\nexport const getWindowSize = () => {\n return {\n width: document.body.clientWidth,\n height: document.body.clientHeight,\n };\n};\n","// 节流\nexport const throttle = (fn: Function, wait: number = 200): Function => {\n if (typeof fn !== 'function') return () => void 0;\n let start = Date.now();\n let timer: number;\n return function () {\n let diff = wait - (Date.now() - start);\n clearTimeout(timer);\n\n // @ts-ignore\n let _self = this;\n\n if (diff > 0) {\n timer = window.setTimeout(fn.bind(_self), diff);\n } else {\n fn.apply(_self);\n start = Date.now();\n }\n };\n};\n\n// 防抖\nexport const debounce = (fn: Function, wait: number = 200) => {\n if (typeof fn !== 'function') return () => {};\n let timer: number;\n return function () {\n // @ts-ignore\n let _self = this;\n timer !== null && clearTimeout(timer);\n timer = window.setTimeout(fn.bind(_self), wait);\n };\n};\n\n// 获取屏幕信息\nexport type ScreenType = {\n width: number;\n height: number;\n};\nexport const getScreenInfo = (): ScreenType => {\n let winHeight = 0,\n winWidth = 0;\n if (window.innerHeight) {\n winHeight = window.innerHeight;\n winWidth = window.innerWidth;\n } else if (document.documentElement && document.documentElement.clientHeight) {\n winHeight = document.documentElement.clientHeight;\n winWidth = document.documentElement.clientWidth;\n }\n return {\n width: winWidth,\n height: winHeight,\n };\n};\n\nexport const fullScreen = () => {\n var element: any = document.documentElement;\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n }\n};\n\n//退出全屏\nexport const exitFullscreen = () => {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n // @ts-ignore\n } else if (document.msExitFullscreen) {\n // @ts-ignore\n document.msExitFullscreen();\n // @ts-ignore\n } else if (document.mozCancelFullScreen) {\n // @ts-ignore\n document.mozCancelFullScreen();\n // @ts-ignore\n } else if (document.webkitExitFullscreen) {\n // @ts-ignore\n document.webkitExitFullscreen();\n }\n};\n\nexport const getUrlParams = (url = location.href) => {\n let params: any = {};\n let index = url.lastIndexOf('?');\n if (~index) {\n url\n .slice(index + 1)\n .split('&')\n .forEach((v) => {\n let item = v.split('=');\n params[item[0]] = item[1];\n });\n }\n return params;\n};\n\nexport const sleep = (wait: number = 0) => {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(true);\n }, wait);\n });\n};\n\nexport const flatArray = (arr: any[]): any[] => {\n return [].concat.apply([], arr);\n};\nexport const mobx2Object = (mobxObj: any, defaultType: any = {}) => {\n let data;\n try {\n data = JSON.parse(JSON.stringify(mobxObj));\n } catch (e) {\n data = defaultType;\n console.log(`⭐️ ~ mobx2Object error`, e);\n }\n return data;\n};\n\n// 生成随机key\nexport const getKey = (length: number = 8) => {\n return Number(Math.random().toString().substr(3, length) + Date.now()).toString(36);\n};\n\n// 默认字体为微软雅黑 Microsoft YaHei,字体大小为 14px\nexport const getTextWidth = (text: string, font = '14px Microsoft YaHei') => {\n const canvas = document.createElement('canvas');\n let context: any = canvas.getContext('2d');\n context.font = font;\n let textmetrics = context.measureText(text);\n return textmetrics.width;\n};\n\nexport const isNull = (str: any) => {\n if (str === null || str === undefined || str.length === 0) {\n return true;\n }\n return false;\n};\n\n/**\n * 切换主题\n * @param {string} theme * 主题\n * @param {function} successFn 切换成功的回调\n * @param {function} errorFn 切换失败的回调\n */\nexport const changeTheme = (theme: string, successFn?: Function, errorFn?: Function) => {\n let curLink: any = document.querySelector('link[id=' + theme + ']');\n if (curLink === null) return false;\n try {\n curLink.disabled = !1;\n setTimeout(() => {\n let allLink = document.querySelectorAll('link[id]');\n [].slice.call(allLink).forEach((v: any) => {\n v.id !== theme && (v.disabled = !0);\n });\n }, 100);\n typeof successFn === 'function' && successFn?.();\n } catch (e) {\n typeof errorFn === 'function' && errorFn?.();\n }\n};\n","import { throttle, debounce } from './helper';\n\ntype EventStackType = {\n [propName: number]: Function;\n};\n\ninterface ResetEvent {\n eventStack: EventStackType;\n funcId: number;\n\n addEvent(a: Function, c: any): number;\n removeEvent(a: number): void;\n reset(): void;\n}\n\nclass WinResetEvent implements ResetEvent {\n eventStack: EventStackType = {};\n funcId: number = 0;\n\n constructor() {\n this.reset();\n }\n\n addEvent(fn: Function, context: any = null, delay: number = 200): number {\n this.funcId++;\n this.eventStack[this.funcId] = throttle(fn.bind(context), delay);\n return this.funcId;\n }\n\n removeEvent(funcId: number) {\n delete this.eventStack[funcId];\n }\n\n reset() {\n window.addEventListener('resize', () => {\n Object.values(this.eventStack).forEach((cb) => {\n typeof cb === 'function' && cb();\n });\n });\n }\n}\n\nexport const winResetEvent = new WinResetEvent();\n","import * as React from 'react';\nimport { useRef, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\n\ninterface PropsType {\n didUpdate?: Function\n getContainer: Function\n children?: React.ReactNode\n}\n\nconst Portal = forwardRef((props: PropsType, ref) => {\n const { didUpdate, getContainer, children=null } = props;\n\n const containerRef: any = useRef();\n\n // Ref return nothing, only for wrapper check exist\n useImperativeHandle(ref, () => ({}));\n\n // Create container in client side with sync to avoid useEffect not get ref\n const initRef = useRef(false);\n if (!initRef.current) {\n containerRef.current = getContainer();\n initRef.current = true;\n }\n\n useEffect(() => {\n didUpdate?.(props, containerRef.current);\n });\n\n useEffect(() => {\n return () => {\n containerRef.current?.parentNode?.removeChild(containerRef.current);\n };\n }, []);\n\n return containerRef.current\n ? ReactDOM.createPortal(children, containerRef.current)\n : null;\n});\n\n\nexport default Portal;","import * as React from 'react';\n\nimport { getWindowSize, getScrollTop, getElementLeft, getElementTop } from '../../utils/helper-dom';\nimport { winResetEvent } from '../../utils/event';\nimport Portal from '../../components/Portal';\n\nfunction returnDocument(element?: any): Document {\n if (element) {\n return element.ownerDocument;\n }\n return window.document;\n}\n\nconst outSpacing = 10;\n\nexport function generateTrigger(PortalComponent: any) {\n class Trigger extends React.Component<PropsType> {\n resetId: number = -1; // 监听窗口改变事件id 用于组件销毁的时候清除事件\n\n static defaultProps = {\n visible: false, // 是否显示\n children: null,\n };\n\n ref: any = React.createRef();\n\n constructor(props: PropsType) {\n super(props);\n }\n\n componentDidMount() {\n this.resetId = winResetEvent.addEvent(this.didUpdate, this, 300);\n this.props.container && this.props.container.addEventListener('scroll', this.didUpdate);\n this.bindEvent();\n }\n\n componentWillUnmount() {\n winResetEvent.removeEvent(this.resetId);\n this.props.container && this.props.container.removeEventListener('scroll', this.didUpdate);\n }\n\n bindEvent = () => {\n let that = this;\n returnDocument().body.addEventListener(\n 'click',\n function (e): void | false {\n let ele: any = e.target;\n\n while (ele != null) {\n if (ele === that.props.node) {\n return false;\n }\n ele = ele.parentNode;\n }\n that.closePopup();\n },\n false,\n );\n };\n\n closePopup = () => {\n this.props.visible && this.props.closable && this.props.hideVisible();\n };\n\n attachParent = (popupContainer: HTMLSpanElement) => {\n let mountNode = returnDocument().body;\n mountNode.appendChild(popupContainer);\n };\n\n getCurrentNodePos = () => {\n const { node, container } = this.props;\n return {\n x: getElementLeft(node),\n y: getElementTop(node) - (container?.scrollTop || 0),\n h: node.offsetHeight,\n };\n };\n\n getContainer = () => {\n let pos = this.getCurrentNodePos();\n let { innerSpacing = 10 } = this.props;\n\n const popupContainer: HTMLSpanElement = returnDocument().createElement('span');\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0px';\n popupContainer.style.left = '0px';\n popupContainer.style.transform = `translateX(${pos.x}px) translateY(${\n pos.y + pos.h + innerSpacing\n }px) translateZ(0px)`;\n popupContainer.style.pointerEvents = 'none';\n popupContainer.style.zIndex = '999';\n this.attachParent(popupContainer);\n return popupContainer;\n };\n\n getComponent = () => {\n return (\n <div\n ref={this.ref}\n style={{\n overflowX: 'hidden',\n overflowY: 'auto',\n backgroundColor: '#fff',\n pointerEvents: 'auto',\n transition: 'all 0.3s',\n boxShadow: '0 4px 10px rgba(0,0,0,0.13)',\n borderRadius: 6,\n }}\n onClick={(e) => this.props.closable && e.stopPropagation()}\n >\n {React.cloneElement(this.props.children, {\n didUpdate: this.didUpdate,\n })}\n </div>\n );\n };\n\n didUpdate = (): void | false => {\n if (!this.props.node) return false;\n\n let { innerSpacing = 10 } = this.props;\n let pos = this.getCurrentNodePos();\n let posY = pos.y - getScrollTop();\n if (!this.ref) return false;\n let realHeight = this.ref?.current?.childNodes?.[0]?.offsetHeight || 0;\n if (!realHeight) return false;\n let { height: winH } = getWindowSize();\n let downH = winH - posY - pos.h; // 元素下面可用高度\n\n let maxHeight = 0;\n let topHeight = getScrollTop();\n if (downH >= posY || realHeight <= downH - innerSpacing - outSpacing) {\n // 下面比上面宽敞 或 下面足够放下所有 放下面\n maxHeight = Math.min(realHeight, downH - innerSpacing - outSpacing);\n topHeight += posY + pos.h + innerSpacing;\n } else {\n // 放上面\n maxHeight = Math.min(realHeight, posY - innerSpacing - outSpacing);\n topHeight += posY - innerSpacing - maxHeight;\n }\n this.ref.current.offsetParent.style.transform = `translateX(${pos.x}px) translateY(${topHeight}px) translateZ(0px)`;\n this.ref.current.offsetParent.style.transition = 'all 0.3s';\n this.ref.current.style.cssText += `max-height: ${maxHeight}px`;\n };\n\n render() {\n let portal = null;\n if (this.props.visible) {\n portal = (\n <PortalComponent getContainer={this.getContainer} didUpdate={this.didUpdate}>\n {this.getComponent()}\n </PortalComponent>\n );\n }\n return portal;\n }\n }\n\n return Trigger;\n}\n\nexport default generateTrigger(Portal);\n\ninterface PropsType {\n visible: boolean;\n children: any;\n hideVisible: Function;\n node: any;\n innerSpacing?: number;\n container?: HTMLDivElement;\n closable?: boolean;\n}\n","import './select-list.less';\nimport React from 'react';\n\nimport { OptionsTypeEnum } from '../expressions/suggest';\n\nexport interface ListProps {\n type: OptionsTypeEnum;\n name: string;\n list: string[];\n}\n\nexport interface PropsType {\n data: ListProps[];\n onSelect: (type: OptionsTypeEnum, val: string) => any;\n didUpdate?: Function; // 刷新弹框\n setPopupClosable?: Function;\n}\n\nconst SelectList = ({ data, onSelect }: PropsType) => {\n return (\n <div className='select-list__container'>\n <ul>\n {data.map((v: ListProps, i: number) => {\n return (\n <div key={i}>\n <li className='title'>{v.name}</li>\n {v.list.map((n: string) => {\n return (\n <li className='option' key={n} onClick={() => onSelect(v.type, n)}>\n {n}\n </li>\n );\n })}\n </div>\n );\n })}\n </ul>\n </div>\n );\n};\n\nexport default SelectList;\n","import './function-tip.less';\nimport React from 'react';\n\nimport sqlFormula, { ParameterType, FunctionInfoType } from '../../../../sql-formula';\n\ninterface PropsType {\n funcName: string;\n didUpdate?: Function; // 刷新弹框\n}\n\nconst FunctionTip = ({ funcName }: PropsType) => {\n let data: FunctionInfoType | null = sqlFormula.getFuncInfo(funcName);\n if (!data) return null;\n\n return (\n <div className='function-tip__container'>\n <p className='function-name'>{data.tip}</p>\n <div className='function-desc'>\n <p className='desc'>{data.desc}</p>\n <p className='case'>{data.case}</p>\n </div>\n <div className='funciton-parameter'>\n {data.parameter.map((v: ParameterType, i: number) => {\n return (\n <div key={i}>\n <h4 className='key'>{v.key}</h4>\n <p className='explain'>{v.explain}</p>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default FunctionTip;\n","import React, { useState, useMemo, useRef, useEffect } from 'react';\nimport cx from 'classnames';\n\nimport { setCaretPosition, getSelectionPosition } from '../../../../utils/selection';\nimport {\n KEYCODE_ENTER,\n KEYCODE_ESCAPE,\n KEYCODE_LEFT,\n KEYCODE_UP,\n KEYCODE_RIGHT,\n KEYCODE_DOWN,\n} from './keyboard';\nimport suggest, {\n partialMatch,\n SelectPopupTypeEnum,\n ChoosePopupResultType,\n OptionsTypeEnum,\n} from './expressions/suggest';\nimport { MetaData_ColumnsType } from '../../../../store/metabase/types';\n\nimport TokenizedInput from './tokenizedI-input';\nimport Popup from '../../popup';\nimport SelectList from './dialog/select-list';\nimport FunctionTip from './dialog/function-tip';\n\ninterface PopupType {\n visible: boolean;\n content?: React.ReactElement;\n innerSpacing?: number;\n}\n\nconst ErrorMessage = ({ msg }: { msg: string }) => {\n if (!msg) return null;\n return (\n <div>\n <div className='text-error text-sm mt-2 mb-2'>{msg}</div>\n </div>\n );\n};\n\ninterface PropsType {\n store?: any;\n data: MetaData_ColumnsType[]; // 字段列表\n expression: string; // 公式供回显使用\n onChange: (formula: string) => void;\n popupClosable: boolean;\n setPopupClosable: Function;\n}\n\nconst ExpressionEditor = (props: PropsType) => {\n const { data, expression, setPopupClosable } = props;\n\n const [popup, setPopup] = useState<PopupType>({ visible: false }); // 弹框信息\n const input = useRef<any>(null);\n const [source, setSource] = useState(expression);\n\n const [errorMessage, setErrorMessage] = useState(''); // 报错信息 'Unknown Field: a'\n const [error, setError] = useState<boolean>(false);\n\n const popupContent = useMemo(() => {\n let { visible, content } = popup;\n if (!visible) return null;\n return content;\n }, [popup]);\n\n useEffect(() => {\n _setCaretPosition(source.length, source.length === 0);\n _triggerAutosuggest();\n return () => {\n closePopup();\n };\n }, []);\n\n function closePopup() {\n setPopup({ visible: false });\n setPopupClosable(true);\n }\n\n // 设置关闭位置\n function _setCaretPosition(position: number, autosuggest?: boolean) {\n setCaretPosition(input.current, position);\n if (autosuggest) {\n setTimeout(() => _triggerAutosuggest());\n }\n }\n\n // 根据当前光标位置判断弹出框内容\n function onExpressionChange(source: string): void {\n const inputElement = input.current;\n if (!inputElement) return;\n\n setSource(source);\n closePopup();\n\n const [selectionStart, selectionEnd] = getSelectionPosition(inputElement);\n const hasSelection = selectionStart !== selectionEnd;\n const targetOffset = !hasSelection ? selectionEnd : null;\n if (targetOffset === null) return void 0; // 框选\n setCaretPosition(input.current, selectionStart);\n\n const popupInfo: ChoosePopupResultType = suggest.choosePopup({\n source,\n targetOffset,\n fields: data,\n });\n let content;\n if (popupInfo.type === SelectPopupTypeEnum.FUNCTION_DESC) {\n content = <FunctionTip funcName={popupInfo.functionName} />;\n }\n if (popupInfo.type === SelectPopupTypeEnum.SELECT_LIST) {\n content = (\n <SelectList\n data={popupInfo.data}\n onSelect={(type: OptionsTypeEnum, val) => {\n let value: string = '';\n let len: number = 0;\n let partialSource = source.slice(0, targetOffset);\n let leftoverSource = source.slice(targetOffset);\n const matchPrefix = partialMatch(partialSource);\n if (matchPrefix && !/^\\[.*\\]$/.test(matchPrefix)) {\n partialSource = partialSource.slice(0, -matchPrefix.length);\n }\n\n // 去掉后面空格\n if (/.*\\s$/.test(partialSource)) {\n partialSource = partialSource.slice(0, -1);\n }\n // 去掉前面空格\n if (/^\\s.*/.test(leftoverSource)) {\n leftoverSource = leftoverSource.slice(1);\n }\n\n if (type === OptionsTypeEnum.FUNCTION) {\n value += partialSource + ' ' + val + '()';\n len = value.length - 1;\n }\n if (type === OptionsTypeEnum.OTHER) {\n value += partialSource + ' ' + '()';\n len = value.length - 1;\n }\n if (type === OptionsTypeEnum.FIELD) {\n value += partialSource + ' ' + `[${val}]`;\n len = value.length;\n }\n if (type === OptionsTypeEnum.OPERATOR) {\n value += partialSource + ' ' + val;\n len = value.length;\n }\n\n if (leftoverSource) {\n value += ' ' + leftoverSource;\n }\n setTimeout(() => setCaretPosition(input.current, len));\n\n setSource(value);\n closePopup();\n }}\n />\n );\n }\n if (popupInfo.type === SelectPopupTypeEnum.EMPTY || !content) {\n return void 0;\n }\n\n setPopup({\n visible: true,\n content,\n });\n setPopupClosable(false);\n }\n\n // 键盘点击 方向键 & 回车 & esc\n function onInputKeyDown(e: any) {\n if (e.keyCode === KEYCODE_LEFT || e.keyCode === KEYCODE_RIGHT) {\n setTimeout(() => _triggerAutosuggest());\n return;\n }\n if (e.keyCode === KEYCODE_ESCAPE) {\n e.stopPropagation();\n e.preventDefault();\n closePopup();\n return;\n }\n\n if (e.keyCode === KEYCODE_ENTER) {\n e.preventDefault();\n } else if (e.keyCode === KEYCODE_UP) {\n e.preventDefault();\n } else if (e.keyCode === KEYCODE_DOWN) {\n e.preventDefault();\n }\n }\n\n // TODO 校验公式待完成\n function checkExpression(expression: string): [false, string] | [true] {\n // let _expression = expression.replace(/\\s/g, '');\n return [true];\n }\n\n // 失去焦点 检查语法错误情况,并将表达式传给父级\n function onInputBlur(e: any) {\n if (e.target === document.activeElement) {\n // `Invalid expression`\n return;\n }\n const [pass, errorMessage] = checkExpression(source);\n if (pass) {\n props.onChange(source);\n setErrorMessage('');\n } else {\n // props.onError(errorMessage);\n setErrorMessage(errorMessage as string);\n }\n }\n\n // 计算当前是否弹框,和弹框内容\n function _triggerAutosuggest() {\n onExpressionChange(source);\n }\n\n return (\n <>\n <div className={`mt-2 mb-2 relative`}>\n <div\n className={`input font-bold absolute top-0 left-0`}\n style={{ fontSize: 12, pointerEvents: 'none', borderColor: 'transparent' }}\n >\n =\n </div>\n\n <TokenizedInput\n ref={input}\n className={cx(`input font-bold`, { 'border-error': error })}\n style={{ fontSize: 12, paddingLeft: 26 }}\n value={source}\n onChange={(e: any) => onExpressionChange(e.target.value)}\n onKeyDown={onInputKeyDown}\n onBlur={onInputBlur}\n onFocus={() => setTimeout(() => _triggerAutosuggest())}\n onClick={() => setTimeout(() => _triggerAutosuggest())}\n />\n\n <ErrorMessage msg={errorMessage} />\n </div>\n <Popup\n visible={popup.visible}\n closable={true}\n node={input.current}\n innerSpacing={popup.innerSpacing}\n hideVisible={closePopup}\n >\n {popupContent}\n </Popup>\n </>\n );\n};\n\nexport default ExpressionEditor;\n","import './index.less';\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport cx from 'classnames';\n\nimport { MetaCustom_Item, MetaData_ColumnsType } from '../../../../store/metabase/types';\n\nimport ExpressionEditor from './expression-editor';\n\nconst WIDTH = 480;\ninterface PropsType {\n value: MetaCustom_Item | null;\n data: MetaData_ColumnsType[]; // 表下面可选则的字段列表\n onChange: (record: MetaCustom_Item) => void; // 选中回调事件\n onClose: Function; // 关闭弹框\n popupClosable: boolean;\n setPopupClosable: Function;\n}\n\n// 自定义列\nconst CustomColumn = ({\n value,\n data = [],\n popupClosable,\n setPopupClosable,\n onChange,\n onClose = () => {},\n}: PropsType) => {\n const [name, setName] = useState<string>(value?.name || ''); // 表达式名字\n const [expression, setExpression] = useState<string>(value?.formula || ''); // 表达式\n\n const isUpdate = !!value;\n\n // 提交按钮是否可用\n const usable = useMemo(() => {\n return expression && name;\n }, [expression, name]);\n\n function onOk() {\n typeof onChange === 'function' && onChange({ name, formula: expression });\n }\n\n let buttonText = isUpdate ? '更新' : '完成';\n return (\n <div className={cx(`sqb-CustomColumn--box`)}>\n <div style={{ width: WIDTH }}>\n <div className='p-4'>\n <div\n className={`font-bold uppercase tracking-wider`}\n style={{ fontSize: 12, color: '#949aab' }}\n >\n 字段公式\n </div>\n\n <div>\n <ExpressionEditor\n popupClosable={popupClosable}\n setPopupClosable={setPopupClosable}\n data={data}\n expression={value?.formula || ''}\n onChange={(str: string) => {\n setExpression(str);\n }}\n />\n </div>\n\n <div\n className={`mt-6 font-bold uppercase tracking-wider`}\n style={{ fontSize: 12, color: '#949aab' }}\n >\n 给它一个名字吧\n </div>\n\n <div>\n <input\n type='text'\n value={name}\n className={`input mt-2 mb-2 w-full block`}\n placeholder={'一些超棒的、值得记录的东西'}\n onInput={(e: any) => {\n setName(e.target.value);\n }}\n />\n </div>\n </div>\n <div className={`btns mt-4 p-4`}>\n <div style={{ marginLeft: 'auto' }}>\n <button className={`btn`} onClick={() => onClose()}>\n 取消\n </button>\n <button className={cx(`btn ml-4`, { usable })} disabled={!usable} onClick={onOk}>\n {buttonText}\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default CustomColumn;\n","import React from 'react';\n\ntype IconProps = {\n width?: number;\n height?: number;\n style?: object;\n};\n\nexport const CloseIcon2 = (reset: any) => (\n <svg viewBox='0 0 32 32' {...reset} fill='currentcolor' role='img' aria-label='close icon'>\n <path d='M4 8 L8 4 L16 12 L24 4 L28 8 L20 16 L28 24 L24 28 L16 20 L8 28 L4 24 L12 16 z '></path>\n </svg>\n);\n\nexport const FilterIcon = ({ width = 18, height = 18 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='filter icon'\n >\n <path d='M3.556 4h24.888a3.556 3.556 0 1 1 0 7.111H3.556a3.556 3.556 0 1 1 0-7.111zm4 11.556h16.888a2.222 2.222 0 1 1 0 4.444H7.556a2.222 2.222 0 0 1 0-4.444zM12 24.444h8a2.222 2.222 0 0 1 0 4.445h-8a2.222 2.222 0 0 1 0-4.445z'></path>\n </svg>\n);\n\nexport const SummarizeIcon = ({ width = 18, height = 18 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='sum icon'\n >\n <path d='M3 27.41l1.984 4.422L27.895 32l.04-5.33-17.086-.125 8.296-9.457-.08-3.602L11.25 5.33H27.43V0H5.003L3.08 4.51l10.448 10.9z'></path>\n </svg>\n);\n\nexport const JoinDataIcon = ({ width = 18, height = 18 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='join_left_outer icon'\n >\n <path d='M17.077 7.148A10.285 10.285 0 0 1 21.818 6C27.441 6 32 10.477 32 16s-4.559 10-10.182 10c-2.038 0-3.936-.588-5.528-1.6l.454-.31c.283-.194.555-.4.816-.617a8.842 8.842 0 0 0 4.258 1.083c4.832 0 8.738-3.836 8.738-8.556 0-4.72-3.906-8.556-8.738-8.556a8.865 8.865 0 0 0-3.546.733 10.65 10.65 0 0 0-1.195-1.03zM15.71 24.399A10.268 10.268 0 0 1 10.182 26C4.559 26 0 21.523 0 16S4.559 6 10.182 6c1.712 0 3.325.415 4.74 1.148-2.643 1.957-4.241 5.022-4.241 8.352 0 3.468 1.733 6.649 4.575 8.59l.454.31zM16 8c2.418 1.651 4 4.395 4 7.5 0 3.105-1.582 5.849-4 7.5-2.418-1.651-4-4.395-4-7.5 0-3.105 1.582-5.849 4-7.5z'></path>\n </svg>\n);\n\nexport const CustomColumnIcon = ({ width = 18, height = 18 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='add_data icon'\n >\n <path d='M0 8h5.926v6.208H0V8zm7.704 0h5.926v6.208H7.704V8zM0 16.07h5.926v6.209H0V16.07zm7.704 0h5.926v6.209H7.704V16.07zm7.703 0h5.926v6.209h-5.926V16.07zM0 24.142h5.926v6.208H0v-6.208zm7.704 0h5.926v6.208H7.704v-6.208zm7.703 0h5.926v6.208h-5.926v-6.208zM23.08 8.08V3h4.064v5.08h5.08v4.063h-5.08v5.08h-4.064v-5.08H18V8.079h5.08z'></path>\n </svg>\n);\n\nexport const SortIcon = ({ width = 18, height = 18 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='smartscalar icon'\n >\n <path d='M9.806 9.347v13.016h-2.79V9.593L3.502 14.12a1.405 1.405 0 0 1-1.957.254 1.372 1.372 0 0 1-.256-1.937L7.418 4.54a1.404 1.404 0 0 1 2.219.008l6.08 7.953a1.372 1.372 0 0 1-.27 1.935c-.615.46-1.49.34-1.955-.268l-3.686-4.82zM24.806 23.016V13h-2.79v9.77l-3.514-4.527a1.405 1.405 0 0 0-1.957-.254 1.372 1.372 0 0 0-.256 1.937l6.129 7.897c.56.723 1.663.72 2.219-.008l6.08-7.953a1.372 1.372 0 0 0-.27-1.935 1.405 1.405 0 0 0-1.955.268l-3.686 4.82z'></path>\n </svg>\n);\n\nexport const RowLimitIcon = ({ width = 18, height = 18 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='list icon'\n >\n <path d='M3 8 A3 3 0 0 0 9 8 A3 3 0 0 0 3 8 M12 6 L28 6 L28 10 L12 10z M3 16 A3 3 0 0 0 9 16 A3 3 0 0 0 3 16 M12 14 L28 14 L28 18 L12 18z M3 24 A3 3 0 0 0 9 24 A3 3 0 0 0 3 24 M12 22 L28 22 L28 26 L12 26z'></path>\n </svg>\n);\n\nexport const LeftJoinIcon = ({ width = 32, height = 32, style }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='join_right_outer icon'\n style={style}\n >\n <path d='M17.077 7.148A10.285 10.285 0 0 1 21.818 6C27.441 6 32 10.477 32 16s-4.559 10-10.182 10c-2.038 0-3.936-.588-5.528-1.6l.454-.31c.283-.194.555-.4.816-.617a8.842 8.842 0 0 0 4.258 1.083c4.832 0 8.738-3.836 8.738-8.556 0-4.72-3.906-8.556-8.738-8.556a8.865 8.865 0 0 0-3.546.733 10.65 10.65 0 0 0-1.195-1.03zM15.71 24.399A10.268 10.268 0 0 1 10.182 26C4.559 26 0 21.523 0 16S4.559 6 10.182 6c1.712 0 3.325.415 4.74 1.148-2.643 1.957-4.241 5.022-4.241 8.352 0 3.468 1.733 6.649 4.575 8.59l.454.31zM16 8c2.418 1.651 4 4.395 4 7.5 0 3.105-1.582 5.849-4 7.5-2.418-1.651-4-4.395-4-7.5 0-3.105 1.582-5.849 4-7.5z'></path>\n </svg>\n);\n\nexport const InnerJoinIcon = ({ width = 32, height = 32, style }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='join_inner icon'\n style={style}\n >\n <path d='M14.923 7.148c-.427.315-.826.66-1.195 1.03a8.865 8.865 0 0 0-3.546-.734C5.35 7.444 1.444 11.28 1.444 16c0 4.72 3.906 8.556 8.738 8.556 1.547 0 2.999-.393 4.258-1.083.26.217.533.423.816.616l.454.31A10.268 10.268 0 0 1 10.182 26C4.559 26 0 21.523 0 16S4.559 6 10.182 6c1.712 0 3.325.415 4.74 1.148zm1.879 0c.434.315.84.66 1.217 1.03a9.172 9.172 0 0 1 3.611-.734c4.921 0 8.9 3.836 8.9 8.556 0 4.72-3.979 8.556-8.9 8.556a9.137 9.137 0 0 1-4.337-1.083c-.265.217-.543.423-.83.616L16 24.4A10.6 10.6 0 0 0 21.63 26C27.357 26 32 21.523 32 16S27.357 6 21.63 6c-1.743 0-3.386.415-4.828 1.148zM16 8c2.418 1.651 4 4.395 4 7.5 0 3.105-1.582 5.849-4 7.5-2.418-1.651-4-4.395-4-7.5 0-3.105 1.582-5.849 4-7.5z'></path>\n </svg>\n);\n\nexport const UpArrowIcon = ({ width = 16, height = 17 }: IconProps) => (\n <svg\n className='sort-arrow'\n viewBox='0 0 32 34'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='arrow_up icon'\n >\n <path d='M16 34.23a2.5 2.5 0 002.5-2.5V9.036l8.732 8.732a2.5 2.5 0 003.405.122l.13-.122a2.5 2.5 0 000-3.536l-13-13a2.5 2.5 0 00-3.535 0l-13 13a2.5 2.5 0 103.536 3.536L13.5 9.036V31.73a2.5 2.5 0 002.336 2.495z'></path>\n </svg>\n);\n\nexport const DownArrowIcon = ({ width = 16, height = 17 }: IconProps) => (\n <svg\n className='sort-arrow'\n viewBox='0 0 32 34'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='arrow_down icon'\n >\n <path d='M16 .5A2.5 2.5 0 0118.5 3v22.694l8.732-8.732a2.5 2.5 0 013.405-.122l.13.122a2.5 2.5 0 010 3.536l-13 13a2.5 2.5 0 01-3.535 0l-13-13a2.5 2.5 0 113.536-3.536l8.732 8.732V3A2.5 2.5 0 0115.836.505z'></path>\n </svg>\n);\n\nexport const CloseIcon = ({ width = 16, height = 16 }: IconProps) => (\n <svg\n className='closeIcon'\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='close icon'\n >\n <path d='M4 8 L8 4 L16 12 L24 4 L28 8 L20 16 L28 24 L24 28 L16 20 L8 28 L4 24 L12 16 z '></path>\n </svg>\n);\n\nexport const AddIcon = ({ width = 16, height = 16 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='add icon'\n >\n <path d='M12.4285714,12.4285714 L12.4285714,0 L19.5714286,0 L19.5714286,12.4285714 L32,12.4285714 L32,19.5714286 L19.5714286,19.5714286 L19.5714286,32 L12.4285714,32 L12.4285714,19.5714286 L0,19.5714286 L0,12.4285714 L12.4285714,12.4285714 Z'></path>\n </svg>\n);\n\nexport const TableIcon = ({ width = 18, height = 18 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='table2 icon'\n >\n <path d='M1.6 0h28.8A1.6 1.6 0 0 1 32 1.6v28.8a1.6 1.6 0 0 1-1.6 1.6H1.6A1.6 1.6 0 0 1 0 30.4V1.6A1.6 1.6 0 0 1 1.6 0zm1.6 3.2v6.4h6.4V3.2H3.2zm9.6 0v6.4h16V3.2h-16zm-9.6 9.6v6.4h6.4v-6.4H3.2zm9.6 0v6.4h16v-6.4h-16zm-9.6 9.6v6.4h6.4v-6.4H3.2zm9.6 0v6.4h16v-6.4h-16z'></path>\n </svg>\n);\n\nexport const SearchIcon = ({ width = 16, height = 16 }: IconProps) => (\n <svg\n viewBox='0 0 32 32'\n width={width}\n height={height}\n fill='currentcolor'\n role='img'\n aria-label='search icon'\n >\n <path d='M22.805 25.734c-5.582 4.178-13.543 3.718-18.632-1.37-5.58-5.581-5.595-14.615-.031-20.179 5.563-5.563 14.597-5.55 20.178.031 5.068 5.068 5.545 12.985 1.422 18.563l5.661 5.661a2.08 2.08 0 0 1 .003 2.949 2.085 2.085 0 0 1-2.95-.003l-5.651-5.652zm-1.486-4.371c3.895-3.895 3.885-10.218-.021-14.125-3.906-3.906-10.23-3.916-14.125-.021-3.894 3.894-3.885 10.218.022 14.124 3.906 3.907 10.23 3.916 14.124.022z'></path>\n </svg>\n);\n\nexport const NotSelectIcon = () => (\n <svg\n viewBox='0 0 32 32'\n width='12'\n height='12'\n fill='currentcolor'\n role='img'\n aria-label='dash icon'\n >\n <path d='M0 13h32v6.61H0z'></path>\n </svg>\n);\n\nexport const SelectIcon = () => (\n <svg\n viewBox='0 0 32 32'\n width='12'\n height='12'\n fill='currentcolor'\n role='img'\n aria-label='check icon'\n >\n <path d='M1 14 L5 10 L13 18 L27 4 L31 8 L13 26 z '></path>\n </svg>\n);\n\nexport const CircleIcon = () => (\n <svg\n viewBox='0 0 32 32'\n width='18'\n height='18'\n fill='currentcolor'\n role='img'\n aria-label='unknown icon'\n >\n <path d='M16.5,26.5 C22.0228475,26.5 26.5,22.0228475 26.5,16.5 C26.5,10.9771525 22.0228475,6.5 16.5,6.5 C10.9771525,6.5 6.5,10.9771525 6.5,16.5 C6.5,22.0228475 10.9771525,26.5 16.5,26.5 L16.5,26.5 Z M16.5,23.5 C12.6340068,23.5 9.5,20.3659932 9.5,16.5 C9.5,12.6340068 12.6340068,9.5 16.5,9.5 C20.3659932,9.5 23.5,12.6340068 23.5,16.5 C23.5,20.3659932 20.3659932,23.5 16.5,23.5 L16.5,23.5 Z'></path>\n </svg>\n);\nexport const LetterAaIcon = () => (\n <svg\n viewBox='0 0 24 24'\n width='18'\n height='18'\n fill='currentcolor'\n role='img'\n aria-label='string icon'\n >\n <path d='M14.022,18 L11.533,18 C11.2543319,18 11.0247509,17.935084 10.84425,17.80525 C10.6637491,17.675416 10.538667,17.5091677 10.469,17.3065 L9.652,14.8935 L4.389,14.8935 L3.572,17.3065 C3.50866635,17.4838342 3.38516758,17.6437493 3.2015,17.78625 C3.01783241,17.9287507 2.79300133,18 2.527,18 L0.019,18 L5.377,4.1585 L8.664,4.1585 L14.022,18 Z M5.13,12.7085 L8.911,12.7085 L7.638,8.918 C7.55566626,8.67733213 7.45908389,8.3939183 7.34825,8.06775 C7.23741611,7.7415817 7.12816721,7.3885019 7.0205,7.0085 C6.91916616,7.39483527 6.8146672,7.75266502 6.707,8.082 C6.5993328,8.41133498 6.49800047,8.69633213 6.403,8.937 L5.13,12.7085 Z M21.945,18 C21.6663319,18 21.4557507,17.9620004 21.31325,17.886 C21.1707493,17.8099996 21.0520005,17.6516679 20.957,17.411 L20.748,16.8695 C20.5009988,17.078501 20.2635011,17.2621659 20.0355,17.4205 C19.8074989,17.5788341 19.5715846,17.7134161 19.32775,17.82425 C19.0839154,17.9350839 18.8242514,18.0174164 18.54875,18.07125 C18.2732486,18.1250836 17.9676683,18.152 17.632,18.152 C17.1823311,18.152 16.7738352,18.0934173 16.4065,17.97625 C16.0391648,17.8590827 15.7272513,17.6865011 15.47075,17.4585 C15.2142487,17.2304989 15.016334,16.947085 14.877,16.60825 C14.737666,16.269415 14.668,15.8783355 14.668,15.435 C14.668,15.0866649 14.7566658,14.7288352 14.934,14.3615 C15.1113342,13.9941648 15.4184978,13.6600848 15.8555,13.35925 C16.2925022,13.0584152 16.8814963,12.8066677 17.6225,12.604 C18.3635037,12.4013323 19.297661,12.2873335 20.425,12.262 L20.425,11.844 C20.425,11.2676638 20.3062512,10.8512513 20.06875,10.59475 C19.8312488,10.3382487 19.4940022,10.21 19.057,10.21 C18.7086649,10.21 18.4236678,10.2479996 18.202,10.324 C17.9803322,10.4000004 17.7824175,10.4854995 17.60825,10.5805 C17.4340825,10.6755005 17.2646675,10.7609996 17.1,10.837 C16.9353325,10.9130004 16.7390011,10.951 16.511,10.951 C16.3083323,10.951 16.1357507,10.9019172 15.99325,10.80375 C15.8507493,10.7055828 15.7383337,10.5836674 15.656,10.438 L15.124,9.5165 C15.7193363,8.99083071 16.3795797,8.59975128 17.10475,8.34325 C17.8299203,8.08674872 18.6073292,7.9585 19.437,7.9585 C20.0323363,7.9585 20.5690809,8.05508237 21.04725,8.24825 C21.5254191,8.44141763 21.9307483,8.71058161 22.26325,9.05575 C22.5957517,9.40091839 22.8506658,9.81099763 23.028,10.286 C23.2053342,10.7610024 23.294,11.2803305 23.294,11.844 L23.294,18 L21.945,18 Z M18.563,16.2045 C18.9430019,16.2045 19.2754986,16.1380007 19.5605,16.005 C19.8455014,15.8719993 20.1336652,15.6566682 20.425,15.359 L20.425,13.991 C19.8359971,14.0163335 19.3515019,14.0669996 18.9715,14.143 C18.5914981,14.2190004 18.2906678,14.3139994 18.069,14.428 C17.8473322,14.5420006 17.6937504,14.6718326 17.60825,14.8175 C17.5227496,14.9631674 17.48,15.1214991 17.48,15.2925 C17.48,15.6281683 17.5718324,15.8640827 17.7555,16.00025 C17.9391676,16.1364173 18.2083316,16.2045 18.563,16.2045 L18.563,16.2045 Z'></path>\n </svg>\n);\nexport const CalendarIcon = () => (\n <svg\n viewBox='0 0 24 24'\n width='18'\n height='18'\n fill='currentcolor'\n role='img'\n aria-label='calendar icon'\n >\n <path d='M21,2 L21,0 L18,0 L18,2 L6,2 L6,0 L3,0 L3,2 L2.99109042,2 C1.34177063,2 0,3.34314575 0,5 L0,6.99502651 L0,20.009947 C0,22.2157067 1.78640758,24 3.99005301,24 L20.009947,24 C22.2157067,24 24,22.2135924 24,20.009947 L24,6.99502651 L24,5 C24,3.34651712 22.6608432,2 21.0089096,2 L21,2 L21,2 Z M22,8 L22,20.009947 C22,21.1099173 21.1102431,22 20.009947,22 L3.99005301,22 C2.89008272,22 2,21.1102431 2,20.009947 L2,8 L22,8 L22,8 Z M6,12 L10,12 L10,16 L6,16 L6,12 Z'></path>\n </svg>\n);\nexport const WellIcon = () => (\n <svg\n viewBox='0 0 24 24'\n width='18'\n height='18'\n fill='currentcolor'\n role='img'\n aria-label='int icon'\n >\n <path d='M15.141,15.512 L14.294,20 L13.051,20 C12.8309989,20 12.6403341,19.9120009 12.479,19.736 C12.3176659,19.5599991 12.237,19.343668 12.237,19.087 C12.237,19.0503332 12.2388333,19.0155002 12.2425,18.9825 C12.2461667,18.9494998 12.2516666,18.9146668 12.259,18.878 L12.908,15.512 L10.653,15.512 L10.015,19.01 C9.94899967,19.3620018 9.79866784,19.6149992 9.564,19.769 C9.32933216,19.9230008 9.06900143,20 8.783,20 L7.584,20 L8.42,15.512 L7.155,15.512 C6.92033216,15.512 6.74066729,15.4551672 6.616,15.3415 C6.49133271,15.2278328 6.429,15.0390013 6.429,14.775 C6.429,14.6723328 6.43999989,14.5550007 6.462,14.423 L6.605,13.554 L8.695,13.554 L9.267,10.518 L6.913,10.518 L7.122,9.385 C7.17333359,9.10633194 7.28699912,8.89916734 7.463,8.7635 C7.63900088,8.62783266 7.92499802,8.56 8.321,8.56 L9.542,8.56 L10.224,5.018 C10.282667,4.7246652 10.4183323,4.49733414 10.631,4.336 C10.8436677,4.17466586 11.0929986,4.094 11.379,4.094 L12.611,4.094 L11.775,8.56 L14.019,8.56 L14.866,4.094 L16.076,4.094 C16.3326679,4.094 16.5416659,4.1673326 16.703,4.314 C16.8643341,4.4606674 16.945,4.64766553 16.945,4.875 C16.945,4.9483337 16.9413334,5.00333315 16.934,5.04 L16.252,8.56 L18.485,8.56 L18.276,9.693 C18.2246664,9.97166806 18.1091676,10.1788327 17.9295,10.3145 C17.7498324,10.4501673 17.4656686,10.518 17.077,10.518 L15.977,10.518 L15.416,13.554 L16.978,13.554 C17.2126678,13.554 17.3904994,13.6108328 17.5115,13.7245 C17.6325006,13.8381672 17.693,14.0306653 17.693,14.302 C17.693,14.4046672 17.6820001,14.5219993 17.66,14.654 L17.528,15.512 L15.141,15.512 Z M10.928,13.554 L13.183,13.554 L13.744,10.518 L11.5,10.518 L10.928,13.554 Z'></path>\n </svg>\n);\nexport const ForeignKeyIcon = () => (\n <svg\n viewBox='0 0 16 19.7647'\n width='18'\n height='18'\n fill='currentcolor'\n role='img'\n aria-label='connections icon'\n >\n <path d='M5.37815706,11.5570815 C5.55061975,11.1918363 5.64705882,10.783651 5.64705882,10.3529412 C5.64705882,9.93118218 5.55458641,9.53102128 5.38881053,9.1716274 L11.1846365,4.82475792 C11.6952189,5.33295842 12.3991637,5.64705882 13.1764706,5.64705882 C14.7358628,5.64705882 16,4.38292165 16,2.82352941 C16,1.26413718 14.7358628,0 13.1764706,0 C11.6170784,0 10.3529412,1.26413718 10.3529412,2.82352941 C10.3529412,3.2452884 10.4454136,3.64544931 10.6111895,4.00484319 L10.6111895,4.00484319 L4.81536351,8.35171266 C4.3047811,7.84351217 3.60083629,7.52941176 2.82352941,7.52941176 C1.26413718,7.52941176 0,8.79354894 0,10.3529412 C0,11.9123334 1.26413718,13.1764706 2.82352941,13.1764706 C3.59147157,13.1764706 4.28780867,12.8698929 4.79682555,12.3724528 L10.510616,16.0085013 C10.408473,16.3004758 10.3529412,16.6143411 10.3529412,16.9411765 C10.3529412,18.5005687 11.6170784,19.7647059 13.1764706,19.7647059 C14.7358628,19.7647059 16,18.5005687 16,16.9411765 C16,15.3817842 14.7358628,14.1176471 13.1764706,14.1176471 C12.3029783,14.1176471 11.5221273,14.5142917 11.0042049,15.1372938 L5.37815706,11.5570815 Z'></path>\n </svg>\n);\nexport const UpArrowIcon2 = () => (\n <svg\n viewBox='0 0 32 32'\n width='12'\n height='12'\n fill='currentcolor'\n role='img'\n aria-label='chevronup icon'\n >\n <path d='M1 20 L16 6 L31 20 L27 24 L16 14 L5 24 z'></path>\n </svg>\n);\nexport const DownArrowIcon2 = () => (\n <svg\n viewBox='0 0 32 32'\n width='12'\n height='12'\n fill='currentcolor'\n role='img'\n aria-label='chevrondown icon'\n >\n <path d='M1 12 L16 26 L31 12 L27 8 L16 18 L5 8 z '></path>\n </svg>\n);\nexport const LeftArrowIcon = () => (\n <svg\n viewBox='0 0 32 32'\n width='16'\n height='16'\n fill='currentcolor'\n role='img'\n aria-label='chevronleft icon'\n >\n <path d='M20 1 L24 5 L14 16 L24 27 L20 31 L6 16 z'></path>\n </svg>\n);\nexport const RightArrowIcon = () => (\n <svg\n viewBox='0 0 32 32'\n width='16'\n height='16'\n fill='currentcolor'\n role='img'\n aria-label='chevronright icon'\n >\n <path d='M12 1 L26 16 L12 31 L8 27 L18 16 L8 5 z '></path>\n </svg>\n);\n","/**\n * 选择保留哪些表字段\n * 谁在用?\n * 1、数据模块\n * 2、关联模块\n */\nimport './index.less';\nimport React, { useMemo, useState } from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport cx from 'classnames';\n\nimport { MetaData_ColumnsType } from '../../../../store/metabase/types';\n\nimport { NotSelectIcon, SelectIcon } from '../../../../metaBase/components/icons';\n\ninterface PropsType {\n data: MetaData_ColumnsType[]; // 列表数据\n onChange: (record: MetaData_ColumnsType[]) => void; // 选中回调事件\n\n setPopupClosable?: Function;\n}\n\n// 选择表中参数\nconst SelectColumn = ({ data = [], onChange }: PropsType) => {\n const [columns, setColumns] = useState<MetaData_ColumnsType[]>(data.slice());\n\n const isAllSelect = useMemo(() => {\n return columns.filter((v: any) => v.select).length === columns.length;\n }, [columns]);\n\n const AllSelectElement = useMemo(() => {\n if (isAllSelect) {\n return (\n <>\n <div className='selected mr-2 flex iteams-center justify-center'>\n <SelectIcon />\n </div>\n 全选\n </>\n );\n } else {\n return (\n <>\n <div className='no-select mr-2 flex iteams-center justify-center'>\n <NotSelectIcon />\n </div>\n 全选\n </>\n );\n }\n }, [isAllSelect]);\n\n function onSelect(columns: MetaData_ColumnsType[]) {\n setColumns(columns);\n typeof onChange === 'function' && onChange(columns);\n }\n\n return (\n <div className={`sqb-SelectColumn--box`}>\n <div className='pt-2'>\n <div\n className={cx(`SelectColumn-border mb-2 pb-2 px-2 flex items-center`, {\n // 'events-none': isAllSelect\n })}\n onClick={() => {\n let newColumns = columns.map((v: any) => ({ ...v, select: !isAllSelect }));\n onSelect(newColumns);\n }}\n >\n {AllSelectElement}\n </div>\n {Array.isArray(columns) &&\n columns.map((v, i) => {\n return (\n <div\n key={v.name}\n className='pb-2 px-2 flex items-center'\n onClick={() => {\n let newColumns = cloneDeep(columns);\n newColumns[i].select = !v.select;\n onSelect(newColumns);\n }}\n >\n {v.select ? (\n <div className='selected mr-2 flex iteams-center justify-center'>\n <SelectIcon />\n </div>\n ) : (\n <div className='no-select mr-2'></div>\n )}\n {v.name}\n {v.name_zh ? ` (${v.name_zh})` : ''}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default SelectColumn;\n","import {\n configure,\n makeAutoObservable,\n runInAction,\n makeObservable,\n observable,\n action,\n computed,\n reaction,\n when,\n} from 'mobx';\nimport { Toast } from '@gingkoo/pandora';\nimport React from 'react';\nimport { useLocalStore } from 'mobx-react';\nimport { getUrlParams } from '../../utils/helper';\n// import api from '~/service/sql';\nimport { TypeEnum, JoinEnum, DataTypeEnum, EleComponentEnum, TabEnum } from './enum';\n// import { ApiStatus } from '~/constants/enum';\nimport { sleep, getKey } from '../../utils/helper';\nimport {\n MetaListType,\n TableColumnsMapType,\n initColumnsType,\n MetaData,\n MetaData_TableType,\n MetaJoin,\n MetaCustom,\n MetaData_ColumnsType,\n MetaFilter,\n MetaFilter_Item,\n MetaSummarize,\n MetaSummarize_Group,\n MetaSort,\n MetaSort_Item,\n MetaLimit,\n ParamsType,\n ParamsStruct,\n LooseObject,\n} from './types';\n// import { ChartEnum, IMapping, MAPPING_TYPE } from '~/components/Charts/enum';\n// import { ChartItem } from '~/components/Charts/factory';\n\nexport { observer } from 'mobx-react';\n\nconfigure({\n useProxies: 'never', // 使用该配置,可以将 Proxy 降级为 Object.defineProperty\n isolateGlobalState: true, // 锁版本\n});\n\nlet metaKey: number = 1;\n\nconst params = getUrlParams();\n\nexport const SummarizeAlias = 'source';\n\ninterface PopupData {\n visible: boolean;\n node?: any;\n content?: any;\n}\n\n// 默认字体为微软雅黑 Microsoft YaHei,字体大小为 14px\nfunction getTextWidth(text: string, font = '14px Microsoft YaHei') {\n const canvas = document.createElement('canvas');\n let context: any = canvas.getContext('2d');\n context.font = font;\n let textmetrics = context.measureText(text);\n return textmetrics.width;\n}\n\nexport interface TableFieldsType {\n dataId: string; // id\n dataType: DataTypeEnum; // 数据类型\n eleComponent: EleComponentEnum; // 控件类型\n datasetId: string; // 数据集\n fieldLength: number; // 字段长度\n fieldScale: number; // 精度 数据类型为日期 的时候 需要配置这个 默认2\n dictInfo: ''; // 当 eleComponent === EleComponentEnum.select 需要配置这个\n fieldId: string; // 字段英文 说是不会重复\n fieldName: string; // 字段中文\n listShow: 'Y' | 'N' | boolean; // 表格显示\n formShow?: 'Y' | 'N' | boolean; // 表单显示(只在连接上面 isdataDtl != 'Y' 时显示, 也就是详情配置 不显示)\n isUrlParam?: 'Y' | 'N' | boolean; // 是否链接参数 (只在连接上面 isdataDtl != 'Y' 时显示, 也就是详情配置 不显示)\n isStaticFilter: 'Y' | 'N' | boolean; // 查询条件\n isAdvanceFilter: 'Y' | 'N' | boolean; // 高级筛选\n}\n\nexport interface IChartItem {\n key: string;\n // type: ChartEnum;\n name: string;\n config: object;\n configData: object;\n\n CHART_ID?: string; // ID\n CHART_NAME?: string; //name\n CHART_IMG?: string; //img\n CHART_TYPE?: string; //type\n CHART_CONFIG?: object; //config\n CHART_CONFIG_DATA?: any[]; //configData\n\n MODULE_ID?: string; //moduleID\n MODULE_NAME?: string; //moduleName\n MODULE_SQL?: string; //sql\n\n ORG_ID?: string; //Id\n}\nclass SqlVisionStore {\n constructor() {\n makeAutoObservable(this);\n }\n // tableData: MetaData_TableType[] = []; // 表列表\n _cacheColumnsMap: TableColumnsMapType = {}; // 缓存\n // metaList: MetaListType[] = [\n // { metaKey, type: TypeEnum.data, table: { name: '', alias: '' }, columns: [] },\n // ]; //metaBase 回显数据\n // popupData: PopupData = {\n // visible: false,\n // node: null,\n // content: null,\n // }; //弹窗选择数据\n // popupClosable = true; // 是否可关闭 如果弹框里面再弹框 则不可关闭\n\n // get showMainColumn() {\n // let summarizeList = this.metaList.filter((v) => v.type === TypeEnum.summarize);\n // if (\n // !summarizeList.length ||\n // (summarizeList.length === 1 &&\n // !(summarizeList[0] as MetaSummarize).group.length &&\n // !(summarizeList[0] as MetaSummarize).by.length)\n // ) {\n // return true;\n // }\n // return false;\n // }\n\n // todo 动态查询表字段\n async fetchColumns(\n tableName: string,\n callback: (record: MetaData_ColumnsType[]) => void,\n ): Promise<any> {\n let columns: initColumnsType[] = this.getColumns(tableName);\n // if (!columns.length) {\n // let [err, res] = await api.getDataSetField(tableName);\n // columns = res?.data;\n // if (err || !Array.isArray(columns)) return false;\n // columns = columns.map((v: any) => {\n // return {\n // database_type: v.dataType?.toLocaleUpperCase?.() || '',\n // name: v.fieldId,\n // name_zh: v.fieldName || '',\n // special_type: '', // 这里永远是空 因为后端没返回这个字段\n // };\n // });\n // runInAction((): any => {\n // this.setColumns(tableName, columns);\n // });\n // }\n typeof callback === 'function' && callback(columns.map((v) => ({ ...v, select: true }))); // 默认所有字段都是勾上的 所以select写死true\n }\n\n // addMeta(type: string, index: number) {\n // let newMeta: MetaListType[] = this.metaList.slice();\n // let item: MetaListType;\n // let mainTable: MetaData = newMeta[0] as MetaData;\n // metaKey += 1;\n\n // if (type === TypeEnum.joinData) {\n // let name = index === 1 ? mainTable.table.name : '';\n // item = {\n // metaKey,\n // type: TypeEnum.joinData,\n // joinType: JoinEnum.left,\n // table1: { name, alias: name, column: '' },\n // table2: { name: '', alias: '', column: '' },\n // columns: [],\n // };\n // }\n\n // if (type === TypeEnum.customColumn) {\n // item = { metaKey, type: TypeEnum.customColumn, customColumn: [] };\n // }\n\n // if (type === TypeEnum.filter) {\n // item = { metaKey, type: TypeEnum.filter, filter: [] };\n // }\n\n // if (type === TypeEnum.summarize) {\n // item = { metaKey, type: TypeEnum.summarize, alias: SummarizeAlias, group: [], by: [] };\n // }\n\n // if (type === TypeEnum.sort) {\n // item = { metaKey, type: TypeEnum.sort, sort: [] };\n // }\n\n // if (type === TypeEnum.rowLimit) {\n // item = { metaKey, type: TypeEnum.rowLimit, limit: '' };\n // }\n\n // // @ts-ignore\n // newMeta.splice(index, 0, item);\n // this.metaList = newMeta;\n // }\n\n // delMeta(meta: any): void {\n // // TIPS 自定义列删除了后面都得删除 暂时不删除 因为过滤器和组合包括自定义列都没用到自定义列\n // let index = this.metaList.indexOf(meta);\n // let newMeta = this.metaList.slice();\n\n // if (meta.type === TypeEnum.joinData) {\n // if ((meta as MetaJoin).table2.name) {\n // this.metaList = newMeta.filter((v: MetaListType, i: number) => i < index);\n // return void 0;\n // }\n // }\n // if (meta.type === TypeEnum.summarize) {\n // if ((meta as MetaSummarize).by.length || (meta as MetaSummarize).group.length) {\n // this.metaList = newMeta.filter((v: MetaListType, i: number) => i < index);\n // return void 0;\n // }\n // }\n // this.metaList = newMeta.filter((v) => v !== meta);\n // }\n\n // setMeta(payload: any) {\n // this.metaList = payload;\n // }\n // setTableData(payload: any) {\n // this.tableData = payload;\n // }\n // setPopup(payload: PopupData) {\n // this.popupData = payload;\n // }\n\n setColumns(tableId: string, columns: initColumnsType[]) {\n this._cacheColumnsMap[tableId] = columns;\n }\n\n getColumns(tableId: string) {\n return this._cacheColumnsMap[tableId] || [];\n }\n\n // setClosable(payload: boolean) {\n // this.popupClosable = payload;\n // }\n}\n\nexport const sqlVisionStore = new SqlVisionStore();\n\nexport const Store = React.createContext(sqlVisionStore);\n\nconst StoreProvide: React.FC<{\n children: React.ReactNode;\n}> = (props) => {\n let store = useLocalStore(() => sqlVisionStore);\n return <Store.Provider value={store}>{props.children}</Store.Provider>;\n};\n\nexport default StoreProvide;\n\nexport const useStore = () => {\n return React.useContext(Store);\n};\n","import { SQL_COLUMN_TYPE } from '../../../store/metabase/enum';\n\nexport const NUMBER_GROUP = [SQL_COLUMN_TYPE.FLOAT, SQL_COLUMN_TYPE.LONG, SQL_COLUMN_TYPE.CURRENCY];\nexport const STRING_GROUP = [SQL_COLUMN_TYPE.STRING];\nexport const DATE_GROUP = [SQL_COLUMN_TYPE.DATE];\n","/**\n * 选择表字段当条件\n * 谁在用?\n * 1、关联模块\n * 2、过滤器模块\n * 3、聚合模块\n * 4、排序模块\n */\nimport './index.less';\nimport React, { useEffect, useState } from 'react';\n// import { Menu, Popover } from 'antd';\nimport { Menu, Popover } from '@gingkoo/pandora';\nimport cloneDeep from 'lodash/cloneDeep';\nimport cx from 'classnames';\n\nimport {\n ColumnsPopupThemeEnum,\n SQL_GROUP_TYPE,\n SQL_COLUMN_TYPE,\n} from '../../../../store/metabase/enum';\nimport { SummarizeAlias } from '../../../../store/metabase';\nimport { MetaData_ColumnsType } from '../../../../store/metabase/types';\nimport { NUMBER_GROUP, DATE_GROUP } from '../../../../metaBase/components/dialog/const';\n\nimport {\n SearchIcon,\n TableIcon,\n CircleIcon,\n LetterAaIcon,\n CalendarIcon,\n WellIcon,\n ForeignKeyIcon,\n UpArrowIcon2,\n DownArrowIcon2,\n RightArrowIcon,\n} from '../../icons';\n\nexport const DATE_GROUP_MAP = new Map([\n ['分', '分'],\n ['时', '时'],\n ['天', '天'],\n ['周', '周'],\n ['月', '月'],\n ['季度', '季度'],\n ['一小时内的分钟数', '一小时内的分钟数'],\n ['一天内的小时数', '一天内的小时数'],\n ['一周内的天数', '一周内的天数'],\n ['一月内的天数', '一月内的天数'],\n ['一年内的天数', '一年内的天数'],\n ['一年的星期数', '一年的星期数'],\n ['一年的月数', '一年的月数'],\n]);\n\nexport const NUMBER_GROUP_MAP = new Map([\n ['自动间隔', '自动分组'],\n ['10个刻度间隔', '10 刻度间隔'],\n ['间隔50', '50 刻度间隔'],\n ['间隔100', '100 刻度间隔'],\n ['无间隔', ''],\n]);\n\nconst IconMap: any = {\n CHAR: <LetterAaIcon />,\n VARCHAR: <LetterAaIcon />,\n CLOB: <LetterAaIcon />,\n DOUBLE: <WellIcon />,\n SMALLINT: <WellIcon />,\n BIGINT: <WellIcon />,\n INTEGER: <WellIcon />,\n TIMESTAMP: <CalendarIcon />,\n PK: <CircleIcon />,\n FK: <ForeignKeyIcon />,\n};\n\nconst OPEN_GROUP = false; // mr.chen 说不弄这块 弄个开关防止后面要用\n\nexport interface ColumnType {\n table: string; // 表名\n alias: string; // 表的别名\n name: string; // 字段名\n database_type: SQL_COLUMN_TYPE | ''; // 字段类型\n sql?: string; // 聚合过来会带上sql字段\n}\n\nexport interface ColumnGroupType {\n condition: string; // 条件 聚合by过来的会有这个\n quotes: string; // 展示用户看的 组装的文字\n}\n\nexport interface DataType {\n table: string; // 表名\n alias: string; // 表的别名\n columns: MetaData_ColumnsType[];\n}\n\ninterface PropsType {\n data: DataType[];\n value: ColumnType & Partial<ColumnGroupType>;\n theme: ColumnsPopupThemeEnum;\n isGroup?: boolean; // isGroup 为true 则选择函数用 onGroup 否则 用 onSelect (只有聚合的by列表才会为true)\n onSelect?: (record: ColumnType) => void;\n onGroup?: (record: ColumnType & ColumnGroupType) => void;\n didUpdate?: Function; // 刷新弹框\n // popupClosable: boolean;\n setPopupClosable?: Function;\n}\ntype TableListType = DataType & { open: boolean; searchText: string };\n\nconst SelectJoinColumn = ({\n data = [],\n value,\n theme = ColumnsPopupThemeEnum.skyBlue,\n onSelect,\n isGroup,\n onGroup,\n didUpdate,\n setPopupClosable,\n}: PropsType) => {\n const [curTable, setCurTable] = useState(value.alias); // 当前选择的表\n const [curColumn, setCurColumn] = useState(value.name); // 当前选择的字段\n\n const [tableList, setTableList] = useState<TableListType[]>(\n data.map((v: DataType, i: number) => {\n let open = !i && !curTable ? true : v.alias === curTable;\n return {\n ...v,\n open,\n searchText: '',\n columns: v.columns.slice(),\n };\n }),\n );\n\n useEffect(() => {\n didUpdate?.();\n }, [tableList]);\n\n function onInput(val: string, tableAlias: string) {\n let newData = cloneDeep(tableList).map((v: TableListType, i: number) => {\n if (v.alias === tableAlias) {\n return {\n ...v,\n columns: data[i]?.columns.filter(\n (v: MetaData_ColumnsType) =>\n ~v.name.toLocaleLowerCase().indexOf(val.toLocaleLowerCase()),\n ),\n searchText: val,\n };\n }\n return v;\n });\n setTableList(newData);\n }\n\n const _condition = value?.condition || '';\n return (\n <div className={cx(`sqb-SelectColumns--box ${theme}`)}>\n <div style={{ width: isGroup && OPEN_GROUP ? 400 : 300 }}>\n {tableList.map((tableItem: TableListType) => {\n let { alias: tableAlias, table, columns, open, searchText } = tableItem;\n let isMultiple = tableList.length > 1;\n\n let isSummarize = tableAlias === SummarizeAlias;\n return (\n <div key={tableAlias}>\n {!isSummarize && (\n <div className={cx(`sqb-List-section`)}>\n <div\n className={cx(`sqb-List-title mx-4 pb-4 pt-4`, {\n shrink: isMultiple,\n active: open,\n })}\n onClick={(): void => {\n if (!isMultiple) return void 0;\n let newTables = cloneDeep(tableList);\n if (open) {\n setTableList(\n newTables.map((v: TableListType) => ({\n ...v,\n open: tableAlias === v.alias ? false : v.open,\n })),\n );\n } else {\n setTableList(\n newTables.map((v: TableListType) => ({\n ...v,\n open: tableAlias === v.alias || v.alias === SummarizeAlias,\n })),\n );\n }\n }}\n >\n <a>\n <span className={'List-item-icon'}>\n <TableIcon />\n </span>\n <div>\n <h3 className={'List-item-title ml-2'}>{tableAlias}</h3>\n </div>\n {isMultiple && (\n <span className={'List-title-arrow'}>\n {open ? <UpArrowIcon2 /> : <DownArrowIcon2 />}\n </span>\n )}\n </a>\n </div>\n </div>\n )}\n\n {open && (\n <>\n {!isSummarize && (\n <div className={cx(`sqb-List-section`)}>\n <div className={cx(`sqb-List-search m-2 rounded-lg`)}>\n <span className={'px-2'}>\n <SearchIcon />\n </span>\n <input\n type='text'\n className={'p-2'}\n autoFocus\n value={searchText}\n placeholder='查找...'\n onChange={() => {}}\n onInput={(e: any) => onInput(e.target.value, tableAlias)}\n />\n </div>\n </div>\n )}\n {Array.isArray(columns) &&\n columns.map((v: MetaData_ColumnsType & { sql?: string }) => {\n let { special_type, database_type, name } = v;\n let groupe: SQL_GROUP_TYPE = SQL_GROUP_TYPE.STRING;\n // @ts-ignore\n if (~NUMBER_GROUP.indexOf(database_type)) {\n groupe = SQL_GROUP_TYPE.NUMBER;\n }\n // @ts-ignore\n if (~DATE_GROUP.indexOf(database_type)) {\n groupe = SQL_GROUP_TYPE.DATE;\n }\n\n let showCondition =\n curColumn === name && curTable === tableAlias && _condition;\n return (\n <div className={cx(`sqb-List-section`)} key={name}>\n <div\n className={cx(`sqb-List-item mx-2`, {\n active: curColumn === name && curTable === tableAlias,\n })}\n onClick={() => {\n if (isGroup && typeof onGroup === 'function') {\n let condition = '';\n let quotes = name;\n if (OPEN_GROUP) {\n if (groupe === SQL_GROUP_TYPE.DATE) {\n condition = '月';\n }\n if (groupe === SQL_GROUP_TYPE.NUMBER) {\n condition = '自动分组';\n }\n if (condition) {\n quotes += ': ' + condition;\n }\n }\n return onGroup({\n table,\n alias: tableAlias,\n name,\n database_type,\n condition,\n quotes,\n });\n }\n typeof onSelect === 'function' &&\n onSelect({\n table,\n alias: tableAlias,\n name,\n database_type,\n sql: v.sql || '',\n });\n }}\n >\n <a className={'p-2'}>\n <span className={'List-item-icon'}>\n {IconMap[special_type || database_type] || <LetterAaIcon />}\n </span>\n <div>\n <h4 className={'List-item-title ml-2'}>{name}</h4>\n </div>\n </a>\n {OPEN_GROUP && isGroup && groupe !== SQL_GROUP_TYPE.STRING && (\n <Popover\n placement='rt'\n onVisibleChange={(visible) => {\n if (visible) {\n setCurTable(tableAlias);\n setCurColumn(name);\n setPopupClosable?.(false);\n } else {\n setCurTable(value.alias);\n setCurColumn(value.name);\n setTimeout(() => setPopupClosable?.(true), 300);\n }\n }}\n content={\n <Menu\n className='menu-list'\n selectedKeys={showCondition ? [_condition] : []}\n onClickMenuItem={(key, domEvent) => {\n domEvent.stopPropagation();\n setPopupClosable?.(true);\n if (isGroup && typeof onGroup === 'function') {\n let condition = '';\n let quotes = name;\n if (groupe === SQL_GROUP_TYPE.DATE) {\n condition = DATE_GROUP_MAP.get(key) as string;\n }\n if (groupe === SQL_GROUP_TYPE.NUMBER) {\n condition = NUMBER_GROUP_MAP.get(key) as string;\n }\n if (condition) {\n quotes += ': ' + condition;\n }\n return onGroup({\n table,\n alias: tableAlias,\n name,\n database_type,\n condition: key,\n quotes,\n });\n }\n }}\n >\n {(groupe === SQL_GROUP_TYPE.NUMBER\n ? Array.from(NUMBER_GROUP_MAP.keys())\n : Array.from(DATE_GROUP_MAP.keys())\n ).map((v: string) => {\n return <Menu.Item key={v}>{v}</Menu.Item>;\n })}\n </Menu>\n }\n trigger='click'\n >\n <div className='Field-extra' onClick={(e) => e.stopPropagation()}>\n <h4>\n {groupe === SQL_GROUP_TYPE.NUMBER\n ? showCondition\n ? _condition\n : '自动分组'\n : '[[时间戳]]按小时计数'}\n </h4>\n <RightArrowIcon />\n </div>\n </Popover>\n )}\n </div>\n </div>\n );\n })}\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default SelectJoinColumn;\n","/**\n * 关联模块 选择表字段\n */\nimport './index.less';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport cx from 'classnames';\nimport { Menu, Dropdown, Button, DatePicker, ConfigProvider, Input } from '@gingkoo/pandora';\nimport { DownArrow } from '@gingkoo/pandora-icons';\n\n// import { DownOutlined } from '@ant-design/icons';\n// import zhCN from 'antd/lib/locale/zh_CN';\nimport moment from 'dayjs';\n\nimport {\n ColumnsPopupThemeEnum,\n SQL_COLUMN_TYPE,\n SQL_GROUP_TYPE,\n} from '../../../../store/metabase/enum';\nimport { SummarizeAlias } from '../../../../store/metabase';\nimport { MetaFilter_Item } from '../../../../store/metabase/types';\nimport { NUMBER_GROUP, DATE_GROUP } from '../../../../metaBase/components/dialog/const';\n\nimport { SelectJoinColumn } from '../../../../metaBase/components/dialog/index';\nimport { DataType, ColumnType } from '../../../../metaBase/components/dialog/select-join-column';\nimport { LeftArrowIcon } from '../../icons';\n\nconst { RangePicker } = DatePicker;\n\nconst NUMBER_LIST = [\n '等于',\n '不等于',\n '大于',\n '小于',\n '介于之间',\n '大于或等于',\n '小于或等于',\n '为空',\n '不为空',\n];\nconst STRING_LIST = ['是', '不是', '包含', '不包含', '为空', '不为空', '以...开始', '以...结束'];\nconst DATE_LIST = [\n // '前', '下一个', '当前',\n '早于',\n '晚于',\n // '在',\n '介于之间',\n '是空的',\n '不是空的',\n];\n\ninterface PropsType {\n data: DataType[];\n value: MetaFilter_Item;\n onChange: (reocrd: MetaFilter_Item) => void;\n didUpdate?: Function; // 刷新弹框\n setPopupClosable?: Function;\n}\n\nconst SelectFilterColumn = ({\n data = [],\n value,\n onChange,\n didUpdate,\n setPopupClosable,\n}: PropsType) => {\n const [curColumn, setCurColumn] = useState<ColumnType>(value);\n const [condition, setCondition] = useState<string>(value.condition);\n const [curVal, setVal] = useState<string[]>(value.val);\n\n const disabled = useMemo(() => {\n if (!condition) return true;\n\n if (~['为空', '不为空', '是空的', '不是空的'].indexOf(condition)) {\n return false;\n } else if (~['前', '下一个', '介于之间'].indexOf(condition)) {\n if (curVal[0] && curVal[1]) {\n return false;\n }\n } else if (curVal.length) {\n return false;\n }\n return true;\n }, [curVal, condition]);\n\n useEffect(() => {\n didUpdate?.();\n }, [condition]);\n\n function generateQuotes(val: string[]) {\n let [firstVal = '', secondVal = ''] = val;\n let quotes = '';\n if (condition === '以...开始') {\n quotes = (curColumn as ColumnType).name + ' ' + `以 ${firstVal} 开始`;\n } else if (condition === '以...结束') {\n quotes = (curColumn as ColumnType).name + ' ' + `以 ${firstVal} 开始`;\n } else if (condition === '介于之间') {\n quotes = (curColumn as ColumnType).name + ' ' + `介于${firstVal}和${secondVal}之间`;\n } else if (condition === '前') {\n quotes = (curColumn as ColumnType).name + ' ' + `上一个${firstVal}${secondVal}`;\n } else if (condition === '下一个') {\n quotes = (curColumn as ColumnType).name + ' ' + `下一个${firstVal}${secondVal}`;\n } else if (condition === '在') {\n quotes = (curColumn as ColumnType).name + ' 是 ' + firstVal;\n } else if (condition === '是空的') {\n quotes = (curColumn as ColumnType).name + ' 为空';\n } else if (condition === '不是空的') {\n quotes = (curColumn as ColumnType).name + ' 不为空';\n } else if (condition === '当前') {\n if (firstVal === '天') {\n quotes = (curColumn as ColumnType).name + ' ' + `今天`;\n } else {\n quotes = (curColumn as ColumnType).name + ' ' + `这个${firstVal}`;\n }\n } else {\n quotes = (curColumn as ColumnType).name + ' ' + condition + ' ' + firstVal;\n }\n return quotes;\n }\n\n function addFilter(): void {\n if (disabled) return void 0;\n let quotes = generateQuotes(curVal);\n typeof onChange === 'function' &&\n onChange({\n ...(curColumn as ColumnType),\n val: curVal, // 选择结果 如果有两个 长度就为2\n condition, // 选择条件\n quotes, // 前端显示用户看的文字\n groupSql: curColumn.alias === SummarizeAlias ? curColumn.sql : '',\n });\n }\n\n function goPrevPage() {\n setCurColumn({\n table: '', // 表名\n alias: '', // 表的别名\n name: '', // 字段名\n sql: '',\n database_type: '', // 字段类型\n });\n setCondition('');\n setVal([]);\n }\n\n function getData(data: ColumnType) {\n let { database_type } = data;\n let columnType: SQL_COLUMN_TYPE = database_type.toUpperCase() as SQL_COLUMN_TYPE;\n let conditions = STRING_LIST;\n let type: SQL_GROUP_TYPE = SQL_GROUP_TYPE.STRING;\n if (NUMBER_GROUP.includes(columnType)) {\n conditions = NUMBER_LIST;\n type = SQL_GROUP_TYPE.NUMBER;\n } else if (DATE_GROUP.includes(columnType)) {\n conditions = DATE_LIST;\n type = SQL_GROUP_TYPE.DATE;\n }\n return { columnType, type, conditions };\n }\n\n function renderFilter(type: SQL_GROUP_TYPE, conditionText: string) {\n let [firstVal, secondVal] = curVal;\n\n if (~['为空', '不为空', '是空的', '不是空的'].indexOf(conditionText)) {\n return null;\n } else if (conditionText === '介于之间') {\n if (type === SQL_GROUP_TYPE.NUMBER) {\n return (\n <div style={{ display: 'flex', flexDirection: 'column' }}>\n <Input\n className='input'\n placeholder='输入一个数字'\n value={firstVal || ''}\n onInput={(e: any) => {\n let newVal = curVal.slice();\n newVal[0] = e.target.value;\n setVal(newVal);\n }}\n />\n <Input\n className='input'\n placeholder='输入一个数字'\n value={secondVal || ''}\n onInput={(e: any) => {\n let newVal = curVal.slice();\n newVal[1] = e.target.value;\n setVal(newVal);\n }}\n />\n </div>\n );\n }\n if (type === SQL_GROUP_TYPE.DATE) {\n return (\n <div>\n <RangePicker\n showTime={{ format: 'HH:mm' }}\n format='YYYY-MM-DD HH:mm'\n className={'w_300'}\n // @ts-ignore\n value={\n firstVal ? [moment(firstVal ?? undefined), moment(secondVal ?? undefined)] : []\n }\n onChange={(val) => {\n // @ts-ignore\n val &&\n setVal([\n moment(val[0]).format('YYYY-MM-DD HH:mm'),\n moment(val[1]).format('YYYY-MM-DD HH:mm'),\n ]);\n }}\n />\n </div>\n );\n }\n } else if (conditionText === '当前') {\n return (\n <div>\n <Dropdown\n trigger={['click']}\n droplist={\n <Menu onClickMenuItem={(key) => setVal([key])}>\n <Menu.Item key='天'>天</Menu.Item>\n <Menu.Item key='周'>周</Menu.Item>\n <Menu.Item key='月'>月</Menu.Item>\n <Menu.Item key='年'>年</Menu.Item>\n </Menu>\n }\n >\n <Button className='operator-btn' style={{ width: 300 }}>\n {firstVal} <DownArrow />\n </Button>\n </Dropdown>\n </div>\n );\n } else if (~['前', '下一个'].indexOf(conditionText)) {\n return (\n <div className='flex w_300'>\n <Input\n className='input inline'\n placeholder='输入一个数字'\n value={firstVal || ''}\n onInput={(e: any) => {\n let newVal = curVal.slice();\n newVal[0] = e.target.value;\n setVal(newVal);\n }}\n />\n <Dropdown\n trigger={['click']}\n droplist={\n <Menu\n onClickMenuItem={(key) => {\n let newVal = curVal.slice();\n newVal[1] = key;\n setVal(newVal);\n }}\n >\n <Menu.Item key='分'>分</Menu.Item>\n <Menu.Item key='时'>时</Menu.Item>\n <Menu.Item key='天'>天</Menu.Item>\n <Menu.Item key='周'>周</Menu.Item>\n <Menu.Item key='月'>月</Menu.Item>\n <Menu.Item key='年'>年</Menu.Item>\n </Menu>\n }\n >\n <Button className='operator-btn' style={{ width: 104 }}>\n {secondVal} <DownArrow />\n </Button>\n </Dropdown>\n </div>\n );\n } else if (~['早于', '晚于', '在'].indexOf(conditionText)) {\n return (\n <div>\n <DatePicker\n showTime={{ format: 'HH:mm' }}\n format='YYYY-MM-DD HH:mm'\n className={'w_300'}\n value={moment(firstVal ?? undefined)}\n onChange={(val) => {\n if (val) {\n setVal([moment(val).format('YYYY-MM-DD HH:mm')]);\n } else {\n setVal([]);\n }\n }}\n />\n </div>\n );\n } else if (\n ~[\n '等于',\n '不等于',\n '大于',\n '小于',\n '大于或等于',\n '小于或等于',\n '是',\n '不是',\n '包含',\n '不包含',\n '以...开始',\n '以...结束',\n ].indexOf(conditionText)\n ) {\n return (\n <div>\n <Input\n className='input'\n placeholder='请输入'\n value={firstVal || ''}\n onInput={(e: any) => {\n let newVal = curVal.slice();\n newVal[0] = e.target.value;\n setVal(newVal);\n }}\n />\n </div>\n );\n }\n return null;\n }\n\n const nextPage = !!curColumn.name;\n if (nextPage) {\n let { type, conditions } = getData(curColumn);\n const menu = (\n <Menu\n onClickMenuItem={(key) => {\n setDefaultVal(key);\n }}\n >\n {conditions.map((v) => {\n return <Menu.Item key={v}>{v}</Menu.Item>;\n })}\n </Menu>\n );\n\n return (\n <div className='filter-page'>\n <div className='header'>\n <div className='left-info'>\n <span onClick={goPrevPage}>\n <LeftArrowIcon />\n {curColumn.name}\n </span>\n </div>\n <div className='right-info'>\n <Dropdown droplist={menu} trigger={['click']}>\n <Button className='operator-btn' style={{ width: 104 }}>\n {condition}\n <DownArrow />\n </Button>\n </Dropdown>\n </div>\n </div>\n <div className='content'>{renderFilter(type, condition)}</div>\n <div className='footer'>\n <div className={cx('button--purple', { disabled })} onClick={addFilter}>\n <span>添加过滤器</span>\n </div>\n </div>\n </div>\n );\n }\n\n function setDefaultVal(_condition: string) {\n setCondition(_condition);\n if (~['前', '下一个'].indexOf(_condition)) {\n setVal(['30', '天']);\n } else if (~['当前'].indexOf(_condition)) {\n setVal(['天']);\n } else if (~['早于', '晚于', '在'].indexOf(_condition)) {\n setVal([moment().format('YYYY-MM-DD HH:mm')]);\n } else {\n setVal([]);\n }\n }\n return (\n <div>\n <SelectJoinColumn\n setPopupClosable={setPopupClosable}\n data={data}\n value={value as MetaFilter_Item}\n theme={ColumnsPopupThemeEnum.purple}\n didUpdate={didUpdate}\n onSelect={(record: ColumnType) => {\n setCurColumn(record);\n\n /**\n * 这里默认帮用户选好一部分数据\n * 不至于让用户每一个都自己选、\n * 比如说:条件字段 默认我们帮他选好第一个...\n */\n let { conditions } = getData(record);\n setDefaultVal(conditions[0]);\n }}\n />\n </div>\n );\n};\n\nexport default (props: any) => {\n return (\n // <ConfigProvider locale={zhCN}>\n <SelectFilterColumn {...props} />\n // </ConfigProvider>\n );\n};\n","/**\n * 关联模块 选择表字段\n */\nimport './index.less';\nimport React, { useState } from 'react';\nimport { Tooltip } from '@gingkoo/pandora';\nimport cx from 'classnames';\n\nimport { ColumnsPopupThemeEnum } from '../../../../store/metabase/enum';\nimport { DataType, ColumnType } from '../../../../metaBase/components/dialog/select-join-column';\nimport { NUMBER_GROUP } from '../const';\n\nimport { TableIcon, LeftArrowIcon } from '../../icons';\nimport { SelectJoinColumn } from '../../../../metaBase/components/dialog/index';\n\nconst theme = ColumnsPopupThemeEnum.greenGrass;\n\nconst FormulaList = [\n { name: '总行数', tip: '总的数据行数' },\n { name: '总和', tip: '一个字段所有数值的总和' },\n { name: '平均值', tip: '一个字段所有数值的平均值' },\n { name: '不重复值的总数', tip: '一个字段所有互不重复的值的总数' },\n { name: '累积求和', tip: '一个列的所有值的加和。如:x一段时间内的总收入' },\n { name: '累积行数', tip: '行数的加法统计。如;x段时间内的销售总额' },\n { name: '标准差', tip: '一个字段所有数值的标准差' },\n { name: '最小值', tip: '一个字段的最小值' },\n { name: '最大值', tip: '一个字段的最大值' },\n];\n\nconst QuotesMap = new Map([\n ['总行数', '计数'],\n ['总和', '求和 的 '],\n ['平均值', '平均 的 '],\n ['不重复值的总数', '不重复的值 的 '],\n ['累积求和', '累积和 的 '],\n ['累积行数', '累积计数'],\n ['标准差', '标准偏差 的 '],\n ['最小值', '最小 的 '],\n ['最大值', '最大 的 '],\n]);\n\nconst Special = ['总行数', '累积行数'];\n\nexport type ValueType = Partial<ColumnType> & {\n condition: string; // 选择条件\n quotes: string; // 前端显示用户看的文字\n};\n\ninterface PropsType {\n data: DataType[];\n value: ValueType;\n onChange: (reocrd: ValueType) => void;\n didUpdate?: Function; // 刷新弹框\n setPopupClosable?: Function;\n}\n\nconst SelectSummarize = ({ data, value, onChange, didUpdate, setPopupClosable }: PropsType) => {\n const [condition, setCondition] = useState<string>(value.condition);\n\n function goPrevPage() {\n setCondition('');\n }\n\n function handleSelect(condition: string, record: Partial<ColumnType>) {\n const quotes = QuotesMap.get(condition) + (record?.name || '');\n onChange({\n ...record,\n condition,\n quotes,\n });\n }\n\n if (condition && !~Special.indexOf(condition)) {\n let availableData = data.slice();\n\n if (condition !== '不重复值的总数') {\n // 只能用数字类型做聚合\n availableData = data\n .map((v) => {\n return {\n ...v,\n columns: v.columns.filter(\n (o) => o.database_type && NUMBER_GROUP.includes(o.database_type),\n ),\n };\n })\n .filter((v) => v.columns.length);\n }\n\n return (\n <div>\n <div className='back-title'>\n <div onClick={goPrevPage}>\n <LeftArrowIcon />\n <h3>{condition}</h3>\n </div>\n </div>\n <SelectJoinColumn\n setPopupClosable={setPopupClosable}\n data={availableData}\n value={value as ColumnType}\n theme={ColumnsPopupThemeEnum.greenGrass}\n didUpdate={didUpdate}\n onSelect={(record: ColumnType) => {\n handleSelect(condition, record);\n }}\n />\n </div>\n );\n }\n return (\n <div className={cx(`sqb-SelectSummarize-group--box ${theme}`)}>\n <div style={{ width: 300 }}>\n <div>\n <div className={cx(`sqb-List-section`)}>\n <div className={cx(`sqb-List-title mx-4 pb-4 pt-4`)}>\n <a>\n <span className={'List-item-icon'}>\n <TableIcon />\n </span>\n <div>\n <h3 className={'List-item-title ml-2'}>基础指标</h3>\n </div>\n </a>\n </div>\n </div>\n\n {FormulaList.map((v, i) => {\n return (\n <div className={cx(`sqb-List-section`)} key={i}>\n <div\n className={cx(`sqb-List-item mx-2`, {\n active: condition === v.name,\n })}\n onClick={() => {\n if (~Special.indexOf(v.name)) {\n handleSelect(v.name, {});\n } else {\n setCondition(v.name);\n }\n }}\n >\n <a className={'p-2'}>\n <div>\n <h4 className={'List-item-title ml-2'}>{v.name}</h4>\n </div>\n <div onClick={(e) => e.stopPropagation()}>\n <Tooltip placement='rt' title={v.tip}>\n <span className='tips'></span>\n </Tooltip>\n </div>\n </a>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nexport default SelectSummarize;\n","/**\n * 选择关联方式\n * 谁在用?\n * 1、关联模块\n */\nimport './index.less';\nimport React from 'react';\nimport cx from 'classnames';\n\nimport { JoinEnum } from '../../../../store/metabase/enum';\n\nimport { LeftJoinIcon, InnerJoinIcon } from '../../icons';\n\nconst JoinList = [\n {\n type: JoinEnum.left,\n name: 'Left outer join',\n icon: (\n <LeftJoinIcon width={24} height={24} style={{ marginRight: '0.5rem', cursor: 'pointer' }} />\n ),\n },\n {\n type: JoinEnum.right,\n name: 'Right outer join',\n icon: (\n <LeftJoinIcon\n width={24}\n height={24}\n style={{ transform: 'rotate(-180deg)', marginRight: '0.5rem', cursor: 'pointer' }}\n />\n ),\n },\n {\n type: JoinEnum.inner,\n name: 'Inner join',\n icon: (\n <InnerJoinIcon width={24} height={24} style={{ marginRight: '0.5rem', cursor: 'pointer' }} />\n ),\n },\n];\n\ninterface PropsType {\n value: JoinEnum;\n onChange: (type: JoinEnum) => void;\n}\nconst SelectJoin = ({ value, onChange = () => {} }: PropsType) => {\n return (\n <div className={`sqb-SelectJoin--box`}>\n <div className={'p-2'}>\n {JoinList.map((v, i) => {\n return (\n <div\n key={v.type}\n className={cx(`sqb-List-item p-2`, {\n active: value === v.type,\n 'mb-2': i !== JoinList.length - 1,\n })}\n onClick={() => {\n onChange(v.type);\n }}\n >\n {v.icon}\n {v.name}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default SelectJoin;\n","/**\n * 选择表弹框\n * 谁在用?\n * 1、数据模块\n * 2、关联模块\n */\nimport './index.less';\nimport React, { useState, useEffect } from 'react';\nimport cloneDeep from 'lodash/cloneDeep';\nimport cx from 'classnames';\n\nimport { MetaData_TableType } from '../../../../store/metabase/types';\n\nimport { TableIcon, SearchIcon } from '../../icons';\n\ninterface PropsType {\n data: MetaData_TableType[]; // 列表数据\n value: MetaData_TableType; // 当前选中的项\n onChange: (reocrd: MetaData_TableType) => void; // 选中回调事件\n didUpdate?: Function; // 刷新弹框\n setPopupClosable?: Function;\n}\n\nconst SelectTable = ({ data = [], value, onChange = () => {}, didUpdate }: PropsType) => {\n const [list, setList] = useState(data.slice());\n\n useEffect(() => {\n didUpdate?.();\n }, [list]);\n\n function onInput(e: any) {\n let val = e.target.value;\n let newList = cloneDeep(data.slice());\n setList(\n newList.filter((v: any) => ~v.name.toLocaleLowerCase().indexOf(val.toLocaleLowerCase())),\n );\n }\n\n return (\n <div className={cx(`sqb-SelectTable--box pb-2`)}>\n <div style={{ width: 300 }}>\n <div style={{ width: '100%' }}>\n <div className={cx(`sqb-List-section`)}>\n <div className={cx(`sqb-List-search m-2 rounded-lg`)}>\n <span className={'px-2'}>\n <SearchIcon />\n </span>\n <input type='text' className={'p-2'} placeholder='查找...' onInput={onInput} />\n </div>\n </div>\n {Array.isArray(list) &&\n list.map((v: MetaData_TableType) => {\n return (\n <div className={cx(`sqb-List-section`)} key={v.name}>\n <div\n className={cx(`sqb-List-item mx-2`, {\n active: value.name === v.name,\n })}\n onClick={() => {\n onChange(v);\n }}\n >\n <a className={'p-2'}>\n <span className={'List-item-icon'}>\n <TableIcon />\n </span>\n <div>\n <h4 className={'List-item-title ml-2'}>{v.name}</h4>\n </div>\n </a>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nexport default SelectTable;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { sleep } from '../../../../utils/helper';\n\ninterface WrapperType {\n children: React.ReactElement;\n className: string;\n}\n\nconst Wrapper = ({ children, className }: WrapperType) => {\n const [opacity, setOpacity] = useState(0);\n const [maxHeight, setMaxHeight] = useState<number | string>(0);\n const couterRef: any = useRef();\n useEffect(() => {\n animation();\n }, []);\n\n async function animation() {\n await sleep(10);\n setOpacity(1);\n setMaxHeight(couterRef.current.childNodes[0].clientHeight + 16);\n await sleep(500);\n setMaxHeight('auto');\n }\n\n return (\n <div\n className={className}\n ref={couterRef}\n style={{ transition: 'all .3s ease 0s', opacity, height: maxHeight, overflow: 'hidden' }}\n >\n {children}\n </div>\n );\n};\n\nexport default Wrapper;\n","import { TypeEnum } from '../store/metabase/enum';\nimport { MetaListType, MetaSummarize } from '../store/metabase/types';\n\nexport const findIndex = <T>(arr: T[], item: T): number => {\n return arr.indexOf(item);\n};\n\ninterface HelperResultType {\n ExistAboveGroupBy: boolean; // 当前元素上面是否存在 聚合\n ExistBelowGroupBy: boolean; // 当前元素下面是否存在 聚合\n prevTypes: TypeEnum[]; // 当前元素和上面最近的聚合 中间的types列表\n nextTypes: TypeEnum[]; // 当前元素和下面最近的聚合 中间的types列表\n prevList: MetaListType[]; // 同 prevTypes 但是放的是 meta[]\n nextList: MetaListType[]; // 同 nextTypes 但是放的是 meta[]\n prevGroupBy: MetaSummarize | undefined; // 上一个最近 聚合数据\n nextGroupBy: MetaSummarize | undefined; // 下一个最近 聚合数据\n}\n\nexport const getHelper = (list: MetaListType[], item: MetaListType): HelperResultType => {\n let types: TypeEnum[] = list.map((v) => v.type);\n let curIndex = list.indexOf(item);\n let leftTypes = types.slice(0, curIndex); // 当前元素上面的所有元素 (不包含自己)\n let rightTypes = types.slice(curIndex + 1); // 当前元素下面的所有元素 (不包含自己)\n let leftList = list.slice(0, curIndex);\n let rightList = list.slice(curIndex + 1);\n\n let ExistAboveGroupBy: boolean = false;\n let ExistBelowGroupBy: boolean = false;\n let prevTypes: TypeEnum[] = [];\n let nextTypes: TypeEnum[] = [];\n let prevList: MetaListType[] = [];\n let nextList: MetaListType[] = [];\n let prevGroupBy: MetaSummarize | undefined;\n let nextGroupBy: MetaSummarize | undefined;\n\n if (~leftTypes.indexOf(TypeEnum.summarize)) {\n ExistAboveGroupBy = true;\n let i = leftTypes.lastIndexOf(TypeEnum.summarize);\n prevTypes = leftTypes.slice(i + 1);\n prevList = leftList.slice(i + 1);\n prevGroupBy = list[i] as MetaSummarize;\n }\n\n if (~rightTypes.indexOf(TypeEnum.summarize)) {\n ExistBelowGroupBy = true;\n let i = rightTypes.indexOf(TypeEnum.summarize);\n nextTypes = rightTypes.slice(0, i);\n nextList = rightList.slice(0, i);\n nextGroupBy = list[curIndex + i + 1] as MetaSummarize;\n }\n return {\n ExistAboveGroupBy,\n ExistBelowGroupBy,\n prevTypes,\n nextTypes,\n prevList,\n nextList,\n prevGroupBy,\n nextGroupBy,\n };\n};\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../../../metaBase/locale';\nimport { TypeEnum } from '../../../../store/metabase/enum';\nimport {\n MetaListType,\n MetaJoin,\n MetaCustom,\n MetaFilter,\n MetaSummarize,\n ModulesPropsType,\n} from '../../../../store/metabase/types';\nimport { getHelper } from '../../../../metaBase/utils';\n\nimport {\n RowLimitIcon,\n SortIcon,\n CustomColumnIcon,\n JoinDataIcon,\n SummarizeIcon,\n FilterIcon,\n} from '../../icons';\n\ntype MetaIconDomProps = {\n show: boolean;\n className?: string;\n type: TypeEnum;\n};\n\ninterface PropsType {\n meta: MetaListType;\n}\n\nenum IconSIzeEnum {\n SMALL = 'small',\n LARGE = 'large',\n}\n\ntype IconInfoType = {\n name: string;\n icon: JSX.Element;\n className?: string;\n};\nconst IconTypeMap: Map<TypeEnum, IconInfoType> = new Map([\n [\n TypeEnum.filter,\n { name: __('SqlQueryBuilder.filter'), icon: <FilterIcon />, className: 'filter' },\n ],\n [\n TypeEnum.summarize,\n { name: __('SqlQueryBuilder.summarize'), icon: <SummarizeIcon />, className: 'summarize' },\n ],\n [\n TypeEnum.joinData,\n { name: __('SqlQueryBuilder.joinData'), icon: <JoinDataIcon />, className: 'join-data' },\n ],\n [TypeEnum.customColumn, { name: __('SqlQueryBuilder.customColumn'), icon: <CustomColumnIcon /> }],\n [TypeEnum.sort, { name: __('SqlQueryBuilder.sort'), icon: <SortIcon /> }],\n [TypeEnum.rowLimit, { name: __('SqlQueryBuilder.rowLimit'), icon: <RowLimitIcon /> }],\n]);\n\n// 前端展示的icon顺序 随便改不影响逻辑\nconst DisplayOrder: TypeEnum[] = [\n TypeEnum.filter,\n TypeEnum.summarize,\n TypeEnum.joinData,\n TypeEnum.customColumn,\n TypeEnum.sort,\n TypeEnum.rowLimit,\n];\n\n// js逻辑顺序 正常顺序\nconst OrderType: TypeEnum[] = [\n TypeEnum.data,\n TypeEnum.joinData,\n TypeEnum.customColumn,\n TypeEnum.filter,\n TypeEnum.summarize,\n TypeEnum.sort,\n TypeEnum.rowLimit,\n];\n\n// js逻辑顺序 聚合下面的顺序是这个样子\nconst OrderNewType: TypeEnum[] = [\n TypeEnum.sort,\n TypeEnum.rowLimit,\n TypeEnum.joinData,\n TypeEnum.customColumn,\n TypeEnum.filter,\n TypeEnum.summarize,\n];\n\nconst metaIcon = (size: IconSIzeEnum, handleClick: Function): any => {\n return ({ type }: MetaIconDomProps) => {\n let info = IconTypeMap.get(type) as IconInfoType;\n return (\n <button\n className={cx(`sqb-button ${info.className || ''}`, {\n small: size === IconSIzeEnum.SMALL,\n large: size === IconSIzeEnum.LARGE,\n })}\n onClick={() => handleClick(type)}\n >\n <div>\n {info.icon}\n {size === IconSIzeEnum.LARGE && <div>{info.name}</div>}\n </div>\n </button>\n );\n };\n};\n\n/**\n * 如果选择了聚合 数据的 字段就不能选了\n */\n\n/*\n **** 该文件 主要是判断 模块下面该放的icon ****\n\n 这一块逻辑比较复杂 主要分两个部分\n 一、模块下面应该放哪些icon\n 1)正常顺序是上面的 OrderType,然后各自根据各自情况找出自己下面能放的icon,但是有两个瘪犊子 (关联、聚合)\n 2)关联比较特殊 可以有多个关联,关联选择了关联表之后,下面还可以继续选关联\n 3)聚合 ... 情况太大了 不一一写了 后面的人自己看下面代码逻辑吧\n 5)\n 6)\n 二、模块下面的icon size是large 还是small\n 1)正常情况,除了最后一个模块下面的icon是 large 其他的都是small 但是也有特殊情况,\n 2)特殊情况一 如果最后一个是聚合,且聚合没有选指标和groupby 下面是small\n 3)特殊情况二 如果最后一个是排序,下面是small\n*/\n// 判断icon大小\nconst judgeSize = (props: ModulesPropsType, nextLen: number) => {\n let { meta } = props;\n let { type } = meta;\n let isLast = props.metaList.indexOf(meta) === props.metaList.length - 1;\n\n let size = IconSIzeEnum.SMALL;\n if (isLast) {\n if (type !== TypeEnum.sort) {\n if (type === TypeEnum.summarize && !(meta as MetaSummarize).by.length) {\n size = IconSIzeEnum.SMALL;\n } else {\n size = IconSIzeEnum.LARGE;\n }\n } else {\n if (nextLen > 1) {\n size = IconSIzeEnum.LARGE;\n }\n }\n }\n return size;\n};\n\n/**\n * 查找模块下面能放哪些icon (参考来源:metabase.com)\n */\nconst findNextIcon = (props: ModulesPropsType): TypeEnum[] => {\n const { meta } = props;\n let { type } = meta;\n let index = props.metaList.indexOf(meta);\n let {\n ExistAboveGroupBy,\n ExistBelowGroupBy,\n prevTypes,\n nextTypes,\n prevList,\n nextList,\n prevGroupBy,\n nextGroupBy,\n } = getHelper(props.metaList, meta);\n\n let nextType = props.metaList[index + 1]?.type || '';\n // @ts-ignore\n let isLast = nextType === '';\n\n let available: TypeEnum[] = [];\n // 当前处在的位置\n let curLocation = OrderType.indexOf(type);\n let nextLocation = OrderType.indexOf(nextType);\n\n if (type === TypeEnum.data) {\n if (isLast) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = OrderType.slice(curLocation + 1, nextLocation);\n }\n }\n if (type === TypeEnum.joinData) {\n if (ExistAboveGroupBy && isLast) {\n // 聚合在上面 且自己是最后一个\n if ((meta as MetaJoin).table2.name) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = [TypeEnum.customColumn, TypeEnum.filter, TypeEnum.summarize];\n }\n } else {\n if (isLast) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = OrderType.slice(curLocation + 1, nextLocation);\n }\n }\n // 关联比较特殊可以有多个\n if (nextType !== TypeEnum.joinData && (meta as MetaJoin).table2.name) {\n available.unshift(TypeEnum.joinData);\n }\n }\n if (type === TypeEnum.customColumn) {\n if (ExistAboveGroupBy && isLast) {\n // 聚合在上面 且自己是最后一个\n let joinIndex = prevTypes.indexOf(TypeEnum.joinData);\n\n // 如果自定义已经选了 或者 自定义没选但是他上面有个关联且关联选了 则展示排序和行限制 否则不展示\n if (\n (meta as MetaCustom).customColumn.length ||\n (~joinIndex && (prevList[joinIndex] as MetaJoin).table2.name)\n ) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = [TypeEnum.filter, TypeEnum.summarize];\n }\n } else {\n if (isLast) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = OrderType.slice(curLocation + 1, nextLocation);\n }\n }\n }\n if (type === TypeEnum.filter) {\n if (ExistAboveGroupBy && isLast) {\n // 聚合在上面 且自己是最后一个\n let joinIndex = prevTypes.indexOf(TypeEnum.joinData);\n let customIndex = prevTypes.indexOf(TypeEnum.customColumn);\n\n // 如果自定义已经选了 或者 自定义没选但是他上面有个关联且关联选了 则展示排序和行限制 否则不展示\n if (\n (meta as MetaFilter).filter.length ||\n (~joinIndex && (prevList[joinIndex] as MetaJoin).table2.name) ||\n (~customIndex && (prevList[customIndex] as MetaCustom).customColumn.length)\n ) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = [TypeEnum.summarize];\n }\n } else {\n if (isLast) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = OrderType.slice(curLocation + 1, nextLocation);\n }\n }\n }\n if (type === TypeEnum.summarize) {\n if (isLast) {\n if (!ExistAboveGroupBy) {\n if ((meta as MetaSummarize).group.length && !(meta as MetaSummarize).by.length) {\n // 一个不显示\n } else if (!(meta as MetaSummarize).group.length && !(meta as MetaSummarize).by.length) {\n available = [TypeEnum.sort, TypeEnum.rowLimit];\n } else {\n available = OrderNewType;\n }\n } else {\n if (!(meta as MetaSummarize).by.length) {\n let joinIndex = prevTypes.indexOf(TypeEnum.joinData);\n let customIndex = prevTypes.indexOf(TypeEnum.customColumn);\n let filterIndex = prevTypes.indexOf(TypeEnum.filter);\n\n if (\n (~joinIndex && (prevList[joinIndex] as MetaJoin).table2.name) ||\n (~customIndex && (prevList[customIndex] as MetaCustom).customColumn.length) ||\n (~filterIndex && (prevList[filterIndex] as MetaFilter).filter.length)\n ) {\n available = OrderType.slice(curLocation + 1);\n } else {\n // 一个不显示\n }\n } else {\n available = OrderNewType;\n }\n }\n } else {\n if (!ExistAboveGroupBy && !ExistBelowGroupBy && !(meta as MetaSummarize).by.length) {\n available = OrderType.slice(curLocation + 1, nextLocation);\n } else {\n available = OrderNewType.slice(0, OrderNewType.indexOf(nextType));\n }\n }\n }\n if (type === TypeEnum.sort) {\n let curNewLocation = OrderNewType.indexOf(type);\n if (isLast) {\n if (ExistAboveGroupBy && prevGroupBy?.by?.length) {\n available = OrderNewType.slice(curNewLocation + 1);\n } else {\n available = OrderType.slice(curLocation + 1);\n }\n } else {\n if (ExistAboveGroupBy && ExistBelowGroupBy) {\n available = OrderNewType.slice(curNewLocation + 1, OrderNewType.indexOf(nextType));\n } else if (!ExistAboveGroupBy && !ExistBelowGroupBy) {\n available = OrderType.slice(curLocation + 1, nextLocation);\n } else if (ExistAboveGroupBy && !ExistBelowGroupBy) {\n if (prevGroupBy?.by?.length) {\n available = OrderType.slice(curLocation + 1, nextLocation);\n } else {\n available = OrderNewType.slice(curNewLocation + 1, OrderNewType.indexOf(nextType));\n }\n }\n }\n }\n if (type === TypeEnum.rowLimit) {\n let curNewLocation = OrderNewType.indexOf(type);\n if (isLast) {\n if (!ExistAboveGroupBy || !prevGroupBy?.by?.length) {\n available = OrderType.slice(curLocation + 1);\n } else {\n available = OrderNewType.slice(curNewLocation + 1);\n }\n } else {\n available = OrderNewType.slice(curNewLocation + 1, OrderNewType.indexOf(nextType));\n }\n }\n return available;\n};\n\nconst sortList = (arr: TypeEnum[]): TypeEnum[] => {\n return DisplayOrder.filter((v) => ~arr.indexOf(v));\n};\n\nconst NextDom = (props: ModulesPropsType) => {\n const { meta } = props;\n // @ts-ignore\n if (!props.metaList[0].table.name) return null;\n\n let available: TypeEnum[] = findNextIcon(props);\n let size = judgeSize(props, available.length);\n\n function handleClick(type: string) {\n let index = props.metaList.indexOf(meta);\n props.addMeta(type, index + 1);\n }\n\n const MetaIconDom = metaIcon(size, handleClick);\n return (\n <div className={`sqb-item--func`}>\n {sortList(available).map((v: TypeEnum) => (\n <MetaIconDom key={v} type={v} />\n ))}\n </div>\n );\n};\n\nexport default NextDom;\n","import React from 'react';\nimport { Tooltip } from '@gingkoo/pandora';\nimport { CloseIcon2 } from '../../icons';\n\ninterface HeaderProps {\n title: string;\n className?: string;\n onClose?: Function;\n}\n\nconst Header = (props: HeaderProps) => {\n return (\n <div className={`sqb-item--text ${props.className}`}>\n {props.title}\n {props.onClose && (\n <Tooltip placement='bottom' title='删除'>\n <CloseIcon2 className={`sqb-item-close`} onClick={props.onClose} />\n </Tooltip>\n )}\n </div>\n );\n};\n\nexport default Header;\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../../metaBase/locale';\nimport {\n MetaData,\n MetaData_TableType,\n MetaData_ColumnsType,\n ModulesPropsType,\n} from '../../../store/metabase/types';\n\nimport { SelectTable, SelectColumn } from '../../../metaBase/components/dialog';\nimport Wrapper from '../../../metaBase/components/modules/components/wrapper';\nimport NextDom from '../../../metaBase/components/modules/components/meta-icon';\nimport Header from '../../../metaBase/components/modules/components/header';\n\nconst TableData = (props: ModulesPropsType<MetaData>) => {\n const { meta, fetchColumns, setPopupData, tableData, showMainColumn } = props;\n let selected = Boolean(meta.table.name);\n\n function selectTable(e: any) {\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectTable\n setPopupClosable={props.setPopupClosable}\n data={tableData as MetaData_TableType[]}\n value={meta.table as MetaData_TableType}\n onChange={async (data: MetaData_TableType) => {\n if (meta.table !== data) {\n let newMetaList = props.metaList.slice();\n let tableName = data.name;\n // @ts-ignore\n newMetaList[0].table = data;\n\n fetchColumns(tableName, (columns: MetaData_ColumnsType[]) => {\n // @ts-ignore\n newMetaList[0].columns = columns;\n\n // ① 主表动了 其他都得重新选\n props.onChangeValue(newMetaList.splice(0, 1));\n });\n }\n setPopupData({ visible: false });\n }}\n />\n ),\n });\n }\n\n function selectColumns(e: any) {\n let columns = meta.columns;\n setPopupData({\n visible: true,\n node: e.currentTarget || e.target,\n content: (\n <SelectColumn\n setPopupClosable={props.setPopupClosable}\n data={columns as MetaData_ColumnsType[]}\n onChange={(data: MetaData_ColumnsType[]) => {\n let newMetaList = props.metaList.slice();\n // @ts-ignore\n newMetaList[0].columns = data;\n props.onChangeValue(newMetaList);\n }}\n />\n ),\n });\n }\n\n return (\n <Wrapper className={`sqb-item`}>\n <div className={`sqb-hover-parent`}>\n <Header title={__('SqlQueryBuilder.data')} />\n <div className={`sqb-item--content`}>\n <div className={`sqb-NotebookCell`}>\n <div\n className={cx(`sqb-TableName`, {\n notSelected: !selected,\n })}\n onClick={selectTable}\n >\n {selected ? meta.table.name : __('SqlQueryBuilder.pickTable')}\n </div>\n {selected && showMainColumn && (\n <div className={`sqb-TableColumns`} onClick={selectColumns}>\n {__('SqlQueryBuilder.columns')}\n </div>\n )}\n </div>\n </div>\n\n <NextDom {...props} />\n </div>\n </Wrapper>\n );\n};\n\nexport default TableData;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { sleep } from '../../../../utils/helper';\n\ninterface WrapperType {\n children: React.ReactElement;\n className: string;\n}\n\nconst Wrapper = ({ children, className }: WrapperType) => {\n const [opacity, setOpacity] = useState(0);\n const [maxHeight, setMaxHeight] = useState<number | string>(0);\n const couterRef: any = useRef();\n useEffect(() => {\n animation();\n }, []);\n\n async function animation() {\n await sleep(10);\n setOpacity(1);\n setMaxHeight(couterRef.current.childNodes[0].clientHeight + 16);\n await sleep(500);\n setMaxHeight('auto');\n }\n\n return (\n <div\n className={className}\n ref={couterRef}\n style={{ transition: 'all .3s ease 0s', opacity, height: maxHeight, overflow: 'hidden' }}\n >\n {children}\n </div>\n );\n};\n\nexport default Wrapper;\n","// @ts-nocheck\nimport React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../locale';\nimport { findIndex } from '../../utils';\nimport {\n TypeEnum,\n ColumnsPopupThemeEnum,\n JoinEnum,\n SQL_COLUMN_TYPE,\n} from '../../../store/metabase/enum';\nimport {\n MetaListType,\n MetaData,\n MetaJoin,\n MetaData_TableType,\n MetaData_ColumnsType,\n MetaSummarize,\n MetaSummarize_Group,\n MetaSummarize_By,\n ModulesPropsType,\n} from '../../../store/metabase/types';\nimport { SummarizeAlias } from '../../../store/metabase/index';\nimport { getHelper } from '../../utils';\n\nimport Wrapper from './components/Wrapper';\nimport NextDom from './components/meta-icon';\nimport Header from './components/header';\nimport { LeftJoinIcon, InnerJoinIcon } from '../icons';\nimport { SelectTable, SelectJoin, SelectJoinColumn, SelectColumn } from '../dialog';\nimport { DataType, ColumnType } from '../dialog/select-join-column';\n\nconst PrevResult = 'Previous results';\n\nenum FlagLocation {\n TABLE_1 = 'table1',\n TABLE_2 = 'table2',\n}\n\nconst JoinData = (props: ModulesPropsType<MetaJoin>) => {\n const { meta, fetchColumns, setPopupData, tableData, metaList } = props;\n let { metaKey } = meta;\n let index = findIndex(metaList, meta);\n let table1Selected = Boolean(meta.table1.name);\n let table2Selected = Boolean(meta.table2.name);\n let columnsSelected = meta.table1.column && meta.table2.column;\n\n function selectColumns(e: any) {\n let columns: MetaData_ColumnsType[] = meta.columns;\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectColumn\n setPopupClosable={props.setPopupClosable}\n data={columns}\n onChange={(data: MetaData_ColumnsType[]) => {\n let newMetaList = metaList.slice();\n newMetaList[index].columns = data;\n props.onChangeValue(newMetaList);\n }}\n />\n ),\n });\n }\n\n function selectTable(e: any) {\n let value: MetaData_TableType = {\n name: meta.table2.name,\n alias: meta.table2.alias,\n };\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectTable\n setPopupClosable={props.setPopupClosable}\n data={tableData as MetaData_TableType[]}\n value={value}\n onChange={async (data: MetaData_TableType) => {\n let tableName = data.name;\n if (meta.table2.name !== tableName) {\n let newMeta: MetaListType[] = metaList.slice();\n let { ExistAboveGroupBy, prevList } = getHelper(metaList, meta);\n let alias = tableName;\n\n let joins: MetaJoin[] = [];\n let mainTable: MetaData = newMeta[0] as MetaData;\n if (ExistAboveGroupBy) {\n joins = prevList.filter(\n (v: MetaListType) => v.type === TypeEnum.joinData,\n ) as MetaJoin[];\n } else {\n joins = newMeta\n .slice(0, index)\n .filter((v: MetaListType) => v.type === TypeEnum.joinData) as MetaJoin[];\n }\n let aliasRegExp = new RegExp(`^${tableName}_[0-9]+$`);\n // ① 如果在同一层里面已经存在了重名的表并且重名表大于等于两张,找到当前序号最大是多少 给他加一\n let lens = joins\n .filter((v: MetaJoin) => aliasRegExp.test(v.table2.alias))\n .map((v: MetaJoin) => Number(v.table2.alias.split('_')[1]));\n if (lens.length) {\n alias = `${tableName}_${Math.max.apply(null, lens) + 1}`;\n } else {\n // ② 如果在同一层已经存在了一张重名的表 直接写死序号为2\n if (\n joins.filter((v: MetaJoin) => v.table2.name === tableName).length ||\n (!ExistAboveGroupBy && tableName === mainTable.table.name)\n ) {\n alias = `${tableName}_2`;\n }\n }\n\n (newMeta[index] as MetaJoin).table2 = { name: tableName, alias, column: '' };\n\n fetchColumns?.(tableName, (columns: MetaData_ColumnsType[]) => {\n (newMeta[index] as MetaJoin).columns = columns;\n\n // 关联表变了 下面模块全部删除\n newMeta = newMeta.filter((v: MetaListType, i: number) => i <= index);\n props.onChangeValue(newMeta);\n });\n }\n\n setPopupData({ visible: false });\n }}\n />\n ),\n });\n }\n\n function selectJoin(e: any) {\n let newMeta = props.metaList.slice();\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectJoin\n setPopupClosable={props.setPopupClosable}\n value={newMeta[index].joinType as JoinEnum}\n onChange={(type: JoinEnum) => {\n let newMeta = props.metaList.slice();\n newMeta[index].joinType = type;\n props.onChangeValue(newMeta);\n setPopupData({ visible: false });\n }}\n />\n ),\n });\n }\n\n function selectJoinColumn(e: any) {\n let node = e.currentTarget;\n let type: FlagLocation = node.getAttribute('v-data');\n let data: DataType[] = [];\n let value: ColumnType = {\n name: meta[type].column,\n table: meta[type].name,\n alias: meta[type].alias,\n database_type: '',\n };\n\n let { ExistAboveGroupBy, prevList, prevGroupBy } = getHelper(props.metaList, meta);\n\n if (type === FlagLocation.TABLE_1) {\n if (ExistAboveGroupBy) {\n let _data: DataType = {\n table: (prevGroupBy as MetaSummarize).alias,\n alias: (prevGroupBy as MetaSummarize).alias,\n columns: [],\n };\n if (prevGroupBy?.group?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.group.map((v: MetaSummarize_Group) => {\n return {\n name: v.quotes,\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n sql: v.sql,\n select: true,\n };\n }),\n );\n }\n if (prevGroupBy?.by?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.by.map((v: MetaSummarize_By) => {\n return {\n name: v.quotes,\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n sql: v.sql,\n select: true,\n };\n }),\n );\n }\n data = [_data];\n\n let joinData = prevList\n .filter((v) => v.type === TypeEnum.joinData)\n // @ts-ignore\n .filter((v: MetaJoin) => v && v.table2.name);\n if (joinData.length) {\n data = data.concat(\n // @ts-ignore\n joinData.map((v: MetaJoin) => {\n return { alias: v.table2.alias, table: v.table2.name, columns: v.columns };\n }),\n );\n }\n } else {\n data = props.metaList\n .slice(0, index)\n .map((v: MetaListType) => {\n if (v.type === TypeEnum.data) {\n return { alias: v.table.alias, table: v.table.name, columns: v.columns };\n } else if (v.type === TypeEnum.joinData) {\n return {\n alias: (v as MetaJoin).table2.alias,\n table: (v as MetaJoin).table2.name,\n columns: (v as MetaJoin).columns,\n };\n } else {\n return { table: null };\n }\n })\n .filter((v: any) => v.table);\n }\n } else {\n data = [{ alias: meta.table2.alias, table: meta.table2.name, columns: meta.columns }];\n }\n\n setPopupData({\n visible: true,\n node,\n content: (\n <SelectJoinColumn\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={value}\n theme={ColumnsPopupThemeEnum.skyBlue}\n onSelect={(record: ColumnType) => {\n let { table, alias, name, sql } = record;\n let newMeta = props.metaList.slice();\n newMeta[index][type].column = name;\n\n if (type === FlagLocation.TABLE_1) {\n if (newMeta[index][type].alias !== alias) {\n newMeta[index][type].alias = alias;\n newMeta[index][type].name = table;\n if (alias === SummarizeAlias) {\n newMeta[index][type].groupSql = sql?.split(' AS ')?.[1] || '';\n }\n }\n }\n\n props.onChangeValue(newMeta);\n setPopupData({ visible: false });\n }}\n />\n ),\n });\n }\n\n return (\n <Wrapper className={cx(`sqb-item`)} key={metaKey}>\n <div className={cx(`sqb-hover-parent`)}>\n <Header title={__('SqlQueryBuilder.joinData')} onClose={() => props.delMeta(meta)} />\n <div className={cx(`sqb-item--content`)}>\n <div className={cx(`sqb-NotebookCell`)}>\n <div className={cx(`sqb-TableName noClick`)}>\n {!table1Selected || meta.table1.name === SummarizeAlias\n ? PrevResult\n : meta.table1.name}\n </div>\n\n <div onClick={selectJoin}>\n {meta.joinType === JoinEnum.left ? (\n <LeftJoinIcon style={{ marginRight: '0.5rem', cursor: 'pointer' }} />\n ) : meta.joinType === JoinEnum.right ? (\n <LeftJoinIcon\n style={{ transform: 'rotate(-180deg)', marginRight: '0.5rem', cursor: 'pointer' }}\n />\n ) : (\n <InnerJoinIcon style={{ marginRight: '0.5rem', cursor: 'pointer' }} />\n )}\n </div>\n\n <div\n className={cx(`sqb-TableName`, { notSelected: !table2Selected })}\n onClick={selectTable}\n >\n {table2Selected ? meta.table2.name : __('SqlQueryBuilder.pickTable')}\n </div>\n\n {table2Selected && (\n <div className={cx(`sqb-where`)}>\n <span className={'ml-2 mr-4 text-gray-500'}>on</span>\n <div\n className={cx(`sqb-TableName`, { notSelected: !meta.table1.column })}\n v-data={FlagLocation.TABLE_1}\n onClick={selectJoinColumn}\n >\n {meta.table1.column ? meta.table1.column : __('SqlQueryBuilder.pickTable')}\n </div>\n <span className={'mr-2 text-gray-500'}>=</span>\n <div\n className={cx(`sqb-TableName`, { notSelected: !meta.table2.column })}\n v-data={FlagLocation.TABLE_2}\n onClick={selectJoinColumn}\n >\n {meta.table2.column ? meta.table2.column : __('SqlQueryBuilder.pickTable')}\n </div>\n </div>\n )}\n\n {columnsSelected && (\n <div className={`sqb-TableColumns`} onClick={selectColumns}>\n {__('SqlQueryBuilder.columns')}\n </div>\n )}\n </div>\n </div>\n\n <NextDom {...props} />\n </div>\n </Wrapper>\n );\n};\n\nexport default JoinData;\n","// @ts-nocheck\nimport React from 'react';\n\nimport { __ } from '../../locale';\nimport { findIndex } from '../../utils';\nimport { sleep, flatArray } from '../../../utils/helper';\nimport {\n MetaCustom,\n MetaListType,\n MetaJoin,\n MetaCustom_Item,\n MetaData_ColumnsType,\n MetaData,\n ModulesPropsType,\n} from '../../../store/metabase/types';\nimport { getHelper } from '../../utils';\nimport { TypeEnum } from '../../../store/metabase/enum';\n\nimport { AddIcon, CloseIcon } from '../icons';\nimport { CustomColumnPopup } from '../dialog';\nimport Wrapper from './components/Wrapper';\nimport NextDom from './components/meta-icon';\nimport Header from './components/header';\n\nconst CustomColumn = (props: ModulesPropsType<MetaCustom>) => {\n const { meta, popupData, setPopupData } = props;\n let { customColumn } = meta;\n let index = findIndex(props.metaList, meta);\n\n function getAvailableColumns(): MetaData_ColumnsType[] {\n let newMeta = props.metaList.slice();\n let columns: MetaData_ColumnsType[] = [];\n let { ExistAboveGroupBy, prevList } = getHelper(props.metaList, meta);\n\n // TIPS metabase 将自定义列也放进去了 但是他们拼sql的时候又没有实现 这里我们也暂时不加进来\n // TIPS metabase 将聚合的参数也弄进来了\n if (ExistAboveGroupBy) {\n columns = flatArray(\n prevList\n .filter((v: MetaListType) => v.type === TypeEnum.joinData)\n // @ts-ignore\n .map((v: MetaJoin) =>\n v.columns.map((o) => ({ ...o, name: `${v.table2.alias} -> ${o.name}` })),\n ),\n );\n } else {\n let mainTable: MetaData = newMeta[0];\n columns = flatArray(\n props.metaList\n .slice(0, index)\n .filter((v: MetaListType) => v.type === TypeEnum.joinData)\n .map((v: MetaJoin) =>\n v.columns.map((o) => ({ ...o, name: `${v.table2.alias} -> ${o.name}` })),\n ),\n );\n\n columns = [\n ...mainTable.columns.map((v: MetaData_ColumnsType) => {\n return {\n ...v,\n name: `${mainTable.table.alias} -> ${v.name}`,\n };\n }),\n ...columns,\n ];\n }\n return columns;\n }\n\n async function handleUpdate(e: any, i: number) {\n const node = e.currentTarget;\n closePopup();\n await sleep(100);\n\n let newMeta = props.metaList.slice();\n let value: MetaCustom_Item = customColumn[i];\n let columns: MetaData_ColumnsType[] = getAvailableColumns();\n\n setPopupData({\n visible: true,\n node,\n content: (\n <CustomColumnPopup\n popupClosable={props.popupClosable}\n setPopupClosable={props.setPopupClosable}\n data={columns}\n value={value}\n onChange={(data: MetaCustom_Item) => {\n newMeta[index].customColumn[i] = data;\n\n // TIPS 修改了名字后面都得删除 暂时不删除 因为过滤器和组合都没用到自定义列\n // if(data.name !== value.name){\n // newMeta = newMeta.filter((v: MetaListType, _i: number)=> _i<=index)\n // }\n props.onChangeValue(newMeta);\n closePopup();\n }}\n onClose={closePopup}\n />\n ),\n });\n }\n\n function handleAdd(e: any) {\n let newMeta = props.metaList.slice();\n let columns: MetaData_ColumnsType[] = getAvailableColumns();\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <CustomColumnPopup\n popupClosable={props.popupClosable}\n setPopupClosable={props.setPopupClosable}\n data={columns}\n value={null}\n onChange={(data: MetaCustom_Item) => {\n newMeta[index].customColumn.push(data);\n props.onChangeValue(newMeta);\n closePopup();\n }}\n onClose={closePopup}\n />\n ),\n });\n }\n\n function handleDel(e: any, itemId: number) {\n e.stopPropagation();\n closePopup();\n let newMeta = props.metaList.slice();\n // TIPS 删除了后面都得删除 暂时不删除 因为过滤器和组合都没用到自定义列\n newMeta[index].customColumn = customColumn.filter(\n (_: MetaCustom_Item, i: number) => i !== itemId,\n );\n props.onChangeValue(newMeta);\n }\n\n function closePopup() {\n popupData.visible && setPopupData({ visible: false });\n }\n return (\n <Wrapper className={`sqb-item`}>\n <div className={`sqb-hover-parent`}>\n <Header\n className='gray-text'\n title={__('SqlQueryBuilder.customColumn')}\n onClose={() => {\n closePopup();\n props.delMeta(meta);\n }}\n />\n <div className={`sqb-item--content`}>\n <div className={`sqb-NotebookCell gray-bg`}>\n {meta.customColumn.map((v: MetaCustom_Item, i: number) => {\n return (\n <div\n className={`sqb-TableName gray-name`}\n key={i}\n onClick={(e) => handleUpdate(e, i)}\n >\n {v.name}\n <span style={{ fontSize: 0 }} onClick={(e) => handleDel(e, i)}>\n <CloseIcon />\n </span>\n </div>\n );\n })}\n <div className={`sqb-TableName gray-name`} onClick={handleAdd}>\n <AddIcon />\n </div>\n </div>\n </div>\n\n <NextDom {...props} />\n </div>\n </Wrapper>\n );\n};\n\nexport default CustomColumn;\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../locale';\nimport { findIndex, getHelper } from '../../utils';\nimport { TypeEnum, SQL_COLUMN_TYPE } from '../../../store/metabase/enum';\nimport {\n MetaFilter,\n MetaFilter_Item,\n MetaSummarize,\n MetaListType,\n MetaJoin,\n MetaSummarize_Group,\n MetaSummarize_By,\n ModulesPropsType,\n} from '../../../store/metabase/types';\nimport { DataType } from '../dialog/select-join-column';\n\nimport Wrapper from './components/wrapper';\nimport { AddIcon, CloseIcon } from '../icons';\nimport NextDom from './components/meta-icon';\nimport Header from './components/header';\nimport { SelectFilter } from '../dialog';\n\nconst Filter = (props: ModulesPropsType<MetaFilter>) => {\n const { meta, popupData, setPopupData } = props;\n let { filter } = meta;\n let index = findIndex(props.metaList, meta);\n let notSelected = !meta.filter.length;\n\n function getColumns(): DataType[] {\n let { ExistAboveGroupBy, prevList, prevGroupBy } = getHelper(props.metaList, meta);\n\n let data: DataType[];\n if (ExistAboveGroupBy) {\n let _data: DataType = {\n table: (prevGroupBy as MetaSummarize).alias,\n alias: (prevGroupBy as MetaSummarize).alias,\n columns: [],\n };\n if (prevGroupBy?.group?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.group.map((v: MetaSummarize_Group) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n sql: v.sql,\n special_type: '',\n select: true,\n };\n }),\n );\n }\n if (prevGroupBy?.by?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.by.map((v: MetaSummarize_By) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n sql: v.sql,\n special_type: '',\n select: true,\n };\n }),\n );\n }\n data = [_data];\n\n let joinData = prevList\n .filter((v: MetaListType) => v.type === TypeEnum.joinData)\n // @ts-ignore\n .filter((v: MetaJoin) => v && v.table2.name);\n if (joinData.length) {\n data = data.concat(\n // @ts-ignore\n joinData.map((v: MetaJoin) => {\n return { alias: v.table2.alias, table: v.table2.name, columns: v.columns };\n }),\n );\n }\n } else {\n // @ts-ignore\n data = props.metaList\n .slice(0, index)\n .map((v: MetaListType) => {\n if (v.type === TypeEnum.data) {\n return { alias: v.table.alias, table: v.table.name, columns: v.columns };\n } else if (v.type === TypeEnum.joinData) {\n return {\n alias: (v as MetaJoin).table2.alias,\n table: (v as MetaJoin).table2.name,\n columns: (v as MetaJoin).columns,\n };\n } else {\n return { table: null };\n }\n })\n .filter((v: any) => v.table);\n }\n return data;\n }\n\n function handleUpdate(e: any, i: number) {\n let newMeta = props.metaList.slice();\n let data = getColumns();\n\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectFilter\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={filter[i] as MetaFilter_Item}\n onChange={(data: MetaFilter_Item) => {\n (newMeta[index] as MetaFilter).filter.splice(i, 1, data);\n props.onChangeValue(newMeta);\n closePopup();\n }}\n />\n ),\n });\n }\n\n function handleAdd(e: any) {\n let newMeta = props.metaList.slice();\n let data: DataType[] = getColumns();\n\n let value: MetaFilter_Item = {\n table: '', // 表名\n alias: '', // 表的别名\n name: '', // 字段名\n database_type: '', // 字段类型\n condition: '', // 选择条件\n val: [], // 选择结果 如果有两个 长度就为2\n quotes: '', // 前端显示用户看的文字\n };\n\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectFilter\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={value as MetaFilter_Item}\n onChange={(data: MetaFilter_Item) => {\n (newMeta[index] as MetaFilter).filter.push(data);\n props.onChangeValue(newMeta);\n closePopup();\n }}\n />\n ),\n });\n }\n\n function handleDel(e: any, itemId: number) {\n e.stopPropagation();\n closePopup();\n let newMeta = props.metaList.slice();\n // @ts-ignore\n newMeta[index].filter = filter.filter((_: any, i: number) => i !== itemId);\n props.onChangeValue(newMeta);\n }\n\n function closePopup() {\n popupData.visible && setPopupData({ visible: false });\n }\n\n return (\n <Wrapper className={`sqb-item`}>\n <div className={`sqb-hover-parent`}>\n <Header\n className='purple-text'\n title={__('SqlQueryBuilder.filter')}\n onClose={() => {\n closePopup();\n props.delMeta(meta);\n }}\n />\n <div className={`sqb-item--content`}>\n <div className={`sqb-NotebookCell gray-bg`}>\n {filter.map((v: MetaFilter_Item, i: number) => {\n return (\n <div\n className={`sqb-TableName purple-name`}\n key={i}\n onClick={(e) => handleUpdate(e, i)}\n >\n {v.quotes}\n <span style={{ fontSize: 0 }} onClick={(e) => handleDel(e, i)}>\n <CloseIcon />\n </span>\n </div>\n );\n })}\n\n <div className={cx(`sqb-TableName purple-name`, { notSelected })} onClick={handleAdd}>\n {notSelected ? '添加筛选条件来缩小你的答案范围' : <AddIcon />}\n </div>\n </div>\n </div>\n\n <NextDom {...props} />\n </div>\n </Wrapper>\n );\n};\n\nexport default Filter;\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../../../metaBase/locale';\nimport { findIndex, getHelper } from '../../../utils';\nimport { TypeEnum, ColumnsPopupThemeEnum, SQL_COLUMN_TYPE } from '../../../../store/metabase/enum';\nimport {\n MetaSummarize,\n MetaSummarize_By,\n MetaListType,\n MetaJoin,\n MetaSummarize_Group,\n ModulesPropsType,\n} from '../../../../store/metabase/types';\nimport SelectJoinColumn, { DataType, ColumnType } from '../../dialog/select-join-column';\n\nimport { AddIcon, CloseIcon } from '../../icons';\n\nexport type ValueType = ColumnType & {\n condition: string; // 选择条件\n quotes: string; // 前端显示用户看的文字\n};\n\nconst GroupBy = (props: ModulesPropsType<MetaSummarize>) => {\n const { meta, popupData, setPopupData } = props;\n let { by } = meta;\n let index = findIndex(props.metaList, meta);\n let notBySelected = !meta.by.length;\n\n function getColumns(): DataType[] {\n let { ExistAboveGroupBy, prevList, prevGroupBy } = getHelper(props.metaList, meta);\n\n let data: DataType[];\n if (ExistAboveGroupBy) {\n let _data: DataType = {\n table: (prevGroupBy as MetaSummarize).alias,\n alias: (prevGroupBy as MetaSummarize).alias,\n columns: [],\n };\n if (prevGroupBy?.group?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.group.map((v: MetaSummarize_Group) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n select: true,\n };\n }),\n );\n }\n if (prevGroupBy?.by?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.by.map((v: MetaSummarize_By) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n select: true,\n };\n }),\n );\n }\n data = [_data];\n\n let joinData = prevList\n .filter((v: MetaListType) => v.type === TypeEnum.joinData)\n // @ts-ignore\n .filter((v: MetaJoin) => v && v.table2.name);\n if (joinData.length) {\n data = data.concat(\n // @ts-ignore\n joinData.map((v: MetaJoin) => {\n return { alias: v.table2.alias, table: v.table2.name, columns: v.columns };\n }),\n );\n }\n } else {\n // @ts-ignore\n data = props.metaList\n .slice(0, index)\n .map((v: MetaListType) => {\n if (v.type === TypeEnum.data) {\n return { alias: v.table.alias, table: v.table.name, columns: v.columns };\n } else if (v.type === TypeEnum.joinData) {\n return {\n alias: (v as MetaJoin).table2.alias,\n table: (v as MetaJoin).table2.name,\n columns: (v as MetaJoin).columns,\n };\n } else {\n return { table: null };\n }\n })\n .filter((v: any) => v.table);\n }\n return data;\n }\n\n function handleUpdate(e: any, i: number) {\n let newMeta = props.metaList.slice();\n let data: DataType[] = getColumns();\n let value: MetaSummarize_By = by[i];\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectJoinColumn\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={value}\n theme={ColumnsPopupThemeEnum.greenGrass}\n isGroup={true}\n // @ts-ignore\n onGroup={(data: MetaSummarize_By) => {\n // @ts-ignore\n newMeta[index].by.splice(i, 1, data);\n // @ts-ignore\n newMeta[index].by = newMeta[index].by.map((v: MetaSummarize_By) => {\n return {\n ...v,\n sql: `${v.alias}.${v.name} AS ${v.alias}__${v.name}`,\n };\n });\n if (value.quotes !== data.quotes) {\n newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);\n }\n props.onChangeValue(newMeta);\n closePopup();\n }}\n />\n ),\n });\n }\n\n function handleAdd(e: any) {\n let newMeta = props.metaList.slice();\n let data: DataType[] = getColumns();\n let value: MetaSummarize_By = {\n table: '',\n alias: '',\n name: '',\n sql: '',\n database_type: '',\n condition: '',\n quotes: '',\n };\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectJoinColumn\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={value}\n theme={ColumnsPopupThemeEnum.greenGrass}\n isGroup={true}\n // @ts-ignore\n onGroup={(data: MetaSummarize_By) => {\n // @ts-ignore\n newMeta[index].by.push(data);\n // @ts-ignore\n newMeta[index].by = newMeta[index].by.map((v: MetaSummarize_By) => {\n return {\n ...v,\n sql: `${v.alias}.${v.name} AS ${v.alias}__${v.name}`,\n };\n });\n props.onChangeValue(newMeta);\n closePopup();\n }}\n />\n ),\n });\n }\n\n function handleDel(e: any, itemId: number) {\n e.stopPropagation();\n closePopup();\n let newMeta = props.metaList.slice();\n // @ts-ignore\n newMeta[index].by = by.filter((_: MetaSummarize_By, i: number) => i !== itemId);\n newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);\n props.onChangeValue(newMeta);\n }\n\n function closePopup() {\n popupData.visible && setPopupData({ visible: false });\n }\n\n return (\n <>\n {meta.by.map((v: any, i: number) => {\n return (\n <div className={`sqb-TableName green-name`} key={i} onClick={(e) => handleUpdate(e, i)}>\n {v.quotes}\n <span style={{ fontSize: 0 }} onClick={(e) => handleDel(e, i)}>\n <CloseIcon />\n </span>\n </div>\n );\n })}\n <div\n className={cx(`sqb-TableName green-name`, { notSelected: notBySelected })}\n onClick={handleAdd}\n >\n {notBySelected ? '选择分组的列' : <AddIcon />}\n </div>\n </>\n );\n};\n\nexport default GroupBy;\n","import {\n MetaListType,\n TableColumnsMapType,\n initColumnsType,\n MetaData,\n MetaData_TableType,\n MetaJoin,\n MetaCustom,\n MetaData_ColumnsType,\n MetaFilter,\n MetaFilter_Item,\n MetaSummarize,\n MetaSummarize_Group,\n MetaSort,\n MetaSort_Item,\n MetaLimit,\n ParamsType,\n ParamsStruct,\n LooseObject,\n} from './types';\nimport { SummarizeAlias } from './index';\nimport { TypeEnum, SQL_GROUP_TYPE, SQL_COLUMN_TYPE } from './enum';\n\nconst NUMBER_GROUP: SQL_COLUMN_TYPE[] = [\n SQL_COLUMN_TYPE.FLOAT,\n SQL_COLUMN_TYPE.LONG,\n SQL_COLUMN_TYPE.CURRENCY,\n];\nconst STRING_GROUP: SQL_COLUMN_TYPE[] = [SQL_COLUMN_TYPE.STRING];\nconst DATE_GROUP: SQL_COLUMN_TYPE[] = [SQL_COLUMN_TYPE.DATE];\n\n// 过滤器对象转sql语句\nexport const filterToSql = (record: MetaFilter_Item): string => {\n let { alias, name, condition, val, groupSql, database_type } = record;\n let [condition_1, condition_2] = val;\n let columnName: string;\n if (alias === SummarizeAlias) {\n columnName = `${alias}.${groupSql?.split(' AS ')?.[1] || ''}`;\n } else {\n columnName = `${alias}.${name}`;\n }\n let sql: string = '';\n\n let group: SQL_GROUP_TYPE = SQL_GROUP_TYPE.STRING;\n if (~NUMBER_GROUP.indexOf(database_type as SQL_COLUMN_TYPE)) {\n group = SQL_GROUP_TYPE.NUMBER;\n }\n if (~DATE_GROUP.indexOf(database_type as SQL_COLUMN_TYPE)) {\n group = SQL_GROUP_TYPE.DATE;\n }\n\n if (group === SQL_GROUP_TYPE.STRING) {\n switch (condition) {\n // string\n case '是':\n sql = `${columnName} = ${condition_1}`;\n break;\n case '不是':\n sql = `${columnName} <> ${condition_1}`;\n break;\n case '包含':\n sql = `(${columnName} like '%${condition_1}%')`;\n break;\n case '不包含':\n sql = `(NOT ${columnName} like '%${condition_1}%')`;\n break;\n case '为空':\n sql = `${columnName} IS NULL`;\n break;\n case '不为空':\n sql = `${columnName} IS NOT NULL`;\n break;\n case '以...开始':\n sql = `(${columnName} like '${condition_1}%')`;\n break;\n case '以...结束':\n sql = `(${columnName} like '%${condition_1}')`;\n break;\n }\n }\n if (group === SQL_GROUP_TYPE.NUMBER) {\n switch (condition) {\n // number\n case '等于':\n sql = `${columnName} = ${condition_1}`;\n break;\n case '不等于':\n sql = `${columnName} <> ${condition_1}`;\n break;\n case '大于':\n sql = `${columnName} > ${condition_1}`;\n break;\n case '小于':\n sql = `${columnName} < ${condition_1}`;\n break;\n case '介于之间':\n sql = `${columnName} BETWEEN ${condition_1} AND ${condition_2}`;\n break;\n case '大于或等于':\n sql = `${columnName} >= ${condition_1}`;\n break;\n case '小于或等于':\n sql = `${columnName} <= ${condition_1}`;\n break;\n case '为空':\n sql = `${columnName} IS NULL`;\n break;\n case '不为空':\n sql = `${columnName} IS NOT NULL`;\n break;\n }\n }\n if (group === SQL_GROUP_TYPE.DATE) {\n switch (condition) {\n // date\n case '早于':\n sql = `${columnName} < timestamp with time zone '${condition_1}'`;\n break;\n case '晚于':\n sql = `${columnName} >= timestamp with time zone '${condition_1}'`;\n break;\n case '介于之间':\n sql = `(${columnName} >= timestamp with time zone '${condition_1}' AND ${columnName} < timestamp with time zone '${condition_2}')`;\n break;\n case '是空的':\n sql = `${columnName} IS NULL`;\n break;\n case '不是空的':\n sql = `${columnName} IS NOT NULL`;\n break;\n }\n }\n\n return sql;\n};\n\n// 聚合转sql语句\nexport const summarizeToSql = (arr: MetaSummarize_Group[], record: MetaSummarize_Group): string => {\n let { condition, alias, name } = record;\n let index = arr.indexOf(record);\n let prevList = arr.slice(0, index);\n\n let sql: string = '';\n let as = '';\n switch (condition) {\n case '总行数':\n case '累积行数':\n sql = 'count(*)';\n as = 'count';\n break;\n case '不重复值的总数':\n sql = `count(distinct ${alias}.${name})`;\n as = 'count';\n break;\n case '累积求和':\n case '总和':\n sql = `sum(${alias}.${name})`;\n as = 'sum';\n break;\n case '平均值':\n sql = `avg(${alias}.${name})`;\n as = 'avg';\n break;\n case '标准差':\n sql = `stddev_pop(${alias}.${name})`;\n as = 'stddev';\n break;\n case '最小值':\n sql = `min(${alias}.${name})`;\n as = 'min';\n break;\n case '最大值':\n sql = `max(${alias}.${name})`;\n as = 'max';\n break;\n }\n let count = 0;\n prevList.forEach((v: MetaSummarize_Group) => {\n if (\n ~['总行数', '累积行数', '不重复值的总数'].indexOf(condition) &&\n ~['总行数', '累积行数', '不重复值的总数'].indexOf(v.condition)\n ) {\n count++;\n }\n if (~['累积求和', '总和'].indexOf(condition) && ~['累积求和', '总和'].indexOf(v.condition)) {\n count++;\n }\n if (condition === '平均值' && v.condition === '平均值') {\n count++;\n }\n if (condition === '标准差' && v.condition === '标准差') {\n count++;\n }\n if (condition === '最小值' && v.condition === '最小值') {\n count++;\n }\n if (condition === '最大值' && v.condition === '最大值') {\n count++;\n }\n });\n\n return sql + ' AS ' + as + (count ? '_' + (count + 1) : '');\n};\n\nconst _flatArr = (data: LooseObject, arr: LooseObject[]) => {\n let { children, ...res } = data;\n arr.push(res);\n if (children) {\n _flatArr(children, arr);\n }\n};\nconst _recursionArr = (arr: LooseObject[]): LooseObject => {\n let obj = { ...arr[0] };\n if (arr.length > 1) {\n obj.children = _recursionArr(arr.slice(1));\n }\n return obj;\n};\nconst reverseData = (data: LooseObject): LooseObject => {\n let arr: LooseObject[] = [];\n _flatArr(data, arr);\n return _recursionArr(arr.reverse());\n};\n\nconst layeredData = (list: MetaListType[]): LooseObject => {\n let res: LooseObject = {};\n\n for (var i = 0; i < list.length; i++) {\n let meta = list[i];\n // @ts-ignore\n\n if (meta.type === TypeEnum.joinData) {\n if (res[meta.type]) {\n (res[meta.type] as MetaJoin[]).push(meta);\n } else {\n res[meta.type] = [meta];\n }\n } else {\n // @ts-ignore\n res[meta.type] = meta;\n }\n\n if (meta.type === TypeEnum.summarize) {\n let nextMeta = list[i + 1];\n let nextNextMeta = list[i + 2];\n let nextNextNextMeta = list[i + 3];\n\n // 将sort 和 rowLimit 归到上一层 (虽然他们两在 summarize 后面)\n // 处理完 sort 和 rowLimit 之后 如果数组后面还有元素则进入下一层循环\n if (nextMeta) {\n if (nextMeta.type === TypeEnum.rowLimit) {\n res[nextMeta.type] = nextMeta;\n if (nextNextMeta) {\n res.children = layeredData(list.slice(i + 2));\n }\n } else if (nextMeta.type === TypeEnum.sort) {\n res[nextMeta.type] = nextMeta;\n if (nextNextMeta) {\n if (nextNextMeta.type === TypeEnum.rowLimit) {\n res[nextNextMeta.type] = nextNextMeta;\n if (nextNextNextMeta) {\n res.children = layeredData(list.slice(i + 3));\n }\n } else {\n res.children = layeredData(list.slice(i + 2));\n }\n }\n } else {\n res.children = layeredData(list.slice(i + 1));\n }\n }\n break;\n }\n }\n return res;\n};\n\nconst handleNesting = (data: LooseObject): ParamsStruct => {\n let hasInnerSql = Boolean(data.children);\n let obj: ParamsStruct = {\n hasInnerSql,\n innerSqlStruct: hasInnerSql ? handleNesting(data.children as LooseObject) : null,\n };\n\n let tableData: MetaData | undefined = data[TypeEnum.data];\n let joinData: MetaJoin[] = data[TypeEnum.joinData] || [];\n let customColumn: MetaCustom | undefined = data[TypeEnum.customColumn];\n let filterData: MetaFilter | undefined = data[TypeEnum.filter];\n let summarize: MetaSummarize | undefined = data[TypeEnum.summarize];\n let sortData: MetaSort | undefined = data[TypeEnum.sort];\n let rowLimit: MetaLimit | undefined = data[TypeEnum.rowLimit];\n if (tableData) {\n obj.alias = tableData.table.alias;\n obj.tableName = tableData.table.name;\n\n if (!summarize || (!summarize.group.length && !summarize.by.length)) {\n obj.queryColumns = tableData.columns.filter((v) => v.select).map((v) => v.name);\n }\n } else {\n if (!summarize || (!summarize.group.length && !summarize.by.length)) {\n obj.alias = SummarizeAlias;\n }\n }\n if (joinData.length) {\n obj.joinTables = joinData\n .filter((v) => v.table2.name)\n .map((v) => {\n let joinCondition: string;\n if (v.table1.alias === SummarizeAlias) {\n joinCondition = `ON ${SummarizeAlias}.${v.table1.groupSql} = ${v.table2.alias}.${v.table2.column}`;\n } else {\n joinCondition = `ON ${v.table1.alias}.${v.table1.column} = ${v.table2.alias}.${v.table2.column}`;\n }\n return {\n alias: v.table2.alias,\n tableName: v.table2.name,\n joinCondition,\n joinType: v.joinType,\n queryColumns: v.columns.filter((o) => o.select).map((o) => o.name),\n };\n });\n }\n if (customColumn && customColumn.customColumn.length) {\n obj.customColumns = customColumn.customColumn.map((v) => {\n return {\n alias: v.name,\n formula: v.formula.replace(/\\[.*?\\]/g, (column: string): string => {\n let str = column.substr(1, column.length - 2);\n if (~str.indexOf('->')) {\n let _str = str.replace(/ /g, '').split('->');\n return `${_str[0]}.${_str[1]}`;\n }\n return str;\n }),\n };\n });\n }\n if (filterData && filterData.filter.length) {\n obj.filters = 'WHERE ' + filterData.filter.map((v) => filterToSql(v)).join(' AND ');\n }\n\n if (summarize && (summarize.group.length || summarize.by.length)) {\n obj.groupBy = {\n calcColumns: [],\n groupColumns: [],\n };\n let queryColumns: string[] = [];\n if (summarize.group.length) {\n obj.groupBy.calcColumns = summarize.group.map((v) => {\n return v.sql;\n });\n queryColumns = [...obj.groupBy.calcColumns];\n }\n if (summarize.by.length) {\n obj.groupBy.groupColumns = summarize.by.map((v) => {\n queryColumns.push(`${v.sql}`);\n return `${v.alias}.${v.name}`;\n });\n }\n\n obj.queryColumns = queryColumns;\n\n if (!tableData) {\n obj.alias = summarize.alias;\n }\n }\n if (sortData && sortData.sort.length) {\n obj.orderInfos = `ORDER BY ${sortData.sort\n .map((v: MetaSort_Item) => `${v.sql} ${v.sort}`)\n .join(', ')}`;\n }\n if (rowLimit) {\n obj.limit = Number(rowLimit.limit);\n }\n return obj;\n};\n\nexport const handleSqlStruct = (list: MetaListType[]) =>\n handleNesting(reverseData(layeredData(list)));\n\n// 压缩结构\nexport const compressionStructure = (data: MetaListType[]): string => {\n let _data = JSON.parse(JSON.stringify(data)).map((v: MetaListType) => {\n let { metaKey, ...record } = v;\n if (record.type === TypeEnum.data || record.type === TypeEnum.joinData) {\n return {\n ...record,\n columns: record.columns.map((o) => {\n return {\n d: o.database_type,\n n: o.name,\n s: o.select,\n c: o.name_zh,\n };\n }),\n };\n } else {\n return record;\n }\n });\n return JSON.stringify(_data);\n};\n\nexport const restoreStructure = (data: string): MetaListType[] => {\n try {\n let _data = JSON.parse(data) as any[];\n let list = _data.map((v, i: number) => {\n let metaKey = i + 1;\n if (v.type === TypeEnum.data || v.type === TypeEnum.joinData) {\n return {\n metaKey,\n ...v,\n columns: v.columns.map((o: any) => {\n return {\n database_type: o.d,\n name: o.n,\n select: o.s,\n special_type: '',\n name_zh: o.c,\n };\n }),\n };\n } else {\n return {\n metaKey,\n ...v,\n };\n }\n });\n return list as MetaListType[];\n } catch (e) {\n return [];\n }\n};\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../../locale';\nimport { findIndex, getHelper } from '../../../utils';\nimport { TypeEnum, SQL_COLUMN_TYPE } from '../../../../store/metabase/enum';\nimport { summarizeToSql } from '../../../../store/metabase/helper';\nimport {\n MetaListType,\n MetaSummarize,\n MetaSummarize_Group,\n MetaSummarize_By,\n MetaJoin,\n ModulesPropsType,\n} from '../../../../store/metabase/types';\nimport { DataType } from '../../dialog/select-join-column';\n\nimport { AddIcon, CloseIcon } from '../../icons';\nimport { SelectSummarize } from '../../dialog';\nimport { ValueType } from '../../dialog/select-summarize/index';\n\nconst SelectIndex = (props: ModulesPropsType<MetaSummarize>) => {\n const { meta, popupData, setPopupData } = props;\n let { group } = meta;\n let index = findIndex(props.metaList, meta);\n let notGroupSelected = !group.length;\n\n function getColumns(): DataType[] {\n let { ExistAboveGroupBy, prevList, prevGroupBy } = getHelper(props.metaList, meta);\n\n let data: DataType[];\n if (ExistAboveGroupBy) {\n let _data: DataType = {\n table: (prevGroupBy as MetaSummarize).alias,\n alias: (prevGroupBy as MetaSummarize).alias,\n columns: [],\n };\n if (prevGroupBy?.group?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.group.map((v: MetaSummarize_Group) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n select: true,\n };\n }),\n );\n }\n if (prevGroupBy?.by?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.by.map((v: MetaSummarize_By) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n select: true,\n };\n }),\n );\n }\n data = [_data];\n\n let joinData = prevList\n .filter((v: MetaListType) => v.type === TypeEnum.joinData)\n // @ts-ignore\n .filter((v: MetaJoin) => v && v.table2.name);\n if (joinData.length) {\n data = data.concat(\n // @ts-ignore\n joinData.map((v: MetaJoin) => {\n return { alias: v.table2.alias, table: v.table2.name, columns: v.columns };\n }),\n );\n }\n } else {\n // @ts-ignore\n data = props.metaList\n .slice(0, index)\n .map((v: MetaListType) => {\n if (v.type === TypeEnum.data) {\n return { alias: v.table.alias, table: v.table.name, columns: v.columns };\n } else if (v.type === TypeEnum.joinData) {\n return {\n alias: (v as MetaJoin).table2.alias,\n table: (v as MetaJoin).table2.name,\n columns: (v as MetaJoin).columns,\n };\n } else {\n return { table: null };\n }\n })\n .filter((v: any) => v.table);\n }\n return data;\n }\n\n function handleUpdate(e: any, i: number) {\n let newMeta = props.metaList.slice();\n let data: DataType[] = getColumns();\n let value: MetaSummarize_Group = group[i];\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectSummarize\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={value}\n onChange={(data: ValueType) => {\n //@ts-ignore\n newMeta[index].group.splice(i, 1, data);\n //@ts-ignore\n newMeta[index].group = newMeta[index].group.map((v: MetaSummarize_Group) => {\n return {\n ...v,\n //@ts-ignore\n sql: summarizeToSql(newMeta[index].group, v),\n };\n });\n if (value.quotes !== data.quotes) {\n newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);\n }\n props.onChangeValue(newMeta);\n closePopup();\n }}\n />\n ),\n });\n }\n\n function handleAdd(e: any) {\n let newMeta = props.metaList.slice();\n let data: DataType[] = getColumns();\n let value: MetaSummarize_Group = {\n table: '',\n alias: '',\n name: '',\n sql: '',\n database_type: '',\n condition: '',\n quotes: '',\n };\n setPopupData({\n visible: true,\n node: e.currentTarget,\n content: (\n <SelectSummarize\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={value}\n onChange={(data: ValueType) => {\n // @ts-ignore\n newMeta[index].group.push(data);\n // @ts-ignore\n newMeta[index].group = newMeta[index].group.map((v: MetaSummarize_Group) => {\n return {\n ...v,\n // @ts-ignore\n sql: summarizeToSql(newMeta[index].group, v),\n };\n });\n props.onChangeValue(newMeta);\n closePopup();\n }}\n />\n ),\n });\n }\n\n function handleDel(e: any, itemId: number) {\n e.stopPropagation();\n closePopup();\n let newMeta = props.metaList.slice();\n // @ts-ignore\n newMeta[index].group = group.filter((_: MetaSummarize_Group, i: number) => i !== itemId);\n newMeta = newMeta.filter((_: MetaListType, _i: number) => _i <= index);\n props.onChangeValue(newMeta);\n }\n\n function closePopup() {\n popupData.visible && setPopupData({ visible: false });\n }\n\n return (\n <>\n {meta.group.map((v: any, i: number) => {\n return (\n <div className={`sqb-TableName green-name`} key={i} onClick={(e) => handleUpdate(e, i)}>\n {v.quotes}\n <span style={{ fontSize: 0 }} onClick={(e) => handleDel(e, i)}>\n <CloseIcon />\n </span>\n </div>\n );\n })}\n <div\n className={cx(`sqb-TableName green-name`, { notSelected: notGroupSelected })}\n onClick={handleAdd}\n >\n {notGroupSelected ? '选择你要查看的指标' : <AddIcon />}\n </div>\n </>\n );\n};\n\nexport default SelectIndex;\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../../locale';\nimport { MetaSummarize, ModulesPropsType } from '../../../../store/metabase/types';\n\nimport Wrapper from '../components/wrapper';\nimport NextDom from '../components/meta-icon';\nimport Header from '../components/header';\nimport GroupBy from './group-by';\nimport SelectIndex from './select-index';\n\nconst Summarize = (props: ModulesPropsType<MetaSummarize>) => {\n const { meta, popupData, setPopupData } = props;\n\n return (\n <Wrapper className={cx(`sqb-item`)}>\n <div className={cx(`sqb-hover-parent`)}>\n <Header\n className='green-text'\n title={__('SqlQueryBuilder.summarize')}\n onClose={() => {\n popupData.visible && setPopupData({ visible: false });\n props.delMeta(meta);\n }}\n />\n <div className={cx(`sqb-item--content`)}>\n <div className={'flex-row'}>\n <div className={`sqb-NotebookCell green-bg`}>\n <SelectIndex {...props} />\n </div>\n <div className={'pass'}>{__('SqlQueryBuilder.by')}</div>\n <div className={`sqb-NotebookCell green-bg`}>\n <GroupBy {...props} />\n </div>\n </div>\n </div>\n\n <NextDom {...props} />\n </div>\n </Wrapper>\n );\n};\n\nexport default Summarize;\n","import React from 'react';\nimport cx from 'classnames';\n\nimport { __ } from '../../../metaBase/locale';\nimport { findIndex, getHelper } from '../../utils';\nimport { SummarizeAlias } from '../../../store/metabase';\nimport {\n ColumnsPopupThemeEnum,\n TypeEnum,\n SortEnum,\n SQL_COLUMN_TYPE,\n} from '../../../store/metabase/enum';\nimport {\n MetaSort,\n MetaSort_Item,\n MetaData_ColumnsType,\n MetaSummarize,\n MetaSummarize_Group,\n MetaSummarize_By,\n MetaJoin,\n MetaListType,\n ModulesPropsType,\n} from '../../../store/metabase/types';\nimport { ColumnType, DataType } from '../dialog/select-join-column';\n\nimport { AddIcon, CloseIcon, UpArrowIcon, DownArrowIcon } from '../icons';\nimport { SelectJoinColumn } from '../../../metaBase/components/dialog';\nimport Wrapper from '../../../metaBase/components/modules/components/wrapper';\nimport NextDom from '../../../metaBase/components/modules/components/meta-icon';\nimport Header from '../../../metaBase/components/modules/components/header';\n\nconst Sort = (props: ModulesPropsType<MetaSort>) => {\n const { meta, setPopupData } = props;\n let { sort } = meta;\n let index = findIndex(props.metaList, meta);\n\n function getColumns(): DataType[] {\n let { ExistAboveGroupBy, prevGroupBy } = getHelper(props.metaList, meta);\n\n let data: DataType[];\n if (ExistAboveGroupBy) {\n let _data: DataType = {\n table: (prevGroupBy as MetaSummarize).alias,\n alias: (prevGroupBy as MetaSummarize).alias,\n columns: [],\n };\n if (prevGroupBy?.group?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.group.map((v: MetaSummarize_Group) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n sql: v.sql,\n select: true,\n };\n }),\n );\n }\n if (prevGroupBy?.by?.length) {\n _data.columns = _data.columns.concat(\n prevGroupBy.by.map((v: MetaSummarize_By) => {\n return {\n name: v.quotes,\n name_zh: '',\n database_type: v?.database_type || SQL_COLUMN_TYPE.FLOAT,\n special_type: '',\n sql: v.sql,\n select: true,\n };\n }),\n );\n }\n data = [_data];\n } else {\n //@ts-ignore\n data = props.metaList\n .slice(0, index)\n .map((v: MetaListType) => {\n if (v.type === TypeEnum.data) {\n return { alias: v.table.alias, table: v.table.name, columns: v.columns };\n } else if (v.type === TypeEnum.joinData) {\n return {\n alias: (v as MetaJoin).table2.alias,\n table: (v as MetaJoin).table2.name,\n columns: (v as MetaJoin).columns,\n };\n } else {\n return { table: null };\n }\n })\n .filter((v: any) => v.table);\n }\n return data;\n }\n\n function addSortColumn(e: any) {\n let node = e.currentTarget || e.target;\n let newMeta = props.metaList.slice();\n let value: ColumnType = {\n table: '',\n alias: '',\n name: '',\n database_type: '',\n };\n let data: DataType[] = getColumns();\n\n // ② 过滤掉已经选择的 排序参数\n let selectedSort: any = {}; // {tableAlias: [columnName, columnName]}\n //@ts-ignore\n newMeta[index].sort.forEach((v: any) => {\n if (selectedSort[v.alias]) {\n selectedSort[v.alias].push(v.name);\n } else {\n selectedSort[v.alias] = [v.name];\n }\n });\n data = data.map((v: DataType) => {\n if (v.alias in selectedSort) {\n return {\n ...v,\n columns: v.columns.filter(\n (n: MetaData_ColumnsType) => !~selectedSort[v.alias]?.indexOf(n.name),\n ),\n };\n }\n return v;\n });\n\n setPopupData({\n visible: true,\n node,\n content: (\n <SelectJoinColumn\n setPopupClosable={props.setPopupClosable}\n data={data}\n value={value}\n theme={ColumnsPopupThemeEnum.greenGrass}\n onSelect={(record: ColumnType) => {\n let { table, name, alias, sql } = record;\n if (alias === SummarizeAlias) {\n let aliasColumns = (sql as string)?.split(' AS ')?.[1] || '';\n if (props.metaList[index - 1].type === TypeEnum.summarize) {\n //@ts-ignore\n newMeta[index].sort = [\n //@ts-ignore\n ...newMeta[index].sort,\n { table, alias, name, sort: SortEnum.asc, sql: aliasColumns },\n ];\n } else {\n //@ts-ignore\n newMeta[index].sort = [\n //@ts-ignore\n ...newMeta[index].sort,\n {\n table,\n alias,\n name,\n sort: SortEnum.asc,\n sql: `${SummarizeAlias}.${aliasColumns}`,\n },\n ];\n }\n } else {\n //@ts-ignore\n newMeta[index].sort = [\n //@ts-ignore\n ...newMeta[index].sort,\n { table, alias, name, sort: SortEnum.asc, sql: `${alias}.${name}` },\n ];\n }\n props.onChangeValue(newMeta);\n setPopupData({ visible: false });\n }}\n />\n ),\n });\n }\n\n function handleSort(itemIndex: number) {\n let newMeta = props.metaList.slice();\n //@ts-ignore\n newMeta[index].sort = sort.map((v: any, i: number) => {\n if (i === itemIndex) {\n return {\n ...v,\n sort: v.sort === SortEnum.asc ? SortEnum.desc : SortEnum.asc,\n };\n }\n return v;\n });\n props.onChangeValue(newMeta);\n }\n\n function delSortColumn(e: any, itemIndex: number) {\n e.stopPropagation();\n let newMeta = props.metaList.slice();\n //@ts-ignore\n newMeta[index].sort = sort.filter((_: any, i: number) => i !== itemIndex);\n props.onChangeValue(newMeta);\n }\n\n return (\n <Wrapper className={cx(`sqb-item`)}>\n <div className={cx(`sqb-hover-parent`)}>\n <Header\n className='gray-text'\n title={__('SqlQueryBuilder.sort')}\n onClose={() => props.delMeta(meta)}\n />\n <div className={cx(`sqb-item--content`)}>\n <div className={cx(`sqb-NotebookCell gray-bg`)}>\n {sort.map((v: MetaSort_Item, i: number) => {\n return (\n <div className={`sqb-TableName gray-name`} key={i} onClick={() => handleSort(i)}>\n {v.sort === SortEnum.asc ? <UpArrowIcon /> : <DownArrowIcon />}\n {v.name}\n <span style={{ fontSize: 0 }} onClick={(e) => delSortColumn(e, i)}>\n <CloseIcon />\n </span>\n </div>\n );\n })}\n <div className={`sqb-TableName gray-name`} onClick={addSortColumn}>\n <AddIcon />\n </div>\n </div>\n </div>\n\n <NextDom {...props} />\n </div>\n </Wrapper>\n );\n};\n\nexport default Sort;\n","import React from 'react';\nimport { InputNumber } from '@gingkoo/pandora';\nimport cx from 'classnames';\n\nimport { __ } from '../../locale';\nimport { findIndex } from '../../utils';\n\nimport Wrapper from './components/wrapper';\nimport NextDom from './components/meta-icon';\nimport Header from './components/header';\n\nimport { ModulesPropsType } from '../../../store/metabase/types';\n\ninterface PropsType {\n store?: any;\n meta: any;\n}\n\nconst RowLimit = (props: ModulesPropsType<any>) => {\n const { meta } = props;\n let index = findIndex(props.metaList, meta);\n\n function handleChange(inputValue: any) {\n let newMeta = props.metaList.slice();\n // @ts-ignore\n newMeta[index].limit = inputValue;\n props.onChangeValue(newMeta);\n }\n return (\n <Wrapper className={cx(`sqb-item`)}>\n <div className={cx(`sqb-hover-parent`)}>\n <Header\n className='gray-text'\n title={__('SqlQueryBuilder.rowLimit')}\n onClose={() => props.delMeta(meta)}\n />\n <div className={cx(`sqb-item--content`)}>\n <div className={cx(`sqb-NotebookCell gray-bg`)}>\n <InputNumber\n value={meta.limit}\n min={1}\n style={{ width: 200 }}\n onChange={handleChange}\n placeholder={'请输入'}\n precision={0}\n />\n </div>\n </div>\n\n <NextDom {...props} />\n </div>\n </Wrapper>\n );\n};\n\nexport default RowLimit;\n","import { TypeEnum } from '../../../store/metabase/enum';\n\nimport TableData from './table-data';\nimport JoinData from './join-data';\nimport CustomColumn from './custom-column';\nimport Filter from './filter';\nimport Summarize from './summarize';\nimport Sort from './sort';\nimport RowLimit from './row-limit';\n\n// @ts-ignore\nexport default new Map([\n [TypeEnum.data, TableData],\n [TypeEnum.joinData, JoinData],\n [TypeEnum.customColumn, CustomColumn],\n [TypeEnum.filter, Filter],\n [TypeEnum.summarize, Summarize],\n [TypeEnum.sort, Sort],\n [TypeEnum.rowLimit, RowLimit],\n]);\n","import './index.less';\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport { Button } from '@gingkoo/pandora';\nimport { Loading } from '@gingkoo/pandora-icons';\n// import { LoadingOutlined } from '@ant-design/icons';\nimport Styled from 'styled-components';\nimport { TypeEnum, JoinEnum } from '../metaBase/enum';\n\nimport { __ } from '../metaBase/locale';\nimport modulesMap from '../metaBase/components/modules';\n\nimport Popup from '../metaBase/components/popup';\nimport type { MetaBaseProps } from '../metaBase/interface';\nimport {\n MetaListType,\n PopupData,\n MetaData_TableType,\n MetaData,\n MetaJoin,\n MetaSummarize,\n TableColumnsMapType,\n MetaData_ColumnsType,\n initColumnsType,\n} from '../store/metabase/types';\nexport const SummarizeAlias = 'source';\n\nconst VisualBox = Styled.div.attrs({ className: 'visual-box' })``;\n\nlet metaKey: number = 1;\n\nconst MetaBase = (props: MetaBaseProps) => {\n const popupContainer = useRef();\n const {\n loading,\n showExecute = true,\n onExecute,\n isCacheColumns,\n value,\n tableData: _tableData,\n getTableColumns,\n onChange,\n } = props;\n\n const [popupData, setPopupData] = useState<PopupData>({\n visible: false,\n node: null,\n content: null,\n }); //弹窗选择数据\n\n const [tableData, setTableData] = useState<MetaData_TableType[]>([]); //弹窗选择数据\n const [metaList, setMetaList] = useState<MetaListType[]>([\n { metaKey, type: TypeEnum.data, table: { name: '', alias: '' }, columns: [] },\n ]); //metaBase 回显数据\n\n const [popupClosable, setPopupClosable] = useState<boolean>(true); //是否可关闭 如果弹框里面再弹框 则不可关闭\n const [_cacheColumnsMap, set_cacheColumnsMap] = useState<TableColumnsMapType>({});\n\n const onChangeValue = (val: MetaListType[]) => {\n setPopupData({ ...popupData });\n setMetaList(val);\n onChange?.(val);\n };\n\n useEffect(() => {\n value && value.length > 0 && onChangeValue(value);\n }, [value]);\n useEffect(() => {\n setTableData(_tableData || []);\n }, [_tableData]);\n\n const popupContent = useMemo(() => {\n let { visible, content } = popupData;\n if (!visible) return null;\n return content;\n }, [popupData]);\n\n async function fetchColumns(\n tableName: string,\n callback: (record: MetaData_ColumnsType[]) => void,\n ): Promise<any> {\n let columns: initColumnsType[] = isCacheColumns ? _cacheColumnsMap[tableName] || [] : [];\n if (!columns.length) {\n let columnsData = await getTableColumns?.(tableName);\n\n if (!columnsData || !Array.isArray(columnsData)) return false;\n\n columns = columnsData;\n\n set_cacheColumnsMap({\n ..._cacheColumnsMap,\n [tableName]: columns,\n });\n }\n typeof callback === 'function' && callback(columns.map((v) => ({ ...v, select: true }))); // 默认所有字段都是勾上的 所以select写死true\n }\n\n const addMeta = (type: string, index: number) => {\n let newMeta: MetaListType[] = metaList.slice();\n let item: MetaListType;\n let mainTable: MetaData = newMeta[0] as MetaData;\n metaKey += 1;\n\n if (type === TypeEnum.joinData) {\n let name = index === 1 ? mainTable.table.name : '';\n item = {\n metaKey,\n type: TypeEnum.joinData,\n joinType: JoinEnum.left,\n table1: { name, alias: name, column: '' },\n table2: { name: '', alias: '', column: '' },\n columns: [],\n };\n }\n\n if (type === TypeEnum.customColumn) {\n item = { metaKey, type: TypeEnum.customColumn, customColumn: [] };\n }\n\n if (type === TypeEnum.filter) {\n item = { metaKey, type: TypeEnum.filter, filter: [] };\n }\n\n if (type === TypeEnum.summarize) {\n item = { metaKey, type: TypeEnum.summarize, alias: SummarizeAlias, group: [], by: [] };\n }\n\n if (type === TypeEnum.sort) {\n item = { metaKey, type: TypeEnum.sort, sort: [] };\n }\n\n if (type === TypeEnum.rowLimit) {\n item = { metaKey, type: TypeEnum.rowLimit, limit: '' };\n }\n\n // @ts-ignore\n newMeta.splice(index, 0, item);\n setMetaList(newMeta);\n };\n\n const delMeta = (meta: any): void => {\n // TIPS 自定义列删除了后面都得删除 暂时不删除 因为过滤器和组合包括自定义列都没用到自定义列\n let index = metaList.indexOf(meta);\n let newMeta = metaList.slice();\n\n if (meta.type === TypeEnum.joinData) {\n if ((meta as MetaJoin).table2.name) {\n let _metaList = newMeta.filter((v: MetaListType, i: number) => i < index);\n setMetaList(_metaList);\n return void 0;\n }\n }\n if (meta.type === TypeEnum.summarize) {\n if ((meta as MetaSummarize).by.length || (meta as MetaSummarize).group.length) {\n let _metaList = newMeta.filter((v: MetaListType, i: number) => i < index);\n setMetaList(_metaList);\n\n return void 0;\n }\n }\n let _metaList = newMeta.filter((v) => v !== meta);\n setMetaList(_metaList);\n };\n\n const showMainColumn = useMemo(() => {\n let summarizeList = metaList.filter((v) => v.type === TypeEnum.summarize);\n if (\n !summarizeList.length ||\n (summarizeList.length === 1 &&\n !(summarizeList[0] as MetaSummarize).group.length &&\n !(summarizeList[0] as MetaSummarize).by.length)\n ) {\n return true;\n }\n return false;\n }, [metaList]);\n\n if (loading) return null;\n return (\n // @ts-ignore\n <VisualBox ref={popupContainer}>\n <div className={'sqb'}>\n <div className={cx(`sqb-list`)}>\n {metaList?.map((meta: any) => {\n let { type: metaType, metaKey } = meta;\n let Component: any = modulesMap.get(metaType);\n return (\n <Component\n meta={meta}\n addMeta={addMeta}\n delMeta={delMeta}\n fetchColumns={fetchColumns}\n key={metaKey}\n popupData={popupData}\n setPopupData={setPopupData}\n tableData={tableData}\n metaList={metaList}\n onChangeValue={onChangeValue}\n popupClosable={popupClosable}\n setPopupClosable={setPopupClosable}\n showMainColumn={showMainColumn}\n />\n );\n })}\n </div>\n {showExecute && (\n <Button\n type='primary'\n className={`sqb-btn`}\n icon={loading ? <Loading /> : null}\n disabled={loading}\n onClick={() => {\n onExecute?.(metaList);\n // store.execute();\n // props.openResult();\n }}\n >\n {__('SqlQueryBuilder.visualize')}\n </Button>\n )}\n\n {popupContainer.current && (\n <Popup\n container={popupContainer.current}\n visible={popupData.visible}\n node={popupData.node}\n closable={popupClosable}\n hideVisible={() => {\n setPopupData({ visible: false });\n }}\n >\n {popupContent}\n </Popup>\n )}\n </div>\n </VisualBox>\n );\n};\n\nexport default MetaBase;\nexport { MetaBaseProps, type MetaData_ColumnsType };\n"],"names":["SortEnum","TypeEnum","JoinEnum","ColumnsPopupThemeEnum","SpecialType","SQL_COLUMN_TYPE","SQL_GROUP_TYPE","DataTypeEnum","EleComponentEnum","TabEnum","localeMap","__","str","getTextNodeAtPosition","root","index","treeWalker","document","createTreeWalker","NodeFilter","SHOW_TEXT","elem","textContent","length","FILTER_REJECT","FILTER_ACCEPT","c","nextNode","node","position","e","getSelectionPosition","element","setSelectionRange","createTextRange","selectionStart","selectionEnd","selection","window","getSelection","range","getRangeAt","cloneRange","startContainer","startOffset","setStart","end","toString","setEnd","start","setSelectionPosition","focus","collapse","moveEnd","moveStart","select","startPos","endPos","removeAllRanges","Range","addRange","getCaretPosition","saveSelection","setCaretPosition","KEYCODE_ENTER","KEYCODE_ESCAPE","KEYCODE_LEFT","KEYCODE_UP","KEYCODE_RIGHT","KEYCODE_DOWN","t","msg","TOKEN","Operator","Number","String","Identifier","OPERATOR","Comma","OpenParenthesis","CloseParenthesis","Plus","Minus","Star","Slash","Equal","NotEqual","LessThan","GreaterThan","LessThanEqual","Not","And","Or","tokenize","expression","source","isWhiteSpace","cp","isDigit","isAlpha","skipWhitespaces","charCodeAt","scanOperator","ch","type","op","slice","error","scanNumericLiteral","dot","exp","sign","marker","_t","_","scanStringLiteral","quote","value","seq","terminated","_t2","scanBracketIdentifier","bracket","_t3","_t4","isIdentifierStart","isIdentifierChar","scanIdentifier","initial","id","toLowerCase","main","tokens","errors","token","push","message","pos","char","prev","ref","_t5","_t6","_t7","functions","abs","tip","name","desc","case","parameter","key","explain","ceil","coalesce","concat","floor","log","lower","ltrim","power","replace","round","rtrim","sqrt","substring","trim","upper","getFuncInfo","OptionsTypeEnum","SelectPopupTypeEnum","Suggest","choosePopup","targetOffset","fields","partialSource","matchPrefix","partialMatch","_fields","map","v","last","functionDisplayName","enclosingFunction","FUNCTION_DESC","functionName","SELECT_LIST","data","list","_partialSource","prevStr","substr","indexOf","FIELD","FUNCTION","Object","keys","OTHER","fieldList","filter","includes","funcList","first","EMPTY","lastToken","isOpen","OP","isClose","parenCount","i","MBQL_CLAUSES","count","displayName","args","sum","distinct","stddev","requiresFeature","avg","min","max","share","var","median","percentile","multiple","contains","hasOptions","between","and","or","not","tokenName","clause","entries","undefined","console","warn","Map","mbql","EXPRESSION_TO_MBQL_NAME","getMBQLName","expressionName","get","AGGREGATION_FUNCTIONS","Set","EXPRESSION_FUNCTIONS","EXPRESSION_OPERATORS","FILTER_OPERATORS","BOOLEAN_UNARY_OPERATORS","LOGICAL_AND_OPERATOR","LOGICAL_OR_OPERATOR","FUNCTIONS","mapTokenType","createSpans","isFunction","has","lastPos","spans","forEach","kind","text","tail","TokenizedExpression","React","Component","render","startRule","props","_jsx","className","cx","children","TokenizedInput","defaultProps","style","componentDidMount","ReactDOM","findDOMNode","componentDidUpdate","addEventListener","onSelectionChange","inputNode","restore","innerHTML","ReactDOMServer","renderToStaticMarkup","activeElement","componentWillUnmount","removeEventListener","setValue","onChange","target","onInput","onFocus","onBlur","onKeyDown","onClick","forwardedRef","contentEditable","spellCheck","forwardRef","TokenizedInputWithForwardedRef","getComputedTranslate","obj","getComputedStyle","x","y","transform","webkitTransform","mozTransform","mat","match","parseFloat","split","getElementTop","elemTop","offsetTop","pElem","offsetParent","getElementLeft","elemLeft","offsetLeft","getScrollTop","documentElement","scrollTop","getWindowSize","width","body","clientWidth","height","clientHeight","throttle","fn","wait","Date","now","timer","diff","clearTimeout","_self","setTimeout","bind","apply","getUrlParams","url","location","href","params","lastIndexOf","item","sleep","Promise","resolve","reject","flatArray","arr","WinResetEvent","eventStack","funcId","constructor","reset","addEvent","context","delay","removeEvent","values","cb","winResetEvent","Portal","didUpdate","getContainer","containerRef","useRef","useImperativeHandle","initRef","current","useEffect","parentNode","removeChild","createPortal","returnDocument","outSpacing","generateTrigger","PortalComponent","Trigger","resetId","visible","createRef","container","bindEvent","that","ele","closePopup","closable","hideVisible","attachParent","popupContainer","mountNode","appendChild","getCurrentNodePos","h","offsetHeight","innerSpacing","createElement","top","left","pointerEvents","zIndex","getComponent","overflowX","overflowY","backgroundColor","transition","boxShadow","borderRadius","stopPropagation","cloneElement","posY","realHeight","childNodes","winH","downH","maxHeight","topHeight","Math","cssText","portal","SelectList","onSelect","_jsxs","n","FunctionTip","funcName","sqlFormula","ErrorMessage","ExpressionEditor","setPopupClosable","popup","setPopup","useState","input","setSource","errorMessage","setErrorMessage","setError","popupContent","useMemo","content","_setCaretPosition","_triggerAutosuggest","autosuggest","onExpressionChange","inputElement","hasSelection","popupInfo","suggest","val","len","leftoverSource","test","onInputKeyDown","keyCode","preventDefault","checkExpression","onInputBlur","pass","_Fragment","fontSize","borderColor","paddingLeft","Popup","WIDTH","CustomColumn","popupClosable","onClose","setName","setExpression","formula","isUpdate","usable","onOk","buttonText","color","placeholder","marginLeft","disabled","CloseIcon2","viewBox","fill","role","d","FilterIcon","SummarizeIcon","JoinDataIcon","CustomColumnIcon","SortIcon","RowLimitIcon","LeftJoinIcon","InnerJoinIcon","UpArrowIcon","DownArrowIcon","CloseIcon","AddIcon","TableIcon","SearchIcon","NotSelectIcon","SelectIcon","CircleIcon","LetterAaIcon","CalendarIcon","WellIcon","ForeignKeyIcon","UpArrowIcon2","DownArrowIcon2","LeftArrowIcon","SelectColumn","columns","setColumns","isAllSelect","AllSelectElement","newColumns","Array","isArray","cloneDeep","name_zh","configure","useProxies","isolateGlobalState","SummarizeAlias","SqlVisionStore","makeAutoObservable","_cacheColumnsMap","fetchColumns","tableName","callback","getColumns","tableId","NUMBER_GROUP","FLOAT","LONG","CURRENCY","STRING","DATE_GROUP","DATE","IconMap","CHAR","VARCHAR","CLOB","DOUBLE","SMALLINT","BIGINT","INTEGER","TIMESTAMP","PK","FK","OPEN_GROUP","SelectJoinColumn","theme","skyBlue","isGroup","onGroup","curTable","setCurTable","alias","curColumn","setCurColumn","tableList","setTableList","open","searchText","tableAlias","newData","toLocaleLowerCase","condition","tableItem","table","isMultiple","isSummarize","shrink","active","newTables","autoFocus","special_type","database_type","NUMBER","quotes","sql","RangePicker","DatePicker","NUMBER_LIST","STRING_LIST","DATE_LIST","SelectFilterColumn","setCondition","curVal","setVal","generateQuotes","firstVal","secondVal","addFilter","groupSql","goPrevPage","getData","columnType","toUpperCase","conditions","renderFilter","conditionText","display","flexDirection","Input","newVal","showTime","format","moment","Dropdown","trigger","droplist","Menu","onClickMenuItem","Item","Button","DownArrow","nextPage","menu","setDefaultVal","_condition","purple","record","greenGrass","FormulaList","QuotesMap","Special","SelectSummarize","handleSelect","availableData","o","Tooltip","placement","title","JoinList","icon","marginRight","cursor","right","inner","SelectJoin","SelectTable","setList","newList","Wrapper","opacity","setOpacity","setMaxHeight","couterRef","animation","overflow","findIndex","getHelper","types","curIndex","leftTypes","rightTypes","leftList","rightList","ExistAboveGroupBy","ExistBelowGroupBy","prevTypes","nextTypes","prevList","nextList","prevGroupBy","nextGroupBy","summarize","IconSIzeEnum","IconTypeMap","joinData","customColumn","sort","rowLimit","DisplayOrder","OrderType","OrderNewType","metaIcon","size","handleClick","info","small","SMALL","large","LARGE","judgeSize","nextLen","meta","isLast","metaList","by","findNextIcon","nextType","available","curLocation","nextLocation","table2","unshift","joinIndex","customIndex","group","filterIndex","curNewLocation","sortList","NextDom","addMeta","MetaIconDom","Header","TableData","setPopupData","tableData","showMainColumn","selected","Boolean","selectTable","currentTarget","newMetaList","onChangeValue","splice","selectColumns","notSelected","PrevResult","FlagLocation","JoinData","metaKey","table1Selected","table1","table2Selected","columnsSelected","column","newMeta","joins","mainTable","aliasRegExp","RegExp","lens","selectJoin","joinType","selectJoinColumn","getAttribute","TABLE_1","_data","delMeta","TABLE_2","popupData","getAvailableColumns","handleUpdate","CustomColumnPopup","handleAdd","handleDel","itemId","Filter","SelectFilter","GroupBy","notBySelected","_i","summarizeToSql","as","SelectIndex","notGroupSelected","Summarize","Sort","addSortColumn","selectedSort","aliasColumns","asc","handleSort","itemIndex","delSortColumn","RowLimit","handleChange","inputValue","limit","InputNumber","precision","VisualBox","Styled","div","attrs","MetaBase","loading","showExecute","onExecute","isCacheColumns","_tableData","getTableColumns","setTableData","setMetaList","set_cacheColumnsMap","columnsData","_metaList","summarizeList","metaType","modulesMap","Loading"],"mappings":"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","x_google_ignoreList":[0]}