render()

in src/web/src/views/workspace/WSEditor.tsx [460:590]


  render() {
    const {
      showSwaggerResourcePicker,
      showSwaggerReloadDialog,
      showExportDialog,
      showDeleteDialog,
      showModifyDialog,
      plane,
      source,
      name,
      commandTree,
      selected,
      reloadTimestamp,
      workspaceUrl,
      expanded,
      showClientConfigDialog,
      clientConfigurable,
    } = this.state;
    const expandedIds: string[] = [];
    expanded.forEach((expandId) => {
      expandedIds.push(expandId);
    });
    return (
      <React.Fragment>
        <WSEditorToolBar
          workspaceName={name}
          onHomePage={() => {
            this.handleBackToHomepage(true);
          }}
          onGenerate={this.handleGenerate}
          onDelete={this.handleDelete}
          onModify={this.handleModify}
        ></WSEditorToolBar>

        <Box sx={{ display: "flex" }}>
          <Drawer
            variant="permanent"
            sx={{
              width: drawerWidth,
              flexShrink: 0,
              [`& .MuiDrawer-paper`]: { width: drawerWidth, boxSizing: "border-box" },
            }}
          >
            <Toolbar />
            {selected != null && (
              <WSEditorCommandTree
                commandTreeNodes={commandTree}
                onSelected={this.handleCommandTreeSelect}
                onToggle={this.handleCommandTreeToggle}
                onAdd={this.showSwaggerResourcePicker}
                onReload={this.showSwaggerReloadDialog}
                selected={selected!.id}
                expanded={expandedIds}
                onEditClientConfig={clientConfigurable ? this.showClientConfigDialog : undefined}
              />
            )}
          </Drawer>

          <Box
            component="main"
            sx={{
              flexGrow: 1,
              p: 1,
            }}
          >
            <Toolbar sx={{ flexShrink: 0 }} />
            {selected != null && selected.id.startsWith("group:") && (
              <WSEditorCommandGroupContent
                workspaceUrl={workspaceUrl}
                commandGroup={selected as CommandGroup}
                reloadTimestamp={reloadTimestamp!}
                onUpdateCommandGroup={this.handleCommandGroupUpdate}
              />
            )}
            {selected != null && selected.id.startsWith("command:") && (
              <WSEditorCommandContent
                workspaceUrl={workspaceUrl}
                previewCommand={selected as Command}
                reloadTimestamp={reloadTimestamp!}
                onUpdateCommand={this.handleCommandUpdate}
              />
            )}
          </Box>
        </Box>

        <Dialog
          fullScreen
          open={showSwaggerResourcePicker}
          onClose={this.handleSwaggerResourcePickerClose}
          TransitionComponent={swaggerResourcePickerTransition}
        >
          <WSEditorSwaggerPicker plane={plane} workspaceName={name} onClose={this.handleSwaggerResourcePickerClose} />
        </Dialog>
        {showModifyDialog && (
          <WSRenameDialog
            workspaceUrl={workspaceUrl}
            workspaceName={name}
            open={showModifyDialog}
            onClose={this.handleModifyClose}
          />
        )}
        {showDeleteDialog && (
          <WSEditorDeleteDialog workspaceName={name} open={showDeleteDialog} onClose={this.handleDeleteClose} />
        )}
        {showExportDialog && (
          <WSEditorExportDialog
            workspaceUrl={workspaceUrl}
            open={showExportDialog}
            clientConfigurable={clientConfigurable}
            onClose={this.handleGenerationClose}
          />
        )}
        {showSwaggerReloadDialog && (
          <WSEditorSwaggerReloadDialog
            workspaceUrl={workspaceUrl}
            workspaceName={name}
            source={source}
            open={showSwaggerReloadDialog}
            onClose={this.handleSwaggerReloadDialogClose}
          />
        )}
        {showClientConfigDialog && (
          <WSEditorClientConfigDialog
            workspaceUrl={workspaceUrl}
            open={showClientConfigDialog}
            onClose={this.handleClientConfigDialogClose}
          />
        )}
      </React.Fragment>
    );
  }