[arvados] updated: 2.7.0-6511-gf523522e3b
git repository hosting
git at public.arvados.org
Mon Apr 22 14:56:00 UTC 2024
Summary of changes:
.github/workflows/tests.yml | 40 +
.licenseignore | 2 +
build/build-dev-docker-jobs-image.sh | 2 +-
.../package-build-dockerfiles/debian11/Dockerfile | 4 +-
build/package-build-dockerfiles/rocky8/Dockerfile | 4 +-
.../ubuntu2004/Dockerfile | 4 +-
build/package-testing/rpm-common-test-packages.sh | 4 +
.../test-package-python3-arvados-python-client.sh | 4 +-
build/pypkg_info.py | 124 ++
build/run-build-packages-one-target.sh | 12 +-
build/run-build-packages.sh | 22 +-
build/run-library.sh | 240 +--
build/run-tests.sh | 54 +-
doc/README.textile | 34 +-
doc/Rakefile | 209 +-
doc/_config.yml | 15 +-
.../_container_runtime_constraints.liquid | 1 +
doc/admin/upgrading.html.textile.liquid | 24 +
doc/api/dispatch.html.textile.liquid | 22 +-
.../methods/container_requests.html.textile.liquid | 20 +
.../install-dispatch.html.textile.liquid | 11 +-
.../install-shell-server.html.textile.liquid | 2 +-
doc/pysdk_pdoc.py | 30 +-
doc/sdk/cli/index.html.textile.liquid | 2 +-
doc/sdk/cli/install.html.textile.liquid | 2 +-
doc/sdk/cli/reference.html.textile.liquid | 2 +-
doc/sdk/cli/subcommands.html.textile.liquid | 2 +-
doc/sdk/fuse/install.html.textile.liquid | 42 +
doc/sdk/fuse/options.html.textile.liquid | 193 ++
doc/sdk/index.html.textile.liquid | 15 +-
doc/sdk/java-v2/example.html.textile.liquid | 2 +-
doc/sdk/java-v2/index.html.textile.liquid | 2 +-
doc/sdk/java-v2/javadoc.html.textile.liquid | 2 +-
doc/sdk/python/arvados-fuse.html.textile.liquid | 44 -
doc/sdk/python/cookbook.html.textile.liquid | 2 +-
doc/sdk/python/sdk-python.html.textile.liquid | 10 +-
.../cwl/crunchstat-summary.html.textile.liquid | 183 +-
doc/user/cwl/cwl-run-options.html.textile.liquid | 3 +-
doc/user/cwl/images/crunchstat-summary-html.png | Bin 132084 -> 142417 bytes
.../getting_started/setup-cli.html.textile.liquid | 2 +-
.../tutorials/wgs-tutorial.html.textile.liquid | 3 +-
docker/jobs/Dockerfile | 2 +-
go.mod | 14 +-
go.sum | 44 +-
lib/cloud/ec2/ec2.go | 16 +-
lib/cloud/ec2/ec2_test.go | 57 +
lib/config/config.default.yml | 96 +-
lib/controller/federation/conn.go | 4 +
lib/controller/integration_test.go | 103 +-
lib/controller/localdb/container_request.go | 91 +
lib/controller/router/router.go | 7 +
lib/controller/rpc/conn.go | 7 +
lib/crunchrun/crunchrun.go | 13 +-
lib/crunchrun/integration_test.go | 7 +-
lib/diagnostics/cmd.go | 80 +-
lib/diagnostics/docker_image_test.go | 25 +
lib/dispatchcloud/dispatcher.go | 83 +-
lib/dispatchcloud/dispatcher_test.go | 126 +-
lib/dispatchcloud/scheduler/run_queue.go | 77 +-
lib/dispatchcloud/scheduler/scheduler.go | 3 +
lib/install/deps.go | 28 +-
lib/lsf/dispatch.go | 21 +-
lib/lsf/dispatch_test.go | 42 +-
lib/mount/command.go | 30 +-
lib/mount/fs.go | 73 +-
lib/mount/fs_test.go | 2 +
sdk/R/install_deps.R | 7 +-
sdk/cwl/arvados_cwl/__init__.py | 4 +
sdk/cwl/arvados_cwl/arvcontainer.py | 44 +-
sdk/cwl/arvados_cwl/context.py | 2 +
sdk/cwl/arvados_cwl/executor.py | 11 +-
sdk/cwl/arvados_version.py | 159 +-
sdk/cwl/setup.py | 13 +-
sdk/cwl/tests/arvados-tests.sh | 2 +-
...quest_9tee4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt | 10 +
...uest_9tee4-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt | 17 +
sdk/cwl/tests/test_container.py | 58 +-
sdk/dev-jobs.dockerfile | 2 +-
sdk/go/arvados/api.go | 180 +-
sdk/go/arvados/config.go | 8 +-
sdk/go/arvados/container.go | 6 +
sdk/go/arvadostest/api.go | 4 +
sdk/go/keepclient/keepclient.go | 37 +-
sdk/go/keepclient/keepclient_test.go | 247 ++-
sdk/go/keepclient/support.go | 44 +-
.../client/api/client/BaseStandardApiClient.java | 4 +-
.../client/api/client/CollectionsApiClient.java | 14 +
.../client/api/client/KeepWebApiClient.java | 25 +
.../client/api/model/CollectionReplaceFiles.java | 70 +
.../org/arvados/client/facade/ArvadosFacade.java | 16 +
.../arvados/client/logic/keep/FileDownloader.java | 33 +
.../api/client/CollectionsApiClientTest.java | 67 +-
.../client/api/client/KeepWebApiClientTest.java | 44 +-
.../client/logic/keep/FileDownloaderTest.java | 43 +-
sdk/python/arvados-v1-discovery.json | 20 +
sdk/python/arvados/arvfile.py | 43 +-
sdk/python/arvados/commands/_util.py | 99 +-
sdk/python/arvados/diskcache.py | 129 +-
sdk/python/arvados/events.py | 2 +-
sdk/python/arvados/http_to_keep.py | 23 +-
sdk/python/arvados/keep.py | 90 +-
sdk/python/arvados_version.py | 158 +-
sdk/python/setup.py | 13 +-
sdk/python/tests/test_arvfile.py | 57 +-
sdk/python/tests/test_cmd_util.py | 194 ++
sdk/python/tests/test_keep_client.py | 182 +-
sdk/python/tests/test_storage_classes.py | 128 ++
services/api/Gemfile.lock | 136 +-
.../arvados/v1/container_requests_controller.rb | 16 +
.../api/app/models/api_client_authorization.rb | 17 +-
services/api/app/models/container_request.rb | 5 +-
services/api/config/routes.rb | 4 +-
services/api/test/fixtures/collections.yml | 45 +
services/api/test/fixtures/groups.yml | 11 +
services/api/test/integration/remote_user_test.rb | 71 +-
services/dockercleaner/arvados_version.py | 160 +-
services/dockercleaner/setup.py | 13 +-
services/fuse/arvados_fuse/__init__.py | 555 ++++--
services/fuse/arvados_fuse/command.py | 453 ++++-
services/fuse/arvados_fuse/fresh.py | 15 +-
services/fuse/arvados_fuse/fusedir.py | 471 +++--
services/fuse/arvados_fuse/fusefile.py | 13 +
services/fuse/arvados_version.py | 161 +-
services/fuse/setup.py | 21 +-
services/fuse/tests/integration_test.py | 2 +-
services/fuse/tests/mount_test_base.py | 23 +-
services/fuse/tests/test_inodes.py | 37 +-
services/fuse/tests/test_mount.py | 14 +-
services/fuse/tests/test_mount_filters.py | 223 +++
services/fuse/tests/test_unmount.py | 4 +-
services/keep-balance/change_set.go | 19 +-
services/keep-balance/change_set_test.go | 4 +-
services/keep-web/handler.go | 5 +-
services/keep-web/handler_test.go | 1 +
services/keep-web/main.go | 1 +
services/keep-web/metrics.go | 155 ++
services/keep-web/s3_test.go | 6 +-
services/keep-web/server_test.go | 36 +-
services/keepproxy/keepproxy_test.go | 4 +-
services/keepstore/azure_blob_volume.go | 271 +--
services/keepstore/azure_blob_volume_test.go | 190 +-
services/keepstore/bufferpool.go | 70 +-
services/keepstore/bufferpool_test.go | 45 +-
services/keepstore/collision.go | 100 -
services/keepstore/collision_test.go | 51 -
services/keepstore/command.go | 196 +-
services/keepstore/command_test.go | 2 +-
services/keepstore/count.go | 6 +-
services/keepstore/gocheck_test.go | 14 -
services/keepstore/handler_test.go | 1405 --------------
services/keepstore/handlers.go | 1056 ----------
services/keepstore/hashcheckwriter.go | 68 +
services/keepstore/keepstore.go | 778 +++++++-
services/keepstore/keepstore_test.go | 892 +++++++++
services/keepstore/metrics.go | 57 -
services/keepstore/metrics_test.go | 87 +
services/keepstore/mock_mutex_for_test.go | 27 -
services/keepstore/mounts_test.go | 175 +-
services/keepstore/perms.go | 33 -
services/keepstore/perms_test.go | 63 -
services/keepstore/pipe_adapters.go | 93 -
services/keepstore/proxy_remote.go | 212 --
services/keepstore/proxy_remote_test.go | 52 +-
services/keepstore/pull_worker.go | 206 +-
services/keepstore/pull_worker_integration_test.go | 118 --
services/keepstore/pull_worker_test.go | 393 ++--
services/keepstore/putprogress.go | 101 +
services/keepstore/router.go | 276 +++
services/keepstore/router_test.go | 517 +++++
.../keepstore/{s3aws_volume.go => s3_volume.go} | 309 ++-
.../{s3aws_volume_test.go => s3_volume_test.go} | 181 +-
services/keepstore/status_test.go | 25 -
services/keepstore/streamwriterat.go | 160 ++
services/keepstore/streamwriterat_test.go | 83 +
services/keepstore/trash_worker.go | 209 +-
services/keepstore/trash_worker_test.go | 509 ++---
services/keepstore/unix_volume.go | 269 +--
services/keepstore/unix_volume_test.go | 362 +---
services/keepstore/volume.go | 461 +----
services/keepstore/volume_generic_test.go | 630 +++---
services/keepstore/volume_test.go | 258 +--
services/keepstore/work_queue.go | 208 --
services/keepstore/work_queue_test.go | 244 ---
services/workbench2/Makefile | 24 +-
services/workbench2/README.md | 3 +-
services/workbench2/cypress.config.ts | 25 +
services/workbench2/cypress.json | 8 -
.../workbench2/cypress/e2e/banner-tooltip.cy.js | 112 ++
.../collection.spec.js => e2e/collection.cy.js} | 32 +-
.../create-workflow.cy.js} | 5 -
.../delete-multiple-files.cy.js} | 5 -
.../{integration => e2e}/details-card.spec.js | 0
.../favorites.spec.js => e2e/favorites.cy.js} | 5 -
.../group-manage.cy.js} | 10 +-
.../{integration/login.spec.js => e2e/login.cy.js} | 5 -
.../multiselect-toolbar.cy.js} | 5 -
.../page-not-found.cy.js} | 18 +-
.../process.spec.js => e2e/process.cy.js} | 165 +-
.../project.spec.js => e2e/project.cy.js} | 51 +-
.../search.spec.js => e2e/search.cy.js} | 23 +-
.../sharing.spec.js => e2e/sharing.cy.js} | 19 +-
.../side-panel.spec.js => e2e/side-panel.cy.js} | 5 -
.../user-profile.cy.js} | 18 +-
.../virtual-machine-admin.cy.js} | 0
.../workflow.spec.js => e2e/workflow.cy.js} | 12 +-
.../cypress/integration/banner-tooltip.spec.js | 115 --
services/workbench2/cypress/support/commands.js | 16 +-
.../cypress/support/{index.js => e2e.js} | 0
services/workbench2/docker/Dockerfile | 12 +-
services/workbench2/package.json | 13 +-
services/workbench2/src/common/link-update-name.ts | 74 +
.../src/components/breadcrumbs/breadcrumbs.tsx | 2 +-
.../src/components/code-snippet/code-snippet.tsx | 32 +-
.../code-snippet/virtual-code-snippet.tsx | 76 +
.../collection-panel-files.tsx | 2 +-
.../copy-to-clipboard-snackbar.tsx | 2 +-
.../copy-to-clipboard/copy-result-to-clipboard.ts | 63 +
.../src/components/data-explorer/data-explorer.tsx | 57 +-
.../src/components/data-table/data-table.test.tsx | 10 +-
.../src/components/data-table/data-table.tsx | 69 +-
.../default-virtual-code-snippet.tsx | 31 +
.../src/components/default-view/default-view.tsx | 1 +
.../details-attribute/details-attribute.tsx | 2 +-
services/workbench2/src/components/icon/icon.tsx | 9 +
.../src/components/loading/inline-pulser.tsx | 30 +
.../multi-panel-view/multi-panel-view.tsx | 52 +-
.../multiselect-toolbar/MultiselectToolbar.tsx | 135 +-
.../ms-toolbar-action-filters.ts | 52 +-
.../ms-toolbar-overflow-menu.tsx | 4 +-
.../ms-toolbar-overflow-wrapper.tsx | 2 +-
.../subprocess-progress-bar.tsx | 39 +-
services/workbench2/src/components/tree/tree.tsx | 2 +-
services/workbench2/src/index.tsx | 3 +-
services/workbench2/src/models/group.ts | 2 +
.../collection-service/collection-service.ts | 13 +-
services/workbench2/src/services/services.ts | 5 +-
.../all-processes-panel-middleware-service.ts | 96 +-
.../src/store/breadcrumbs/breadcrumbs-actions.ts | 15 +-
.../store/collections/collection-update-actions.ts | 2 +
.../context-menu/context-menu-actions.test.ts | 2 +-
.../src/store/context-menu/context-menu-actions.ts | 2 +-
.../store/data-explorer/data-explorer-action.ts | 4 +
.../store/data-explorer/data-explorer-reducer.ts | 5 +
.../favorite-panel-middleware-service.ts | 4 +-
.../src/store/favorites/favorites-actions.ts | 6 +-
...etails-panel-members-middleware-service.test.js | 28 +
...oup-details-panel-members-middleware-service.ts | 25 +-
...ls-panel-permissions-middleware-service.test.js | 28 +
...details-panel-permissions-middleware-service.ts | 25 +-
.../groups-panel-middleware-service.test.ts | 160 ++
.../groups-panel-middleware-service.ts | 39 +-
.../src/store/navigation/navigation-action.ts | 1 -
.../open-in-new-tab/open-in-new-tab.actions.ts | 6 +-
.../store/process-panel/process-panel-actions.ts | 33 +-
.../store/process-panel/process-panel-reducer.ts | 4 +
.../src/store/process-panel/process-panel.ts | 6 +
.../processes/processes-middleware-service.ts | 95 +
.../project-panel-middleware-service.ts | 8 +-
.../src/store/projects/project-lock-actions.ts | 10 +-
.../public-favorites/public-favorites-actions.ts | 6 +-
.../src/store/search-bar/search-bar-actions.ts | 2 +-
.../src/store/search-bar/search-bar-reducer.ts | 2 +-
.../search-results-middleware-service.ts | 25 +-
.../side-panel-tree/side-panel-tree-actions.ts | 86 +-
services/workbench2/src/store/store.ts | 4 +
.../subprocess-panel-middleware-service.ts | 107 +-
.../trash-panel/trash-panel-middleware-service.ts | 4 +-
.../workbench2/src/store/trash/trash-actions.ts | 6 +-
.../src/store/workbench/workbench-actions.ts | 9 +-
.../workflow-panel/workflow-middleware-service.ts | 28 +
.../store/workflow-panel/workflow-panel-actions.ts | 8 +-
.../collection-panel-files.ts | 2 +-
.../api-client-authorization-action-set.ts | 8 +-
.../action-sets/collection-action-set.ts | 28 +-
.../action-sets/collection-files-action-set.ts | 20 +-
.../collection-files-item-action-set.ts | 17 +-
.../collection-files-not-selected-action-set.ts | 4 +-
.../action-sets/favorite-action-set.ts | 3 +-
.../context-menu/action-sets/group-action-set.ts | 10 +-
.../action-sets/group-member-action-set.ts | 8 +-
.../action-sets/keep-service-action-set.ts | 8 +-
.../context-menu/action-sets/link-action-set.ts | 8 +-
.../action-sets/permission-edit-action-set.ts | 8 +-
.../action-sets/process-resource-action-set.ts | 47 +-
.../context-menu/action-sets/project-action-set.ts | 26 +-
.../action-sets/project-admin-action-set.ts | 4 +-
.../action-sets/repository-action-set.ts | 10 +-
.../action-sets/resource-action-set.ts | 3 +-
.../action-sets/root-project-action-set.ts | 6 +-
.../action-sets/search-results-action-set.ts | 10 +-
.../context-menu/action-sets/ssh-key-action-set.ts | 8 +-
.../context-menu/action-sets/trash-action-set.ts | 3 +-
.../action-sets/trashed-collection-action-set.ts | 10 +-
.../context-menu/action-sets/user-action-set.ts | 18 +-
.../action-sets/virtual-machine-action-set.ts | 8 +-
.../action-sets/workflow-action-set.ts | 14 +-
.../collection-copy-to-clipboard-action.tsx | 2 +-
.../actions/collection-file-viewer-action.test.tsx | 2 +-
.../actions/collection-file-viewer-action.tsx | 2 +-
.../context-menu/actions/context-menu-divider.tsx | 45 +
.../actions/copy-to-clipboard-action.tsx | 2 +-
.../actions/download-collection-file-action.tsx | 2 +-
.../context-menu/actions/file-viewer-action.tsx | 2 +-
.../context-menu/actions/file-viewer-actions.tsx | 1 +
.../context-menu/context-menu-action-set.ts | 56 +
.../views-components/context-menu/context-menu.tsx | 55 +-
.../context-menu/menu-item-sort.ts | 184 ++
.../data-explorer/data-explorer.tsx | 12 +-
.../data-explorer/renderers.test.tsx | 94 +-
.../views-components/data-explorer/renderers.tsx | 37 +-
.../src/views-components/login-form/login-form.tsx | 3 +-
.../main-app-bar/notifications-menu.tsx | 6 +-
.../ms-collection-action-set.ts | 33 +-
.../multiselect-toolbar/ms-menu-actions.ts | 50 +-
.../multiselect-toolbar/ms-process-action-set.ts | 44 +-
.../multiselect-toolbar/ms-project-action-set.ts | 41 +-
.../ms-user-details-action-set.ts | 9 +-
.../multiselect-toolbar/ms-workflow-action-set.ts | 24 +-
.../repositories-sample-git-dialog.tsx | 2 +-
.../sharing-dialog/permission-select.tsx | 1 +
.../sharing-dialog/sharing-dialog-component.tsx | 25 +-
.../sharing-invitation-form-component.tsx | 36 +-
.../sharing-dialog/sharing-invitation-form.tsx | 1 -
.../sharing-management-form-component.tsx | 15 +-
.../sharing-public-access-form-component.tsx | 4 +-
.../sharing-dialog/sharing-urls-component.tsx | 4 +-
.../sharing-dialog/visibility-level-select.tsx | 1 -
.../token-dialog/token-dialog.test.tsx | 2 +-
.../views-components/token-dialog/token-dialog.tsx | 11 +-
.../views-components/tree-picker/tree-picker.ts | 2 +-
.../src/views/groups-panel/groups-panel.tsx | 27 +-
.../src/views/login-panel/login-panel.tsx | 10 +-
.../src/views/process-panel/process-cmd-card.tsx | 50 +-
.../views/process-panel/process-io-card.test.tsx | 11 +-
.../src/views/process-panel/process-io-card.tsx | 423 ++--
.../src/views/process-panel/process-log-card.tsx | 2 +-
.../process-panel/process-log-code-snippet.tsx | 57 +-
.../process-output-collection-files.ts | 2 +-
.../src/views/process-panel/process-panel-root.tsx | 4 +
.../src/views/process-panel/process-panel.tsx | 9 +-
.../views/process-panel/process-resource-card.tsx | 10 +-
.../src/views/project-panel/project-panel.tsx | 34 +-
.../src/views/ssh-key-panel/ssh-key-panel-root.tsx | 14 +-
.../src/views/trash-panel/trash-panel.tsx | 2 +-
.../virtual-machine-user-panel.tsx | 18 +-
.../workflow-panel/registered-workflow-panel.tsx | 24 +-
.../workflow-processes-panel-root.tsx | 126 ++
.../workflow-panel/workflow-processes-panel.tsx | 36 +
services/workbench2/yarn.lock | 2022 ++++++++++++--------
.../lib/arvbox/docker/service/sdk/run-service | 2 +-
tools/compute-images/scripts/base.sh | 2 +-
...nsure-encrypted-partitions-aws-ebs-autoscale.sh | 2 +-
tools/crunchstat-summary/arvados_version.py | 161 +-
.../crunchstat_summary/command.py | 19 +-
.../crunchstat_summary/dygraphs.js | 17 +-
.../crunchstat_summary/reader.py | 43 +-
.../crunchstat_summary/summarizer.py | 589 +++---
.../crunchstat_summary/webchart.py | 78 +-
tools/crunchstat-summary/setup.py | 19 +-
...ainer_9tee4-dz642-lymtndkpy39eibk.txt.gz.report | 17 +-
...4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt.gz.report | 13 +-
...-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt.gz.report | 15 +-
...quest_9tee4-xvhdp-kk0ja1cl8b2kr1y.txt.gz.report | 17 +-
.../tests/crunchstat_error_messages.txt | 6 +-
.../tests/logfile_20151204190335.txt.gz | Bin 3682 -> 0 bytes
.../tests/logfile_20151204190335.txt.gz.report | 35 -
.../tests/logfile_20151210063411.txt.gz | Bin 3101 -> 0 bytes
.../tests/logfile_20151210063411.txt.gz.report | 24 -
.../tests/logfile_20151210063439.txt.gz | Bin 3103 -> 0 bytes
.../tests/logfile_20151210063439.txt.gz.report | 24 -
tools/crunchstat-summary/tests/test_examples.py | 193 +-
tools/keep-block-check/keep-block-check_test.go | 7 +-
tools/keep-rsync/keep-rsync_test.go | 4 +-
.../multi_host/aws/states/workbench1_uninstall.sls | 12 +
.../states/workbench1_uninstall.sls | 12 +
.../states/workbench1_uninstall.sls | 12 +
tools/salt-install/provision.sh | 5 +
tools/salt-install/terraform/aws/services/main.tf | 5 +-
tools/user-activity/arvados_version.py | 161 +-
tools/user-activity/setup.py | 8 +-
380 files changed, 15033 insertions(+), 11735 deletions(-)
create mode 100644 .github/workflows/tests.yml
create mode 100644 build/pypkg_info.py
create mode 100644 doc/sdk/fuse/install.html.textile.liquid
create mode 100644 doc/sdk/fuse/options.html.textile.liquid
delete mode 100644 doc/sdk/python/arvados-fuse.html.textile.liquid
create mode 100644 lib/diagnostics/docker_image_test.go
create mode 100644 sdk/cwl/tests/container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt
create mode 100644 sdk/cwl/tests/container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt
create mode 100644 sdk/java-v2/src/main/java/org/arvados/client/api/model/CollectionReplaceFiles.java
create mode 100644 sdk/python/tests/test_cmd_util.py
create mode 100644 sdk/python/tests/test_storage_classes.py
create mode 100644 services/fuse/tests/test_mount_filters.py
create mode 100644 services/keep-web/metrics.go
delete mode 100644 services/keepstore/collision.go
delete mode 100644 services/keepstore/collision_test.go
delete mode 100644 services/keepstore/gocheck_test.go
delete mode 100644 services/keepstore/handler_test.go
delete mode 100644 services/keepstore/handlers.go
create mode 100644 services/keepstore/hashcheckwriter.go
create mode 100644 services/keepstore/keepstore_test.go
create mode 100644 services/keepstore/metrics_test.go
delete mode 100644 services/keepstore/mock_mutex_for_test.go
delete mode 100644 services/keepstore/perms.go
delete mode 100644 services/keepstore/perms_test.go
delete mode 100644 services/keepstore/pipe_adapters.go
delete mode 100644 services/keepstore/proxy_remote.go
delete mode 100644 services/keepstore/pull_worker_integration_test.go
create mode 100644 services/keepstore/putprogress.go
create mode 100644 services/keepstore/router.go
create mode 100644 services/keepstore/router_test.go
rename services/keepstore/{s3aws_volume.go => s3_volume.go} (75%)
rename services/keepstore/{s3aws_volume_test.go => s3_volume_test.go} (77%)
delete mode 100644 services/keepstore/status_test.go
create mode 100644 services/keepstore/streamwriterat.go
create mode 100644 services/keepstore/streamwriterat_test.go
delete mode 100644 services/keepstore/work_queue.go
delete mode 100644 services/keepstore/work_queue_test.go
create mode 100644 services/workbench2/cypress.config.ts
delete mode 100644 services/workbench2/cypress.json
create mode 100644 services/workbench2/cypress/e2e/banner-tooltip.cy.js
rename services/workbench2/cypress/{integration/collection.spec.js => e2e/collection.cy.js} (99%)
rename services/workbench2/cypress/{integration/create-workflow.spec.js => e2e/create-workflow.cy.js} (99%)
rename services/workbench2/cypress/{integration/delete-multiple-files.spec.js => e2e/delete-multiple-files.cy.js} (97%)
rename services/workbench2/cypress/{integration => e2e}/details-card.spec.js (100%)
rename services/workbench2/cypress/{integration/favorites.spec.js => e2e/favorites.cy.js} (99%)
rename services/workbench2/cypress/{integration/group-manage.spec.js => e2e/group-manage.cy.js} (98%)
rename services/workbench2/cypress/{integration/login.spec.js => e2e/login.cy.js} (98%)
rename services/workbench2/cypress/{integration/multiselect-toolbar.spec.js => e2e/multiselect-toolbar.cy.js} (91%)
rename services/workbench2/cypress/{integration/page-not-found.spec.js => e2e/page-not-found.cy.js} (87%)
rename services/workbench2/cypress/{integration/process.spec.js => e2e/process.cy.js} (91%)
rename services/workbench2/cypress/{integration/project.spec.js => e2e/project.cy.js} (96%)
rename services/workbench2/cypress/{integration/search.spec.js => e2e/search.cy.js} (95%)
rename services/workbench2/cypress/{integration/sharing.spec.js => e2e/sharing.cy.js} (94%)
rename services/workbench2/cypress/{integration/side-panel.spec.js => e2e/side-panel.cy.js} (98%)
rename services/workbench2/cypress/{integration/user-profile.spec.js => e2e/user-profile.cy.js} (97%)
rename services/workbench2/cypress/{integration/virtual-machine-admin.spec.js => e2e/virtual-machine-admin.cy.js} (100%)
rename services/workbench2/cypress/{integration/workflow.spec.js => e2e/workflow.cy.js} (99%)
delete mode 100644 services/workbench2/cypress/integration/banner-tooltip.spec.js
rename services/workbench2/cypress/support/{index.js => e2e.js} (100%)
create mode 100644 services/workbench2/src/common/link-update-name.ts
create mode 100644 services/workbench2/src/components/code-snippet/virtual-code-snippet.tsx
create mode 100644 services/workbench2/src/components/copy-to-clipboard/copy-result-to-clipboard.ts
create mode 100644 services/workbench2/src/components/default-code-snippet/default-virtual-code-snippet.tsx
create mode 100644 services/workbench2/src/components/loading/inline-pulser.tsx
create mode 100644 services/workbench2/src/store/group-details-panel/group-details-panel-members-middleware-service.test.js
create mode 100644 services/workbench2/src/store/group-details-panel/group-details-panel-permissions-middleware-service.test.js
create mode 100644 services/workbench2/src/store/groups-panel/groups-panel-middleware-service.test.ts
create mode 100644 services/workbench2/src/store/processes/processes-middleware-service.ts
create mode 100644 services/workbench2/src/views-components/context-menu/actions/context-menu-divider.tsx
create mode 100644 services/workbench2/src/views-components/context-menu/menu-item-sort.ts
create mode 100644 services/workbench2/src/views/workflow-panel/workflow-processes-panel-root.tsx
create mode 100644 services/workbench2/src/views/workflow-panel/workflow-processes-panel.tsx
delete mode 100644 tools/crunchstat-summary/tests/logfile_20151204190335.txt.gz
delete mode 100644 tools/crunchstat-summary/tests/logfile_20151204190335.txt.gz.report
delete mode 100644 tools/crunchstat-summary/tests/logfile_20151210063411.txt.gz
delete mode 100644 tools/crunchstat-summary/tests/logfile_20151210063411.txt.gz.report
delete mode 100644 tools/crunchstat-summary/tests/logfile_20151210063439.txt.gz
delete mode 100644 tools/crunchstat-summary/tests/logfile_20151210063439.txt.gz.report
create mode 100644 tools/salt-install/config_examples/multi_host/aws/states/workbench1_uninstall.sls
create mode 100644 tools/salt-install/config_examples/single_host/multiple_hostnames/states/workbench1_uninstall.sls
create mode 100644 tools/salt-install/config_examples/single_host/single_hostname/states/workbench1_uninstall.sls
via f523522e3b9024b706da52bcddbce42a58c56296 (commit)
via 562687ce72e709d485aa47773117a51a764a6606 (commit)
via 52d652233f981839e4a8cfe25fadf985adda82ee (commit)
via 7428f6339bb59f97d9ec7e139b757c1a4b962ce7 (commit)
via d35808f8df98545d42b692e25343636a86de4a57 (commit)
via 5384f78c59c99c76d6aa892b129257c8b7361694 (commit)
via 65ab2ff511ac6478bc11a4398abab5861e2cc4d7 (commit)
via ea697fb1e8482e77f505596370023763f427506f (commit)
via d80b4ca38f845525927bfe192eed37573d635c1a (commit)
via aea34fe6d98be7e5084aad6d9e51c8730ecf8d79 (commit)
via b85a809c724815c2a24f740bcb0e0d3f0bdeb761 (commit)
via 3de055c028a3e761de60d955f450b06ccee21380 (commit)
via f03a846bbc12694af40944855196b2136660b843 (commit)
via d6225ffd9c44b5e8b7e4d6f6c78201ecb7056480 (commit)
via 0f2720f0aa2bc8399fdea5a647584bd90aca7547 (commit)
via 3e483c4428580bf9860c76d1676b03f63d5143dc (commit)
via 404f868129e22cd627d350d61f74806f5b31a8ad (commit)
via 3afc1cd214cb3f53ec36b3d5b4c80bc5989093a0 (commit)
via 8b75bf68865cbee66f49591e1351fa00fac8e1bf (commit)
via 672bc32dc2d687e45e50800a431cd4d9a115c168 (commit)
via efc7e2a46e0a82bf9d1af0761f2970076c6f1203 (commit)
via 43c64a7a9af20e0690e01b4e2484fa7196c66973 (commit)
via a65af8010388549eac616bde8224368ab944ff6b (commit)
via 495ee6b835dea5f053cf95bef2dc9d61d0324774 (commit)
via 4fba0ca2cd49fca1606277a5329caadffd849f1e (commit)
via 5a5c399ed4196dcae9a694ac63d94334cac790aa (commit)
via 5bf94d55b564bfbd052a61ab8219aa063b2a80c6 (commit)
via 4a1e25b2df1817cb3bfa153076efd1a98ed802ff (commit)
via 91567eb5eed5ae55e941c581697b4ddd53ddacec (commit)
via ccf8e339aa90742cc9e45e35baa6825695fc90ca (commit)
via 4810be1bcc6363d39bca310800ccdab06211f057 (commit)
via 3ec75a5a85dc871a5f1007c1eb5e7a6f9fd10235 (commit)
via 23c01a7c048315d34c7a8c25eb34d9ed06a973e3 (commit)
via 387d86217ab0f119285c12735a6d0f3e606c23a1 (commit)
via b5da8e816bfb9790fc37965311a9dcb0f169ea79 (commit)
via 36995896541981402a27483571bfae32fec7cc1a (commit)
via 0809ee6545e7b209130591b7b1d6461fcc397148 (commit)
via 1e29fff559f47972c7f65ca1f6390661176296fe (commit)
via 716f55edbae8b8a16e2479e1f0e75619567df051 (commit)
via 287fdb5c5bc99d749dcc85d7fb756b39c5cc2ee3 (commit)
via 95c835b12a32a5fa6dc94799d6fea16e5b20080c (commit)
via efe40af06f1576412b7bcf47d059bfa8c10e81d7 (commit)
via 7997c58155e51f10d8243fe66587468f9ee3a563 (commit)
via 3eed3a289173f679098df98f6f1ee0ff86f533cf (commit)
via eee1ae96a3b7a645121a69998271f7d1adf21dd4 (commit)
via 9542ef840c95bcde07eed8d41b9649c6032d8d6d (commit)
via d863a42b75aa0855701c36d825372e1c338eaac5 (commit)
via 766d6fbd23a1bf526b55b10ffe26404f4827010d (commit)
via 6e1da3c3cb2a28b4eb107dcb8ca873d03955ec59 (commit)
via 4d3508cefb40ad5b53af22d8f3dda13593b598d2 (commit)
via 7ed04fa92d597734b8c33681f18ec1020b568840 (commit)
via f674f8883fc075170a20ef592a2609e4f521f7b2 (commit)
via 942be3e7fc2d79e76047710d8705fa6584ca3117 (commit)
via 4ca460797b3b2c80141524b34399171749b4d482 (commit)
via 9f2e8304caea45f8e7a603a0e4019fd5845f4264 (commit)
via 31f0010ed0833ff91600cd8ce31d4df1847882cc (commit)
via 9b12bf802a73c654f7106c5405103448a30078dd (commit)
via 4d892bd66c5d11d8cbde42348099e92da0c21a99 (commit)
via 9a72938d7fa4786aed241f619476490570933f15 (commit)
via e0481ba5073bd1f30d092aeee1a06ef3c635a93b (commit)
via 0a39d337a1c58d7cbdd51b2f852b84eebc1c68ef (commit)
via 015668c71b0d0a88fefab6783d3199472df95eb2 (commit)
via ff1759078071c52b857afdbe64713ebf0833fae4 (commit)
via 2bbea832f0a7a16e70b85b2e2ad9ca4637a80118 (commit)
via 3832c780144d8491403582d9d1142c150fde6d1f (commit)
via 1f54a6762575e1ff8da9861277dd8e44a7e87caf (commit)
via 14088c5bd88ede15698ba8f5b8efbf08e18374ce (commit)
via a9a011ed1f1daec47a9bc306f13ff91a63954e42 (commit)
via 7966e5fbed9f19c01e8de2c5ca9da08c4ec79775 (commit)
via eff916e6bbdb8e3c0fae34179fcbb3294853f53f (commit)
via 6e15f1dab1b2c81996929f787a3515909b3293c0 (commit)
via 44c8f9ed561513b607d3eca752ad3e1efd376f56 (commit)
via 1476fbd67813d5fbead1ad614f5317db9bd0e0bb (commit)
via e54662c069d72c7a22f89bd889370703790d2536 (commit)
via 75244c16116d53c5f96b8b71b6b60b249aadba89 (commit)
via d7cf4c1ec30c7f90f38a9f34c14547c94c081b59 (commit)
via c233377306fee0a3e3e860b0b924be7c51078285 (commit)
via f9378d4015246bab78305a2f117e144248acfbb4 (commit)
via ec67d31d1c519c4b1b624f6df0534d27f39f3ed9 (commit)
via b4205dda0bf1a7e00b35e8a92bc433f6b2fd2b71 (commit)
via 8090c845fea8d9532be5c4347f06dcf9fa7c868c (commit)
via 9d07096105edd0ff289d97cb9951b9ee40dba7d8 (commit)
via 08f8ec2186df6d3111fdd274e71d9e12742f5e9d (commit)
via db302194cfe02e27bb8d476f68831009ef2aa76d (commit)
via 6e82c6703a8caabcf5ed96b7bd0338e60a2b6619 (commit)
via 7e67490b7e0808b8838a1823c90565ae162b200b (commit)
via 0682477f00b9aa7b3b4e27f331de7f3a07b2dabb (commit)
via 8f519cc734ecd69df86dffff02f460addfa0c6e7 (commit)
via d9d824fb6d36cc8887e68751cc8813a8b810ba9f (commit)
via 74b95d1f2b982c0e33bceda9c5f6e06af0a3919c (commit)
via e7c1d657a3f6b84dc1e2fa82883d7368c3859011 (commit)
via cb2ffbec735d31a376157e79ad4eaf54798e74e4 (commit)
via e792b65d396b15b2c6c90ab2ab70d19c81f98460 (commit)
via 2a0299c0a203a14d3ac95d5afeb9ded6475e0f9e (commit)
via 3a7e0c1b7de023461f90d41a1878ec43c3d187a9 (commit)
via 648b0db5d0fedc67206c08625bfb42511b4ee23b (commit)
via 5b15b2571f4ace6074ba30cee2195a616d196d97 (commit)
via 039f78f18f488844fa653038189ace482c3b52f6 (commit)
via 62e557a3314a607b5701db7e64f7609a5af00adc (commit)
via befe9d43c1aae5d16708eac82a7493637439fcb8 (commit)
via b4a2c4b4767a76a6e2f3bf85e544e670a5de6e2f (commit)
via 62c3ba8319265118432f33ea98df116253b3e785 (commit)
via 593917ad86ce138fd4735628a3437a920130b691 (commit)
via 2ac122244af90c2c85ab289a5ca807b954b00294 (commit)
via 9c1b519f2ad5382d9472d755c05b109dab92d610 (commit)
via a15ba265e59898fb59fa85fac01c0a9efc4d064f (commit)
via 4637d2c632e4d6c1a759f5a1aa8ac5195e1c362c (commit)
via 12c4579e867d6dd4d7a931b2adb9c7119e12214a (commit)
via 10564bc0d78545b71a5815c3332403f2e8a0d562 (commit)
via d190ac273c87a28ab270b460a1bbfd1898b4e5a7 (commit)
via 8215e5931aeed29d82e94b5129a685e0b2f084c3 (commit)
via 1f8dc0fa14b8095203638f27d36d548c8568152b (commit)
via 807876d53b4bc86fd78e3c1183a42ed317cb835d (commit)
via 6886f23ec69c0baf38e91e8ea0038c4f581eee06 (commit)
via 623a3a3e8309f5e5045359fbf891e9a690a9dfc7 (commit)
via 561e80264b0a9df86f5ce1e1a5a388bb53d11bc6 (commit)
via bd04725444b7ab15ea81647c519a580ca50a94de (commit)
via 743b9941ce35d8877365742700c9b4c1eded0968 (commit)
via b91d06bf3ede4b9afa5a74070a4f8ca95d16f629 (commit)
via cbf5da01288da63a4f83282384fa7cdebbb2c5e0 (commit)
via 08eb10445bdda427d52ccc9d070a989b3fd4aa59 (commit)
via 9c5068adca5044058518667e981000c3913673b8 (commit)
via f3e76491dfd8cdc1b73c0fd16f309f6dd8c51193 (commit)
via 857687c280c2a84152de6e8df840d0bcf1282bcf (commit)
via 2c736f0babb3862b4d77210e3340473a1cf42082 (commit)
via f235379ac4b4c2216d42ae93233e5d0c5c1ae872 (commit)
via cc3f89292c0136ce5d9e56506f82ea743c59fff8 (commit)
via 73aff80c1f97e854203f75375dbef1924671667e (commit)
via 4151c412724bc38745958d0c62a427fabff1ac0d (commit)
via 062542e47eb3bbb1ad911f2bcb6e51967f80db86 (commit)
via 4ec8e3b32cd11141f9d639f651b721feff66c437 (commit)
via 4b7bd3d53c9a108e8074f11e7e78475b80f07c57 (commit)
via 75cf6882418dc594e3ada42e433ccccd25435cac (commit)
via deb438266566154f55d143171741bc3aa9279b45 (commit)
via 79d2927c497c924e9b15545d44b860627e8f8a7c (commit)
via e9856c5b1fc9162ce1f105fee49e2a80d69dd397 (commit)
via b56396475bcae2a8a1356267120bc712538b198d (commit)
via 9d762fe81ce5403a1a797a04e4e62c3d6d6f5b6f (commit)
via e2041e819042f1051fc026aaee2c73823824fc56 (commit)
via 5e5d32ab61b3a6e063ca43fbedb0483257affa22 (commit)
via 7993b2712271726a714904b1acfa6ccc151e0d0e (commit)
via b8aa1aef3a5f883d86d548aee9aecf82d3df82db (commit)
via b4f40934a6b7cf80895be7936af64a755cfda81b (commit)
via f093cf66138faec359a95777a91b6a2904469d7d (commit)
via b41a884bdeb7f18ad923d23ffed8be0f0a85e452 (commit)
via 3a4994a4a3f1f9a52e38f70335e8845e09849846 (commit)
via defaae08f226bb9efbb76a0e15d392f46e929479 (commit)
via 9d8b1517ec34774e041eede98c050f6bdd184c22 (commit)
via 04c46ad79307ac28644adc5f25a05d8f0736c499 (commit)
via 58fe2158d605b653cd2de61da22bed092dce58b1 (commit)
via 3e197765c7cfefe556391661ee9a14abeab2dbb6 (commit)
via bf4193eeaa390cec08bbb8333a53fbc89edfd7f3 (commit)
via 83a1b654fd2a6e15c6122da161a32443e7409623 (commit)
via 6e0c005287a02a30aff2a286dc861be1b6dabafd (commit)
via 3c210fe96edb1c345850e1eb35c93f98d205f843 (commit)
via 9e01274aa67960cc532a65fbccd540c4b02ad4e5 (commit)
via 342d41c1745b40ef78739fe9599be11f6dc529c5 (commit)
via 60d2f52bdde24a7173275b18c74d3e7703282a8f (commit)
via f8f3297dd2e6e37c9fd2387edb2873db83bec3ab (commit)
via fab6a2603007e5ef60385148d09d51f3ed0f5b2c (commit)
via aca95ae8737d90adcee57929caa4239d2a7e1f66 (commit)
via 64f53eb394384ba13e2e33f4794516577e4db528 (commit)
via 55703cfd8ee34f76a230ff256f51367f4fe3f77e (commit)
via 81b42d35b22babd40a068a33f40d9be2c94eb5e5 (commit)
via a683ec930d6658145b2e96131288f4ef3000a7d5 (commit)
via 7548c375d046ce564630de403f8707baab547e1a (commit)
via 1a7b50a8cbb56342845df954cbb07c16c2e5722c (commit)
via b5c15775caf865d8fed5d4839d4a082f6518bba4 (commit)
via eb5b8638a308f7954f83a6a6659ae97d4f4e082d (commit)
via 9d1ff3299a57d0e820bf7975f0f3e6080b22f0a5 (commit)
via 8836fd8f35b497eaad22de9d9478d8aa97fb359c (commit)
via 19d0d9c46a423adf81410f582b3a60a412d3e7f8 (commit)
via 2179d3f39d81e97cd3f6225f0551af429cae0e8f (commit)
via 37516bc14fdfe634c78764c15f3a8eb3a09b403c (commit)
via 35b87ad5b912892586cab02d309b2bdb1b0acff9 (commit)
via ffbd16ffadb228c7eca488a65082344e78a9dc78 (commit)
via aee2fb2b736a714d3c8dc5b4624bff3fae8d7ba4 (commit)
via 96f0b43ee4bb07e87dbeef8514a51857db069351 (commit)
via be3378300d63ce537a5843c5fc23ecd76f4f1f5c (commit)
via 34fba73b216678a3f447d462c5e487a4011bc700 (commit)
via b541c9d898d3dde983de2e0ea80a40e17d4c9b9f (commit)
via ea30fca96919402f1eedcf1a598240b9514972e0 (commit)
via 6dfef004d33b147cbe80bbb5ecc6922ac25f156d (commit)
via 841d8e9643b622457474b74d075b36dcb67c871b (commit)
via ffe0c69733abbf34adca1c6d1c9dd15cb3904ccb (commit)
via ea3743e6f64672fa487ee55dba66c63cb9da0123 (commit)
via 17245ae08f1539c5bbef65ecaa8238518f4ede11 (commit)
via d3c7699ee377c4298779369c24e56c8019b599a1 (commit)
via d4d23b620acbce3cd5e1b5d48b660f7194533c53 (commit)
via c63ed8946d66b425bd98ced05bf0b36ae3bd606c (commit)
via cb68d4e34688abd308d7adffc288c82a5deb6c85 (commit)
via e2f4f1c30dfeff4261333fd65a4c521acc098804 (commit)
via 493f9e866aa1ac2d2b8247a96f859591cad53d05 (commit)
via 15f85151b4a761603c6164cd4654657582dd9e0b (commit)
via a6f2e4ea0bf519125271141c154df7e0a245b082 (commit)
via 328867d29fbb26ad09037753a6dd2dcdf134beef (commit)
via 98aed15ea3c1625a16154546cf87adc9f046f48b (commit)
via 054aea6a43e28ecbeb04c98bb5dff4b19f61644e (commit)
via 279fe9dbbbd72d2cc3a65bbf75a68aa43b2b048b (commit)
via 6fad433ba5753166eee177fc072c061cdf17c6fa (commit)
via 903783f131aa5dc786b1b46283e44c04c877cc11 (commit)
via 049358ec144d007ab098a0f7bfe2e10f3ef0da0c (commit)
via b9fde93b6e24b0575ce81a964be6884231647ee4 (commit)
via cac999f47113207f1b05405ee24daab19ac97de4 (commit)
via d9767bb060224fdf932ce68f56565127b752ab09 (commit)
via b7084ab5ece7ad0ebc34c14ed0624f9e8f995ff4 (commit)
via 9e19b42c932e3c203a6e45d883b807d9dcc2c921 (commit)
via 8b5d03935a661e80caf353fdff8b8b998d702e27 (commit)
via 44f003133c3c8eec7baca6999c199b7fc1646fdc (commit)
via 6d20c830b3843023eb1600a7032bb0d54bb398ba (commit)
via c48f04fe095bf6de2597143d82bc268c417341de (commit)
via 8265e843a36b9fba46791728ca8170f3b12ce333 (commit)
via af7233e3695ad99ae500b51390e1bf9c1c8c5a5c (commit)
via 765d0793106c41f5810da483b7cf36a9c8a895a0 (commit)
via 6fe577611e7afeed3c422d19d46f7ab34b201cbd (commit)
via abce699c344ffe2369e1125b1d65e71e2485f7cb (commit)
via 857b9529178950df565689d091704b8fc228f2c6 (commit)
via e61c439e17ffdbec5964b65c3338300cb252d0f5 (commit)
via 95dba0428816e5b53cde4f8b15ae283619c51d54 (commit)
via f10e92fe095a7b292dde71da0f1d8465312236d7 (commit)
via 536888e31706dfb9db43338e858529a7432a13c1 (commit)
via 9548790f004624cc6a143bb8cf9267e2fe7cbada (commit)
via 0f3ce3e9251fbcdd761a9b531332eb94a10381c0 (commit)
via fdbf77185581f3a270aee3defb86ad9b5f091a1a (commit)
via 57bece692f5e5d9f66ca4dfc77035867b1b32289 (commit)
via c91f68273656821bfa4a2315866794b5ede88b00 (commit)
via 52059aab9c65a9cbdff0b8d379ab8b0a25f62880 (commit)
via 0f0fd0ece6c2003b9cb5811af73f5455bdf9a894 (commit)
via 94a845ec96ac8d68672195b49cd3088a78a10e03 (commit)
via cba86260ec62023c8b440a974f8fe0bd63b3f004 (commit)
via 8d3cf07be66fb6b8a58c3999783ebc753c30428f (commit)
via e6ccda1f6925da119589e93b54d22508cf979069 (commit)
via b290de5604e7ccfad230cd1e0547f0c09cc2fe01 (commit)
via 6b9cb6715bb7c04b2a425bc28b41a51f8a273a7a (commit)
via ae7a179649bbe19761c49de65b10127592ef646b (commit)
via a4a14d30f7fd703dbc999ca8bacd02cd00dda46c (commit)
via e1953022010bc0679a2d79baf5c040b8312c5d8b (commit)
via 918edd276441e29b249d881001eb712a06cc8509 (commit)
via 9ad1be8f5e545fef32b0317f04a17f34ba762497 (commit)
via 7b8dd3737caad98021dc89e777e325d1c9529819 (commit)
via fc1d5c838c0f764ddfa891c0cef6d55c77abbe79 (commit)
via c09a6b1acd5e84b6f1abcb6eada69771f16966be (commit)
via 9ce086be94935233601712eb5a07e252266f4e8d (commit)
via f8f5995fb9e1d036ff1b5d5d479bfae6698e9935 (commit)
via f79d1cdf7696a3bbcc374df5ce4d1761a28a5ea5 (commit)
via 35d4eea994c98b4bb65111c9da6e57abbc7e014f (commit)
via 99a1c26447c7cc06f27ce9b79690cdb64752f2ca (commit)
via 60b6f4e619f1a22405e831eda2186d61f7f1ea48 (commit)
via 7345838cb097f11e2ba8239020762ae867591510 (commit)
via 78ba2ad766885dd8ed2f75c4b4466d894b328dbf (commit)
via d12b46657b3e3e341676ce48932c0cc961763abb (commit)
via 50b990c78fe3c2855c0f2eb6706997724b3d346a (commit)
via 9ef83bc1a6a2258258096759d079381a1e1a1c5c (commit)
via da4bc7c758d09c1c02542b54b96eab018f746eae (commit)
via bea6758a63d13f7829bdf68f6c9cbcfa76c2f210 (commit)
via 9d3abfdbf7babd7a791132d963adbd39d41e3196 (commit)
via 52ae34e34b08e889716dd753bd90dd1d47501bec (commit)
via b02372d2d0ddb9ec7c8a70581b2f4358c6f9c825 (commit)
via 2aff408211e84a226af6f74cb9338cbaf3fc4645 (commit)
via 95ac4cc571d413a95c70c5feb1430c0bb314ecee (commit)
via 077d6648a4622d2f7e206b2ac76a3f01a60113ae (commit)
via 9f7943df047aa10bb4b796f0f9780c29bf854332 (commit)
via 7889b2946c77867e3bfed76ec787bb36be67f3e2 (commit)
via 75017b1e056df82d947db19a024c524072d0d55d (commit)
via a50af999abab5d1937b43437fa160d6c6a36a438 (commit)
via f61c01afea5fb78aa026f3e4270156a20c9eeb5a (commit)
via a56e6e6db2fa45008f9a3a1023f91207ea9f4f9a (commit)
via 92430a1fcb52c2fc688dae5a40f6eb086455008a (commit)
via 0d753912c2fa8f53f1d5c2e6251b7a25caeb3499 (commit)
via 26daadcfca01a2f3e1ca9a045debbbe5136adf58 (commit)
via 52bf3ffb05654904d81b82d90ed8acbd1fb641fb (commit)
via 603c6b707287af641305f7e0389b934923d70a74 (commit)
via 78de3b9c008dbab08408797ed783a28e27f8aecb (commit)
via bf9bf6558fab875107746205d9f12f7885333bb6 (commit)
via 6477e004fb67681b8b64bcdbca187dbc32c6cd60 (commit)
via 58942469c2e85ddf9e1b369ea16d7c0c837eec63 (commit)
via e04151fe6963fa8dde5c19b8e3007fdddbb452ae (commit)
via 3357db83fc3e6bd24c0f6f98129e66463edd9750 (commit)
via 10c8c224e3bd5ee124be8e29ec569f565a03a85b (commit)
via d49af567353a4597e6a478ff871bdc6d3bd50f08 (commit)
via cd6cc155469fb54cd7d868e5bc331f13805b79c9 (commit)
via 0fb1d755bdd3878a17cefb268e26913eb80cd7ff (commit)
via 6f3e2cd586172574f2b6ee0f03fc5c79e7ce3b32 (commit)
via 2512a633dac10249c351b474b80807725246144a (commit)
via bba33fe67b5126c092ac09e6fe0ff388aefd5619 (commit)
via e3521142de728bd3e45f5fcfbc1949c4a3c0652b (commit)
via 113b2b5d0b9628ddc85baab9c1b33cadd7cf8633 (commit)
via bba514524b48490a8aeeb01376a10c853a90a2f2 (commit)
via 33376dca1c7d97c02c9145e8226203ec74110055 (commit)
via 95a655d4e4b54940d3872aa794828f4fa016c975 (commit)
via c6215a9818ef18c35df66488e0d80074b0631a34 (commit)
via 9aefffe7db795c8b4aacfc8c2dbfc2eab17ad363 (commit)
via 0bbc879707665f316892387570182d1d2209e91c (commit)
via fe65b9e7f45f69ccd9c73ca6cf220cd544512d0a (commit)
via a8915904f23325c5c6e465164bc032e0dabc4229 (commit)
via e0724a24547a1e22377a4ec2fa077b7c3597dbfd (commit)
via f3cc90ee39862a7d455ddf15bca5da5966700adb (commit)
via 4c33c80836296cd7f92b70a61844b02f350cdeb4 (commit)
via 4393e4edc2054e0d039517ddec507eaf339fb96f (commit)
via 4a1d81633cd0633d70cd2d250f82776062c30a5a (commit)
via 7e9d451769e84b18faf05dd93caf91c440ba8308 (commit)
via fd6b6e7a917d414d76f0bd5b2550c85fd8d2eec9 (commit)
via 08297c0769ab936d55ae37a216ec65d66cbd06e1 (commit)
via 164fe5d1d26297dd767dd2fd633b5bc448eab8f6 (commit)
via 404d326a66c0f83e2278a2cc012b4b6b87de6459 (commit)
via 7675c71cff927a677c9f3366962800469fa502b5 (commit)
via 5a21c904426121a082c5daa2da2f65eb45154511 (commit)
via fcc1154442af6919767c367a05ce86cf95622e57 (commit)
via 84225502fc158312c02825da20f235232f66909d (commit)
via 502d0d5d6774860002368d25648d9d366832fe21 (commit)
via 616d135e77a3e81220c6194494efa718888a9c9c (commit)
via 65e6fa3de6c5e921e30044c66ed494456d965c59 (commit)
via 9375fd613c5eec65195ffb721666061e4032cb0a (commit)
via cfb1970c0ca562c7adddc32eb7b1ff85e410289e (commit)
via 282c677a7f39fe4186085c2705472bff9658a012 (commit)
via 316b202c1c91a777432d5c4697305e61c1afa972 (commit)
via a1d52c20e1f911df998543ad642d5d27d5cd0f62 (commit)
via a45c454c5e76912f081822f2f70d50cf08ed27bd (commit)
via 38e806a76c0a5babb539777dee97155d69753754 (commit)
via 2c3c89fef054c10fad443fb549d99b199a4aa452 (commit)
via 6b28bccc0f033b2c3a2dbcb66938e91930702042 (commit)
via c1317d69a70742b9c15847e4bd8580750c16fc45 (commit)
via 7ef8a067621baba0eb38d28303812055aa41fb7f (commit)
via dc5e352fbba183d4eab1196b77d5f190e692eda3 (commit)
via 8ca57d340d0322282d95545983397952112abce3 (commit)
via c331f885dd5fcc2d9aea245e9d410e7daccf888d (commit)
via 97b0134409146503e051faeb9e6eb4b808f6cb28 (commit)
via 77d35baf5dedff40f4d198c826c84be1502479e1 (commit)
via 810846168f8e14f63caefac534b843b7681b881f (commit)
via 58d07b5b2d77550e500212f6c8a8fd082d72e597 (commit)
via a7a6c3931e0ec3fad3034b1c457407fb13861633 (commit)
via 0f9d5cc0b9a83c99ebc1c63fd24b539bc37bbb63 (commit)
via f9e39b9d8ae46c3e1200e3eddc0bc68ea6ce0925 (commit)
via c5489cb1052e68d1d0db71224ed09f1499ee776f (commit)
via dc6b5b04d0b0ea40e9e9caa499f070f95b99fa07 (commit)
via 3ecbf55b4c3389115f6aa8db4839c522d3b3b288 (commit)
via e86a96f413affec0a05a9843d2e8d960000843b6 (commit)
via 99dd11ec75589f79c8c0abc185deba6951936373 (commit)
via 5b4d6b3be363cd47a8191ac1da42f5a2c13ef72d (commit)
via 26411493537eeb54ddafa2e9e29a5723edcd0316 (commit)
via 3088d48fc13089013fc0e0fa252c3d5122fd073d (commit)
via 528982e8b2d20552aefda334f49cc38469547294 (commit)
via e2b5933fa0c48d4747680722e1ce155bc316e6a0 (commit)
via 4a8db6777ef79b85ad52759bf5b4abec5b24c3b8 (commit)
via dc333e620d19bde703fddaf39cc8b5a78f0f4f4a (commit)
via dcf159b164464fd0d349cddcb3ae54d98f26c2f6 (commit)
via 1e9e1e556f51abaa2f001b1c280f1d4a09ca75e2 (commit)
via 0019db357afed7f52da38e9c398f3e39ce4eb162 (commit)
via f3081db313f5b99ec40e41e279f6ce2bbf156fca (commit)
via ba8101bf91e0502227d08f0148c6d004d915b504 (commit)
via 1b0c21ccddcc7436e1f740cbb6bf71859203367b (commit)
via 8465f354eeb09436e421d7ee4f8f68f9a5e5cc44 (commit)
via 8bcea9479f65602bff315bd0f636ff8d1f1a375d (commit)
via 2c52a2e854e4bbd763fad388ee0db8c4226f5b83 (commit)
via 349e681615d2b9707f53f247c6c5b6d6229e7f1f (commit)
via f86892e89212ec7ada8c666a983d8f56fb30b15d (commit)
via 217ceda3a0eb62a1ef1a58e0a1fdba89862920f8 (commit)
via 27921534f9447e21c87cfdf64adef6e39c764897 (commit)
via 76228599812922ed87f09a68fa53bb3ac653bfd8 (commit)
via 3517c774109e6588ee94f317994939d3976b3850 (commit)
via 19278b7140f08791c45b31f04e32ad9977d26551 (commit)
via cd0d451424fd6dbdb4dfb8ce98e479a60b94e0fd (commit)
via a14ff26b0b96bee9e5280c971d2394ffe5d3f8a8 (commit)
via b663f5c6770040e612bb9a9dce3d28973747c369 (commit)
via c272d74463c393c967f0bdc3a9f3de626f3e5e7c (commit)
via 2ace2e7ca42a3949de3e6c0327cd2648f344dee9 (commit)
via 2cfa4357aa0c3e5fe45324b2a37a90ddbf689b2a (commit)
via a1eff4d25c72460e1c3e52e523ba5029012d2ce9 (commit)
via daf28acf73a01fcff9e136d0036ace877af85e25 (commit)
via 4a2eef986ec4b6ea07513afb7e89b09bab12669f (commit)
via 07e75e47c5544347279f16a058a05c73b7aedb0d (commit)
via 60fe1d1bba234f7f5ce6315062aa0a11e2c45e1a (commit)
via cdbbd5b29a0f2056ef52f23489a29af6d116a94f (commit)
via 439877fdcd308943991d21379ac7946abb41daea (commit)
via 62168c2db5c36de2362cd1d5785b598b187bbef3 (commit)
via e6d11bb6b7d0008ba31e0ea07d577e7787236c74 (commit)
via 6d7ad47255a49c583f2fb0d78e6df5029c9ba56b (commit)
via bffc439a72f03126359d468329b8d25febc7bc9e (commit)
via 30a07d66f784564de0817dd5fae7a82f5a3928b1 (commit)
via 561561ecadfa2fc2ed36aaf09bb98be382051e7b (commit)
via 33bb622ec2846f9e3c788655f42d7a7f25a4651c (commit)
via f8351929a502d46a1f95a2b270466ffeb16bf307 (commit)
via 10e8d1c10a0f1192b3999c1fd5be8c41d2af39c6 (commit)
via 858bf2e3bae0542d5b7da7dd6e1819660ee0c9c0 (commit)
via 022107bd52092c658208e74161581c6bedda4a5f (commit)
via 7ef752823f118079af629604ac29143e7c156687 (commit)
via 99e43aaefc4a76908fd5f649edf0512c3800e021 (commit)
via acb5cbe8fb3524e18e31d0bbc5e9a3a80936a771 (commit)
via 22361307cf41f916afd562e7f33fcdaacefe5f9d (commit)
via 0428dcd2b44b944eb0645aeac210924e563db898 (commit)
via b6aef1869e3fa5a8f7f87b551fa68592b43756ac (commit)
via 90a328e83574deed28d97d558e950b00e4200693 (commit)
via ff660b5e081301201832ac7b33ea12cceb84bc3d (commit)
via c66cf8a682bd326a38c069045bfc116c61603bc8 (commit)
via 63be99931dcf5301ca75e9bc8eb049c86174eb0c (commit)
via b654b9c6bc67bc6de5e9fe08484acbfe7e1a7fad (commit)
via 39f6e9f70f683237d9488faac1c549ca19ac9dae (commit)
via 2c6557f613fcf6cdcebb08c321a5d061aeb780c6 (commit)
via e5b8b03317deca9ecf858a9fb5695c2e665a7a59 (commit)
via 8c33c582e6fa415dbdca5204f5926fe09de34e3b (commit)
via 54e625fd4fc61268d9a291b378bec3015ab35604 (commit)
via 554f319d6a198a6e0907203f4398aa34bef45c02 (commit)
via c300d42d1b07d74a054be8bb561b3152c537376c (commit)
via 4e3387a5939fe7e9c958710497d95057909670b5 (commit)
via c08ec9f2612ffa2ceef5405d357e5c5b8cb608c9 (commit)
via af8d161b1c3466d2d6fdfb3b1ce94ca73d8fea86 (commit)
via 54377a7bacc182ace0bb8b55a812e0a9fee5ced8 (commit)
via d704ced53ec06c1af67ef99bba6a20096056a67c (commit)
via 54b9ce0a8263d590c0c7716df4aaf40568f316c6 (commit)
via c42b65151a730ff9b02cab601cfbb1078264025f (commit)
via fa4646d49dc0df5e4d6d9e36e34e84e41b78ba36 (commit)
via 516c56772b9f290454768a37a1c5e3d168853561 (commit)
via e1b8ff8941da1b8f1eda141d8ec41f03fa9f9cfc (commit)
via c0d0d539515c7402dbb18e55052dd761066b08fd (commit)
via 6debc9dd19b3441a974c8eae9788cfa80227badd (commit)
via e63938a485d0f2499a567a8fd3dd2343e6f2ffbf (commit)
via 64ca396eef119278018dceb8ca3b6c51f7debb26 (commit)
via b71a9969c8ae16911ed19f439c74b2848879b462 (commit)
via cd98fa41731b9fbba04c282977b3a7a1b52db0e8 (commit)
via 651e6f0c4eb492a48df0e56783a970c9391237d4 (commit)
via cf315eea954e291f56999eb5dcdec559a08e70c0 (commit)
via 3f35626784f50e2693ebf793044698323a0a3e10 (commit)
via 3eb7d9fc324d53f241bce67463c61d69d4f8377a (commit)
via 182cff0a8e5dfce51f69bb57978b04ccdb2740a1 (commit)
via d21ce5cf54ce442bff3e20fd39fb94606f3491e8 (commit)
via 1efba8f3b728a3b8aa3c64c5aa09f441318ff2a8 (commit)
via b584bdc5d741d713413db74ce4486201ed4f9cc1 (commit)
via 6d868844fae9f52455b2e1954382bf9e4bb66c22 (commit)
via 3b735dd9330e0989f51a76771c3303031154154e (commit)
via 8ebe9d6acf1aef414231093c5c5cd8e2912cf84d (commit)
via 2bbfc3fdfa59d668c291b7f4f3ad76979f30231e (commit)
via b6378ecb409ca394dd3cd866fb1749c5decb316c (commit)
via 68dee98de77221374456e635881f7e268f2745ea (commit)
from 6f80d59b4d111454ce848f18c93aec8a891ff908 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit f523522e3b9024b706da52bcddbce42a58c56296
Author: Lisa Knox <lisaknox83 at gmail.com>
Date: Mon Apr 22 10:55:12 2024 -0400
21224: merge stable Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>
diff --git a/services/workbench2/src/components/data-explorer/data-explorer.tsx b/services/workbench2/src/components/data-explorer/data-explorer.tsx
index 4737ed06dc..b596683fad 100644
--- a/services/workbench2/src/components/data-explorer/data-explorer.tsx
+++ b/services/workbench2/src/components/data-explorer/data-explorer.tsx
@@ -130,6 +130,9 @@ type DataExplorerProps<T> = DataExplorerDataProps<T> & DataExplorerActionProps<T
export const DataExplorer = withStyles(styles)(
class DataExplorerGeneric<T> extends React.Component<DataExplorerProps<T>> {
+ state = {
+ msToolbarInDetailsCard: true,
+ };
multiSelectToolbarInTitle = !this.props.title && !this.props.progressBar;
@@ -139,6 +142,15 @@ export const DataExplorer = withStyles(styles)(
}
}
+ componentDidUpdate( prevProps: Readonly<DataExplorerProps<T>>, prevState: Readonly<{}>, snapshot?: any ): void {
+ const { selectedResourceUuid, currentRouteUuid } = this.props;
+ if(selectedResourceUuid !== prevProps.selectedResourceUuid || currentRouteUuid !== prevProps.currentRouteUuid) {
+ this.setState({
+ multiSelectToolbarInTitle: selectedResourceUuid === this.props.currentRouteUuid,
+ })
+ }
+ }
+
render() {
const {
columns,
@@ -204,7 +216,7 @@ export const DataExplorer = withStyles(styles)(
</Grid>
)}
{!!progressBar && progressBar}
- {this.multiSelectToolbarInTitle && <MultiselectToolbar injectedStyles={classes.msToolbarStyles} />}
+ {this.multiSelectToolbarInTitle && !this.state.msToolbarInDetailsCard && <MultiselectToolbar injectedStyles={classes.msToolbarStyles} />}
{(!hideColumnSelector || !hideSearchInput || !!actions) && (
<Grid
className={classes.headerMenu}
diff --git a/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx b/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
index 0d74b6b38b..449bd2dcd5 100644
--- a/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
+++ b/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
@@ -126,7 +126,7 @@ export const MultiselectToolbar = connect(
return (
<React.Fragment>
<Toolbar
- className={classes.root}
+ className={classNames(classes.root, injectedStyles)}
style={{ width: `${(actions.length * 2.5) + 6}rem`}}
data-cy='multiselect-toolbar'
>
@@ -349,12 +349,12 @@ function mapDispatchToProps(dispatch: Dispatch) {
switch (selectedAction.name) {
case ContextMenuActionNames.MOVE_TO:
case ContextMenuActionNames.REMOVE:
- const firstResource = getResource(selectedToArray(checkedList)[0])(resources) as ContainerRequestResource | Resource;
+ const firstResource = getResource(currentList[0])(resources) as ContainerRequestResource | Resource;
const action = findActionByName(selectedAction.name as string, kindToActionSet[firstResource.kind]);
if (action) action.execute(dispatch, kindGroups[firstResource.kind]);
break;
case ContextMenuActionNames.COPY_LINK_TO_CLIPBOARD:
- const selectedResources = selectedToArray(checkedList).map(uuid => getResource(uuid)(resources));
+ const selectedResources = currentList.map(uuid => getResource(uuid)(resources));
dispatch<any>(copyToClipboardAction(selectedResources));
break;
default:
diff --git a/services/workbench2/src/views-components/context-menu/context-menu-action-set.ts b/services/workbench2/src/views-components/context-menu/context-menu-action-set.ts
index 38de735e29..fc1028aa68 100644
--- a/services/workbench2/src/views-components/context-menu/context-menu-action-set.ts
+++ b/services/workbench2/src/views-components/context-menu/context-menu-action-set.ts
@@ -57,6 +57,7 @@ export enum ContextMenuActionNames {
SETUP_USER = 'Setup user',
SHARE = 'Share',
UNSELECT_ALL = 'Unselect all',
+ USER_ACCOUNT = 'User account',
VIEW_DETAILS = 'View details',
WRITE = 'Write',
}
diff --git a/services/workbench2/src/views-components/context-menu/menu-item-sort.ts b/services/workbench2/src/views-components/context-menu/menu-item-sort.ts
index f331c60247..0e06be1685 100644
--- a/services/workbench2/src/views-components/context-menu/menu-item-sort.ts
+++ b/services/workbench2/src/views-components/context-menu/menu-item-sort.ts
@@ -11,6 +11,7 @@ import { MultiSelectMenuAction } from 'views-components/multiselect-toolbar/ms-m
export enum ContextMenuKind {
API_CLIENT_AUTHORIZATION = "ApiClientAuthorization",
ROOT_PROJECT = "RootProject",
+ ROOT_PROJECT_ADMIN = "RootProjectAdmin",
PROJECT = "Project",
FILTER_GROUP = "FilterGroup",
READONLY_PROJECT = "ReadOnlyProject",
@@ -47,6 +48,7 @@ export enum ContextMenuKind {
VIRTUAL_MACHINE = "VirtualMachine",
KEEP_SERVICE = "KeepService",
USER = "User",
+ USER_DETAILS = "UserDetails",
GROUPS = "Group",
GROUP_MEMBER = "GroupMember",
PERMISSION_EDIT = "PermissionEdit",
diff --git a/services/workbench2/src/views-components/data-explorer/data-explorer.tsx b/services/workbench2/src/views-components/data-explorer/data-explorer.tsx
index 034399b124..37a15bcf77 100644
--- a/services/workbench2/src/views-components/data-explorer/data-explorer.tsx
+++ b/services/workbench2/src/views-components/data-explorer/data-explorer.tsx
@@ -23,7 +23,7 @@ interface Props {
working?: boolean;
}
-const mapStateToProps = ({ progressIndicator, dataExplorer, router, multiselect, detailsPanel, properties}: RootState, { id }: Props) => {
+const mapStateToProps = ({ progressIndicator, dataExplorer, router, multiselect, selectedResourceUuid, properties}: RootState, { id }: Props) => {
const working = !!progressIndicator.some(p => p.id === id && p.working);
const dataExplorerState = getDataExplorer(dataExplorer, id);
const currentRoute = router.location ? router.location.pathname : "";
@@ -34,6 +34,7 @@ const mapStateToProps = ({ progressIndicator, dataExplorer, router, multiselect,
paperKey: currentRoute,
currentRouteUuid: properties.currentRouteUuid,
isMSToolbarVisible,
+ selectedResourceUuid,
checkedList: multiselect.checkedList,
working,
};
diff --git a/services/workbench2/src/views-components/data-explorer/renderers.tsx b/services/workbench2/src/views-components/data-explorer/renderers.tsx
index bb49b6cf42..853fd8c0e3 100644
--- a/services/workbench2/src/views-components/data-explorer/renderers.tsx
+++ b/services/workbench2/src/views-components/data-explorer/renderers.tsx
@@ -55,6 +55,7 @@ import { ProjectResource } from "models/project";
import { ProcessResource } from "models/process";
import { ServiceRepository } from "services/services";
import { loadUsersPanel } from "store/users/users-actions";
+import { InlinePulser } from "components/loading/inline-pulser";
export const toggleIsAdmin = (uuid: string) =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
@@ -65,7 +66,6 @@ export const toggleIsAdmin = (uuid: string) =>
dispatch<any>(loadUsersPanel());
return newActivity;
};
-import { InlinePulser } from "components/loading/inline-pulser";
const renderName = (dispatch: Dispatch, item: GroupContentsResource) => {
const navFunc = "groupClass" in item && item.groupClass === GroupClass.ROLE ? navigateToGroupDetails : navigateTo;
diff --git a/services/workbench2/src/views-components/multiselect-toolbar/ms-user-details-action-set.ts b/services/workbench2/src/views-components/multiselect-toolbar/ms-user-details-action-set.ts
index 33698259c1..d9ef110741 100644
--- a/services/workbench2/src/views-components/multiselect-toolbar/ms-user-details-action-set.ts
+++ b/services/workbench2/src/views-components/multiselect-toolbar/ms-user-details-action-set.ts
@@ -6,12 +6,13 @@ import { AdvancedIcon, AttributesIcon, UserPanelIcon } from 'components/icon/ico
import { openAdvancedTabDialog } from 'store/advanced-tab/advanced-tab';
import { openUserAttributes } from 'store/users/users-actions';
import { navigateToUserProfile } from 'store/navigation/navigation-action';
-import { MultiSelectMenuActionSet, MultiSelectMenuActionNames } from './ms-menu-actions';
+import { ContextMenuActionNames } from "views-components/context-menu/context-menu-action-set";
+import { MultiSelectMenuActionSet } from './ms-menu-actions';
export const UserDetailsActionSet: MultiSelectMenuActionSet= [
[
{
- name: MultiSelectMenuActionNames.ATTRIBUTES,
+ name: ContextMenuActionNames.ATTRIBUTES,
icon: AttributesIcon,
hasAlts: false,
isForMulti: false,
@@ -20,7 +21,7 @@ export const UserDetailsActionSet: MultiSelectMenuActionSet= [
},
},
{
- name: MultiSelectMenuActionNames.API_DETAILS,
+ name: ContextMenuActionNames.API_DETAILS,
icon: AdvancedIcon,
hasAlts: false,
isForMulti: false,
@@ -29,7 +30,7 @@ export const UserDetailsActionSet: MultiSelectMenuActionSet= [
},
},
{
- name: MultiSelectMenuActionNames.USER_ACCOUNT,
+ name: ContextMenuActionNames.USER_ACCOUNT,
icon: UserPanelIcon,
hasAlts: false,
isForMulti: false,
diff --git a/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx b/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx
index 19fcf58849..cf463fa76a 100644
--- a/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx
+++ b/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx
@@ -4,7 +4,7 @@
import React from 'react';
import { Field, WrappedFieldProps, FieldArray, WrappedFieldArrayProps } from 'redux-form';
-import { Grid, FormControl, InputLabel, StyleRulesCallback, Divider } from '@material-ui/core';
+import { Grid, FormControl, InputLabel, StyleRulesCallback } from '@material-ui/core';
import { PermissionSelect, parsePermissionLevel, formatPermissionLevel } from './permission-select';
import { ParticipantSelect, Participant } from './participant-select';
import { WithStyles } from '@material-ui/core/styles';
diff --git a/services/workbench2/src/views/project-panel/project-panel.tsx b/services/workbench2/src/views/project-panel/project-panel.tsx
index 0425335e42..433cb11209 100644
--- a/services/workbench2/src/views/project-panel/project-panel.tsx
+++ b/services/workbench2/src/views/project-panel/project-panel.tsx
@@ -278,7 +278,6 @@ export const ProjectPanel = withStyles(styles)(
contextMenuColumn={true}
defaultViewIcon={ProjectIcon}
defaultViewMessages={DEFAULT_VIEW_MESSAGES}
- selectedResourceUuid={this.props.currentItemId}
/>
</div>
}
commit 562687ce72e709d485aa47773117a51a764a6606
Merge: 6f80d59b4d 52d652233f
Author: Lisa Knox <lisaknox83 at gmail.com>
Date: Fri Apr 19 14:40:16 2024 -0400
Merge branch '21448-menu-reorder' into 21224-project-details
refs #21448
Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>
diff --cc services/workbench2/cypress/e2e/details-card.spec.js
index 3fbfd97e22,0000000000..3fbfd97e22
mode 100644,000000..100644
--- a/services/workbench2/cypress/e2e/details-card.spec.js
+++ b/services/workbench2/cypress/e2e/details-card.spec.js
diff --cc services/workbench2/src/components/data-explorer/data-explorer.tsx
index 979fe35c08,ba710bc783..4737ed06dc
--- a/services/workbench2/src/components/data-explorer/data-explorer.tsx
+++ b/services/workbench2/src/components/data-explorer/data-explorer.tsx
@@@ -248,7 -194,7 +204,7 @@@ export const DataExplorer = withStyles(
</Grid>
)}
{!!progressBar && progressBar}
- {this.multiSelectToolbarInTitle && !this.state.msToolbarInDetailsCard && <MultiselectToolbar injectedStyles={classes.msToolbarStyles} />}
- {this.multiSelectToolbarInTitle && <MultiselectToolbar />}
++ {this.multiSelectToolbarInTitle && <MultiselectToolbar injectedStyles={classes.msToolbarStyles} />}
{(!hideColumnSelector || !hideSearchInput || !!actions) && (
<Grid
className={classes.headerMenu}
@@@ -330,16 -276,15 +286,17 @@@
onFiltersChange={onFiltersChange}
onSortToggle={onSortToggle}
extractKey={extractKey}
- working={this.state.showLoading}
defaultViewIcon={defaultViewIcon}
defaultViewMessages={defaultViewMessages}
- currentItemUuid={currentItemUuid}
currentRoute={paperKey}
toggleMSToolbar={toggleMSToolbar}
setCheckedListOnStore={setCheckedListOnStore}
checkedList={checkedList}
+ selectedResourceUuid={selectedResourceUuid}
+ setSelectedUuid={this.props.setSelectedUuid}
+ currentRouteUuid={this.props.currentRouteUuid}
+ working={working}
+ isNotFound={this.props.isNotFound}
/>
</Grid>
<Grid
diff --cc services/workbench2/src/components/data-table/data-table.tsx
index 6e632e071a,7b78799457..e7a358580c
--- a/services/workbench2/src/components/data-table/data-table.tsx
+++ b/services/workbench2/src/components/data-table/data-table.tsx
@@@ -29,7 -29,7 +29,8 @@@ import { SvgIconProps } from "@material
import ArrowDownwardIcon from "@material-ui/icons/ArrowDownward";
import { createTree } from "models/tree";
import { DataTableMultiselectOption } from "../data-table-multiselect-popover/data-table-multiselect-popover";
+import { isExactlyOneSelected } from "store/multiselect/multiselect-actions";
+ import { PendingIcon } from "components/icon/icon";
export type DataColumns<I, R> = Array<DataColumn<I, R>>;
@@@ -50,13 -50,12 +51,14 @@@ export interface DataTableDataProps<I>
working?: boolean;
defaultViewIcon?: IconType;
defaultViewMessages?: string[];
- currentItemUuid?: string;
- currentRoute?: string;
toggleMSToolbar: (isVisible: boolean) => void;
setCheckedListOnStore: (checkedList: TCheckedList) => void;
+ currentRoute?: string;
+ currentRouteUuid: string;
checkedList: TCheckedList;
+ selectedResourceUuid: string;
+ setSelectedUuid: (uuid: string | null) => void;
+ isNotFound?: boolean;
}
type CssRules =
@@@ -175,15 -169,12 +173,21 @@@ export const DataTable = withStyles(sty
if (prevProps.currentRoute !== this.props.currentRoute) {
this.initializeCheckedList([])
}
+ if (singleSelected && singleSelected !== isExactlyOneSelected(prevProps.checkedList)) {
+ this.props.setSelectedUuid(singleSelected);
+ }
+ if (!singleSelected && !!currentRouteUuid && !this.isAnySelected()) {
+ this.props.setSelectedUuid(currentRouteUuid);
+ }
+ if (!singleSelected && this.isAnySelected()) {
+ this.props.setSelectedUuid(null);
+ }
+ if(prevProps.working === true && this.props.working === false) {
+ this.setState({ isLoaded: true });
+ }
+ if((this.props.items.length > 0) && !this.state.isLoaded) {
+ this.setState({ isLoaded: true });
+ }
}
componentWillUnmount(): void {
diff --cc services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
index 137506e743,194950b134..0d74b6b38b
--- a/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
+++ b/services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
@@@ -33,32 -32,22 +32,23 @@@ import { CollectionResource } from "mod
import { getProcess } from "store/processes/process";
import { Process } from "store/processes/process";
import { PublicFavoritesState } from "store/public-favorites/public-favorites-reducer";
-import { isExactlyOneSelected } from "store/multiselect/multiselect-actions";
+import { AuthState } from "store/auth/auth-reducer";
import { IntersectionObserverWrapper } from "./ms-toolbar-overflow-wrapper";
+import classNames from "classnames";
+ import { ContextMenuKind, sortMenuItems, menuDirection } from 'views-components/context-menu/menu-item-sort';
- const WIDTH_TRANSITION = 150
-
- type CssRules = "root" | "transition" | "button" | "iconContainer" | "icon";
+ type CssRules = "root" | "button" | "iconContainer" | "icon" | "divider";
const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
root: {
display: "flex",
flexDirection: "row",
width: 0,
- height: '2.7rem',
+ height: '2.5rem',
padding: 0,
- transition: `width ${WIDTH_TRANSITION}ms`,
+ margin: "1rem auto auto 0.3rem",
overflow: 'hidden',
},
- transition: {
- display: "flex",
- flexDirection: "row",
- height: '2.5rem',
- padding: 0,
- overflow: 'hidden',
- transition: `width ${WIDTH_TRANSITION}ms`,
- },
button: {
width: "2.5rem",
height: "2.5rem ",
@@@ -108,38 -86,24 +102,27 @@@ export const MultiselectToolbar = conne
mapDispatchToProps
)(
withStyles(styles)((props: MultiselectToolbarProps & WithStyles<CssRules>) => {
- const { classes, checkedList, singleSelectedUuid, iconProps, user, disabledButtons } = props;
- const singleResourceKind = singleSelectedUuid ? [resourceToMsResourceKind(singleSelectedUuid, iconProps.resources, user)] : null
+ const { classes, checkedList, iconProps, user, disabledButtons, location, isSubPanel, injectedStyles } = props;
+ const selectedResourceUuid = isPathDisallowed(location) ? null : props.selectedResourceUuid;
+ const singleResourceKind = selectedResourceUuid && !isSubPanel ? [resourceToMsResourceKind(selectedResourceUuid, iconProps.resources, user)] : null
const currentResourceKinds = singleResourceKind ? singleResourceKind : Array.from(selectedToKindSet(checkedList));
- const currentPathIsTrash = location.includes("/trash");
- const [isTransitioning, setIsTransitioning] = useState(false);
- let transitionTimeout;
-
- const handleTransition = () => {
- setIsTransitioning(true)
- transitionTimeout = setTimeout(() => {
- setIsTransitioning(false)
- }, WIDTH_TRANSITION);
- }
-
- useEffect(()=>{
- handleTransition()
- return () => {
- if(transitionTimeout) clearTimeout(transitionTimeout)
- };
- // eslint-disable-next-line
- }, [checkedList])
+ const currentPathIsTrash = window.location.pathname === "/trash";
- const actions =
+ const rawActions =
currentPathIsTrash && selectedToKindSet(checkedList).size
? [msToggleTrashAction]
: selectActionsByKind(currentResourceKinds as string[], multiselectActionsFilters).filter((action) =>
- singleSelectedUuid === null ? action.isForMulti : true
+ selectedResourceUuid === null ? action.isForMulti : true
);
+
+ const actions: ContextMenuAction[] | MultiSelectMenuAction[] = sortMenuItems(
+ singleResourceKind && singleResourceKind.length ? (singleResourceKind[0] as ContextMenuKind) : ContextMenuKind.MULTI,
+ rawActions,
+ menuDirection.HORIZONTAL
+ );
+ const targetResources = selectedResourceUuid ? {[selectedResourceUuid]: true} as TCheckedList : checkedList
+
return (
<React.Fragment>
<Toolbar
@@@ -155,10 -129,10 +148,10 @@@
<Tooltip
className={classes.button}
data-targetid={name}
- title={currentPathIsTrash || (useAlts && useAlts(singleSelectedUuid, iconProps)) ? altName : name}
+ title={currentPathIsTrash || (useAlts && useAlts(selectedResourceUuid, iconProps)) ? altName : name}
key={i}
disableFocusListener
- >
+ >
<span className={classes.iconContainer}>
<IconButton
data-cy='multiselect-button'
@@@ -278,19 -251,19 +271,19 @@@ const resourceToMsResourceKind = (uuid
case ResourceKind.PROCESS:
return isAdmin && isEditable
? resource && isProcessCancelable(getProcess(resource.uuid)(resources) as Process)
- ? msMenuResourceKind.RUNNING_PROCESS_ADMIN
- : msMenuResourceKind.PROCESS_ADMIN
+ ? ContextMenuKind.RUNNING_PROCESS_ADMIN
+ : ContextMenuKind.PROCESS_ADMIN
: readonly
- ? msMenuResourceKind.READONLY_PROCESS_RESOURCE
+ ? ContextMenuKind.READONLY_PROCESS_RESOURCE
: resource && isProcessCancelable(getProcess(resource.uuid)(resources) as Process)
- ? msMenuResourceKind.RUNNING_PROCESS_RESOURCE
- : msMenuResourceKind.PROCESS_RESOURCE;
+ ? ContextMenuKind.RUNNING_PROCESS_RESOURCE
+ : ContextMenuKind.PROCESS_RESOURCE;
case ResourceKind.USER:
- return isAdmin ? msMenuResourceKind.ROOT_PROJECT_ADMIN : msMenuResourceKind.ROOT_PROJECT;
- return ContextMenuKind.ROOT_PROJECT;
++ return isAdmin ? ContextMenuKind.ROOT_PROJECT_ADMIN : ContextMenuKind.ROOT_PROJECT;
case ResourceKind.LINK:
- return msMenuResourceKind.LINK;
+ return ContextMenuKind.LINK;
case ResourceKind.WORKFLOW:
- return isEditable ? msMenuResourceKind.WORKFLOW : msMenuResourceKind.READONLY_WORKFLOW;
+ return isEditable ? ContextMenuKind.WORKFLOW : ContextMenuKind.READONLY_WORKFLOW;
default:
return;
}
@@@ -362,11 -323,10 +345,11 @@@ function mapDispatchToProps(dispatch: D
return {
executeMulti: (selectedAction: ContextMenuAction, checkedList: TCheckedList, resources: ResourcesState): void => {
const kindGroups = groupByKind(checkedList, resources);
+ const currentList = selectedToArray(checkedList)
switch (selectedAction.name) {
- case MultiSelectMenuActionNames.MOVE_TO:
- case MultiSelectMenuActionNames.REMOVE:
- const firstResource = getResource(currentList[0])(resources) as ContainerRequestResource | Resource;
+ case ContextMenuActionNames.MOVE_TO:
+ case ContextMenuActionNames.REMOVE:
+ const firstResource = getResource(selectedToArray(checkedList)[0])(resources) as ContainerRequestResource | Resource;
const action = findActionByName(selectedAction.name as string, kindToActionSet[firstResource.kind]);
if (action) action.execute(dispatch, kindGroups[firstResource.kind]);
break;
diff --cc services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
index f7397a5d4e,2b30525e56..9af91daa53
--- a/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
+++ b/services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
@@@ -15,57 -15,8 +15,9 @@@ import
} from 'views-components/multiselect-toolbar/ms-project-action-set';
import { msProcessActionSet, msCommonProcessActionFilter, msAdminProcessActionFilter, msRunningProcessActionFilter } from 'views-components/multiselect-toolbar/ms-process-action-set';
import { msWorkflowActionSet, msWorkflowActionFilter, msReadOnlyWorkflowActionFilter } from 'views-components/multiselect-toolbar/ms-workflow-action-set';
+import { UserDetailsActionSet } from 'views-components/multiselect-toolbar/ms-user-details-action-set';
import { ResourceKind } from 'models/resource';
-
- export enum msMenuResourceKind {
- API_CLIENT_AUTHORIZATION = 'ApiClientAuthorization',
- ROOT_PROJECT = 'RootProject',
- ROOT_PROJECT_ADMIN = 'RootProjectAdmin',
- PROJECT = 'Project',
- FILTER_GROUP = 'FilterGroup',
- READONLY_PROJECT = 'ReadOnlyProject',
- FROZEN_PROJECT = 'FrozenProject',
- FROZEN_PROJECT_ADMIN = 'FrozenProjectAdmin',
- PROJECT_ADMIN = 'ProjectAdmin',
- FILTER_GROUP_ADMIN = 'FilterGroupAdmin',
- RESOURCE = 'Resource',
- FAVORITE = 'Favorite',
- TRASH = 'Trash',
- COLLECTION_FILES = 'CollectionFiles',
- COLLECTION_FILES_MULTIPLE = 'CollectionFilesMultiple',
- READONLY_COLLECTION_FILES = 'ReadOnlyCollectionFiles',
- READONLY_COLLECTION_FILES_MULTIPLE = 'ReadOnlyCollectionFilesMultiple',
- COLLECTION_FILES_NOT_SELECTED = 'CollectionFilesNotSelected',
- COLLECTION_FILE_ITEM = 'CollectionFileItem',
- COLLECTION_DIRECTORY_ITEM = 'CollectionDirectoryItem',
- READONLY_COLLECTION_FILE_ITEM = 'ReadOnlyCollectionFileItem',
- READONLY_COLLECTION_DIRECTORY_ITEM = 'ReadOnlyCollectionDirectoryItem',
- COLLECTION = 'Collection',
- COLLECTION_ADMIN = 'CollectionAdmin',
- READONLY_COLLECTION = 'ReadOnlyCollection',
- OLD_VERSION_COLLECTION = 'OldVersionCollection',
- TRASHED_COLLECTION = 'TrashedCollection',
- PROCESS = 'Process',
- RUNNING_PROCESS_ADMIN = 'RunningProcessAdmin',
- PROCESS_ADMIN = 'ProcessAdmin',
- RUNNING_PROCESS_RESOURCE = 'RunningProcessResource',
- PROCESS_RESOURCE = 'ProcessResource',
- READONLY_PROCESS_RESOURCE = 'ReadOnlyProcessResource',
- PROCESS_LOGS = 'ProcessLogs',
- REPOSITORY = 'Repository',
- SSH_KEY = 'SshKey',
- VIRTUAL_MACHINE = 'VirtualMachine',
- KEEP_SERVICE = 'KeepService',
- USER = 'User',
- GROUPS = 'Group',
- GROUP_MEMBER = 'GroupMember',
- PERMISSION_EDIT = 'PermissionEdit',
- LINK = 'Link',
- WORKFLOW = 'Workflow',
- READONLY_WORKFLOW = 'ReadOnlyWorkflow',
- SEARCH_RESULTS = 'SearchResults',
- }
+ import { ContextMenuKind } from 'views-components/context-menu/menu-item-sort';
const {
COLLECTION,
diff --cc services/workbench2/src/store/project-panel/project-panel-middleware-service.ts
index 5c356b5b96,e8d03dfcd7..61c89cd6a7
--- a/services/workbench2/src/store/project-panel/project-panel-middleware-service.ts
+++ b/services/workbench2/src/store/project-panel/project-panel-middleware-service.ts
@@@ -54,9 -55,10 +55,10 @@@ export class ProjectPanelMiddlewareServ
api.dispatch(projectPanelDataExplorerIsNotSet());
} else {
try {
+ api.dispatch<any>(dataExplorerActions.SET_IS_NOT_FOUND({ id: this.id, isNotFound: false }));
if (!background) { api.dispatch(progressIndicatorActions.START_WORKING(this.getId())); }
const response = await this.services.groupsService.contents(projectUuid, getParams(dataExplorer, !!isProjectTrashed));
- const resourceUuids = response.items.map(item => item.uuid);
+ const resourceUuids = [...response.items.map(item => item.uuid), projectUuid];
api.dispatch<any>(updateFavorites(resourceUuids));
api.dispatch<any>(updatePublicFavorites(resourceUuids));
api.dispatch(updateResources(response.items));
diff --cc services/workbench2/src/store/projects/project-lock-actions.ts
index d4e633de84,cd72e35196..84cea43809
--- a/services/workbench2/src/store/projects/project-lock-actions.ts
+++ b/services/workbench2/src/store/projects/project-lock-actions.ts
@@@ -7,33 -7,25 +7,33 @@@ import { ServiceRepository } from "serv
import { projectPanelActions } from "store/project-panel/project-panel-action-bind";
import { loadResource } from "store/resources/resources-actions";
import { RootState } from "store/store";
- import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
+ import { ContextMenuActionNames } from "views-components/context-menu/context-menu-action-set";
import { addDisabledButton, removeDisabledButton } from "store/multiselect/multiselect-actions";
+import { snackbarActions, SnackbarKind } from "store/snackbar/snackbar-actions";
export const freezeProject = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
- dispatch<any>(addDisabledButton(MultiSelectMenuActionNames.FREEZE_PROJECT))
+ dispatch<any>(addDisabledButton(ContextMenuActionNames.FREEZE_PROJECT))
const userUUID = getState().auth.user!.uuid;
-
- const updatedProject = await services.projectService.update(uuid, {
- frozenByUuid: userUUID,
- });
-
+ let updatedProject;
+
+ try {
+ updatedProject = await services.projectService.update(uuid, {
+ frozenByUuid: userUUID,
+ });
+ } catch (e) {
+ console.error(e);
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Could not freeze project', hideDuration: 4000, kind: SnackbarKind.ERROR }));
+ }
+
dispatch(projectPanelActions.REQUEST_ITEMS());
dispatch<any>(loadResource(uuid, false));
- dispatch<any>(removeDisabledButton(MultiSelectMenuActionNames.FREEZE_PROJECT))
+ dispatch<any>(removeDisabledButton(ContextMenuActionNames.FREEZE_PROJECT))
return updatedProject;
};
+
export const unfreezeProject = (uuid: string) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
- dispatch<any>(addDisabledButton(MultiSelectMenuActionNames.FREEZE_PROJECT))
+ dispatch<any>(addDisabledButton(ContextMenuActionNames.FREEZE_PROJECT))
const updatedProject = await services.projectService.update(uuid, {
frozenByUuid: null,
});
diff --cc services/workbench2/src/views-components/data-explorer/data-explorer.tsx
index 1b62c8dc5d,643949a20e..034399b124
--- a/services/workbench2/src/views-components/data-explorer/data-explorer.tsx
+++ b/services/workbench2/src/views-components/data-explorer/data-explorer.tsx
@@@ -11,9 -11,7 +11,8 @@@ import { dataExplorerActions } from "st
import { DataColumn } from "components/data-table/data-column";
import { DataColumns, TCheckedList } from "components/data-table/data-table";
import { DataTableFilters } from "components/data-table-filters/data-table-filters-tree";
- import { LAST_REFRESH_TIMESTAMP } from "components/refresh-button/refresh-button";
import { toggleMSToolbar, setCheckedListOnStore } from "store/multiselect/multiselect-actions";
+import { setSelectedResourceUuid } from "store/selected-resource/selected-resource-actions";
interface Props {
id: string;
@@@ -21,24 -19,26 +20,22 @@@
onContextMenu?: (event: React.MouseEvent<HTMLElement>, item: any, isAdmin?: boolean) => void;
onRowDoubleClick: (item: any) => void;
extractKey?: (item: any) => React.Key;
+ working?: boolean;
}
- const mapStateToProps = ({ progressIndicator, dataExplorer, router, multiselect, properties, selectedResourceUuid}: RootState, { id }: Props) => {
- const progress = progressIndicator.find(p => p.id === id);
+ const mapStateToProps = ({ progressIndicator, dataExplorer, router, multiselect, detailsPanel, properties}: RootState, { id }: Props) => {
+ const working = !!progressIndicator.some(p => p.id === id && p.working);
const dataExplorerState = getDataExplorer(dataExplorer, id);
const currentRoute = router.location ? router.location.pathname : "";
- const currentRefresh = localStorage.getItem(LAST_REFRESH_TIMESTAMP) || "";
- const isDetailsResourceChecked = multiselect.checkedList[detailsPanel.resourceUuid]
- const isOnlyOneSelected = Object.values(multiselect.checkedList).filter(x => x === true).length === 1;
- const currentItemUuid =
- currentRoute === '/workflows' ? properties.workflowPanelDetailsUuid : isDetailsResourceChecked && isOnlyOneSelected ? detailsPanel.resourceUuid : multiselect.selectedUuid;
const isMSToolbarVisible = multiselect.isVisible;
return {
...dataExplorerState,
- working: !!progress?.working,
- currentRefresh: currentRefresh,
currentRoute: currentRoute,
paperKey: currentRoute,
- currentItemUuid,
+ currentRouteUuid: properties.currentRouteUuid,
- selectedResourceUuid: selectedResourceUuid,
isMSToolbarVisible,
checkedList: multiselect.checkedList,
+ working,
};
};
diff --cc services/workbench2/src/views-components/data-explorer/renderers.tsx
index 45565c4a22,91b06c2b2f..bb49b6cf42
--- a/services/workbench2/src/views-components/data-explorer/renderers.tsx
+++ b/services/workbench2/src/views-components/data-explorer/renderers.tsx
@@@ -52,18 -54,7 +53,19 @@@ import { VirtualMachinesResource } fro
import { CopyToClipboardSnackbar } from "components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar";
import { ProjectResource } from "models/project";
import { ProcessResource } from "models/process";
+import { ServiceRepository } from "services/services";
+import { loadUsersPanel } from "store/users/users-actions";
+
+export const toggleIsAdmin = (uuid: string) =>
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ const { resources } = getState();
+ const data = getResource<UserResource>(uuid)(resources);
+ const isAdmin = data!.isAdmin;
+ const newActivity = await services.userService.update(uuid, { isAdmin: !isAdmin });
+ dispatch<any>(loadUsersPanel());
+ return newActivity;
+ };
+ import { InlinePulser } from "components/loading/inline-pulser";
const renderName = (dispatch: Dispatch, item: GroupContentsResource) => {
const navFunc = "groupClass" in item && item.groupClass === GroupClass.ROLE ? navigateToGroupDetails : navigateTo;
diff --cc services/workbench2/src/views/project-panel/project-panel.tsx
index 85ae063a79,2ddfca8178..0425335e42
--- a/services/workbench2/src/views/project-panel/project-panel.tsx
+++ b/services/workbench2/src/views/project-panel/project-panel.tsx
@@@ -51,11 -51,9 +51,10 @@@ import { GroupClass, GroupResource } fr
import { CollectionResource } from 'models/collection';
import { resourceIsFrozen } from 'common/frozen-resources';
import { ProjectResource } from 'models/project';
- import { NotFoundView } from 'views/not-found-panel/not-found-panel';
import { deselectAllOthers, toggleOne } from 'store/multiselect/multiselect-actions';
+import { ProjectDetailsCard } from 'views-components/project-details-card/project-details-card';
- type CssRules = 'root' | 'button';
+ type CssRules = 'root' | 'button' ;
const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
root: {
@@@ -265,27 -262,20 +265,22 @@@ const mapStateToProps = (state: RootSta
export const ProjectPanel = withStyles(styles)(
connect(mapStateToProps)(
class extends React.Component<ProjectPanelProps> {
+
render() {
const { classes } = this.props;
-
- return this.props.project ?
- <div data-cy='project-panel' className={classes.root}>
- <ProjectDetailsCard />
- <DataExplorer
- id={PROJECT_PANEL_ID}
- onRowClick={this.handleRowClick}
- onRowDoubleClick={this.handleRowDoubleClick}
- onContextMenu={this.handleContextMenu}
- contextMenuColumn={true}
- defaultViewIcon={ProjectIcon}
- defaultViewMessages={DEFAULT_VIEW_MESSAGES}
- />
- </div>
- :
- <NotFoundView
- icon={ProjectIcon}
- messages={["Project not found"]}
+ return <div data-cy='project-panel' className={classes.root}>
++ <ProjectDetailsCard />
+ <DataExplorer
+ id={PROJECT_PANEL_ID}
+ onRowClick={this.handleRowClick}
+ onRowDoubleClick={this.handleRowDoubleClick}
+ onContextMenu={this.handleContextMenu}
+ contextMenuColumn={true}
+ defaultViewIcon={ProjectIcon}
+ defaultViewMessages={DEFAULT_VIEW_MESSAGES}
++ selectedResourceUuid={this.props.currentItemId}
/>
+ </div>
}
isCurrentItemChild = (resource: Resource) => {
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list