Widget _workstationCluster()

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();
                }
              });

        });
  }