Skip to content
This repository was archived by the owner on Jan 19, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
e7e5f77
switch pc
nvollroth Jun 10, 2022
3ac13e5
switch pc
Jun 10, 2022
cd4ff4b
switch pc
Jun 10, 2022
3f57080
switch pc
Jun 10, 2022
7ad9ddc
switch pc
Jun 10, 2022
8769e60
switch pc
Jun 10, 2022
7b5cccf
switch pc
Jun 10, 2022
9ad6606
switch pc
Jun 10, 2022
7f68d0b
switch pc
Jun 10, 2022
3a231c4
switch pc
Jun 10, 2022
c4ccc15
switch pc
Jun 10, 2022
505d8b9
switch pc
Jun 10, 2022
0515748
Merge branch 'main' into 534-statistics-view-annotations
Jun 10, 2022
eabe862
Weekend commit
Jun 10, 2022
c0b873b
Merge branch 'main' into 534-statistics-view-annotations
Aclrian Jun 10, 2022
1dbb2b6
fix linter errors
Aclrian Jun 10, 2022
14cc632
style: apply automatic fixes of linters
Aclrian Jun 10, 2022
6893762
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 11, 2022
3f60d13
refactor: pull data from new Redux slices
lars-reimann Jun 11, 2022
282b503
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 12, 2022
205289c
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 12, 2022
12c829d
fix: lint error
lars-reimann Jun 12, 2022
f513f41
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 13, 2022
3ba4780
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 13, 2022
f001380
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 14, 2022
0e93a30
fxi(gui): build error after merging
lars-reimann Jun 14, 2022
34d277f
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 14, 2022
21933f0
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 16, 2022
d5bcaf3
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 16, 2022
668de94
include basic implementation from
Jun 17, 2022
d8cc13f
remove statistics button
Jun 17, 2022
902c1af
remove unknown changes
Jun 17, 2022
a2775da
style: apply automatic fixes of linters
Aclrian Jun 17, 2022
4a0a699
Merge branch 'main' into 534-statistics-view-annotations
Aclrian Jun 17, 2022
15bd61e
refactor(gui): inline a variable
lars-reimann Jun 17, 2022
0810e94
feat(gui): add annotations `@description` and `@todo`
lars-reimann Jun 17, 2022
d085dc9
Merge branch 'main' into 534-statistics-view-annotations
lars-reimann Jun 17, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions api-editor/gui/src/common/MenuBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,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;
Expand All @@ -46,6 +47,7 @@ interface MenuBarProps {
export const MenuBar: React.FC<MenuBarProps> = function ({ displayInferErrors }) {
const { colorMode, toggleColorMode } = useColorMode();
const dispatch = useAppDispatch();
const navigate = useNavigate();

const annotationStore = useAppSelector(selectAnnotations);
const sortingMode = useAppSelector(selectSortingMode);
Expand All @@ -61,6 +63,10 @@ export const MenuBar: React.FC<MenuBarProps> = function ({ displayInferErrors })
a.click();
};

const setStatisticsViewPath = () => {
navigate(`/statisticsView`);
};

const colorModeArray: string[] = [];
if (colorMode === 'dark') {
colorModeArray.push('darkMode');
Expand Down Expand Up @@ -142,6 +148,10 @@ export const MenuBar: React.FC<MenuBarProps> = function ({ displayInferErrors })
</MenuItemOption>
</MenuOptionGroup>
<MenuDivider />
<MenuItemOption value={'statistics'} onClick={setStatisticsViewPath}>
Statistics
</MenuItemOption>
<MenuDivider />
<MenuGroup title="Module/Class/Function Sorting">
<MenuOptionGroup
type="radio"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,24 @@ import { ModuleView } from './ModuleView';
import { ParameterView } from './ParameterView';
import { useAppSelector } from '../../../app/hooks';
import { selectRawPythonPackage } from '../apiSlice';
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 (
<VStack h="100%">
<Box w="100%" flexGrow={1} overflowY="scroll">
<Box padding={4}>
<StatisticsView />
</Box>
</Box>
</VStack>
);
}

if (!declaration) {
return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
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';
import { selectFilterString, setFilterString } from '../../ui/uiSlice';

export const StatisticsView: React.FC = function () {
const annotations = useAppSelector(selectAnnotations);
const filterString = useAppSelector(selectFilterString);
const dispatch = useAppDispatch();

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;
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;
const todoSize = Object.keys(annotations.todos).length;

const filterAction = (annotation: string) => {
const annotationFilterPrefix = 'annotation:@';
const annotationFilterString = annotationFilterPrefix + annotation;

//Remove existing annotation filter
const filterList = filterString.split(' ');
let newFilter = '';
for (const element of filterList) {
if (!element.startsWith(annotationFilterPrefix)) {
newFilter += element;
newFilter += ' ';
}
}

newFilter += annotationFilterString;
dispatch(setFilterString(newFilter));
};

return (
<VStack spacing={4}>
<Heading as="h2" size="md">
Statistics
</Heading>
<Heading as="h3" size="md">
Annotations
</Heading>
<Wrap mx="auto" padding="10px 10px 10px 10px">
<WrapItem>
<Button
onClick={() => filterAction('attribute')}
children={'Attributes: ' + attributesSize}
></Button>
</WrapItem>
<WrapItem>
<Button
onClick={() => filterAction('boundary')}
children={'Boundaries: ' + boundariesSize}
></Button>
</WrapItem>
<WrapItem>
<Button
onClick={() => filterAction('calledAfter')}
children={'CalledAfter: ' + calledAftersSize}
></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('constant')} children={'Constants: ' + constantsSize}></Button>
</WrapItem>
<WrapItem>
<Button
onClick={() => filterAction('description')}
children={'Descriptions: ' + descriptionSize}
></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('enum')} children={'Enums: ' + enumsSize}></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('group')} children={'Groups: ' + groupsSize}></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('move')} children={'Move: ' + movesSize}></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('optional')} children={'Optionals: ' + optionalsSize}></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('pure')} children={'Pures: ' + puresSize}></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('remove')} children={'Removes: ' + removesSize}></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('rename')} children={'Renaming: ' + renamingsSize}></Button>
</WrapItem>
<WrapItem>
<Button onClick={() => filterAction('required')} children={'Requireds: ' + requiredsSize}></Button>
</WrapItem>{' '}
<WrapItem>
<Button onClick={() => filterAction('todo')} children={'Todos: ' + todoSize}></Button>
</WrapItem>
</Wrap>
</VStack>
);
};