From e7e5f77db230e7154d68cc2b823d8da7a6b44bbe Mon Sep 17 00:00:00 2001 From: nvollroth <100927440+nvollroth@users.noreply.github.com> Date: Fri, 10 Jun 2022 10:23:36 +0200 Subject: [PATCH 01/24] switch pc --- api-editor/gui/src/app/App.tsx | 2 ++ api-editor/gui/src/common/MenuBar.tsx | 6 ++++++ .../packageData/selectionView/SelectionView.tsx | 7 +++++-- .../selectionView/StatisticsView.tsx | 17 +++++++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index f15610348..301872432 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -136,6 +136,7 @@ export const App: React.FC = function () { layerStyle="subtleBorder" resize="horizontal" > +

test2

{currentUserAction.type === 'attribute' && ( )} @@ -169,6 +170,7 @@ export const App: React.FC = function () { {currentUserAction.type === 'rename' && } +

test

diff --git a/api-editor/gui/src/common/MenuBar.tsx b/api-editor/gui/src/common/MenuBar.tsx index ba8ccdc71..12c6619b2 100644 --- a/api-editor/gui/src/common/MenuBar.tsx +++ b/api-editor/gui/src/common/MenuBar.tsx @@ -138,6 +138,9 @@ export const MenuBar: React.FC = function ({ pythonPackage, filter settings.push('darkMode'); } + const showStatistics = () => { + + }; return ( @@ -183,6 +186,9 @@ export const MenuBar: React.FC = function ({ pythonPackage, filter Dark mode + + Statistics + diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 8951d6e45..0be214a84 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -8,6 +8,7 @@ import PythonPackage from '../model/PythonPackage'; import PythonParameter from '../model/PythonParameter'; import ClassView from './ClassView'; import FunctionView from './FunctionView'; +import StatisticsView from './StatisticsView'; import { ModuleView } from './ModuleView'; import ParameterView from './ParameterView'; import AbstractPythonFilter from '../model/filters/AbstractPythonFilter'; @@ -28,13 +29,15 @@ export const SelectionView: React.FC = function ({ pythonPac } return ( - + + /* {declaration instanceof PythonFunction && } {declaration instanceof PythonClass && } {declaration instanceof PythonModule && } {declaration instanceof PythonParameter && } + {declaration != null && } @@ -46,6 +49,6 @@ export const SelectionView: React.FC = function ({ pythonPac pythonFilter={pythonFilter} usages={usages} /> - + */ ); }; diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx new file mode 100644 index 000000000..c33a96743 --- /dev/null +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -0,0 +1,17 @@ +import { Heading, Stack, Text as ChakraText } from '@chakra-ui/react'; +import React from 'react'; +import PythonDeclaration from '../model/PythonDeclaration'; +import ParameterNode from './ParameterNode'; + +interface StatisticsViewProps { + pythonDeclaration: PythonDeclaration; +} + +const StatisticsView: React.FC = function ({ +}) { + return ( +

Statistics

+ ); +}; + +export default StatisticsView; From 3ac13e517f4d832775bade3c1e659cb8cfdcbb75 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 11:36:44 +0200 Subject: [PATCH 02/24] switch pc --- .../src/features/packageData/selectionView/SelectionView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 0be214a84..19fc047ae 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -29,7 +29,7 @@ export const SelectionView: React.FC = function ({ pythonPac } return ( - + /* From cd4ff4b89894920fa33a22cc7fda66d28f7c07c7 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 13:29:02 +0200 Subject: [PATCH 03/24] switch pc --- .../features/annotations/annotationSlice.ts | 84 ++++--------------- .../selectionView/StatisticsView.tsx | 42 +++++++++- 2 files changed, 53 insertions(+), 73 deletions(-) diff --git a/api-editor/gui/src/features/annotations/annotationSlice.ts b/api-editor/gui/src/features/annotations/annotationSlice.ts index 97254bc73..49e812049 100644 --- a/api-editor/gui/src/features/annotations/annotationSlice.ts +++ b/api-editor/gui/src/features/annotations/annotationSlice.ts @@ -63,12 +63,14 @@ export interface AttributeAnnotation { export type DefaultType = 'string' | 'number' | 'boolean' | 'none'; export type DefaultValue = string | number | boolean | null; -export interface BoundaryAnnotation { +export interface Annotation { /** * ID of the annotated Python declaration */ readonly target: string; +} +export interface BoundaryAnnotation extends Annotation { /** * The interval specifying possible numeric values */ @@ -108,36 +110,21 @@ export enum ComparisonOperator { UNRESTRICTED, } -export interface CalledAfterAnnotation { - /** - * ID of the annotated Python declaration - */ - readonly target: string; - +export interface CalledAfterAnnotation extends Annotation{ /** * Name of the callable to be called first */ readonly calledAfterName: string; } -export interface CalledAfterTarget { - /** - * ID of the annotated Python declaration - */ - readonly target: string; - +export interface CalledAfterTarget extends Annotation{ /** * Name of the callable to be called first */ readonly calledAfterName: string; } -export interface ConstantAnnotation { - /** - * ID of the annotated Python declaration - */ - readonly target: string; - +export interface ConstantAnnotation extends Annotation{ /** * Type of default value */ @@ -149,12 +136,7 @@ export interface ConstantAnnotation { readonly defaultValue: DefaultValue; } -export interface EnumAnnotation { - /** - * ID of the annotated Python declaration. - */ - target: string; - +export interface EnumAnnotation extends Annotation{ /** * Name of the enum class that should be created. */ @@ -167,12 +149,7 @@ export interface EnumPair { readonly instanceName: string; } -export interface GroupAnnotation { - /** - * ID of the annotated Python declaration - */ - readonly target: string; - +export interface GroupAnnotation extends Annotation{ /** * Name of the grouped object */ @@ -184,23 +161,14 @@ export interface GroupAnnotation { readonly parameters: string[]; } -export interface GroupTarget { - /** - * ID of the annotated Python declaration - */ - readonly target: string; - +export interface GroupTarget extends Annotation{ /** * Name of the grouped object */ readonly groupName: string; } -export interface MoveAnnotation { - /** - * ID of the annotated Python declaration. - */ - readonly target: string; +export interface MoveAnnotation extends Annotation{ /** * Qualified path to the destination @@ -208,12 +176,7 @@ export interface MoveAnnotation { readonly destination: string; } -export interface OptionalAnnotation { - /** - * ID of the annotated Python declaration - */ - readonly target: string; - +export interface OptionalAnnotation extends Annotation{ /** * Type of default value */ @@ -225,37 +188,20 @@ export interface OptionalAnnotation { readonly defaultValue: DefaultValue; } -export interface PureAnnotation { - /** - * ID of the annotated Python declaration. - */ - readonly target: string; +export interface PureAnnotation extends Annotation{ } -export interface RenameAnnotation { - /** - * ID of the annotated Python declaration. - */ - readonly target: string; - +export interface RenameAnnotation extends Annotation{ /** * New name for the declaration. */ readonly newName: string; } -export interface RequiredAnnotation { - /** - * ID of the annotated Python declaration. - */ - readonly target: string; +export interface RequiredAnnotation extends Annotation{ } -export interface RemoveAnnotation { - /** - * ID of the annotated Python declaration. - */ - readonly target: string; +export interface RemoveAnnotation extends Annotation{ } type UserAction = diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index c33a96743..97bb3d5de 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,16 +1,50 @@ -import { Heading, Stack, Text as ChakraText } from '@chakra-ui/react'; +import { Heading, Button} from '@chakra-ui/react'; import React from 'react'; import PythonDeclaration from '../model/PythonDeclaration'; -import ParameterNode from './ParameterNode'; +import {useAppSelector} from "../../../app/hooks"; +import {selectAnnotations, selectAttribute, Annotation} from "../../annotations/annotationSlice"; interface StatisticsViewProps { pythonDeclaration: PythonDeclaration; } - const StatisticsView: React.FC = function ({ }) { + const annotations = useAppSelector(selectAnnotations); + let dict = {}; + for (const property in annotations){ + if (Array.isArray(property) && property.length >0){ + if(property[0] instanceof Annotation){ + dict[property.toString()] = property.length; + console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) + } + //TODO CalledAfterAnnotation and GroupAnnotation + } + } + const boundariesSize = annotations.boundaries.length; + const constantsSize = annotations.constants.length; + const enumsSize = annotations.enums.length; + const optionalsSize = annotations.optionals.length; + const movesSize = annotations.moves.length; + const groupsSize = annotations.groups.length; + const calledAftersSize = annotations.calledAfters.length; + const attributesSize = annotations.attributes.length; + const puresSize = annotations.pures.length; + const renamingsSize = annotations.renamings.length; + const requiredsSize = annotations.requireds.length; + const removesSize = annotations.removes.length; + /* + +pures +renamings +requireds +removes + */ + return ( -

Statistics

+ + Statistics + + ); }; From 3f5708066f0bda6ef161779eec8f690023bc81ca Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 13:34:30 +0200 Subject: [PATCH 04/24] switch pc --- .../src/features/packageData/selectionView/StatisticsView.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 97bb3d5de..56aedd0c7 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,4 +1,4 @@ -import { Heading, Button} from '@chakra-ui/react'; +import {Heading, Button, VBox} from '@chakra-ui/react'; import React from 'react'; import PythonDeclaration from '../model/PythonDeclaration'; import {useAppSelector} from "../../../app/hooks"; @@ -17,6 +17,7 @@ const StatisticsView: React.FC = function ({ dict[property.toString()] = property.length; console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) } + console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) //TODO CalledAfterAnnotation and GroupAnnotation } } From 7ad9ddcc3119a75f818cc5944630b5e77a86c571 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 13:41:05 +0200 Subject: [PATCH 05/24] switch pc --- api-editor/gui/src/app/App.tsx | 3 ++- .../packageData/selectionView/StatisticsView.tsx | 13 +++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index 301872432..6c188e123 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -48,6 +48,7 @@ import { UsageCountJson, UsageCountStore } from '../features/usages/model/UsageC import { selectShowUsageImportDialog } from '../features/usages/usageSlice'; import { UsageImportDialog } from '../features/usages/UsageImportDialog'; import { createFilterFromString } from '../features/packageData/model/filters/filterFactory'; +import StatisticsView from "../features/packageData/selectionView/StatisticsView"; export const App: React.FC = function () { const dispatch = useAppDispatch(); @@ -170,7 +171,7 @@ export const App: React.FC = function () { {currentUserAction.type === 'rename' && } -

test

+
diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 56aedd0c7..cf905afd0 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,4 +1,4 @@ -import {Heading, Button, VBox} from '@chakra-ui/react'; +import {Heading, Button, Box} from '@chakra-ui/react'; import React from 'react'; import PythonDeclaration from '../model/PythonDeclaration'; import {useAppSelector} from "../../../app/hooks"; @@ -13,10 +13,6 @@ const StatisticsView: React.FC = function ({ let dict = {}; for (const property in annotations){ if (Array.isArray(property) && property.length >0){ - if(property[0] instanceof Annotation){ - dict[property.toString()] = property.length; - console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) - } console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) //TODO CalledAfterAnnotation and GroupAnnotation } @@ -42,10 +38,11 @@ removes */ return ( - + Statistics - - + + +
); }; From 8769e60fb97508c99c2c966a0050469d3e77779f Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 13:44:22 +0200 Subject: [PATCH 06/24] switch pc --- .../features/packageData/selectionView/StatisticsView.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index cf905afd0..174c010ed 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,4 +1,4 @@ -import {Heading, Button, Box} from '@chakra-ui/react'; +import {Heading, Button, Stack} from '@chakra-ui/react'; import React from 'react'; import PythonDeclaration from '../model/PythonDeclaration'; import {useAppSelector} from "../../../app/hooks"; @@ -38,11 +38,11 @@ removes */ return ( - + Statistics - + ); }; From 7b5cccf94745c4c554f3f1f10025e239d9046ef4 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 13:59:16 +0200 Subject: [PATCH 07/24] switch pc --- .../features/packageData/selectionView/SelectionView.tsx | 5 ++--- .../features/packageData/selectionView/StatisticsView.tsx | 8 ++------ 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 19fc047ae..71c40c70f 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -29,8 +29,7 @@ export const SelectionView: React.FC = function ({ pythonPac } return ( - - /* + {declaration instanceof PythonFunction && } @@ -49,6 +48,6 @@ export const SelectionView: React.FC = function ({ pythonPac pythonFilter={pythonFilter} usages={usages} /> - */ + ); }; diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 174c010ed..7c571858f 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,13 +1,9 @@ import {Heading, Button, Stack} from '@chakra-ui/react'; import React from 'react'; -import PythonDeclaration from '../model/PythonDeclaration'; import {useAppSelector} from "../../../app/hooks"; import {selectAnnotations, selectAttribute, Annotation} from "../../annotations/annotationSlice"; -interface StatisticsViewProps { - pythonDeclaration: PythonDeclaration; -} -const StatisticsView: React.FC = function ({ +const StatisticsView: React.FC = function ({ }) { const annotations = useAppSelector(selectAnnotations); let dict = {}; @@ -40,7 +36,7 @@ removes return ( Statistics - + ); From 9ad6606ba0f26f8d0514c65dcce4684e10d24e53 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 14:00:52 +0200 Subject: [PATCH 08/24] switch pc --- api-editor/gui/src/app/App.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index 6c188e123..bcd374efe 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -171,8 +171,8 @@ export const App: React.FC = function () { {currentUserAction.type === 'rename' && } - - + {currentUserAction.type === 'none' && ()} + {currentUserAction.type === 'boundary' && ()} {showAnnotationImportDialog && } From 7f68d0b760555116ae7227acd3a7ea053c86d93e Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 14:17:05 +0200 Subject: [PATCH 09/24] switch pc --- .../selectionView/SelectionView.tsx | 3 +- .../selectionView/StatisticsView.tsx | 49 ++++++++++--------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 71c40c70f..1f119d935 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -19,6 +19,7 @@ interface SelectionViewProps { pythonPackage: PythonPackage; pythonFilter: AbstractPythonFilter; usages: UsageCountStore; + annotations: Ann } export const SelectionView: React.FC = function ({ pythonPackage, pythonFilter, usages }) { @@ -36,7 +37,7 @@ export const SelectionView: React.FC = function ({ pythonPac {declaration instanceof PythonClass && } {declaration instanceof PythonModule && } {declaration instanceof PythonParameter && } - {declaration != null && } + {declaration == null && }
diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 7c571858f..c3880429f 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,37 +1,40 @@ import {Heading, Button, Stack} from '@chakra-ui/react'; import React from 'react'; import {useAppSelector} from "../../../app/hooks"; -import {selectAnnotations, selectAttribute, Annotation} from "../../annotations/annotationSlice"; +import AnnotationSlice, { + selectAnnotations, + selectAttribute, + Annotation, + AnnotationsState +} from "../../annotations/annotationSlice"; +import PythonParameter from "../model/PythonParameter"; -const StatisticsView: React.FC = function ({ +interface StatistiscViewProps { + annotations: AnnotationsState; +} + +const StatisticsView: React.FC = function ({ }) { const annotations = useAppSelector(selectAnnotations); let dict = {}; - for (const property in annotations){ + for (let property in annotations){ + console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) if (Array.isArray(property) && property.length >0){ - console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) //TODO CalledAfterAnnotation and GroupAnnotation } } - const boundariesSize = annotations.boundaries.length; - const constantsSize = annotations.constants.length; - const enumsSize = annotations.enums.length; - const optionalsSize = annotations.optionals.length; - const movesSize = annotations.moves.length; - const groupsSize = annotations.groups.length; - const calledAftersSize = annotations.calledAfters.length; - const attributesSize = annotations.attributes.length; - const puresSize = annotations.pures.length; - const renamingsSize = annotations.renamings.length; - const requiredsSize = annotations.requireds.length; - const removesSize = annotations.removes.length; - /* - -pures -renamings -requireds -removes - */ + const boundariesSize = Object.keys(annotations.boundaries).length; + const constantsSize = Object.keys(annotations.constants).length; + const enumsSize = Object.keys(annotations.enums).length; + const optionalsSize = Object.keys(annotations.optionals).length; + const movesSize = Object.keys(annotations.moves).length; + const groupsSize = Object.keys(annotations.groups).length; + const calledAftersSize = Object.keys(annotations.calledAfters).length; + const attributesSize = Object.keys(annotations.attributes).length; + const puresSize = Object.keys(annotations.pures).length; + const renamingsSize = Object.keys(annotations.renamings).length; + const requiredsSize = Object.keys(annotations.requireds).length; + const removesSize = Object.keys(annotations.removes).length; return ( From 3a231c4cedbe65e1a9fae47f3ea9ddd1309b80ad Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 14:21:17 +0200 Subject: [PATCH 10/24] switch pc --- api-editor/gui/src/app/App.tsx | 2 +- .../src/features/packageData/selectionView/SelectionView.tsx | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index bcd374efe..a14fea5ca 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -172,7 +172,7 @@ export const App: React.FC = function () { {currentUserAction.type === 'none' && ()} - {currentUserAction.type === 'boundary' && ()} + {currentUserAction.type === 'boundary' && ()} {showAnnotationImportDialog && } diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 1f119d935..7d1e88a9f 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -14,12 +14,13 @@ import ParameterView from './ParameterView'; import AbstractPythonFilter from '../model/filters/AbstractPythonFilter'; import { ActionBar } from './ActionBar'; import { UsageCountStore } from '../../usages/model/UsageCountStore'; +import {AnnotationsState} from "../../annotations/annotationSlice"; interface SelectionViewProps { pythonPackage: PythonPackage; pythonFilter: AbstractPythonFilter; usages: UsageCountStore; - annotations: Ann + annotations: AnnotationsState; } export const SelectionView: React.FC = function ({ pythonPackage, pythonFilter, usages }) { From c4ccc15624c519e5bed31b0d05d676779470a32a Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 14:23:26 +0200 Subject: [PATCH 11/24] switch pc --- .../src/features/packageData/selectionView/SelectionView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 7d1e88a9f..a428c2d27 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -23,7 +23,7 @@ interface SelectionViewProps { annotations: AnnotationsState; } -export const SelectionView: React.FC = function ({ pythonPackage, pythonFilter, usages }) { +export const SelectionView: React.FC = function ({ pythonPackage, pythonFilter, usages, annotations }) { const declaration = pythonPackage.getByRelativePath(useLocation().pathname.split('/').splice(2)); if (!declaration) { From 505d8b9bc2f74f2858584dc8654bdf7e74f39db2 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 14:25:50 +0200 Subject: [PATCH 12/24] switch pc --- api-editor/gui/src/app/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index a14fea5ca..ce731a8c7 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -171,7 +171,7 @@ export const App: React.FC = function () { {currentUserAction.type === 'rename' && } - {currentUserAction.type === 'none' && ()} + {currentUserAction.type === 'none' && ()} {currentUserAction.type === 'boundary' && ()} From eabe86292bc6d0696c147b12d94f5d1efe110ed8 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 10 Jun 2022 16:47:54 +0200 Subject: [PATCH 13/24] Weekend commit --- api-editor/gui/src/app/App.tsx | 4 +- .../features/annotations/annotationSlice.ts | 84 +++++++++++++++---- .../selectionView/SelectionView.tsx | 8 +- .../selectionView/StatisticsView.tsx | 79 ++++++++++++----- 4 files changed, 136 insertions(+), 39 deletions(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index ce731a8c7..c155c4946 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -137,7 +137,6 @@ export const App: React.FC = function () { layerStyle="subtleBorder" resize="horizontal" > -

test2

{currentUserAction.type === 'attribute' && ( )} @@ -171,8 +170,7 @@ export const App: React.FC = function () { {currentUserAction.type === 'rename' && } - {currentUserAction.type === 'none' && ()} - {currentUserAction.type === 'boundary' && ()} + {showAnnotationImportDialog && } diff --git a/api-editor/gui/src/features/annotations/annotationSlice.ts b/api-editor/gui/src/features/annotations/annotationSlice.ts index 8ff400241..d3be2f19c 100644 --- a/api-editor/gui/src/features/annotations/annotationSlice.ts +++ b/api-editor/gui/src/features/annotations/annotationSlice.ts @@ -63,14 +63,12 @@ export interface AttributeAnnotation { export type DefaultType = 'string' | 'number' | 'boolean' | 'none'; export type DefaultValue = string | number | boolean | null; -export interface Annotation { +export interface BoundaryAnnotation { /** * ID of the annotated Python declaration */ readonly target: string; -} -export interface BoundaryAnnotation extends Annotation { /** * The interval specifying possible numeric values */ @@ -110,21 +108,36 @@ export enum ComparisonOperator { UNRESTRICTED, } -export interface CalledAfterAnnotation extends Annotation{ +export interface CalledAfterAnnotation { + /** + * ID of the annotated Python declaration + */ + readonly target: string; + /** * Name of the callable to be called first */ readonly calledAfterName: string; } -export interface CalledAfterTarget extends Annotation{ +export interface CalledAfterTarget { + /** + * ID of the annotated Python declaration + */ + readonly target: string; + /** * Name of the callable to be called first */ readonly calledAfterName: string; } -export interface ConstantAnnotation extends Annotation{ +export interface ConstantAnnotation { + /** + * ID of the annotated Python declaration + */ + readonly target: string; + /** * Type of default value */ @@ -136,7 +149,12 @@ export interface ConstantAnnotation extends Annotation{ readonly defaultValue: DefaultValue; } -export interface EnumAnnotation extends Annotation{ +export interface EnumAnnotation { + /** + * ID of the annotated Python declaration. + */ + target: string; + /** * Name of the enum class that should be created. */ @@ -149,7 +167,12 @@ export interface EnumPair { readonly instanceName: string; } -export interface GroupAnnotation extends Annotation{ +export interface GroupAnnotation { + /** + * ID of the annotated Python declaration + */ + readonly target: string; + /** * Name of the grouped object */ @@ -161,14 +184,23 @@ export interface GroupAnnotation extends Annotation{ readonly parameters: string[]; } -export interface GroupTarget extends Annotation{ +export interface GroupTarget { + /** + * ID of the annotated Python declaration + */ + readonly target: string; + /** * Name of the grouped object */ readonly groupName: string; } -export interface MoveAnnotation extends Annotation{ +export interface MoveAnnotation { + /** + * ID of the annotated Python declaration. + */ + readonly target: string; /** * Qualified path to the destination @@ -176,7 +208,12 @@ export interface MoveAnnotation extends Annotation{ readonly destination: string; } -export interface OptionalAnnotation extends Annotation{ +export interface OptionalAnnotation { + /** + * ID of the annotated Python declaration + */ + readonly target: string; + /** * Type of default value */ @@ -188,20 +225,37 @@ export interface OptionalAnnotation extends Annotation{ readonly defaultValue: DefaultValue; } -export interface PureAnnotation extends Annotation{ +export interface PureAnnotation { + /** + * ID of the annotated Python declaration. + */ + readonly target: string; } -export interface RenameAnnotation extends Annotation{ +export interface RenameAnnotation { + /** + * ID of the annotated Python declaration. + */ + readonly target: string; + /** * New name for the declaration. */ readonly newName: string; } -export interface RequiredAnnotation extends Annotation{ +export interface RequiredAnnotation { + /** + * ID of the annotated Python declaration. + */ + readonly target: string; } -export interface RemoveAnnotation extends Annotation{ +export interface RemoveAnnotation { + /** + * ID of the annotated Python declaration. + */ + readonly target: string; } type UserAction = diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index a428c2d27..fe2468990 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -15,15 +15,18 @@ import AbstractPythonFilter from '../model/filters/AbstractPythonFilter'; import { ActionBar } from './ActionBar'; import { UsageCountStore } from '../../usages/model/UsageCountStore'; import {AnnotationsState} from "../../annotations/annotationSlice"; +import {Setter} from "../../../common/util/types"; interface SelectionViewProps { pythonPackage: PythonPackage; pythonFilter: AbstractPythonFilter; usages: UsageCountStore; annotations: AnnotationsState; + filter: string; + setFilter: Setter; } -export const SelectionView: React.FC = function ({ pythonPackage, pythonFilter, usages, annotations }) { +export const SelectionView: React.FC = function ({ pythonPackage, pythonFilter, usages, annotations, filter, setFilter }) { const declaration = pythonPackage.getByRelativePath(useLocation().pathname.split('/').splice(2)); if (!declaration) { @@ -38,7 +41,8 @@ export const SelectionView: React.FC = function ({ pythonPac {declaration instanceof PythonClass && } {declaration instanceof PythonModule && } {declaration instanceof PythonParameter && } - {declaration == null && } + + diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index c3880429f..2ff584fe4 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,28 +1,28 @@ -import {Heading, Button, Stack} from '@chakra-ui/react'; +import {Heading, Button, VStack, Wrap, WrapItem, Stack} from '@chakra-ui/react'; import React from 'react'; import {useAppSelector} from "../../../app/hooks"; -import AnnotationSlice, { +import { selectAnnotations, selectAttribute, - Annotation, AnnotationsState } from "../../annotations/annotationSlice"; import PythonParameter from "../model/PythonParameter"; +import AbstractPythonFilter from "../model/filters/AbstractPythonFilter"; +import PythonPackage from "../model/PythonPackage"; +import {UsageCountStore} from "../../usages/model/UsageCountStore"; +import {createFilterFromString} from "../model/filters/filterFactory"; +import {Setter} from "../../../common/util/types"; -interface StatistiscViewProps { +interface StatisticsViewProps { annotations: AnnotationsState; + filter: string; + setFilter: Setter; } -const StatisticsView: React.FC = function ({ -}) { - const annotations = useAppSelector(selectAnnotations); - let dict = {}; - for (let property in annotations){ - console.log("property: " + property.toString() + " "+Object.getOwnPropertyNames(property)) - if (Array.isArray(property) && property.length >0){ - //TODO CalledAfterAnnotation and GroupAnnotation - } - } +const StatisticsView: React.FC = function ({ + annotations, filter, setFilter + }) { + const boundariesSize = Object.keys(annotations.boundaries).length; const constantsSize = Object.keys(annotations.constants).length; const enumsSize = Object.keys(annotations.enums).length; @@ -36,12 +36,53 @@ const StatisticsView: React.FC = function ({ const requiredsSize = Object.keys(annotations.requireds).length; const removesSize = Object.keys(annotations.removes).length; - return ( - - Statistics - + function filterAction(annotation: string) { + let annotationFilter = "annotation:@"; + const filter_string = annotationFilter + annotation; - + //Remove existing annotation filter + const filterList = filter.split(" "); + let newFilter = ""; + for (let i = 0; i < filterList.length; i++) { + if (!filterList[i].startsWith(annotationFilter)) { + newFilter += filterList[i]; + newFilter += " "; + } + } + + newFilter += filter_string; + setFilter(newFilter); + } + + return ( + + Statistics + + + + + + + + + + + + + + + ); }; From 1dbb2b6e43dfc23c5a6394f737e00a305002f3df Mon Sep 17 00:00:00 2001 From: Aclrian <32142988+Aclrian@users.noreply.github.com> Date: Fri, 10 Jun 2022 17:38:43 +0200 Subject: [PATCH 14/24] fix linter errors --- api-editor/gui/src/app/App.tsx | 1 - .../selectionView/SelectionView.tsx | 2 +- .../selectionView/StatisticsView.tsx | 36 ++++++------------- 3 files changed, 12 insertions(+), 27 deletions(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index c155c4946..720814ca0 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -48,7 +48,6 @@ import { UsageCountJson, UsageCountStore } from '../features/usages/model/UsageC import { selectShowUsageImportDialog } from '../features/usages/usageSlice'; import { UsageImportDialog } from '../features/usages/UsageImportDialog'; import { createFilterFromString } from '../features/packageData/model/filters/filterFactory'; -import StatisticsView from "../features/packageData/selectionView/StatisticsView"; export const App: React.FC = function () { const dispatch = useAppDispatch(); diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index fe2468990..d88ed259e 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -8,7 +8,7 @@ import PythonPackage from '../model/PythonPackage'; import PythonParameter from '../model/PythonParameter'; import ClassView from './ClassView'; import FunctionView from './FunctionView'; -import StatisticsView from './StatisticsView'; +import {StatisticsView} from './StatisticsView'; import { ModuleView } from './ModuleView'; import ParameterView from './ParameterView'; import AbstractPythonFilter from '../model/filters/AbstractPythonFilter'; diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 2ff584fe4..8b0603db8 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,16 +1,6 @@ -import {Heading, Button, VStack, Wrap, WrapItem, Stack} from '@chakra-ui/react'; +import {Heading, Button, VStack, Wrap, WrapItem} from '@chakra-ui/react'; import React from 'react'; -import {useAppSelector} from "../../../app/hooks"; -import { - selectAnnotations, - selectAttribute, - AnnotationsState -} from "../../annotations/annotationSlice"; -import PythonParameter from "../model/PythonParameter"; -import AbstractPythonFilter from "../model/filters/AbstractPythonFilter"; -import PythonPackage from "../model/PythonPackage"; -import {UsageCountStore} from "../../usages/model/UsageCountStore"; -import {createFilterFromString} from "../model/filters/filterFactory"; +import {AnnotationsState} from "../../annotations/annotationSlice"; import {Setter} from "../../../common/util/types"; interface StatisticsViewProps { @@ -19,10 +9,7 @@ interface StatisticsViewProps { setFilter: Setter; } -const StatisticsView: React.FC = function ({ - annotations, filter, setFilter - }) { - +export const StatisticsView: React.FC = function ({annotations, filter, setFilter}) { const boundariesSize = Object.keys(annotations.boundaries).length; const constantsSize = Object.keys(annotations.constants).length; const enumsSize = Object.keys(annotations.enums).length; @@ -36,23 +23,23 @@ const StatisticsView: React.FC = function ({ const requiredsSize = Object.keys(annotations.requireds).length; const removesSize = Object.keys(annotations.removes).length; - function filterAction(annotation: string) { - let annotationFilter = "annotation:@"; - const filter_string = annotationFilter + annotation; + const filterAction = (annotation: string) => { + const annotationFilter = "annotation:@"; + const filterString = annotationFilter + annotation; //Remove existing annotation filter const filterList = filter.split(" "); let newFilter = ""; - for (let i = 0; i < filterList.length; i++) { - if (!filterList[i].startsWith(annotationFilter)) { - newFilter += filterList[i]; + for (const element of filterList) { + if (!element.startsWith(annotationFilter)) { + newFilter += element; newFilter += " "; } } - newFilter += filter_string; + newFilter += filterString; setFilter(newFilter); - } + }; return ( @@ -86,4 +73,3 @@ const StatisticsView: React.FC = function ({ ); }; -export default StatisticsView; From 14cc632da726483c38a0f05a5df84fba81eb5d69 Mon Sep 17 00:00:00 2001 From: Aclrian Date: Fri, 10 Jun 2022 16:09:53 +0000 Subject: [PATCH 15/24] style: apply automatic fixes of linters --- api-editor/gui/src/app/App.tsx | 9 +- api-editor/gui/src/common/MenuBar.tsx | 8 +- .../selectionView/SelectionView.tsx | 18 ++-- .../selectionView/StatisticsView.tsx | 89 ++++++++++++------- 4 files changed, 79 insertions(+), 45 deletions(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index 720814ca0..ab27367de 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -169,7 +169,14 @@ export const App: React.FC = function () { {currentUserAction.type === 'rename' && } - + {showAnnotationImportDialog && } diff --git a/api-editor/gui/src/common/MenuBar.tsx b/api-editor/gui/src/common/MenuBar.tsx index 12c6619b2..d5940d033 100644 --- a/api-editor/gui/src/common/MenuBar.tsx +++ b/api-editor/gui/src/common/MenuBar.tsx @@ -138,9 +138,7 @@ export const MenuBar: React.FC = function ({ pythonPackage, filter settings.push('darkMode'); } - const showStatistics = () => { - - }; + const showStatistics = () => {}; return ( @@ -187,8 +185,8 @@ export const MenuBar: React.FC = function ({ pythonPackage, filter
- Statistics - + Statistics + diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index d88ed259e..05aa444a3 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -8,14 +8,14 @@ import PythonPackage from '../model/PythonPackage'; import PythonParameter from '../model/PythonParameter'; import ClassView from './ClassView'; import FunctionView from './FunctionView'; -import {StatisticsView} from './StatisticsView'; +import { StatisticsView } from './StatisticsView'; import { ModuleView } from './ModuleView'; import ParameterView from './ParameterView'; import AbstractPythonFilter from '../model/filters/AbstractPythonFilter'; import { ActionBar } from './ActionBar'; import { UsageCountStore } from '../../usages/model/UsageCountStore'; -import {AnnotationsState} from "../../annotations/annotationSlice"; -import {Setter} from "../../../common/util/types"; +import { AnnotationsState } from '../../annotations/annotationSlice'; +import { Setter } from '../../../common/util/types'; interface SelectionViewProps { pythonPackage: PythonPackage; @@ -26,7 +26,14 @@ interface SelectionViewProps { setFilter: Setter; } -export const SelectionView: React.FC = function ({ pythonPackage, pythonFilter, usages, annotations, filter, setFilter }) { +export const SelectionView: React.FC = function ({ + pythonPackage, + pythonFilter, + usages, + annotations, + filter, + setFilter, +}) { const declaration = pythonPackage.getByRelativePath(useLocation().pathname.split('/').splice(2)); if (!declaration) { @@ -41,8 +48,7 @@ export const SelectionView: React.FC = function ({ pythonPac {declaration instanceof PythonClass && } {declaration instanceof PythonModule && } {declaration instanceof PythonParameter && } - - + diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 8b0603db8..f9b68c03b 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,7 +1,7 @@ -import {Heading, Button, VStack, Wrap, WrapItem} from '@chakra-ui/react'; +import { Heading, Button, VStack, Wrap, WrapItem } from '@chakra-ui/react'; import React from 'react'; -import {AnnotationsState} from "../../annotations/annotationSlice"; -import {Setter} from "../../../common/util/types"; +import { AnnotationsState } from '../../annotations/annotationSlice'; +import { Setter } from '../../../common/util/types'; interface StatisticsViewProps { annotations: AnnotationsState; @@ -9,7 +9,7 @@ interface StatisticsViewProps { setFilter: Setter; } -export const StatisticsView: React.FC = function ({annotations, filter, setFilter}) { +export const StatisticsView: React.FC = function ({ annotations, filter, setFilter }) { const boundariesSize = Object.keys(annotations.boundaries).length; const constantsSize = Object.keys(annotations.constants).length; const enumsSize = Object.keys(annotations.enums).length; @@ -24,16 +24,16 @@ export const StatisticsView: React.FC = function ({annotati const removesSize = Object.keys(annotations.removes).length; const filterAction = (annotation: string) => { - const annotationFilter = "annotation:@"; + const annotationFilter = 'annotation:@'; const filterString = annotationFilter + annotation; //Remove existing annotation filter - const filterList = filter.split(" "); - let newFilter = ""; + const filterList = filter.split(' '); + let newFilter = ''; for (const element of filterList) { if (!element.startsWith(annotationFilter)) { newFilter += element; - newFilter += " "; + newFilter += ' '; } } @@ -43,33 +43,56 @@ export const StatisticsView: React.FC = function ({annotati return ( - Statistics + + Statistics + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); }; - From 3f60d130df11c59497aeeb411514e69bb167b497 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Sat, 11 Jun 2022 16:20:23 +0200 Subject: [PATCH 16/24] refactor: pull data from new Redux slices --- api-editor/gui/src/app/App.tsx | 12 +--- .../packageData/PackageDataImportDialog.tsx | 8 +-- .../selectionView/SelectionView.tsx | 59 +++++++------------ .../selectionView/StatisticsView.tsx | 29 +++++---- 4 files changed, 39 insertions(+), 69 deletions(-) diff --git a/api-editor/gui/src/app/App.tsx b/api-editor/gui/src/app/App.tsx index 7477327f6..916e43e2d 100644 --- a/api-editor/gui/src/app/App.tsx +++ b/api-editor/gui/src/app/App.tsx @@ -39,7 +39,6 @@ import { selectShowAPIImportDialog, selectShowUsageImportDialog, selectUI, - setFilterString, } from '../features/ui/uiSlice'; import { initializeUsages, persistUsages, selectUsages } from '../features/usages/usageSlice'; import { initializePythonPackage, selectPythonPackage } from '../features/packageData/apiSlice'; @@ -120,18 +119,11 @@ export const App: React.FC = function () { {currentUserAction.type === 'rename' && } - + {showAnnotationImportDialog && } - {showAPIImportDialog && } + {showAPIImportDialog && } {showUsagesImportDialog && } ; -} - -export const PackageDataImportDialog: React.FC = function ({ setFilter }) { +export const PackageDataImportDialog: React.FC = function () { const [fileName, setFileName] = useState(''); const [newPythonPackage, setNewPythonPackage] = useState(); const navigate = useNavigate(); @@ -46,7 +41,6 @@ export const PackageDataImportDialog: React.FC = dispatch(resetAnnotations()); dispatch(resetUI()); dispatch(resetUsages()); - setFilter('is:public'); navigate('/'); } }; diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index fdd437065..c32edff60 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -1,40 +1,25 @@ -import {Box, Spacer, VStack} from '@chakra-ui/react'; +import { Box, Spacer, VStack } from '@chakra-ui/react'; import React from 'react'; -import {useLocation} from 'react-router'; +import { useLocation } from 'react-router'; import PythonClass from '../model/PythonClass'; import PythonFunction from '../model/PythonFunction'; import PythonModule from '../model/PythonModule'; -import PythonPackage from '../model/PythonPackage'; import PythonParameter from '../model/PythonParameter'; -import {ClassView} from './ClassView'; -import {FunctionView} from './FunctionView'; -import {ModuleView} from './ModuleView'; -import {ParameterView} from './ParameterView'; -import {AbstractPythonFilter} from '../model/filters/AbstractPythonFilter'; -import {ActionBar} from './ActionBar'; -import {UsageCountStore} from '../../usages/model/UsageCountStore'; -import {AnnotationsStore} from '../../annotations/annotationSlice'; -import {Setter} from '../../../common/util/types'; -import {StatisticsView} from './StatisticsView'; +import { ClassView } from './ClassView'; +import { FunctionView } from './FunctionView'; +import { ModuleView } from './ModuleView'; +import { ParameterView } from './ParameterView'; +import { ActionBar } from './ActionBar'; +import { StatisticsView } from './StatisticsView'; +import { useAppSelector } from '../../../app/hooks'; +import { selectPythonPackage } from '../apiSlice'; +import { selectFilter } from '../../ui/uiSlice'; +import { selectUsages } from '../../usages/usageSlice'; - -interface SelectionViewProps { - pythonPackage: PythonPackage; - pythonFilter: AbstractPythonFilter; - usages: UsageCountStore; - annotations: AnnotationsStore; - filter: string; - setFilter: Setter; -} - -export const SelectionView: React.FC = function ({ - pythonPackage, - pythonFilter, - usages, - annotations, - filter, - setFilter, - }) { +export const SelectionView: React.FC = function () { + const pythonPackage = useAppSelector(selectPythonPackage); + const pythonFilter = useAppSelector(selectFilter); + const usages = useAppSelector(selectUsages); const declaration = pythonPackage.getByRelativePath(useLocation().pathname.split('/').splice(2)); if (!declaration) { @@ -45,15 +30,15 @@ export const SelectionView: React.FC = function ({ - {declaration instanceof PythonFunction && } - {declaration instanceof PythonClass && } - {declaration instanceof PythonModule && } - {declaration instanceof PythonParameter && } - + {declaration instanceof PythonFunction && } + {declaration instanceof PythonClass && } + {declaration instanceof PythonModule && } + {declaration instanceof PythonParameter && } + - + ; -} +export const StatisticsView: React.FC = function () { + const annotations = useAppSelector(selectAnnotations); + const filterString = useAppSelector(selectFilterString); + const dispatch = useAppDispatch(); -export const StatisticsView: React.FC = function ({ annotations, filter, setFilter }) { const boundariesSize = Object.keys(annotations.boundaries).length; const constantsSize = Object.keys(annotations.constants).length; const enumsSize = Object.keys(annotations.enums).length; @@ -24,21 +23,21 @@ export const StatisticsView: React.FC = function ({ annotat const removesSize = Object.keys(annotations.removes).length; const filterAction = (annotation: string) => { - const annotationFilter = 'annotation:@'; - const filterString = annotationFilter + annotation; + const annotationFilterPrefix = 'annotation:@'; + const annotationFilterString = annotationFilterPrefix + annotation; //Remove existing annotation filter - const filterList = filter.split(' '); + const filterList = filterString.split(' '); let newFilter = ''; for (const element of filterList) { - if (!element.startsWith(annotationFilter)) { + if (!element.startsWith(annotationFilterPrefix)) { newFilter += element; newFilter += ' '; } } - newFilter += filterString; - setFilter(newFilter); + newFilter += annotationFilterString; + dispatch(setFilterString(newFilter)); }; return ( From 12c829d57b97a972cebf57b94586581a8f517988 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Sun, 12 Jun 2022 22:27:35 +0200 Subject: [PATCH 17/24] fix: lint error --- .../gui/src/features/packageData/selectionView/SelectionView.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 0a9e9c531..ce2026d0d 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -4,7 +4,6 @@ import { useLocation } from 'react-router'; import { PythonClass } from '../model/PythonClass'; import { PythonFunction } from '../model/PythonFunction'; import { PythonModule } from '../model/PythonModule'; -import { PythonPackage } from '../model/PythonPackage'; import { PythonParameter } from '../model/PythonParameter'; import { ClassView } from './ClassView'; import { FunctionView } from './FunctionView'; From 0e93a30e33258b2057ac2c835df56f3e6c2c3985 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Tue, 14 Jun 2022 13:51:18 +0200 Subject: [PATCH 18/24] fxi(gui): build error after merging --- api-editor/gui/src/common/MenuBar.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/api-editor/gui/src/common/MenuBar.tsx b/api-editor/gui/src/common/MenuBar.tsx index f0b01a52f..5538a0c7a 100644 --- a/api-editor/gui/src/common/MenuBar.tsx +++ b/api-editor/gui/src/common/MenuBar.tsx @@ -64,6 +64,7 @@ export const MenuBar: React.FC = function ({ displayInferErrors }) colorModeArray.push('darkMode'); } + const showStatistics = () => {}; return ( From 668de94c627950c27d17734c76886b6c5b318d15 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 17 Jun 2022 11:22:54 +0200 Subject: [PATCH 19/24] include basic implementation from feat statistics View with bar and line charts and some minor changes --- api-editor/gui/src/common/MenuBar.tsx | 8 ++++++++ .../packageData/selectionView/SelectionView.tsx | 14 +++++++++++++- .../packageData/selectionView/StatisticsView.tsx | 7 +++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/api-editor/gui/src/common/MenuBar.tsx b/api-editor/gui/src/common/MenuBar.tsx index 5538a0c7a..cde757cd0 100644 --- a/api-editor/gui/src/common/MenuBar.tsx +++ b/api-editor/gui/src/common/MenuBar.tsx @@ -36,6 +36,7 @@ import { DeleteAllAnnotations } from './DeleteAllAnnotations'; import { GenerateAdapters } from './GenerateAdapters'; import { FilterInput } from './FilterInput'; import { selectNumberOfMatchedNodes } from '../features/packageData/apiSlice'; +import { useNavigate } from "react-router-dom"; interface MenuBarProps { displayInferErrors: (errors: string[]) => void; @@ -44,6 +45,7 @@ interface MenuBarProps { export const MenuBar: React.FC = function ({ displayInferErrors }) { const { colorMode, toggleColorMode } = useColorMode(); const dispatch = useAppDispatch(); + const navigate = useNavigate(); const annotationStore = useAppSelector(selectAnnotations); const sortingMode = useAppSelector(selectSortingMode); @@ -59,6 +61,11 @@ export const MenuBar: React.FC = function ({ displayInferErrors }) a.click(); }; + const setStatisticsViewPath = () => { + const tmp = 'statisticsView'; + navigate(`/${tmp}`); + }; + const colorModeArray: string[] = []; if (colorMode === 'dark') { colorModeArray.push('darkMode'); @@ -173,6 +180,7 @@ export const MenuBar: React.FC = function ({ displayInferErrors }) + diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index 9ce4ca3f0..bdf5e898b 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -16,6 +16,19 @@ import { StatisticsView } from './StatisticsView'; export const SelectionView: React.FC = function () { const rawPythonPackage = useAppSelector(selectRawPythonPackage); const declaration = rawPythonPackage.getDeclarationById(useLocation().pathname.split('/').splice(1).join('/')); + const location = useLocation().pathname; + + if (location === '/statisticsView') { + return ( + + + + + + + + ); + } if (!declaration) { return null; @@ -29,7 +42,6 @@ export const SelectionView: React.FC = function () { {declaration instanceof PythonClass && } {declaration instanceof PythonModule && } {declaration instanceof PythonParameter && } - diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 4a203782d..b40a04024 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,4 +1,4 @@ -import { Button, Heading, VStack, Wrap, WrapItem } from '@chakra-ui/react'; +import {Button, Heading, VStack, Wrap, WrapItem} from '@chakra-ui/react'; import React from 'react'; import { selectAnnotations } from '../../annotations/annotationSlice'; import { useAppDispatch, useAppSelector } from '../../../app/hooks'; @@ -45,7 +45,10 @@ export const StatisticsView: React.FC = function () { Statistics - + + Annotations + +
From 902c1afac93a393e25b2d27383f98bd12f9544f0 Mon Sep 17 00:00:00 2001 From: bongartz Date: Fri, 17 Jun 2022 14:47:56 +0200 Subject: [PATCH 21/24] remove unknown changes --- .../packageData/PackageDataImportDialog.tsx | 4 ++-- api-editor/gui/src/features/ui/uiSlice.ts | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/api-editor/gui/src/features/packageData/PackageDataImportDialog.tsx b/api-editor/gui/src/features/packageData/PackageDataImportDialog.tsx index 1af43da52..5c7ea7395 100644 --- a/api-editor/gui/src/features/packageData/PackageDataImportDialog.tsx +++ b/api-editor/gui/src/features/packageData/PackageDataImportDialog.tsx @@ -20,7 +20,7 @@ import { StyledDropzone } from '../../common/StyledDropzone'; import { isValidJsonFile } from '../../common/util/validation'; import { resetAnnotations } from '../annotations/annotationSlice'; import { parsePythonPackageJson, PythonPackageJson } from './model/PythonPackageBuilder'; -import { resetUI, toggleAPIImportDialog } from '../ui/uiSlice'; +import { resetUIAfterAPIImport, toggleAPIImportDialog } from '../ui/uiSlice'; import { persistPythonPackage, setPythonPackage } from './apiSlice'; import { resetUsages } from '../usages/usageSlice'; @@ -39,8 +39,8 @@ export const PackageDataImportDialog: React.FC = function () { // Reset other slices dispatch(resetAnnotations()); - dispatch(resetUI()); dispatch(resetUsages()); + dispatch(resetUIAfterAPIImport()); navigate('/'); } }; diff --git a/api-editor/gui/src/features/ui/uiSlice.ts b/api-editor/gui/src/features/ui/uiSlice.ts index 4e2dbdd6f..e57cd0633 100644 --- a/api-editor/gui/src/features/ui/uiSlice.ts +++ b/api-editor/gui/src/features/ui/uiSlice.ts @@ -115,10 +115,12 @@ export const initialState: UIState = { showUsageImportDialog: false, currentUserAction: NoUserAction, + expandedInTreeView: {}, treeViewScrollOffset: 0, - heatMapMode: HeatMapMode.None, filterString: 'is:public', + + heatMapMode: HeatMapMode.None, sortingMode: SortingMode.Alphabetical, }; @@ -159,6 +161,22 @@ const uiSlice = createSlice({ resetUI() { return initialState; }, + resetUIAfterAPIImport(state) { + return { + ...state, + + showAnnotationImportDialog: initialState.showAnnotationImportDialog, + showAPIImportDialog: initialState.showAPIImportDialog, + showUsageImportDialog: initialState.showUsageImportDialog, + + currentUserAction: initialState.currentUserAction, + + expandedInTreeView: initialState.expandedInTreeView, + treeViewScrollOffset: initialState.treeViewScrollOffset, + + filterString: initialState.filterString, + }; + }, toggleAnnotationImportDialog(state) { state.showAnnotationImportDialog = !state.showAnnotationImportDialog; @@ -286,6 +304,7 @@ const { actions, reducer } = uiSlice; export const { setUI, resetUI, + resetUIAfterAPIImport, toggleAnnotationImportDialog, hideAnnotationImportDialog, From a2775dac379c1dfb593cfac0c53f99d7090cd222 Mon Sep 17 00:00:00 2001 From: Aclrian Date: Fri, 17 Jun 2022 12:52:55 +0000 Subject: [PATCH 22/24] style: apply automatic fixes of linters --- api-editor/gui/src/common/MenuBar.tsx | 2 +- .../src/features/packageData/selectionView/SelectionView.tsx | 2 +- .../src/features/packageData/selectionView/StatisticsView.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api-editor/gui/src/common/MenuBar.tsx b/api-editor/gui/src/common/MenuBar.tsx index 82f089c9d..d02565c6d 100644 --- a/api-editor/gui/src/common/MenuBar.tsx +++ b/api-editor/gui/src/common/MenuBar.tsx @@ -36,7 +36,7 @@ import { DeleteAllAnnotations } from './DeleteAllAnnotations'; import { GenerateAdapters } from './GenerateAdapters'; import { FilterInput } from './FilterInput'; import { selectNumberOfMatchedNodes } from '../features/packageData/apiSlice'; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from 'react-router-dom'; interface MenuBarProps { displayInferErrors: (errors: string[]) => void; diff --git a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx index bdf5e898b..279cfd65b 100644 --- a/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/SelectionView.tsx @@ -23,7 +23,7 @@ export const SelectionView: React.FC = function () { - + diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index b40a04024..3d771a26a 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -1,4 +1,4 @@ -import {Button, Heading, VStack, Wrap, WrapItem} from '@chakra-ui/react'; +import { Button, Heading, VStack, Wrap, WrapItem } from '@chakra-ui/react'; import React from 'react'; import { selectAnnotations } from '../../annotations/annotationSlice'; import { useAppDispatch, useAppSelector } from '../../../app/hooks'; From 15bd61e9d173250aa58979f664c681858d5a5a76 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Fri, 17 Jun 2022 16:33:33 +0200 Subject: [PATCH 23/24] refactor(gui): inline a variable --- api-editor/gui/src/common/MenuBar.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api-editor/gui/src/common/MenuBar.tsx b/api-editor/gui/src/common/MenuBar.tsx index d02565c6d..54c3ddd62 100644 --- a/api-editor/gui/src/common/MenuBar.tsx +++ b/api-editor/gui/src/common/MenuBar.tsx @@ -62,8 +62,7 @@ export const MenuBar: React.FC = function ({ displayInferErrors }) }; const setStatisticsViewPath = () => { - const tmp = 'statisticsView'; - navigate(`/${tmp}`); + navigate(`/statisticsView`); }; const colorModeArray: string[] = []; From 0810e94e9cc0f3f58c8e29329f9e82fc53b1f04b Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Fri, 17 Jun 2022 16:36:49 +0200 Subject: [PATCH 24/24] feat(gui): add annotations `@description` and `@todo` --- .../packageData/selectionView/StatisticsView.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx index 3d771a26a..7d9137122 100644 --- a/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx +++ b/api-editor/gui/src/features/packageData/selectionView/StatisticsView.tsx @@ -11,6 +11,7 @@ export const StatisticsView: React.FC = function () { const boundariesSize = Object.keys(annotations.boundaries).length; const constantsSize = Object.keys(annotations.constants).length; + const descriptionSize = Object.keys(annotations.descriptions).length; const enumsSize = Object.keys(annotations.enums).length; const optionalsSize = Object.keys(annotations.optionals).length; const movesSize = Object.keys(annotations.moves).length; @@ -21,6 +22,7 @@ export const StatisticsView: React.FC = function () { const renamingsSize = Object.keys(annotations.renamings).length; const requiredsSize = Object.keys(annotations.requireds).length; const removesSize = Object.keys(annotations.removes).length; + const todoSize = Object.keys(annotations.todos).length; const filterAction = (annotation: string) => { const annotationFilterPrefix = 'annotation:@'; @@ -70,6 +72,12 @@ export const StatisticsView: React.FC = function () { + + + @@ -93,6 +101,9 @@ export const StatisticsView: React.FC = function () { + {' '} + +