in ui/lib/modules/catalog/widgets/cloud_workstation_widget.dart [84:171]
Widget _workstationCluster() {
// TODO remove loading settings since we switched to using target project from autocomplete
var settings = ref.watch(gitSettingsProvider);
var projectId = ref.read(projectProvider).name;
if (projectId == "null")
return Container();
return settings.when(
loading: () => Text('Loading...'),
error: (err, stack) => Text('Error: $err'),
data: (settings) {
String region = Environment.getRegion();
final workstationClustersList = ref.watch(
WorkstationClustersProvider(projectId: projectId, region: region));
return workstationClustersList.when(
loading: () => LinearProgressIndicator(),
error: (err, stack) => Container(),
data: (clustersList) {
if (clustersList.isNotEmpty) {
var clusterNames = clustersList
.map<String>(
(e) => e.name.substring(e.name.lastIndexOf('/') + 1))
.toList();
var selectClusterText = "Select a cluster";
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.only(left: 40.0),
child: Text("Cluster"),
),
Row(
children: [
SizedBox(
width: 40,
),
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
width: 300,
child: DropdownButtonFormField<String>(
validator: (value) {
return null;
},
hint: Text(selectClusterText),
value: selectClusterText,
icon: const Icon(Icons.arrow_drop_down),
style: const TextStyle(color: Colors.black),
onChanged: (String? value) {
widget.onTextFormUpdate(value!, "_WS_CLUSTER");
ref.read(clusterDropdownProvider.notifier).state =
value;
},
items: [selectClusterText, ...clusterNames]
.map<DropdownMenuItem<String>>(
(String clusterName) {
return DropdownMenuItem<String>(
value: clusterName,
child: Text(clusterName),
);
}).toList(),
),
),
SizedBox(
height: 10,
),
_workstationConfig(projectId, region),
],
),
],
),
],
);
} else {
return Container();
}
});
});
}