private getInputControl()

in web/frontend/src/app/pages/streams/modules/schema-editor/components/diff/grid-components/data-lost/resolution.component.ts [182:275]


  private getInputControl(disabled?: boolean): FieldModel {
    const CONTROL: FieldModel = {
        type: 'text',
        name: 'setVal',
        label: this.ifDataLoss()
          ? this.storeData.messages.setVal
          : this.ifDefaultValueRequired()
          ? this.storeData.messages.defVal
          : this.storeData.messages.val,
        value: '',
        required: false,
        default: '',
      },
      CURRENT_TYPE_NAME = this.data._props.dataType.name,
      CURRENT_ENUM = this.storeData.enums.find((_enum) => _enum.name === CURRENT_TYPE_NAME);

    if (disabled) {
      CONTROL.disabled = disabled;
    }
    this.last_field_data = {
      setVal: '',
    };

    switch (CURRENT_TYPE_NAME) {
      case 'BOOLEAN':
        CONTROL.type = 'dropdown';
        CONTROL.values = [
          ...(this.data && this.data._props && this.data._props.nullable
            ? [
                {
                  value: null,
                  label: 'null',
                },
              ]
            : []),
          {
            value: true,
            label: 'true',
          },
          {
            value: false,
            label: 'false',
          },
        ];

        break;
      case 'CHAR': //
      case 'VARCHAR': //
      case 'TIMEOFDAY': //
      case 'FLOAT': //
      case 'INTEGER': //
        break;
      // case 'TIMESTAMP':
      // TODO: need to create data time picker control
      //   break;
      // case 'BINARY':
      // TODO: need to create binary control or use file uploader?
      //   break;
      // case 'OBJECT':
      // TODO: need to support OBJECT data type
      //   break;
      // case 'ARRAY':
      // TODO: need to create ARRAY data type
      //   break;
      default:
        if (CURRENT_ENUM) {
          CONTROL.type = 'dropdown';
          CONTROL.values = [
            ...(this.data && this.data._props && this.data._props.nullable
              ? [
                  {
                    value: null,
                    label: 'null',
                  },
                ]
              : []),
            ...CURRENT_ENUM.fields.map((field) => ({
              value: field.name,
              label: field.name,
            })),
          ];
        }
        break;
    }

    if (this.data && this.data._props && this.data._props.nullable) {
      CONTROL.value = null;
      this.last_field_data = {
        setVal: null,
      };
    }

    return CONTROL;
  }