From 2437ca6720dc9c3624b69e9abf380100d98f86ed Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Fri, 10 Mar 2023 21:40:21 +0800 Subject: [PATCH] Move to functional components (Part IV) (#2353) * Use FC for EditingOverviewCard * Use FC for MissionCreator * Use FC for EditingWorkspaceSideContentDeploymentTab * Reformat code and comments * Use FC for SourceRecorderShareCell * Use FC for SourceRecorderSelectCell * Use FC for SideContentToneMatrix * Use FC for SideContentCanvasOutput * Fix incorrect memoization * Standardise Drawable export/imports * Use FC for BackwardArrowDrawable * Improve comment formatting * Add back memoization * Use FC for ArrowDrawable --------- Co-authored-by: Martin Henz --- .../EditingOverviewCard.tsx | 180 ++++++++---------- ...itingWorkspaceSideContentDeploymentTab.tsx | 172 ++++++++--------- src/commons/missionCreator/MissionCreator.tsx | 97 ++++------ .../sideContent/SideContentCanvasOutput.tsx | 21 +- .../sideContent/SideContentToneMatrix.tsx | 60 +++--- .../SourceRecorderSelectCell.tsx | 37 ++-- .../SourceRecorderShareCell.tsx | 83 ++++---- .../dataVisualizer/drawable/ArrayDrawable.tsx | 6 +- .../dataVisualizer/drawable/ArrowDrawable.tsx | 42 ++-- .../drawable/BackwardArrowDrawable.tsx | 85 +++++---- .../dataVisualizer/drawable/Drawable.ts | 9 +- .../drawable/FunctionDrawable.tsx | 4 +- .../dataVisualizer/drawable/NullDrawable.tsx | 4 +- src/features/dataVisualizer/tree/Tree.tsx | 3 +- 14 files changed, 360 insertions(+), 443 deletions(-) diff --git a/src/commons/editingOverviewCard/EditingOverviewCard.tsx b/src/commons/editingOverviewCard/EditingOverviewCard.tsx index 93455b7e29..6158efc3c0 100644 --- a/src/commons/editingOverviewCard/EditingOverviewCard.tsx +++ b/src/commons/editingOverviewCard/EditingOverviewCard.tsx @@ -14,7 +14,7 @@ import { } from '@blueprintjs/core'; import { IconNames } from '@blueprintjs/icons'; import { ItemRenderer, Select } from '@blueprintjs/select'; -import * as React from 'react'; +import React, { useState } from 'react'; import { NavLink } from 'react-router-dom'; import Textarea from 'react-textarea-autosize'; @@ -38,85 +38,57 @@ type StateProps = { assessmentTypes: AssessmentType[]; }; -type State = { - editingOverviewField: string; - fieldValue: any; - showOptionsOverlay: boolean; -}; - -export class EditingOverviewCard extends React.Component { - public constructor(props: EditingOverviewCardProps) { - super(props); - this.state = { - editingOverviewField: '', - fieldValue: '', - showOptionsOverlay: false - }; - } - - public render() { - return ( -
- {this.optionsOverlay()} - {this.makeEditingOverviewCard(this.props.overview)} -
- ); - } +export const EditingOverviewCard: React.FC = props => { + const [editingOverviewField, setEditingOverviewField] = useState(''); + const [fieldValue, setFieldValue] = useState(''); + const [showOptionsOverlay, setShowOptionsOverlay] = useState(false); - private saveEditOverview = (field: keyof AssessmentOverview) => (e: any) => { + const saveEditOverview = (field: keyof AssessmentOverview) => (e: any) => { const overview = { - ...this.props.overview, - [field]: this.state.fieldValue + ...props.overview, + [field]: fieldValue }; - this.setState({ - editingOverviewField: '', - fieldValue: '' - }); + setEditingOverviewField(''); + setFieldValue(''); storeLocalAssessmentOverview(overview); - this.props.updateEditingOverview(overview); + props.updateEditingOverview(overview); }; - private handleEditOverview = () => (e: any) => { - this.setState({ - fieldValue: e.target.value - }); + const handleEditOverview = (e: any) => { + setFieldValue(e.target.value); }; - private toggleEditField = (field: keyof AssessmentOverview) => (e: any) => { - if (this.state.editingOverviewField !== field) { - this.setState({ - editingOverviewField: field, - fieldValue: this.props.overview[field] - }); + const toggleEditField = (field: keyof AssessmentOverview) => (e: any) => { + if (editingOverviewField !== field) { + setEditingOverviewField(field); + setFieldValue(props.overview[field]); } }; - private toggleOptionsOverlay = () => { - this.setState({ - showOptionsOverlay: !this.state.showOptionsOverlay - }); + const toggleOptionsOverlay = () => { + setShowOptionsOverlay(!showOptionsOverlay); }; - private handleExportXml = (e: any) => { + const handleExportXml = (e: any) => { exportXml(); }; - private makeEditingOverviewTextarea = (field: keyof AssessmentOverview) => ( + const makeEditingOverviewTextarea = (field: keyof AssessmentOverview) => (