Spaces:
Running
Running
| /** | |
| * | |
| * Copyright 2023-2025 InspectorRAGet Team | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| **/ | |
| 'use client'; | |
| import { memo } from 'react'; | |
| import { Select, SelectItem } from '@carbon/react'; | |
| import { Aggregator } from '@/src/types'; | |
| interface Props { | |
| aggregators: Aggregator[]; | |
| onSelect: Function; | |
| defaultValue: Aggregator; | |
| warn: boolean; | |
| warnText?: string; | |
| disableDefaultValue?: boolean; | |
| disabledAggregators?: Aggregator[]; | |
| disabled?: boolean; | |
| } | |
| export default memo(function AggregatorSelector({ | |
| aggregators: aggregators, | |
| onSelect, | |
| defaultValue, | |
| warn = false, | |
| warnText = 'You must select an aggregator to view results.', | |
| disabledAggregators: disabledAggregators, | |
| disabled = false, | |
| }: Props) { | |
| return ( | |
| <Select | |
| id={'aggregator-selector'} | |
| labelText="Choose aggregator" | |
| defaultValue={defaultValue.name} | |
| disabled={disabled} | |
| warn={warn} | |
| warnText={warnText} | |
| onChange={(event) => { | |
| onSelect( | |
| aggregators.find( | |
| (aggregator) => aggregator.name === event.target.value, | |
| ), | |
| ); | |
| }} | |
| > | |
| {aggregators.map((aggregator) => { | |
| return ( | |
| <SelectItem | |
| key={`${aggregator.name}-selector`} | |
| value={aggregator.name} | |
| text={ | |
| aggregator.displayName ? aggregator.displayName : aggregator.name | |
| } | |
| disabled={ | |
| disabledAggregators && | |
| disabledAggregators | |
| .map((entry) => entry.name) | |
| .includes(aggregator.name) | |
| } | |
| ></SelectItem> | |
| ); | |
| })} | |
| </Select> | |
| ); | |
| }); | |