import { BasicType, Data, Expression, FunctionData, ObjectData, PrimitiveData, Variables, XmlError, } from '@cyklang/core'; import { ChangeWorker, ComponentModel, getDBManager, getVarValue, setVarValue, structure } from './cykLang' import { ComponentModelParameter, componentModelParameter } from './cykReact'; import { computed, ref, watch, Ref, onUnmounted } from 'vue'; import loglevel from 'loglevel'; import { useCykLang } from './cykLang'; import { AlertException } from './cykRun'; import { ValueLabel } from '@cyklang/core/dist/KVTables'; const logger = loglevel.getLogger('SelectComponent.vue'); logger.setLevel('debug'); function buildOptionPair( data: Data, valueField?: string | undefined, labelField?: string | undefined ): { value: BasicType; label: string; } { let value: BasicType, label = structure.scope.xlate('no add_label'); let varValue = (data as ObjectData).variables.at(0)?.variable; let varLabel = (data as ObjectData).variables.at(1)?.variable; if (valueField !== undefined) varValue = (data as ObjectData).variables.getVariable(valueField); if (labelField !== undefined) varLabel = (data as ObjectData).variables.getVariable(labelField); if ( varValue !== undefined && varValue.data !== undefined && varValue.data !== null ) { value = (varValue.data as PrimitiveData).value; } if ( varLabel !== undefined && varLabel.data !== undefined && varLabel.data !== null ) { label = structure.scope.xlate(varLabel.getString() || 'no add_label'); } return { value, label }; } /** * * @param options * @param componentModel * @param dataOptions * @returns ValueLabel[] */ function parseOptions( // options: Ref, componentModel: ComponentModel | undefined, dataOptions: Data | undefined | null ): ValueLabel[] { const result: ValueLabel[] = [] if (componentModel === undefined || componentModel.objectData === undefined) throw 'parseOptions objectData undefined'; const objectData = componentModel.objectData; // options.value.length = 0; // if (componentModel.objectData.tag.attributes.NULLABLE !== undefined) { // result.push({ value: '', label: '' }) // // options.value.push({ value: '', label: '' }) // } if (dataOptions === undefined || dataOptions === null) return result; const varElts = (dataOptions as ObjectData).variables; const valueField = objectData.variables.getString('option_value'); const labelField = objectData.variables.getString('option_label'); // logger.debug( // '