All files / src/components environment-picker.tsx

0% Statements 0/12
0% Branches 0/1
0% Functions 0/4
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                                                                                               
import React, { ChangeEvent, useState } from 'react';
 
import { Scheduler } from '../handler';
import { useTranslator } from '../hooks';
 
export type EnvironmentPickerProps = {
  name: string;
  id: string;
  onChange: (event: ChangeEvent) => void;
  environmentsPromise: Promise<Scheduler.IRuntimeEnvironment[]>;
  initialValue: string;
};
 
export function EnvironmentPicker(props: EnvironmentPickerProps) {
  const [environmentList, setEnvironmentList] = useState(
    [] as Scheduler.IRuntimeEnvironment[]
  );
  const trans = useTranslator('jupyterlab');
 
  React.useEffect(() => {
    props.environmentsPromise.then(envList => setEnvironmentList(envList));
  }, []);
 
  Iif (environmentList.length === 0) {
    return <em>{trans.__('Loading …')}</em>;
  }
 
  return (
    <select
      name={props.name}
      id={props.id}
      onChange={props.onChange}
      value={props.initialValue}
    >
      <option
        value=""
        title={trans.__('No environment selected')}
        disabled
      ></option>
      {environmentList.map((env, idx) => (
        <option value={env.label} title={env.description} key={idx}>
          {env.name}
        </option>
      ))}
    </select>
  );
}