| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | import { dataType } from './configs'export function trimColType(str) {  let colType  if (str.indexOf('(') >= 0) {    colType = dataType.find(type => type.name === str.split('(')[0])  } else {    colType = dataType.find(type => type.name === str)  }  return colType}export function buildSqlSentence({ dataSrc, selectedCalcul, selectedCalcul2, selectedDimension, orderByStrs, filterStr, limit }) {  let fields = []  const groups = []  let groupBy  let orderBy  let where  let allSelected = []  // allSelected = allSelected.concat(selectedCalcul).concat(selectedDimension)  // fields = allSelected.map(field => {  //   const calculField = selectedCalcul.find(col => col.Column === field.Column)  //   if (calculField && calculField.calculFunc !== 'none') {  //     return `${calculField.calculFunc || trimColType(calculField.Type).availableFunc[0]}(${calculField.Column}) as ${calculField.Column}`  //   } else {  //     groups.push(field.Column)  //     return field.Column  //   }   // })  allSelected = allSelected.concat(selectedCalcul).concat(selectedCalcul2).concat(selectedDimension)  fields = allSelected.map(field => {    const calculField = selectedCalcul.find(col => col.Column === field.Column)    const calculField2 = selectedCalcul2.find(col => col.Column === field.Column)    if (calculField && calculField.calculFunc !== 'none') {      return `${calculField.calculFunc || trimColType(calculField.Type).availableFunc[0]}(${calculField.Column}) as ${calculField.Column}`    } else if (calculField2 && calculField2.calculFunc !== 'none') {      return `${calculField2.calculFunc || trimColType(calculField2.Type).availableFunc[0]}(${calculField2.Column}) as ${calculField2.Column}`    } else {      groups.push(field.Column)      return field.Column    }  })  if (fields.length === 0 || !dataSrc) return  if (groups.length > 0) {    groupBy = `GROUP BY ${groups.join()}`  }  if (orderByStrs.length > 0) {    orderBy = `ORDER BY ${orderByStrs.join()}`  }  if (filterStr) {    console.log("buildSqlSentence  filterStr!!!")    where = `where ${filterStr}`  }  return `SELECT ${fields.join()} FROM ${dataSrc} ${where || ''} ${groupBy || ''} ${orderBy || ''} LIMIT ${limit || 200}`}export function buildFilterSentence(filter) {  let filterSentence  let valueObj = filter.value  if (trimColType(filter.colType).needQuotation) {    valueObj = addQuotation(filter.value)  }  if (filter.operatorParamNum === 1) {    filterSentence = `${filter.filteCol} ${filter.filterOperator} ${valueObj.value1}`  } else if (filter.operatorParamNum === 2) {    filterSentence = `${filter.filteCol} ${filter.filterOperator} ${valueObj.value1} and ${valueObj.value2}`  } else {    filterSentence = `${filter.filteCol} ${filter.filterOperator} ('${valueObj.arrValue.join(',')}')`  }  return filterSentence  function addQuotation(valueObj) {    return {      value1: `'${valueObj.value1}'`,      value2: `'${valueObj.value2}'`,      arrValue: valueObj.arrValue.map(value => `'${value}'`)    }  }}
 |