diff --git a/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsights.styles.ts b/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsights.styles.ts index 8333969b68..cca90386f9 100644 --- a/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsights.styles.ts +++ b/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsights.styles.ts @@ -17,7 +17,8 @@ export const causalInsightsStyles: () => IProcessedStyleSet({ container: { - color: theme.semanticColors.bodyText + color: theme.semanticColors.bodyText, + padding: "0 40px 10px 20px" } }); }; diff --git a/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsightsTab.tsx b/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsightsTab.tsx index c933f67a11..de068223ed 100644 --- a/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsightsTab.tsx +++ b/libs/causality/src/lib/CausalAnalysisDashboard/CausalInsightsTab.tsx @@ -7,13 +7,7 @@ import { ModelAssessmentContext } from "@responsible-ai/core-ui"; import { localization } from "@responsible-ai/localization"; -import { - Text, - Pivot, - PivotItem, - Stack, - MessageBar -} from "office-ui-fabric-react"; +import { Pivot, PivotItem, Stack, MessageBar } from "office-ui-fabric-react"; import React from "react"; import { CausalAnalysisOptions } from "./CausalAnalysisEnums"; @@ -45,15 +39,10 @@ export class CausalInsightsTab extends React.PureComponent< return ( - - - {localization.ModelAssessment.ComponentNames.CausalAnalysis} - - {localization.CausalAnalysis.MainMenu.cohortInfo} diff --git a/libs/counterfactuals/src/lib/CounterfactualsTab.styles.ts b/libs/counterfactuals/src/lib/CounterfactualsTab.styles.ts index 50a28a4ae2..e02fdc0fb7 100644 --- a/libs/counterfactuals/src/lib/CounterfactualsTab.styles.ts +++ b/libs/counterfactuals/src/lib/CounterfactualsTab.styles.ts @@ -17,7 +17,8 @@ export const counterfactualsTabStyles: () => IProcessedStyleSet({ container: { - color: theme.semanticColors.bodyText + color: theme.semanticColors.bodyText, + padding: "0 40px 10px 40px" } }); }; diff --git a/libs/counterfactuals/src/lib/CounterfactualsTab.tsx b/libs/counterfactuals/src/lib/CounterfactualsTab.tsx index b2ee9c5e49..8e9e07fa83 100644 --- a/libs/counterfactuals/src/lib/CounterfactualsTab.tsx +++ b/libs/counterfactuals/src/lib/CounterfactualsTab.tsx @@ -2,41 +2,74 @@ // Licensed under the MIT License. import { + Cohort, defaultModelAssessmentContext, ICounterfactualData, - ModelAssessmentContext + ModelAssessmentContext, + ModelTypes, + WeightVectorOption } from "@responsible-ai/core-ui"; import { localization } from "@responsible-ai/localization"; -import { Text, Stack } from "office-ui-fabric-react"; +import { Dictionary } from "lodash"; +import { Stack, Text } from "office-ui-fabric-react"; import React from "react"; +import { buildCounterfactualState } from "./buildCounterfactualState"; +import { CounterfactualChart } from "./CounterfactualChart"; import { counterfactualsTabStyles } from "./CounterfactualsTab.styles"; -import { CounterfactualsView } from "./CounterfactualsView"; export interface ICounterfactualsTabProps { data: ICounterfactualData; } +export interface ICounterfactualsTabState { + cohorts: Cohort[]; + weightVectorOptions: WeightVectorOption[]; + weightVectorLabels: Dictionary; + selectedWeightVector: WeightVectorOption; +} -export class CounterfactualsTab extends React.PureComponent { +export class CounterfactualsTab extends React.PureComponent< + ICounterfactualsTabProps, + ICounterfactualsTabState +> { public static contextType = ModelAssessmentContext; public context: React.ContextType = defaultModelAssessmentContext; + public constructor(props: ICounterfactualsTabProps) { + super(props); + this.state = buildCounterfactualState( + this.context.dataset, + this.context.jointDataset, + ModelTypes.Multiclass + ); + } public render(): React.ReactNode { const classNames = counterfactualsTabStyles(); return ( - + - {localization.Counterfactuals.header} + + {localization.Counterfactuals.whatifDescription} + - + ); } + + private onWeightVectorChange = (weightOption: WeightVectorOption): void => { + this.context.jointDataset.buildLocalFlattenMatrix(weightOption); + this.state.cohorts.forEach((cohort) => cohort.clearCachedImportances()); + this.setState({ selectedWeightVector: weightOption }); + }; } diff --git a/libs/counterfactuals/src/lib/CounterfactualsView.tsx b/libs/counterfactuals/src/lib/CounterfactualsView.tsx deleted file mode 100644 index 62ad099fd3..0000000000 --- a/libs/counterfactuals/src/lib/CounterfactualsView.tsx +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -import { - Cohort, - defaultModelAssessmentContext, - ICounterfactualData, - ModelAssessmentContext, - ModelTypes, - WeightVectorOption -} from "@responsible-ai/core-ui"; -import { localization } from "@responsible-ai/localization"; -import { Dictionary } from "lodash"; -import { Stack, Text } from "office-ui-fabric-react"; -import React from "react"; - -import { buildCounterfactualState } from "./buildCounterfactualState"; -import { CounterfactualChart } from "./CounterfactualChart"; - -export interface ICounterfactualsViewProps { - data: ICounterfactualData; -} -export interface ICounterfactualsViewState { - cohorts: Cohort[]; - weightVectorOptions: WeightVectorOption[]; - weightVectorLabels: Dictionary; - selectedWeightVector: WeightVectorOption; -} - -export class CounterfactualsView extends React.PureComponent< - ICounterfactualsViewProps, - ICounterfactualsViewState -> { - public static contextType = ModelAssessmentContext; - public context: React.ContextType = - defaultModelAssessmentContext; - public constructor(props: ICounterfactualsViewProps) { - super(props); - this.state = buildCounterfactualState( - this.context.dataset, - this.context.jointDataset, - ModelTypes.Multiclass - ); - } - - public render(): React.ReactNode { - return ( - - - - {localization.Counterfactuals.whatifDescription} - - - - - - - ); - } - - private onWeightVectorChange = (weightOption: WeightVectorOption): void => { - this.context.jointDataset.buildLocalFlattenMatrix(weightOption); - this.state.cohorts.forEach((cohort) => cohort.clearCachedImportances()); - this.setState({ selectedWeightVector: weightOption }); - }; -} diff --git a/libs/counterfactuals/src/lib/buildCounterfactualState.ts b/libs/counterfactuals/src/lib/buildCounterfactualState.ts index 14c000ffbb..60dbe25fc4 100644 --- a/libs/counterfactuals/src/lib/buildCounterfactualState.ts +++ b/libs/counterfactuals/src/lib/buildCounterfactualState.ts @@ -10,13 +10,13 @@ import { } from "@responsible-ai/core-ui"; import { localization } from "@responsible-ai/localization"; -import { ICounterfactualsViewState } from "./CounterfactualsView"; +import { ICounterfactualsTabState } from "./CounterfactualsTab"; export function buildCounterfactualState( dataset: IDataset, jointDataset: JointDataset, modelType: ModelTypes -): ICounterfactualsViewState { +): ICounterfactualsTabState { const cohorts = [ new Cohort(localization.Interpret.Cohort.defaultLabel, jointDataset, []) ]; diff --git a/libs/error-analysis/src/lib/ErrorAnalysisDashboard/Controls/ErrorAnalysisView/ErrorAnalysisViewTab.tsx b/libs/error-analysis/src/lib/ErrorAnalysisDashboard/Controls/ErrorAnalysisView/ErrorAnalysisViewTab.tsx index e9addff031..7956cf526f 100644 --- a/libs/error-analysis/src/lib/ErrorAnalysisDashboard/Controls/ErrorAnalysisView/ErrorAnalysisViewTab.tsx +++ b/libs/error-analysis/src/lib/ErrorAnalysisDashboard/Controls/ErrorAnalysisView/ErrorAnalysisViewTab.tsx @@ -10,7 +10,6 @@ import { localization } from "@responsible-ai/localization"; import { CommandBarButton, IIconProps, - Text, Pivot, PivotItem, Stack, @@ -72,9 +71,6 @@ export class ErrorAnalysisViewTab extends React.Component< tokens={{ padding: "l1" }} className={classNames.errorAnalysis} > - - {localization.ErrorAnalysis.MainMenu.errorAnalysisLabel} - - - - {localization.ModelAssessment.ComponentNames.FeatureImportances} - - {t.key === GlobalTabKeys.ErrorAnalysisTab && this.props.errorAnalysisData?.[0] && ( - - this.setState({ selectedFeatures: features }) - } - importances={this.state.importances} - onSaveCohortClick={(): void => { - this.props.setSaveCohortVisible(); - }} - showCohortName={false} - handleErrorDetectorChanged={this.handleErrorDetectorChanged} - selectedKey={this.state.errorAnalysisOption} - /> + <> +
+ + { + localization.ModelAssessment.ComponentNames + .ErrorAnalysis + } + +
+ + this.setState({ selectedFeatures: features }) + } + importances={this.state.importances} + onSaveCohortClick={(): void => { + this.props.setSaveCohortVisible(); + }} + showCohortName={false} + handleErrorDetectorChanged={ + this.handleErrorDetectorChanged + } + selectedKey={this.state.errorAnalysisOption} + /> + )} {t.key === GlobalTabKeys.ModelOverviewTab && ( <> @@ -168,28 +183,61 @@ export class TabsView extends React.PureComponent< )} {t.key === GlobalTabKeys.FeatureImportancesTab && this.props.modelExplanationData?.[0] && ( - + <> +
+ + { + localization.ModelAssessment.ComponentNames + .FeatureImportances + } + +
+ + )} {t.key === GlobalTabKeys.CausalAnalysisTab && this.props.causalAnalysisData?.[0] && ( - + <> +
+ + { + localization.ModelAssessment.ComponentNames + .CausalAnalysis + } + +
+ + )} {t.key === GlobalTabKeys.CounterfactualsTab && this.props.counterfactualData?.[0] && ( - + <> +
+ + { + localization.ModelAssessment.ComponentNames + .Counterfactuals + } + +
+ + )}