Skip to content

Commit

Permalink
chore: fix filters (#621)
Browse files Browse the repository at this point in the history
* chore: move src to a new location

Signed-off-by: Nastya Rusina <nastya@union.ai>

* ci: allow branch to be built again

Signed-off-by: Nastya Rusina <nastya@union.ai>

* chore: replace link to github repository to a proper one

Signed-off-by: Nastya Rusina <nastya@union.ai>

* ci: basic test and test-coverage setup

Signed-off-by: Nastya Rusina <nastya@union.ai>

* chore: add first plugin package

Signed-off-by: Nastya Rusina <nastya@union.ai>

* chore: allow to start test from main directory

Signed-off-by: Nastya Rusina <nastya@union.ai>

* ci: update lowest mkdirp version (#423)

Signed-off-by: Nastya Rusina <nastya@union.ai>

* chore: add build scripts for console app (#429)

Signed-off-by: Carina Ursu <carina@union.ai>

Co-authored-by: Carina Ursu <carina@union.ai>

* fix: hide the legend (#435)

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* ci: move storybook related packages to top level (#434)

* ci: move storybook related packages to top level
* ci: ensure that lint can be run in PR checks
* ci: allow to run tests linux setup

Signed-off-by: Nastya Rusina <nastya@union.ai>

* fix: fix issue 386 (#437)

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* ci: ensure unified tsconfig and remove mocks, test, stories from build (#436)

* ci: ensure unified tsconfig and remove mocks,test,stories from build
* ci: move certificates into certificate folder inside script

Signed-off-by: Nastya Rusina <nastya@union.ai>

* Make whole row clickable to open TaskExecutionDetails panel (#444)

* fix: issue 398
* fix: prevent parent onclick event trigger

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* ci: allow to start jest config for all project at once (#447)

* minor: unable to view all the workflow versions (#446)

* fix: unable to view all the workflow versions

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

Co-authored-by: Carina Ursu <carina@union.ai>

* chore(tsc): exclude test/stories/mock files only from build (#451)

* chore(tsc): exclude test/stories/mock files only from build

Signed-off-by: Nastya Rusina <nastya@union.ai>

* ci: ensure that webpack too doesn't include test/mock/specs files (#452)

Signed-off-by: Nastya Rusina <nastya@union.ai>

* minor: add support for StructuredDataSet Input/Output type (#445)

* chore: support for StructuredDataSet Input/Output type

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: add tests

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: add package

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: resolving local package issue

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: yarn lock

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: stories

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix associative arrays in copy functionality

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix scalar stories

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: oops

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: revert old viewer to original

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: remove non-null assertion

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix types

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix tests

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix test types

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

Co-authored-by: Carina Ursu <carina@union.ai>

* chore: Provide basic repo structure and ensure that stories, tests, vscode setup properly (#458)

* chore: separate AppInfo
* chore: vscode properly understands @flyteconsole
* chore: add basics/locale entry
* test: add storybooks and tests
* test: fix istanbul test-coverage issue by binding babel versions

Signed-off-by: Nastya Rusina <nastya@union.ai>

* ci: minimize babel presence (#457)

* ci: minimize babel presence

Signed-off-by: Nastya Rusina <nastya@union.ai>

* fix: update node executions to display map tasks (#455)

* fix: update node executions to display map tasks
* fix: update map task logs styles
* test: add/update unit tests
* fix: fix flickering and unnecessary re-renders

Signed-off-by: Olga Nad <olga@union.ai>

* ci: resolve docker build issues (#462)

* ci: resolve docker build issues
* chore: remove unneeded changes

Signed-off-by: Nastya Rusina <nastya@union.ai>

* Chore: Rebase devmain on top of master (#464)

* fix: ensure that admin version is fully shown (#465)

* chore: fix for console not respecting admin url (#468)

* chore: fix

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: remove console

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: add cherio o=to package

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: add cherio o=to package

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix start prod

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: fix start prod

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: cleanup

Signed-off-by: Carina Ursu <carina@union.ai>

Co-authored-by: Carina Ursu <carina@union.ai>

* chore: rebase on top of master

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* fix: trigger release #patch (#477)

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* feat: add task version info (#485)

made the entities component become more generic that can support Workflow, Task, and others
added the inputs and outputs to task details page
added the versions table in task details page
added the version details page
added task details link in node side panel

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

Co-authored-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* chore: update Readme with python note + package version update (#486)

Signed-off-by: Nastya Rusina <nastya@union.ai>

Co-authored-by: Nastya Rusina <nastya@union.ai>

* hotfix ci pipeline (#487)

* hotfix ci pipeline

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

* more changes

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

Co-authored-by: Yuvraj <evalsocket@users.noreply.github.com>

* [Mapping][TaskInfo] V.2 - Update Task details to allow check information for child task execution (#467)

* fix: add eventVersion check for map tasks (#484)

* fix: resolve minimist package to v1.2.6 (#492)

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* ci: add flyte-api plugin package (#490)

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* fix: update/add graph related stories (#493)

* fix: separate api auth to plugin folder (#495)

* fix: separate api auth to plugin folder
* chore: for local admin URL is undefined
* chore: update README.md
* test: fix tests + add new ones
* v0.0.2 - release for flyte-api plugin

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* feat: rerun task action in execution page  (#488)

* feat: task rerun done

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* feat: fix initialParameters

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* fix: remove a file

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* feat: rerun task done

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* feat: rerun fix literal type

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* feat: small typo fixed

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* feat: small typo fixed

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* feat: fix test coverage

Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>

* chore: update release version (#501)

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* chore(deps-dev): bump protobufjs from 6.8.9 to 6.11.3 (#502)

Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 6.8.9 to 6.11.3.
- [Release notes](https://github.com/protobufjs/protobuf.js/releases)
- [Changelog](https://github.com/protobufjs/protobuf.js/blob/v6.11.3/CHANGELOG.md)
- [Commits](https://github.com/protobufjs/protobuf.js/commits/v6.11.3)

---
updated-dependencies:
- dependency-name: protobufjs
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: add package generator for basics/composites/plugins (#503)

* chore: add package generator for basics/composites/plugins

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* Update CONTRIBUTING.md  with package generate info

* fix(bug-508): executions can not be filtered by start time (#509)

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* chore(deps-dev): bump semantic-release from 17.2.3 to 19.0.3 (#510)

Bumps [semantic-release](https://github.com/semantic-release/semantic-release) from 17.2.3 to 19.0.3.
- [Release notes](https://github.com/semantic-release/semantic-release/releases)
- [Commits](semantic-release/semantic-release@v17.2.3...v19.0.3)

---
updated-dependencies:
- dependency-name: semantic-release
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: support flyte decks (#504)

* feat: support flyte deck #none

Signed-off-by: James <james@union.ai>

* fix: rebase with master #none

Signed-off-by: James <james@union.ai>

* fix: fix iframe height and api response type; #none

Signed-off-by: James <james@union.ai>

* fix: modal style; #none;

Signed-off-by: James <james@union.ai>

* fix: use env variable for server ssl config #none;

Signed-off-by: James <james@union.ai>

* fix: use h2 instead of h3 for future migration #none

Signed-off-by: James <james@union.ai>

* feat: navbar navigation dropdown (#511)

* feat: navbar navigstion dropdown
* chore: storybook update
* chore: fix test + add base readme

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* chore: support internal/external navigsation better (#513)

Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>

* Update Contributing.md (#515)

Add line how to add nodejs plugin to asdf, to simplify setup

* chore: update navigationDropdown usage (#517)

Signed-off-by: Work <awork@narusina.fritz.box>

Co-authored-by: Work <awork@narusina.fritz.box>

* chore(deps): bump jsdom from 16.4.0 to 16.7.0 (#516)

Bumps [jsdom](https://github.com/jsdom/jsdom) from 16.4.0 to 16.7.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md)
- [Commits](jsdom/jsdom@16.4.0...16.7.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: launch plans list & detail page #none; (#507)

* feat: launch plans list #none;
* fix: launch plan detail page the top navigation header
* fix: added expected inputs and fixed inputs; #none
* fix: remove radio buttons for view all launch plan versions; #none

Signed-off-by: James <james@union.ai>

* chore: release 1.1.3 (#520)

Signed-off-by: Nastya Rusina <nastya@union.ai>

* fix: cache icon fro map task (#519)

* fix: cache icon fro map task
* fix: icon and text center

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* fix: Relaunch form does not persist security context values when changed (#527)

fix: use execution security context in relaunch; #none

Signed-off-by: James <james@union.ai>

* fix: release process (#529)

* fix release process

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

* more changes

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

* more changes

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

* fix workflow

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

Co-authored-by: Yuvraj <evalsocket@users.noreply.github.com>

* fix: fix semantic-release config (#532)

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

* test: fix time sensitive test (#533)

chore: fix test

Signed-off-by: Nastya Rusina <nastya@union.ai>

* Rename upgrade idl workflow (#534)

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

Co-authored-by: Yuvraj <evalsocket@users.noreply.github.com>

* fix: support mapped tasks (#494)

* fix: support mapped tasks #none

Signed-off-by: James <james@union.ai>

* fix: fix comments #none

Signed-off-by: James <james@union.ai>

* fix: fix unit test #none

Signed-off-by: James <james@union.ai>

* fix: add string constants #none

Signed-off-by: James <james@union.ai>

* fix: added test for mapInputHelper #none

Signed-off-by: James <james@union.ai>

* fix: fix test for utils.test.ts #none

Signed-off-by: James <james@union.ai>

* chore: trigger snyk re-run

* fix: multiple keys for mapped types; #none

Signed-off-by: James <james@union.ai>

* chore: storybook item (#530)

Signed-off-by: Nastya Rusina <nastya@union.ai>

* fix: fix validation for duplicate and fix focus issue

Signed-off-by: James <james@union.ai>

* chore: provide previous run values on relaunch

Signed-off-by: Nastya Rusina <nastya@union.ai>

Co-authored-by: Nastya <55718143+anrusina@users.noreply.github.com>
Co-authored-by: Nastya Rusina <nastya@union.ai>

* fix(491): remove favicon package + use favicon.svg by default (#537)

* fix(491): remove favicon package + use favicon.svg by default

Signed-off-by: Nastya Rusina <nastya@union.ai>

* chore: resolve yarn.lock merge conflict

Signed-off-by: Nastya Rusina <nastya@union.ai>

* Fixed undefined task input types access in NodeExecutionActions (#538)

* Fixed undefined task input types access in NodeExecutionActions
Issue occurred due to race condition while loading data, indentical fix applies as for #506

Signed-off-by: Nick Müller <nmueller@blackshark.ai>

* fix: cannot read properties of undefined (#506)

fix: nullref

Signed-off-by: Carina Ursu <carina@union.ai>

Co-authored-by: Carina Ursu <carina@union.ai>
(cherry picked from commit d38b98b)

Signed-off-by: Nick Müller <nmueller@blackshark.ai>

Co-authored-by: Carina Ursu <carinaelena@gmail.com>

* feat: support union type for launch plan (#540)

* feat: support union type for launch plan

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* fix: format

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* fix: update type label

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* fix: update the format

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* fix: graph has realtime updates as execution progresses (#543)

Signed-off-by: Olga Nad <olga@union.ai>

* fix: make sure groups used in graph aren't undefined (#545)

Signed-off-by: Olga Nad <olga@union.ai>

* Hotfix docker push GHWF (#547)

* Rename upgrade idl workflow

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

* fix docker push wf

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

Co-authored-by: Yuvraj <evalsocket@users.noreply.github.com>

* fix: Graph Center on initial render (#541)

* fix: upgrade react-flow-renderer version

Signed-off-by: James <james@union.ai>

* fix: use setTimeout for queue on the next render

Signed-off-by: James <james@union.ai>

* fix: use one state variable and fitView after nodesChange

Signed-off-by: James <james@union.ai>

* introduce needFitView

* fix: graph edge overlaps nodes (#542)

* fix: upgrade react-flow-renderer version

Signed-off-by: James <james@union.ai>

* fix: use setTimeout for queue on the next render

Signed-off-by: James <james@union.ai>

* fix: use one state variable and fitView after nodesChange

Signed-off-by: James <james@union.ai>

* fix: graph edge overlaps nodes issue

Signed-off-by: James <james@union.ai>

* introduce needFitView

* edge overlap

* fix: flyteconsole tag in ci pipeline  (#550)

* fix tag issue in ci

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

* remove welcome bot from boilerplate config

Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>

Co-authored-by: Yuvraj <evalsocket@users.noreply.github.com>

* enable docker push for console (#552)

* chore(deps): bump terser from 4.8.0 to 4.8.1 (#548)

Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update Flyteidl version (#558)

Signed-off-by: Flyte-Bot <admin@flyte.org>

Signed-off-by: Flyte-Bot <admin@flyte.org>
Co-authored-by: flyte-bot <flyte-bot@users.noreply.github.com>

* fix: fix searchbar X button (#564)

chore: fix searchbar X button

Signed-off-by: Carina Ursu <carina@union.ai>

Signed-off-by: Carina Ursu <carina@union.ai>

* fix: update timeline view to show dynamic wf internals on first render (#562)

* fix: update timeline view to show dynamic wf internals on first render

Signed-off-by: Olga Nad <olga@union.ai>

* fix: update tests and clean up code

Signed-off-by: Olga Nad <olga@union.ai>

* fix: test

Signed-off-by: Olga Nad <olga@union.ai>

Signed-off-by: Olga Nad <olga@union.ai>

* fix: webmanifest missing crossorigin attribute (#566)

Signed-off-by: Carina Ursu <carina@union.ai>

Signed-off-by: Carina Ursu <carina@union.ai>

* fix: console showing subworkflows as unknown (#570)

* fix: console showing subworkflows as unknown

Signed-off-by: Olga Nad <olga@union.ai>

* fix: replace comparison with lodash isEqual

Signed-off-by: Olga Nad <olga@union.ai>

* fix: remove checkIfObjectsAreSame

Signed-off-by: Olga Nad <olga@union.ai>

Signed-off-by: Olga Nad <olga@union.ai>

* fix: Dict value loses 1 trailing character on UI Launch. (#561)

fix: dict lose trailing issue

Signed-off-by: James <james@union.ai>

Signed-off-by: James <james@union.ai>

* fix: launchform validation (#557)

* fix: disable launch button and show validation messaages

Signed-off-by: James <james@union.ai>

* fix: code clean

Signed-off-by: James <james@union.ai>

Signed-off-by: James <james@union.ai>

* fix: integrate timeline and graph tabs wrappers under one component (#572)

* fix: integrate timeline and graph tabs wrappers under one component

Signed-off-by: Olga Nad <olga@union.ai>

* fix: details tab in graph view and clean-up

Signed-off-by: Olga Nad <olga@union.ai>

* fix: old unit tests

Signed-off-by: Olga Nad <olga@union.ai>

* fix: temp filename change

Signed-off-by: Olga Nad <olga@union.ai>

* fix: final filename change

Signed-off-by: Olga Nad <olga@union.ai>

* fix: tsconfig

Signed-off-by: Olga Nad <olga@union.ai>

Signed-off-by: Olga Nad <olga@union.ai>

* chore(deps-dev): bump moment from 2.29.3 to 2.29.4 (#549)

Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](moment/moment@2.29.3...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* added none type in union type (#577)

* added none type in union type

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* udpated the test case

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* fix: fixed eslint

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>

* fix: correctly coerce `defaultValue` when rendering LaunchPlan details (#578)

fix: correctly coerce defaultValue when rendering LaunchPlan details

Signed-off-by: Rahul Mehta <rahul@theoremlp.com>

Signed-off-by: Rahul Mehta <rahul@theoremlp.com>

* #minor: inputHelpers InputProps (#579)

fix: inputHelpers InputProps

Signed-off-by: Carina Ursu <carina@union.ai>

Signed-off-by: Carina Ursu <carina@union.ai>

* fix: fix test of launchform (#581)

* fix: fix test of launchform

Signed-off-by: James <james@union.ai>

* fix: inputHelpers tests regression

Signed-off-by: Olga Nad <olga@union.ai>

* fix: update tests description

Signed-off-by: Olga Nad <olga@union.ai>

* fix: spelling typo

Signed-off-by: Olga Nad <olga@union.ai>

Signed-off-by: James <james@union.ai>
Signed-off-by: Olga Nad <olga@union.ai>
Co-authored-by: Olga Nad <olga@union.ai>

* Pruning some unused packages (#583)

Signed-off-by: Jason Porter <jason@union.ai>

Signed-off-by: Jason Porter <jason@union.ai>

* feat: minor change (#584)

Minor change

Signed-off-by: Jason Porter <jason@union.ai>

Signed-off-by: Jason Porter <jason@union.ai>

* fix: floor seconds to int in the edge case moment returns it as float (#582)

Signed-off-by: Olga Nad <olga@union.ai>

Signed-off-by: Olga Nad <olga@union.ai>

* Update Flyteidl version (#575)

Signed-off-by: Flyte-Bot <admin@flyte.org>

Signed-off-by: Flyte-Bot <admin@flyte.org>
Co-authored-by: flyte-bot <flyte-bot@users.noreply.github.com>

* fix: add BASE_URL to dev startup, open deeply nested urls (#589)

* fix: add BASE_URL to dev startup, open deeply nested urls

Signed-off-by: Carina Ursu <carina@union.ai>

* fix: remove debug code

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: empty BASE_URL handling

Signed-off-by: Carina Ursu <carina@union.ai>

Signed-off-by: Carina Ursu <carina@union.ai>

* fix: add default disabled state for only mine filter (#585)

* fix: add default disabled state for only mine filter

Signed-off-by: Olga Nad <olga@union.ai>

* fix: tests

Signed-off-by: Olga Nad <olga@union.ai>

* fix: use api context to default filter state

Signed-off-by: Olga Nad <olga@union.ai>

* fix: revert test updates

Signed-off-by: Olga Nad <olga@union.ai>

Signed-off-by: Olga Nad <olga@union.ai>

* Update Flyteidl version (#590)

Signed-off-by: Flyte-Bot <admin@flyte.org>

Signed-off-by: Flyte-Bot <admin@flyte.org>
Co-authored-by: flyte-bot <flyte-bot@users.noreply.github.com>

* Launch plan ref v2 (#601)

* progress

* Fixed

* Removed debug code

Signed-off-by: Jason Porter <jason@union.ai>

Signed-off-by: Jason Porter <jason@union.ai>

* fix: enable deeplinks in development (#602)

chore: enable deeplinks in development

Signed-off-by: Carina Ursu <carina@union.ai>

Signed-off-by: Carina Ursu <carina@union.ai>

* chore: release 1.3.5 (#605)

Signed-off-by: Jason Porter <jason@union.ai>

Signed-off-by: Jason Porter <jason@union.ai>

* fix: filters in node executions table view

Signed-off-by: Olga Nad <olga@union.ai>

* fix: effect dependency and tests

Signed-off-by: Olga Nad <olga@union.ai>

Signed-off-by: Nastya Rusina <nastya@union.ai>
Signed-off-by: eugenejahn <eugenejahnjahn@gmail.com>
Signed-off-by: Olga Nad <olga@union.ai>
Signed-off-by: Nastya <55718143+anrusina@users.noreply.github.com>
Signed-off-by: Eugene Jahn <eugenejahnjahn@gmail.com>
Signed-off-by: James <james@union.ai>
Signed-off-by: Yuvraj <evalsocket@users.noreply.github.com>
Signed-off-by: Flyte-Bot <admin@flyte.org>
Signed-off-by: Carina Ursu <carina@union.ai>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Rahul Mehta <rahul@theoremlp.com>
Signed-off-by: Jason Porter <jason@union.ai>
Co-authored-by: Nastya Rusina <nastya@union.ai>
Co-authored-by: Nastya <55718143+anrusina@users.noreply.github.com>
Co-authored-by: Carina Ursu <carinaelena@gmail.com>
Co-authored-by: Carina Ursu <carina@union.ai>
Co-authored-by: Eugene Jahn <eugenejahnjahn@gmail.com>
Co-authored-by: apTalya <99441958+apTalya@users.noreply.github.com>
Co-authored-by: Yuvraj <code@evalsocket.dev>
Co-authored-by: Yuvraj <evalsocket@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: james-union <105876962+james-union@users.noreply.github.com>
Co-authored-by: Work <awork@narusina.fritz.box>
Co-authored-by: Nick Müller <nmueller@blackshark.ai>
Co-authored-by: Flyte Bot <admin@flyte.org>
Co-authored-by: flyte-bot <flyte-bot@users.noreply.github.com>
Co-authored-by: Rahul Mehta <98349643+rahul-theorem@users.noreply.github.com>
Co-authored-by: Jason Porter <84735036+jsonporter@users.noreply.github.com>
  • Loading branch information
17 people authored Oct 21, 2022
1 parent cb591c9 commit 1542da0
Show file tree
Hide file tree
Showing 15 changed files with 244 additions and 162 deletions.
37 changes: 4 additions & 33 deletions packages/zapp/console/src/components/Entities/EntityInputs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { FilterOperationName } from 'models/AdminEntity/types';
import { ResourceIdentifier } from 'models/Common/types';
import { LaunchPlanClosure, LaunchPlanSpec } from 'models/Launch/types';
import * as React from 'react';
import { useMemo } from 'react';
import t from './strings';
import { transformLiterals } from '../Literals/helpers';

Expand Down Expand Up @@ -104,8 +105,8 @@ export const EntityInputs: React.FC<{
? launchPlanState.value[0].spec
: ({} as LaunchPlanSpec);

const expectedInputs = React.useMemo<Input[]>(() => {
const results = [] as Input[];
const expectedInputs = useMemo<Input[]>(() => {
const results: Input[] = [];
Object.keys(closure?.expectedInputs?.parameters ?? {}).forEach((name) => {
const parameter = closure?.expectedInputs.parameters[name];
if (parameter?.var?.type) {
Expand All @@ -121,25 +122,11 @@ export const EntityInputs: React.FC<{
return results;
}, [closure]);

const fixedInputs = React.useMemo<Input[]>(() => {
const fixedInputs = useMemo<Input[]>(() => {
const inputsMap = transformLiterals(spec?.fixedInputs?.literals ?? {});
return Object.keys(inputsMap).map((name) => ({ name, defaultValue: inputsMap[name] }));
}, [spec]);

const configs = React.useMemo(
() => [
{ name: t('configType'), value: 'single (csv)' },
{
name: t('configUrl'),
value:
'https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv',
},
{ name: t('configSeed'), value: '7' },
{ name: t('configTestSplitRatio'), value: '0.33' },
],
[],
);

return (
<>
<Typography className={styles.header} variant="h3">
Expand Down Expand Up @@ -232,22 +219,6 @@ export const EntityInputs: React.FC<{
)}
</div>
</div>
{/* <div className={styles.rowContainer}>
<div className={styles.firstColumnContainer}>
<Typography className={styles.header} variant="h4">
{t('configuration')}
</Typography>
<ul className={styles.configs}>
{configs.map(({ name, value }) => (
<li className={styles.config} key={name}>
<span className={styles.configName}><Typography variant="body">{name}:</Typography></span>
<span className={styles.configValue}><Typography variant="body">{value}</Typography></span>
</li>
))}
</ul>
</div>
<div className={styles.secondColumnContainer}></div>
</div> */}
</>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@ import { DataError } from 'components/Errors/DataError';
import { useTabState } from 'components/hooks/useTabState';
import { secondaryBackgroundColor } from 'components/Theme/constants';
import { Execution, ExternalResource, LogsByPhase, NodeExecution } from 'models/Execution/types';
import { useContext, useEffect, useMemo, useState } from 'react';
import { useEffect, useMemo, useState } from 'react';
import { keyBy } from 'lodash';
import { isMapTaskV1 } from 'models/Task/utils';
import { useQueryClient } from 'react-query';
import { LargeLoadingSpinner } from 'components/common/LoadingSpinner';
import { FilterOperation } from 'models/AdminEntity/types';
import { NodeExecutionDetailsContextProvider } from '../contextProvider/NodeExecutionDetails';
import { NodeExecutionsByIdContext, NodeExecutionsRequestConfigContext } from '../contexts';
import { NodeExecutionsByIdContext } from '../contexts';
import { ExecutionFilters } from '../ExecutionFilters';
import { useNodeExecutionFiltersState } from '../filters/useExecutionFiltersState';
import { tabs } from './constants';
Expand Down Expand Up @@ -42,6 +43,13 @@ const useStyles = makeStyles((theme: Theme) => ({
},
}));

const isPhaseFilter = (appliedFilters: FilterOperation[]) => {
if (appliedFilters.length === 1 && appliedFilters[0].key === 'phase') {
return true;
}
return false;
};

interface WorkflowNodeExecution extends NodeExecution {
logsByPhase?: LogsByPhase;
}
Expand All @@ -57,7 +65,6 @@ export const ExecutionNodeViews: React.FC<ExecutionNodeViewsProps> = ({ executio
const filterState = useNodeExecutionFiltersState();
const tabState = useTabState(tabs, defaultTab);
const queryClient = useQueryClient();
const requestConfig = useContext(NodeExecutionsRequestConfigContext); // Can't find initialization of the provider
const [nodeExecutionsLoading, setNodeExecutionsLoading] = useState<boolean>(true);

const {
Expand All @@ -73,12 +80,12 @@ export const ExecutionNodeViews: React.FC<ExecutionNodeViewsProps> = ({ executio
return keyBy(nodeExecutionsWithResources, 'scopedId');
}, [nodeExecutionsWithResources]);

/* We want to maintain the filter selection when switching away from the Nodes
tab and back, but do not want to filter the nodes when viewing the graph. So,
we will only pass filters to the execution state when on the nodes tab. */
const appliedFilters = tabState.value === tabs.nodes.id ? filterState.appliedFilters : [];

const { nodeExecutionsQuery } = useExecutionNodeViewsState(execution, appliedFilters);
// query to get all data to build Graph and Timeline
const { nodeExecutionsQuery } = useExecutionNodeViewsState(execution);
// query to get filtered data to narrow down Table outputs
const {
nodeExecutionsQuery: { data: filteredNodeExecutions },
} = useExecutionNodeViewsState(execution, filterState.appliedFilters);

useEffect(() => {
let isCurrent = true;
Expand Down Expand Up @@ -131,10 +138,7 @@ export const ExecutionNodeViews: React.FC<ExecutionNodeViewsProps> = ({ executio
};
}, [nodeExecutions]);

const childGroupsQuery = useAllTreeNodeExecutionGroupsQuery(
nodeExecutionsQuery.data ?? [],
requestConfig,
);
const childGroupsQuery = useAllTreeNodeExecutionGroupsQuery(nodeExecutionsQuery.data ?? [], {});

useEffect(() => {
if (!childGroupsQuery.isLoading && childGroupsQuery.data) {
Expand All @@ -161,7 +165,13 @@ export const ExecutionNodeViews: React.FC<ExecutionNodeViewsProps> = ({ executio
loadingComponent={LoadingComponent}
>
{() => (
<ExecutionTab tabType={tabType} filteredNodeExecutions={nodeExecutionsQuery.data ?? []} />
<ExecutionTab
tabType={tabType}
// if only phase filter was applied, ignore request response, and filter out nodes via frontend filter
filteredNodeExecutions={
isPhaseFilter(filterState.appliedFilters) ? undefined : filteredNodeExecutions
}
/>
)}
</WaitForQuery>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { ExecutionTabContent } from './ExecutionTabContent';

export interface ExecutionTabProps {
tabType: string;
filteredNodeExecutions: NodeExecution[];
filteredNodeExecutions?: NodeExecution[];
}

/** Contains the available ways to visualize the nodes of a WorkflowExecution */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ import { checkForDynamicExecutions } from 'components/common/utils';
import { dNode } from 'models/Graph/types';
import { useContext, useEffect, useMemo, useState } from 'react';
import { useQuery } from 'react-query';
import {
FilterOperation,
FilterOperationName,
FilterOperationValueList,
} from 'models/AdminEntity/types';
import { isEqual } from 'lodash';
import { useNodeExecutionContext } from '../contextProvider/NodeExecutionDetails';
import { NodeExecutionsByIdContext } from '../contexts';
import { NodeExecutionsTable } from '../Tables/NodeExecutionsTable';
Expand All @@ -20,10 +26,12 @@ import { ExecutionTimeline } from './Timeline/ExecutionTimeline';
import { ExecutionTimelineFooter } from './Timeline/ExecutionTimelineFooter';
import { convertToPlainNodes, TimeZone } from './Timeline/helpers';
import { DetailsPanelContext } from './DetailsPanelContext';
import { useNodeExecutionFiltersState } from '../filters/useExecutionFiltersState';
import { nodeExecutionPhaseConstants } from '../constants';

export interface ExecutionTabContentProps {
tabType: string;
filteredNodeExecutions: NodeExecution[];
filteredNodeExecutions?: NodeExecution[];
}

const useStyles = makeStyles(() => ({
Expand All @@ -39,29 +47,50 @@ const useStyles = makeStyles(() => ({
},
}));

const executionMatchesPhaseFilter = (
nodeExecution: NodeExecution,
{ key, value, operation }: FilterOperation,
) => {
if (key === 'phase' && operation === FilterOperationName.VALUE_IN) {
// default to UNKNOWN phase if the field does not exist on a closure
const itemValue =
nodeExecutionPhaseConstants[nodeExecution?.closure[key]]?.value ??
nodeExecutionPhaseConstants[0].value;
// phase check filters always return values in an array
const valuesArray = value as FilterOperationValueList;
return valuesArray.includes(itemValue);
}
return false;
};

export const ExecutionTabContent: React.FC<ExecutionTabContentProps> = ({
tabType,
filteredNodeExecutions,
}) => {
const styles = useStyles();
const { compiledWorkflowClosure } = useNodeExecutionContext();
const { appliedFilters } = useNodeExecutionFiltersState();
const nodeExecutionsById = useContext(NodeExecutionsByIdContext);

const { dag, staticExecutionIdsMap, error } = compiledWorkflowClosure
? transformerWorkflowToDag(compiledWorkflowClosure)
: { dag: {}, staticExecutionIdsMap: {}, error: null };
const nodeExecutionsById = useContext(NodeExecutionsByIdContext);
const dynamicParents = checkForDynamicExecutions(nodeExecutionsById, staticExecutionIdsMap);
const { data: dynamicWorkflows } = useQuery(
makeNodeExecutionDynamicWorkflowQuery(dynamicParents),
);
const [initialNodes, setInitialNodes] = useState<dNode[]>([]);
const [initialFilteredNodes, setInitialFilteredNodes] = useState<dNode[] | undefined>(undefined);
const [mergedDag, setMergedDag] = useState(null);
const [filters, setFilters] = useState<FilterOperation[]>(appliedFilters);
const [isFiltersChanged, setIsFiltersChanged] = useState<boolean>(false);

useEffect(() => {
const nodes: dNode[] = compiledWorkflowClosure
? transformerWorkflowToDag(compiledWorkflowClosure, dynamicWorkflows).dag.nodes
: [];
// we remove start/end node info in the root dNode list during first assignment
const initialNodes = convertToPlainNodes(nodes);
const plainNodes = convertToPlainNodes(nodes);

let newMergedDag = dag;

Expand All @@ -77,9 +106,38 @@ export const ExecutionTabContent: React.FC<ExecutionTabContentProps> = ({
}
}
setMergedDag(newMergedDag);
setInitialNodes(initialNodes);
setInitialNodes(plainNodes);
}, [compiledWorkflowClosure, dynamicWorkflows]);

useEffect(() => {
if (!isEqual(filters, appliedFilters)) {
setFilters(appliedFilters);
setIsFiltersChanged(true);
} else {
setIsFiltersChanged(false);
}
}, [appliedFilters]);

useEffect(() => {
if (appliedFilters.length > 0) {
// if filter was apllied, but filteredNodeExecutions is empty, we only appliied Phase filter,
// and need to clear out items manually
if (!filteredNodeExecutions) {
const filteredNodes = initialNodes.filter((node) =>
executionMatchesPhaseFilter(nodeExecutionsById[node.scopedId], appliedFilters[0]),
);
setInitialFilteredNodes(filteredNodes);
} else {
const filteredNodes = initialNodes.filter((node: dNode) =>
filteredNodeExecutions.find(
(execution: NodeExecution) => execution.scopedId === node.scopedId,
),
);
setInitialFilteredNodes(filteredNodes);
}
}
}, [initialNodes, filteredNodeExecutions, isFiltersChanged]);

const [selectedNodes, setSelectedNodes] = useState<string[]>([]);

// Note: flytegraph allows multiple selection, but we only support showing
Expand Down Expand Up @@ -140,10 +198,7 @@ export const ExecutionTabContent: React.FC<ExecutionTabContentProps> = ({
switch (tabType) {
case tabs.nodes.id:
return (
<NodeExecutionsTable
initialNodes={initialNodes}
filteredNodeExecutions={filteredNodeExecutions}
/>
<NodeExecutionsTable initialNodes={initialNodes} filteredNodes={initialFilteredNodes} />
);
case tabs.graph.id:
return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,26 @@ import { createTestQueryClient } from 'test/utils';
import { tabs } from '../constants';
import { ExecutionNodeViews } from '../ExecutionNodeViews';

jest.mock('chart.js', () => ({
Chart: { register: () => null },
Tooltip: { positioners: { cursor: () => null } },
registerables: [],
}));

jest.mock('chartjs-plugin-datalabels', () => ({
ChartDataLabels: null,
}));

jest.mock('components/Executions/Tables/NodeExecutionRow', () => ({
NodeExecutionRow: jest.fn(({ children, execution }) => (
NodeExecutionRow: jest.fn(({ nodeExecution }) => (
<div data-testid="node-execution-row">
<span id="node-execution-col-id">{execution?.id?.nodeId}</span>
{children}
<span id="node-execution-col-id">{nodeExecution?.id?.nodeId}</span>
</div>
)),
}));

jest.mock('components/Executions/ExecutionDetails/Timeline/ExecutionTimelineFooter', () => ({
ExecutionTimelineFooter: jest.fn(() => <div></div>),
}));

jest.mock('components/Executions/ExecutionDetails/Timeline/TimelineChart/index', () => ({
TimelineChart: jest.fn(() => <div></div>),
}));

jest.mock('components/Executions/ExecutionDetails/Timeline/NodeExecutionName', () => ({
NodeExecutionName: jest.fn(({ name }) => <div>{name}</div>),
}));

// ExecutionNodeViews uses query params for NE list, so we must match them
// for the list to be returned properly
const baseQueryParams = {
Expand Down Expand Up @@ -77,7 +79,7 @@ describe('ExecutionNodeViews', () => {
await waitFor(() => getByText(tabs.nodes.label));

const nodesTab = getByText(tabs.nodes.label);
const graphTab = getByText(tabs.graph.label);
const timelineTab = getByText(tabs.timeline.label);

// Ensure we are on Nodes tab
fireEvent.click(nodesTab);
Expand All @@ -96,11 +98,11 @@ describe('ExecutionNodeViews', () => {
await waitFor(() => queryByText(failedNodeName));

expect(queryByText(succeededNodeName)).not.toBeInTheDocument();
expect(getByText(failedNodeName)).toBeInTheDocument();
expect(queryByText(failedNodeName)).toBeInTheDocument();

// Switch to the Graph tab
fireEvent.click(statusButton);
fireEvent.click(graphTab);
fireEvent.click(timelineTab);
await waitFor(() => queryByText(succeededNodeName));

expect(queryByText(succeededNodeName)).toBeInTheDocument();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,12 @@ export const ExecutionFilters: React.FC<ExecutionFiltersProps> = ({
filters = filters.map((filter) => {
const onChangeFunc = filter.onChange;
filter.onChange = (value) => {
if (clearCharts) clearCharts();
if (onChangeFunc) onChangeFunc(value);
if (clearCharts) {
clearCharts();
}
if (onChangeFunc) {
onChangeFunc(value);
}
};
return filter;
});
Expand Down
Loading

0 comments on commit 1542da0

Please sign in to comment.