| 26 | }; |
| 27 | |
| 28 | const mkColValsLoader = ( |
| 29 | viewState: ViewState, |
| 30 | columnId: string |
| 31 | ): OptionsLoader => { |
| 32 | const dbc = viewState.dbc; |
| 33 | const baseQuery = viewState.baseQuery; |
| 34 | return async (input: string): Promise<OptionsRet> => { |
| 35 | let dq = baseQuery.distinct(columnId); |
| 36 | if (input.length > 0) { |
| 37 | dq = dq.filter(reltab.and().contains(col(columnId), constVal(input))); |
| 38 | } |
| 39 | const qres = await dbc.evalQuery(dq, 0, 50); |
| 40 | const colData = qres.rowData |
| 41 | .map((r) => r[columnId]) |
| 42 | .filter((v) => v != null); |
| 43 | const options: Option[] = colData.map((cv) => ({ |
| 44 | value: cv as string, |
| 45 | label: cv as string, |
| 46 | })); |
| 47 | console.log('colValsLoader: input: "', input, '", returning: ', options); |
| 48 | return options; |
| 49 | }; |
| 50 | }; |
| 51 | |
| 52 | const mkRelExp = ( |
| 53 | columnId: string, |