Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create 3.19 branch #112

Closed
wants to merge 82 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
b02964c
Import Aim UI v3.17.5
Dec 21, 2023
2478da4
Customize Aim UI (#31)
jgiannuzzi Dec 21, 2023
82e76ee
Add support for system metrics (#33)
jgiannuzzi Jan 2, 2024
245cfcd
Update caniuse-lite from 1.0.30001434 to 1.0.30001572 (#34)
jgiannuzzi Jan 2, 2024
0b38c7b
Namespace Selector in AIM UI (#35)
fabiovincenzi Jan 18, 2024
3df493a
Export all matched runs in Aim UI (#37)
fabiovincenzi Jan 30, 2024
cbd531c
Preliminary ParamsScalePopover component (#36)
jescalada Feb 1, 2024
7537110
Fetch runs CSV from server on export runs (#40)
fabiovincenzi Feb 2, 2024
497ef3a
Disable Scaling for Point Params (#39)
jescalada Feb 3, 2024
c6a6b35
Remove white shadow in metrics charts (#42)
fabiovincenzi Feb 16, 2024
faddcf6
Metrics/Params selection dropdown (#43)
fabiovincenzi Feb 28, 2024
d58fad2
Fix Metric/Params selection dropdown search text disappears with left…
fabiovincenzi Mar 4, 2024
b162df6
Experiment Selection Header (#41)
jescalada Mar 14, 2024
8e547de
Experiment Selection Header Searchbox + Quick Action Buttons (#48)
jescalada Mar 15, 2024
e81fe5a
Live update disable (#50)
suprjinx Mar 20, 2024
0638dea
Experiment Regex Fixes (#49)
jescalada Mar 20, 2024
134eab9
Send List of Metric-Context to SearchMetrics endpoint (#46)
fabiovincenzi Mar 21, 2024
a1f4c21
Remove advanced search mode from Metric search (#51)
fabiovincenzi Mar 22, 2024
dbbfd3b
change endpoint from admin/namespaces to chooser/namespaces (#53)
fabiovincenzi Mar 28, 2024
582ed30
Fix various experiment header issues (#52)
jescalada Mar 29, 2024
e6946ab
Fix initial experiment state namespace bug (#57)
jescalada Apr 1, 2024
a6752c2
Link Run from Aim UI to MLFlow UI (#55)
fabiovincenzi Apr 1, 2024
54ae8dc
Link Experiment from Aim UI to MLFlow UI (#54)
fabiovincenzi Apr 1, 2024
103d5b2
refresh Metrics drop down with periodic refresh of project-params (#56)
suprjinx Apr 3, 2024
efecaae
Change Search Metric to be a POST (#58)
fabiovincenzi Apr 4, 2024
a4ea0f1
Fix experiment header UI refresh issue (#61)
jescalada Apr 5, 2024
ea4e25f
Project Params Hotfix (#62)
jescalada Apr 8, 2024
9f4cc0c
Do not call projects/params endpoint if no experiment is selected (#63)
fabiovincenzi Apr 9, 2024
a25f8be
feat removed tags page from ui-aim (#59)
Shugaba-Wuta Apr 10, 2024
bda8c0a
fetch params on initialize and when experiment selection changes (#66)
fabiovincenzi Apr 12, 2024
23524e3
Fix projects/params poll (#67)
fabiovincenzi Apr 15, 2024
7baabe5
Implement virtualization for Metric Autocomplete (#64)
fabiovincenzi Apr 15, 2024
ffb8574
Use the displayed experiments for requests in every tab (#68)
fabiovincenzi Apr 17, 2024
8c76d03
Fetch projects/params when select/deselect all in checked on the expe…
fabiovincenzi Apr 17, 2024
028ca6f
Run Selector UX Improvements (#60)
jescalada Apr 17, 2024
4d3a038
Add experiments header to runs (#70)
suprjinx Apr 26, 2024
ebb5d25
Implement virtualization on scatters dropdown (#71)
fabiovincenzi Apr 29, 2024
af40dca
Experiment Selection Store Experiment IDs (#65)
jescalada Apr 30, 2024
432b1e6
Remove old metrics on experiment change (#74)
jescalada Apr 30, 2024
a2f678d
Remove old/deleted experiments from experiment selector (#72)
jescalada May 1, 2024
627bd02
Flip scatters and params search box order (#73)
jescalada May 1, 2024
239d595
Fix search query enter bug (#75)
jescalada May 2, 2024
cfc524c
Table Column Filtering and Performance Improvements (#44)
jescalada May 3, 2024
d2ecb2e
Change context from string to object (#76)
fabiovincenzi May 6, 2024
bcd016e
Limit metrics (#77)
suprjinx May 10, 2024
6dd00a2
Show only the visible columns in Manage Columns popover (#78)
fabiovincenzi May 13, 2024
857570f
Autofocus the experiment search (#81)
suprjinx May 13, 2024
c33e706
pass selected experiments to getRunsData for params and scatters (#80)
fabiovincenzi May 14, 2024
13f340d
Metrics counter (#79)
suprjinx May 14, 2024
327dc47
Metric tooltip dynamic size (#83)
fabiovincenzi May 15, 2024
af81470
Make it possible to preselect run hash in Metrics Explorer (#85)
dsuhinin May 21, 2024
e7fe3fb
Add support for grouping charts by multiple conditions (#82)
jescalada May 22, 2024
823c8a9
Metric Tooltip Rounding (#84)
jescalada May 22, 2024
2cc8497
Fix dynamic grouping table cells (#87)
jescalada May 29, 2024
be97d73
Individual Plot Axis Properties (#88)
fabiovincenzi May 29, 2024
6c6f8db
Disable search until (#89)
suprjinx May 29, 2024
fb3bca7
Undefined AlignmentConfig (#91)
fabiovincenzi Jun 3, 2024
48319f3
Catch CreateResourceError and redirect to login (#90)
jescalada Jun 3, 2024
e3d2df1
Add conditional grouping by stroke (#92)
jescalada Jun 5, 2024
8943fd8
Enable Run Logs tab
dsuhinin Jun 7, 2024
66cd6ed
Enable Run Logs tab
dsuhinin Jun 7, 2024
71b8966
add options for metrics to autocomplete (#94)
fabiovincenzi Jun 8, 2024
b937ff7
retrieve right description from tags (#97)
fabiovincenzi Jun 10, 2024
9c25ad6
Add conditional grouping by color (#93)
jescalada Jun 12, 2024
94bce15
Add Metrics filtering for Conditional Grouping (#86)
jescalada Jun 17, 2024
9373a93
Add E2E testing framework (#98)
jescalada Jun 19, 2024
b430d0e
Add backend integration for E2E CI pipeline (#99)
jescalada Jun 19, 2024
de21d6f
Dashboard E2E tests (#101)
jescalada Jun 25, 2024
0a90752
Fix Playwright versioning issue (#103)
jescalada Jun 26, 2024
2a62ac8
Enable tags (#102)
suprjinx Jun 26, 2024
f98cc8e
Add specific metric as run attribute (#107)
jescalada Jul 8, 2024
8342a19
Merge branch 'release/v3.17.5' of ssh://github.com/g-research/fasttra…
suprjinx Jul 15, 2024
688ffb1
Add range selection for runs (shift+click) (#104)
jescalada Jul 17, 2024
56bdd87
Toggle all params and all metrics on ManageColumnsPopover (#105)
jescalada Jul 17, 2024
c91569f
Runs E2E test suite (#106)
jescalada Jul 17, 2024
201ffd2
(feat) Add Support for Power Usage Percentage and Watts (#109)
vinayan3 Jul 30, 2024
9bf1c86
Images Explorer search and extras (#108)
jescalada Jul 31, 2024
c57eaf6
Add "Load More" button for Metrics table in Runs Overview tab (#110)
jescalada Aug 1, 2024
3f4dc6e
Images UI Search fixes (#111)
jescalada Aug 6, 2024
07bf405
Merge branch 'release/v3.17.5' of ssh://github.com/g-research/fasttra…
suprjinx Aug 23, 2024
204206e
Merge branch 'main' of ssh://github.com/suprjinx/fasttrackml-ui-aim
suprjinx Aug 23, 2024
e49f443
Merge branch 'main' of ssh://github.com/suprjinx/fasttrackml-ui-aim
suprjinx Aug 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
70 changes: 70 additions & 0 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Playwright Tests

on:
push:
branches: [ main, release/* ]
pull_request:
branches: [ main, release/* ]
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
PLAYWRIGHT_BROWSERS_PATH: 0

jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 16

- name: Install frontend dependencies
run: |
npx playwright install-deps
npm ci --legacy-peer-deps
working-directory: src

- name: Install wait-on
run: npm install -g wait-on

- name: Install Playwright browsers
run: npx playwright install
working-directory: src

- name: Build and run backend
run: |
docker run --rm -p 5000:5000 -e FML_DEV_MODE=true gresearch/fasttrackml:main &
npx wait-on http://localhost:5000

- name: Install k6
run: |
sudo apt-get update
sudo apt-get install -y gnupg software-properties-common ca-certificates curl
curl -s https://dl.k6.io/key.gpg | sudo apt-key add -
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install -y k6

- name: Seed database with k6
run: |
wget https://raw.githubusercontent.com/G-Research/fasttrackml/main/docs/example/k6_load.js
k6 run k6_load.js

- name: Start frontend dev server and run E2E tests
run: |
npm start &
npx wait-on http://localhost:3000
npx playwright test src/e2e
working-directory: src

- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
embed/
.idea/
.vscode/
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@ An embed directory will be created with the built UI, ready to be embedded in th

Once you're happy with them, create a pull request **against the `release/vX.Y.Z` branch*** that you started from (***not `main`!***). Once merged, the CI will run and build the UI. It will then push it to a new tag that is compatible with the Go module rules. For example, the first customization to `v3.16.2` of Aim will end up in a tag named `v0.31602.1`.

### How to run E2E tests?

The E2E tests can be run locally by following these steps:
1. Start the FastTrackML server
2. Run the Aim UI in development mode (on localhost:3000)
3. In another terminal, run `cd src/e2e`
4. Run `npx playwright test` to run the test suite

New tests can be added directly to the `src/e2e` directory. You may also run `npx playwright show-report` to see the test results.

For a guide on how to write a test, see [Playwright's example tests](https://github.com/microsoft/playwright/blob/main/examples/todomvc/tests/integration.spec.ts).

### How is this all enforced?

A GitHub app has been created with the `contents:write` permissions on this repo. Its App ID and private key are stored as secrets under the `restricted` environment. This environment is limited to the `main` and `release/v*` branches
Expand Down Expand Up @@ -244,4 +256,5 @@ for rule in $(gh api /repos/G-Research/fasttrackml-ui-aim/rulesets -q '.[].id')
do
gh api /repos/G-Research/fasttrackml-ui-aim/rulesets/$rule | jq '[{name: .name, target: .target, conditions: .conditions, rules: .rules, bypass_actors: .bypass_actors}]'
done | jq -s add
```
```

2 changes: 2 additions & 0 deletions src/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[*]
end_of_line = lf
142 changes: 142 additions & 0 deletions src/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
{
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"extends": [
"react-app",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:prettier/recommended",
"plugin:prettier/recommended",
"prettier"
],
"rules": {
"prettier/prettier": "error",
"react/no-unescaped-entities": 0,
"no-console": "warn",
"quotes": [
"error",
"single",
{
"avoidEscape": true
}
],
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
"react/react-in-jsx-scope": "off",
"react/display-name": "off",
"import/order": [
"error",
{
"groups": [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index",
"unknown"
],
"pathGroups": [
{
"pattern": "*.+(css|sass|less|scss|pcss|styl)",
"group": "unknown",
"patternOptions": {
"matchBase": true
},
"position": "after"
},
{
"pattern": "*",
"group": "external",
"position": "before"
},
{
"pattern": "@+/**",
"group": "external",
"position": "before"
},
{
"pattern": "assets/**",
"group": "parent",
"position": "before"
},
{
"pattern": "components/**",
"group": "parent",
"position": "before"
},
{
"pattern": "config/**",
"group": "parent",
"position": "before"
},
{
"pattern": "fonts/**",
"group": "parent",
"position": "before"
},
{
"pattern": "hooks/**",
"group": "parent",
"position": "before"
},
{
"pattern": "modules/**",
"group": "parent",
"position": "before"
},
{
"pattern": "pages/**",
"group": "parent",
"position": "before"
},
{
"pattern": "routes/**",
"group": "parent",
"position": "before"
},
{
"pattern": "services/**",
"group": "parent",
"position": "before"
},
{
"pattern": "styles/**",
"group": "parent",
"position": "before"
},
{
"pattern": "tests/**",
"group": "parent",
"position": "before"
},
{
"pattern": "types/**",
"group": "parent",
"position": "before"
},
{
"pattern": "utils/**",
"group": "parent",
"position": "before"
}
],
"pathGroupsExcludedImportTypes": [],
"warnOnUnassignedImports": true,
"newlines-between": "always"
}
]
},
"plugins": [
"react",
"prettier",
"react-hooks",
"@typescript-eslint"
]
}
31 changes: 31 additions & 0 deletions src/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js
/public/vs

# testing
/coverage
.vscode

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

Desktop
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
13 changes: 13 additions & 0 deletions src/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": true,
"jsxSingleQuote": true,
"quoteProps": "as-needed",
"trailingComma": "all",
"bracketSpacing": true,
"arrowParens": "always",
"endOfLine": "lf"
}
10 changes: 10 additions & 0 deletions src/.storybook/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
'@storybook/addon-interactions',
'@storybook/preset-create-react-app',
],
framework: '@storybook/react',
};
10 changes: 10 additions & 0 deletions src/.storybook/preview-body.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-family: 'Inter', sans-serif;
}
</style>
34 changes: 34 additions & 0 deletions src/.storybook/preview-head.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<link
rel="preload"
as="font"
href="%PUBLIC_URL%/assets/inter/fonts/Inter.ttf"
crossorigin
/>
<link
rel="preload"
as="font"
href="%PUBLIC_URL%/assets/inconsolata/fonts/Inconsolata.ttf"
crossorigin
/>
<link
rel="preload"
as="font"
href="%PUBLIC_URL%/assets/icomoon/fonts/icomoon.eot"
crossorigin
/>
<link
rel="preload"
as="font"
href="%PUBLIC_URL%/assets/icomoon/fonts/icomoon.ttf"
crossorigin
/>
<link
rel="preload"
as="font"
href="%PUBLIC_URL%/assets/icomoon/fonts/icomoon.woff"
crossorigin
/>

<link rel="stylesheet" href="%PUBLIC_URL%/assets/icomoon/icomoonIcons.css" />
<link rel="stylesheet" href="%PUBLIC_URL%/assets/inter/inter.css" />
<link rel="stylesheet" href="%PUBLIC_URL%/assets/inconsolata/inconsolata.css" />
9 changes: 9 additions & 0 deletions src/.storybook/preview.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export const parameters = {
actions: { argTypesRegex: '^on[A-Z].*' },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/,
},
},
};
1 change: 1 addition & 0 deletions src/aim_ui/VERSION
Empty file added src/aim_ui/__init__.py
Empty file.
1 change: 1 addition & 0 deletions src/aim_ui/build
Loading
Loading