private getEntityValue()

in packages/extensions/luis/client/src/Adapters/RecognizerResultAdapter.tsx [109:157]


  private getEntityValue(entity: Entity): any {
    if (!entity.resolution) {
      return entity.entity;
    }

    if ((entity || '').type.startsWith('builtin.datetimeV2.')) {
      if (!entity.resolution.values || !entity.resolution.values.length) {
        return entity.resolution;
      }

      const vals = entity.resolution.values;
      const type = vals[0].type;
      const timexes = vals.map((t: any) => t.timex);
      const distinct = timexes.filter((v: any, i: any, a: any) => a.indexOf(v) === i);
      return { type, timex: distinct };
    } else {
      const res = entity.resolution;
      switch (entity.type) {
        case 'builtin.number':
        case 'builtin.ordinal':
          return Number(res.value);
        case 'builtin.percentage': {
          let svalue = res.value;
          if (svalue.endsWith('%')) {
            svalue = svalue.substring(0, svalue.length - 1);
          }
          return Number(svalue);
        }
        case 'builtin.age':
        case 'builtin.dimension':
        case 'builtin.currency':
        case 'builtin.temperature': {
          const val = res.value;
          const obj: any = {};
          if (val) {
            obj.number = Number(val);
          }
          obj.units = res.unit;
          return obj;
        }
        default:
          return Object.keys(entity.resolution).length > 1
            ? entity.resolution
            : entity.resolution.value
            ? entity.resolution.value
            : entity.resolution.values;
      }
    }
  }