Browse Source

Merge pull request #260 from czhen-zilliz/fix-bool-display

fix bool data display
nameczz 3 years ago
parent
commit
58de57baf3

+ 11 - 4
client/src/components/advancedSearch/Condition.tsx

@@ -10,6 +10,7 @@ import CloseIcon from '@material-ui/icons/Close';
 import { ConditionProps, Field } from './Types';
 import { ConditionProps, Field } from './Types';
 import CustomSelector from '../customSelector/CustomSelector';
 import CustomSelector from '../customSelector/CustomSelector';
 import { LOGICAL_OPERATORS } from '../../consts/Util';
 import { LOGICAL_OPERATORS } from '../../consts/Util';
+import { DataTypeStringEnum } from '../../pages/collections/Types';
 
 
 const Condition: FC<ConditionProps> = props => {
 const Condition: FC<ConditionProps> = props => {
   const {
   const {
@@ -48,17 +49,23 @@ const Condition: FC<ConditionProps> = props => {
     const conditionValueWithNoSpace = conditionValue.replaceAll(' ', '');
     const conditionValueWithNoSpace = conditionValue.replaceAll(' ', '');
 
 
     switch (type) {
     switch (type) {
-      case 'int':
+      case DataTypeStringEnum.Int8:
+      case DataTypeStringEnum.Int16:
+      case DataTypeStringEnum.Int32:
+      case DataTypeStringEnum.Int64:
+        // case DataTypeStringEnum:
         isLegal = isIn
         isLegal = isIn
           ? regIntInterval.test(conditionValueWithNoSpace)
           ? regIntInterval.test(conditionValueWithNoSpace)
           : regInt.test(conditionValueWithNoSpace);
           : regInt.test(conditionValueWithNoSpace);
         break;
         break;
-      case 'float':
+      case DataTypeStringEnum.Float:
+      case DataTypeStringEnum.Double:
+      case DataTypeStringEnum.FloatVector:
         isLegal = isIn
         isLegal = isIn
           ? regFloatInterval.test(conditionValueWithNoSpace)
           ? regFloatInterval.test(conditionValueWithNoSpace)
           : regFloat.test(conditionValueWithNoSpace);
           : regFloat.test(conditionValueWithNoSpace);
         break;
         break;
-      case 'bool':
+      case DataTypeStringEnum.Bool:
         const legalValues = ['false', 'true'];
         const legalValues = ['false', 'true'];
         isLegal = legalValues.includes(conditionValueWithNoSpace);
         isLegal = legalValues.includes(conditionValueWithNoSpace);
         break;
         break;
@@ -81,7 +88,7 @@ const Condition: FC<ConditionProps> = props => {
   const classes = useStyles();
   const classes = useStyles();
 
 
   const logicalOperators = useMemo(() => {
   const logicalOperators = useMemo(() => {
-    if (conditionField.type === 'bool') {
+    if (conditionField.type === DataTypeStringEnum.Bool) {
       const data = LOGICAL_OPERATORS.filter(v => v.value === '==');
       const data = LOGICAL_OPERATORS.filter(v => v.value === '==');
       setOperator(data[0].value);
       setOperator(data[0].value);
       // bool only support ==
       // bool only support ==

+ 2 - 2
client/src/components/advancedSearch/Types.ts

@@ -1,4 +1,4 @@
-// import { ReactElement } from 'react';
+import { DataTypeStringEnum } from '../../pages/collections/Types';
 
 
 export interface ConditionProps {
 export interface ConditionProps {
   others?: object;
   others?: object;
@@ -12,7 +12,7 @@ export interface ConditionProps {
 
 
 export interface Field {
 export interface Field {
   name: string;
   name: string;
-  type: 'int' | 'float' | 'bool';
+  type: DataTypeStringEnum;
 }
 }
 
 
 export interface TriggerChangeData {
 export interface TriggerChangeData {

+ 9 - 4
client/src/pages/query/Query.tsx

@@ -21,6 +21,7 @@ import CustomToolBar from '../../components/grid/ToolBar';
 // import { CustomDatePicker } from '../../components/customDatePicker/CustomDatePicker';
 // import { CustomDatePicker } from '../../components/customDatePicker/CustomDatePicker';
 import { saveAs } from 'file-saver';
 import { saveAs } from 'file-saver';
 import { generateCsvData } from '../../utils/Format';
 import { generateCsvData } from '../../utils/Format';
+import { DataTypeStringEnum } from '../collections/Types';
 
 
 const Query: FC<{
 const Query: FC<{
   collectionName: string;
   collectionName: string;
@@ -58,7 +59,7 @@ const Query: FC<{
         const tmp = Object.keys(resultItem).reduce(
         const tmp = Object.keys(resultItem).reduce(
           (prev: { [key: string]: any }, item: string) => {
           (prev: { [key: string]: any }, item: string) => {
             if (Array.isArray(resultItem[item])) {
             if (Array.isArray(resultItem[item])) {
-              const list2Str = `[${resultItem[item]}]`;
+              const list2Str = JSON.stringify(resultItem[item]);
               prev[item] = (
               prev[item] = (
                 <div className={classes.vectorTableCell}>
                 <div className={classes.vectorTableCell}>
                   <div>{list2Str}</div>
                   <div>{list2Str}</div>
@@ -70,7 +71,7 @@ const Query: FC<{
                 </div>
                 </div>
               );
               );
             } else {
             } else {
-              prev[item] = resultItem[item];
+              prev[item] = `${resultItem[item]}`;
             }
             }
             return prev;
             return prev;
           },
           },
@@ -109,12 +110,16 @@ const Query: FC<{
     const schemaList = await FieldHttp.getFields(collectionName);
     const schemaList = await FieldHttp.getFields(collectionName);
     const nameList = schemaList.map(v => ({
     const nameList = schemaList.map(v => ({
       name: v.name,
       name: v.name,
-      type: v.data_type.includes('Int') ? 'int' : 'float',
+      type: v.data_type,
     }));
     }));
     const primaryKey =
     const primaryKey =
       schemaList.find(v => v._isPrimaryKey === true)?._fieldName || '';
       schemaList.find(v => v._isPrimaryKey === true)?._fieldName || '';
     setPrimaryKey(primaryKey);
     setPrimaryKey(primaryKey);
-    setFields(nameList);
+    // Temporarily hide bool field due to incorrect return from SDK.
+    const fieldWithoutBool = nameList.filter(
+      i => i.type !== DataTypeStringEnum.Bool
+    );
+    setFields(fieldWithoutBool);
   };
   };
 
 
   // Get fields at first or collection name changed.
   // Get fields at first or collection name changed.

+ 1 - 11
client/src/utils/search.ts

@@ -112,18 +112,8 @@ export const getVectorFieldOptions = (
 };
 };
 
 
 export const getNonVectorFieldsForFilter = (fields: FieldData[]): Field[] => {
 export const getNonVectorFieldsForFilter = (fields: FieldData[]): Field[] => {
-  const intTypes: DataTypeStringEnum[] = [
-    DataTypeStringEnum.Int8,
-    DataTypeStringEnum.Int16,
-    DataTypeStringEnum.Int32,
-    DataTypeStringEnum.Int64,
-  ];
   return fields.map(f => ({
   return fields.map(f => ({
     name: f._fieldName,
     name: f._fieldName,
-    type: intTypes.includes(f._fieldType)
-      ? 'int'
-      : f._fieldType === 'Bool'
-      ? 'bool'
-      : 'float',
+    type: f._fieldType,
   }));
   }));
 };
 };